{ "info": { "author": "Werner Robitza", "author_email": "werner.robitza@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Multimedia :: Video" ], "description": "Bufferer\n========\n\n|PyPI version|\n\nInserts fake rebuffering events into video.\n\nAuthor: Werner Robitza werner.robitza@gmail.com\n\n|image1|\n\nContents:\n\n- `Requirements <#requirements>`__\n- `Installation <#installation>`__\n- `Usage <#usage>`__\n- `Caveats <#caveats>`__\n- `Acknowledgements <#acknowledgements>`__\n- `Helpful info <#helpful-info>`__\n- `License <#license>`__\n\nRequirements\n------------\n\n- Python 3.6\n- FFmpeg:\n\n - download a static build from `their\n website `__)\n - put the ``ffmpeg`` executable in your ``$PATH``\n\nInstallation\n------------\n\n::\n\n pip3 install bufferer\n\nOr clone this repository, then run the tool with ``python -m bufferer``.\n\nUsage\n-----\n\n::\n\n Usage:\n bufferer [-hfne] -i -b -o \n [-v ] [-a ]\n [-x ]\n [-s ] [--disable-spinner] [-p ]\n [-t ]\n [-r ]\n [-l ]\n [--black-frame]\n [--force-framerate]\n [--verbose] [--version]\n\n -h --help show help message\n -f --force force overwrite output files\n -n --dry-run only print final command, do not run\n -i --input input video file\n -b --buflist list of buffering events in format \"[[x1,y1], [x2,y2],...]\" or\n \"[x1,y1], [x2,y2], ...\" where x = position of event in seconds, y = duration of event\n -o --output output video file\n -v --vcodec video encoder to use (see `ffmpeg -encoders`) [default: ffv1]\n -a --acodec audio encoder to use (see `ffmpeg -encoders`) [default: pcm_s16le]\n -x --pixfmt set pixel format for output [default: yuv420p]\n -s --spinner path to spinner animated file or video [default: spinners/spinner-256-white.png]\n -e --disable-spinner disable spinner, just show stopped video\n -p --speed speed of the spinner, rounded to integer [default: 2]\n -t --trim trim video to length in seconds or \"HH:MM:SS.msec\" format\n -r --brightness change brightness during buffering, use values between -1.0 and 1.0 [default: 0.0]\n -l --blur change blur during buffering, value specifies kernel size [default: 5]\n -c --black-frame start with a black frame if there is buffering at position 0.0\n --force-framerate force output framerate to be the same as the input video file\n --verbose show verbose output\n --version show version\n\nCaveats\n-------\n\n- The time stamps for the buffering list must be given in media time.\n If, for example, you want an initial loading time of 5 seconds, and\n then a stalling event to occur 10 seconds into the video, specify\n ``[[0, 5], [10, 5]]``.\n- You need to pick a proper output file format for the codecs you\n choose. Use ``.avi`` for the FFV1 and PCM WAV defaults.\n- Make sure to select the right pixel format as output,\n e.g.\u00a0\\ ``--pixfmt yuv420p`` for higher compatibility.\n\nAcknowledgements\n----------------\n\n- Big Buck Bunny: Blender Foundation\n- Free spinners from http://preloaders.net/en/free\n- Click from http://metronomer.com/\n- Count from https://www.youtube.com/watch?v=U03lLvhBzOw\n\nHelpful info\n------------\n\nTo generate AV sync samples:\n\n::\n\n ffmpeg \\\n -y \\\n -f lavfi -i testsrc=duration=60:size=320x240:rate=60,format=pix_fmts=yuv420p \\\n -i click_and_count.m4a\n \n\nSample command to test buffering:\n\n::\n\n ffmpeg \\\n -y \\\n -f lavfi -i testsrc=duration=60:size=320x240:rate=60,format=pix_fmts=yuv420p \\\n -i spinners/click_and_count.m4a \\\n -filter_complex \" \\\n [0:v] \\\n loop=loop=240:size=1:start=0, setpts=N/FRAME_RATE/TB, \\\n loop=loop=30:size=1:start=840, setpts=N/FRAME_RATE/TB, \\\n loop=loop=84:size=1:start=1140, setpts=N/FRAME_RATE/TB, \\\n loop=loop=48:size=1:start=1548, setpts=N/FRAME_RATE/TB \\\n [stallvid]; \\\n movie=filename=spinners/spinner-64-white.png:loop=0, setpts=N/(FRAME_RATE*TB)*2 \\\n [spinner]; \\\n [stallvid][spinner] \\\n overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2:shortest=1:\\\n enable='between(t,0,4.0)+between(t,14.0,14.5)+between(t,19.0,20.4)+between(t,25.8,26.6)' \\\n [outv];\n [1:a] \\\n aloop=loop=192000:size=1:start=0, asetpts=N/SAMPLE_RATE/TB, \\\n aloop=loop=24000:size=1:start=672000, asetpts=N/SAMPLE_RATE/TB, \\\n aloop=loop=67200:size=1:start=912000, asetpts=N/SAMPLE_RATE/TB, \\\n aloop=loop=38400:size=1:start=1238399, asetpts=N/SAMPLE_RATE/TB, \\\n volume=0:enable='between(t,0,4.0)+between(t,14.0,14.5)+between(t,19.0,20.4)+between(t,25.8,26.6)' \\\n [outa] \\\n \" -shortest -map \"[outv]\" -map \"[outa]\" output.mp4\n\nLicense\n-------\n\nbufferer, Copyright (c) 2017-2019 Werner Robitza\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the\n\u201cSoftware\u201d), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n.. |PyPI version| image:: https://badge.fury.io/py/bufferer.svg\n :target: https://badge.fury.io/py/bufferer\n.. |image1| image:: preview.gif\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/slhck/bufferer", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "bufferer", "package_url": "https://pypi.org/project/bufferer/", "platform": "", "project_url": "https://pypi.org/project/bufferer/", "project_urls": { "Homepage": "https://github.com/slhck/bufferer" }, "release_url": "https://pypi.org/project/bufferer/0.14/", "requires_dist": null, "requires_python": "", "summary": "Insert fake buffering events into video files.", "version": "0.14" }, "last_serial": 5499744, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "2ffa49cc47057705528edc72a9d5893c", "sha256": "f239663bc829e91d588417f910ff0fb67426b2124b6514447f22c89754be3d13" }, "downloads": -1, "filename": "bufferer-0.1.tar.gz", "has_sig": false, "md5_digest": "2ffa49cc47057705528edc72a9d5893c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5636, "upload_time": "2017-03-21T09:59:47", "url": "https://files.pythonhosted.org/packages/65/52/ef8cfcd36f8afa1345d64bb46e85b19c960af4492f64597b6faf4a8c32c2/bufferer-0.1.tar.gz" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "afdb3168f291427e423e00a5a115b2e9", "sha256": "30a9a8b6a8fd1712c72a881cb47c6365ded732ab45e0b63bb19ca65d22f39c67" }, "downloads": -1, "filename": "bufferer-0.10.tar.gz", "has_sig": false, "md5_digest": "afdb3168f291427e423e00a5a115b2e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1147035, "upload_time": "2018-11-07T09:38:47", "url": "https://files.pythonhosted.org/packages/0f/95/18a2a080b2d780455b476753c76c724bc8f5e7325e1873acd07d1176ad27/bufferer-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "7e3515bc8832d73b6d90ca4b94eb5f65", "sha256": "829aea3c61302e7e8f1e069639908234d5718332f6a055f247d9cda01ef6f177" }, "downloads": -1, "filename": "bufferer-0.11.tar.gz", "has_sig": false, "md5_digest": "7e3515bc8832d73b6d90ca4b94eb5f65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1147569, "upload_time": "2019-03-07T13:18:40", "url": "https://files.pythonhosted.org/packages/3c/81/a87d0af5ec088402efeae34b2ff4312fac87bbe0c86560302eaeb1a1c2c5/bufferer-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "18a9508895b13bbc37dc7530e20b18b1", "sha256": "09aa2a8295de3018e8130e5d80355f4a9e00f2410f78384ef04d4cfc2381c282" }, "downloads": -1, "filename": "bufferer-0.12.tar.gz", "has_sig": false, "md5_digest": "18a9508895b13bbc37dc7530e20b18b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1147599, "upload_time": "2019-03-07T15:50:38", "url": "https://files.pythonhosted.org/packages/fc/f5/f638df1f34054fe40194f4ec9247f8f17991cf8f62f6ff42d5094ddec979/bufferer-0.12.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "e5493222d55ae775c1fed6b73eb0d58a", "sha256": "fafd0e632e7ccefb7743bf214c114a37b43a4e2e5e94dbb0c55e38d75cc08f8d" }, "downloads": -1, "filename": "bufferer-0.13.tar.gz", "has_sig": false, "md5_digest": "e5493222d55ae775c1fed6b73eb0d58a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1149023, "upload_time": "2019-06-13T19:58:29", "url": "https://files.pythonhosted.org/packages/64/93/ed4df531adc83b50ac8c178a618486415baace962247a7307f784bc6bcea/bufferer-0.13.tar.gz" } ], "0.14": [ { "comment_text": "", "digests": { "md5": "8ed9997f628fdc9bc67816af556e7f5d", "sha256": "5f2536f62322a24f100299d3368d5608db3ecbd2643ba6dbbf59bdc007a1dfcc" }, "downloads": -1, "filename": "bufferer-0.14.tar.gz", "has_sig": false, "md5_digest": "8ed9997f628fdc9bc67816af556e7f5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1149047, "upload_time": "2019-07-08T09:23:33", "url": "https://files.pythonhosted.org/packages/55/05/bb46db8169c34a744316398fe8e11af9437daa5ad79221d8c9d098170609/bufferer-0.14.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "90a81033335bd51d0d48de5c8cbd4904", "sha256": "c960cbac7893481bcac15b277999a43c81f9ead884bc36ac58463ce022cbed0c" }, "downloads": -1, "filename": "bufferer-0.2.tar.gz", "has_sig": false, "md5_digest": "90a81033335bd51d0d48de5c8cbd4904", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5981, "upload_time": "2017-03-22T15:33:49", "url": "https://files.pythonhosted.org/packages/d9/be/74aee2585c06335ee6db2435d7bdc3dca3315e0d6d97084d013f64e1efc5/bufferer-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "f0b0e171bc374c7b46b6e33493007bcc", "sha256": "c3a3f317b0e023682a1deccb175e3ff63f5381c2a10f9fd43c61a1807a13382b" }, "downloads": -1, "filename": "bufferer-0.3.tar.gz", "has_sig": false, "md5_digest": "f0b0e171bc374c7b46b6e33493007bcc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6314, "upload_time": "2017-04-08T09:37:03", "url": "https://files.pythonhosted.org/packages/bc/d5/d0d0fd73ff2f3f7894490490174bf52eb8b481e97700d4e653ce4aa84b9b/bufferer-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a613ff7e5d96398c6c9a9c8bb9bdc614", "sha256": "e56ae58fdda287a6022d3c9f0809ccbf0764619980b0c0100806750dfcfe1680" }, "downloads": -1, "filename": "bufferer-0.3.1.tar.gz", "has_sig": false, "md5_digest": "a613ff7e5d96398c6c9a9c8bb9bdc614", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6325, "upload_time": "2017-04-11T09:17:17", "url": "https://files.pythonhosted.org/packages/2d/a3/70b552884ca71cf8732939b3266915c9fa76b56959f861ff4910509e0954/bufferer-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "9e7aa8146f784b64eafef22385adb48a", "sha256": "41c70caf2808173ae7d4aee3c15bca89b59874e3a138be199ee4ce3559596ffe" }, "downloads": -1, "filename": "bufferer-0.3.2.tar.gz", "has_sig": false, "md5_digest": "9e7aa8146f784b64eafef22385adb48a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6356, "upload_time": "2017-04-11T09:47:57", "url": "https://files.pythonhosted.org/packages/b6/5a/edf4f02037bf155b79003b7850fb9d190b2e659fe2ea7de1dd9b27d99483/bufferer-0.3.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "542deb410776966a0ad8f5eba177740c", "sha256": "2e0cc34261cc59252dbc88a4a731ac32b2a9376a6cef5f8979b73e569ddbc577" }, "downloads": -1, "filename": "bufferer-0.4.tar.gz", "has_sig": false, "md5_digest": "542deb410776966a0ad8f5eba177740c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6438, "upload_time": "2017-09-22T13:29:03", "url": "https://files.pythonhosted.org/packages/df/6b/9f45baa8b739e285c95b6f05ba4bbe959689638d60075f9cd6662a076ea1/bufferer-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "005617dd65acbb78df029c95aff50bd2", "sha256": "ffca63fcd314fc64b7a8a8af3f0499c41c88867a5934075afbd3170354c63446" }, "downloads": -1, "filename": "bufferer-0.4.1.tar.gz", "has_sig": false, "md5_digest": "005617dd65acbb78df029c95aff50bd2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6447, "upload_time": "2017-09-25T07:28:05", "url": "https://files.pythonhosted.org/packages/29/a4/c4c59528358b54e6bd07c4bb08155cf4291de1e8704a62d3938f61f14898/bufferer-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "a523fda312c4b8b14d644172f00f89df", "sha256": "bb3d014250b9555fda4681797d2ca938ef7a335ac9492d7feb1e7c888b645a64" }, "downloads": -1, "filename": "bufferer-0.4.2.tar.gz", "has_sig": false, "md5_digest": "a523fda312c4b8b14d644172f00f89df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6374, "upload_time": "2017-09-28T12:41:39", "url": "https://files.pythonhosted.org/packages/23/42/26e44acc6c4040f45aca704c95b8922312a9f5ed429046f4a21e0804e99b/bufferer-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "c734a0992cc5fb4dc73cd3801f87b8a6", "sha256": "29c45712cab50542605efb45d08c960936dd2661ae479464b50a52c2739811c5" }, "downloads": -1, "filename": "bufferer-0.4.3.tar.gz", "has_sig": false, "md5_digest": "c734a0992cc5fb4dc73cd3801f87b8a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6377, "upload_time": "2017-10-16T11:32:04", "url": "https://files.pythonhosted.org/packages/56/db/0a95037e1a8d2a1fb6e9fa47e83039525d8039eb00797a2f129b1ebc111d/bufferer-0.4.3.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "feb3fcbd83184febc2749ae2095d045c", "sha256": "82243aff89295a0e1bc595c5fb74cec527a9a1507d10be72ba472de0da73e2cc" }, "downloads": -1, "filename": "bufferer-0.5.tar.gz", "has_sig": false, "md5_digest": "feb3fcbd83184febc2749ae2095d045c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6499, "upload_time": "2017-11-02T13:22:04", "url": "https://files.pythonhosted.org/packages/9b/89/2bb1557474da2d538a0ba008bac0300bdc69d5c7cc6b6cdce834ee627f23/bufferer-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "2f6adea123f1a65ed1084db82e1039ae", "sha256": "5080f0718caa77573278006ea526f3badd5a4435ba70edc2992745b6bca96268" }, "downloads": -1, "filename": "bufferer-0.6.tar.gz", "has_sig": false, "md5_digest": "2f6adea123f1a65ed1084db82e1039ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6336, "upload_time": "2018-03-19T12:50:51", "url": "https://files.pythonhosted.org/packages/78/df/a10efd9a1a8a1d4ea2be2a37f2ce170d1e14ea6bc60978c76ee6e63a479e/bufferer-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "4c9522df9e2bc9c36810529aaff387b7", "sha256": "edc9f3b8329c67fd5be916d920f4e3317c4afd66d72df9e8e4bdc63f00ab4ee3" }, "downloads": -1, "filename": "bufferer-0.6.1.tar.gz", "has_sig": false, "md5_digest": "4c9522df9e2bc9c36810529aaff387b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1145551, "upload_time": "2018-03-20T16:21:55", "url": "https://files.pythonhosted.org/packages/91/a1/8ebc1a07ad2b78c5eac2721ae04a608115d6114d8eb425e24ef3e9011558/bufferer-0.6.1.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "56735f46deeba9e37ee77e1bb75f9b46", "sha256": "9fb5a511850d4dc6cdd61408b172fc629f8be330a4674187fc31dc6bd58dc7e4" }, "downloads": -1, "filename": "bufferer-0.7.tar.gz", "has_sig": false, "md5_digest": "56735f46deeba9e37ee77e1bb75f9b46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1147084, "upload_time": "2018-03-28T14:20:04", "url": "https://files.pythonhosted.org/packages/e4/74/e430af2fe25586ef327e868be2d473eae85a4352fec4d8dae738ca309bf0/bufferer-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "da0ee82016a75c840ddf7ca44408f796", "sha256": "1b75b24da177ccccf7ab3a87e7bbe796f650187424056f455173c32a606888e2" }, "downloads": -1, "filename": "bufferer-0.8.tar.gz", "has_sig": false, "md5_digest": "da0ee82016a75c840ddf7ca44408f796", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1147286, "upload_time": "2018-04-05T07:46:54", "url": "https://files.pythonhosted.org/packages/91/a8/b3b8cb0b085a2b4d3b49994b6d45f3c7352e729baec80c3030b72d7ca712/bufferer-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "542d233e8f4c5a51cbc4325ba7d199ff", "sha256": "faee763c591b69249b25989c5da35018b605186f0e069c2a5e2916ae76cf8a6e" }, "downloads": -1, "filename": "bufferer-0.9.tar.gz", "has_sig": false, "md5_digest": "542d233e8f4c5a51cbc4325ba7d199ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1146980, "upload_time": "2018-10-22T09:23:50", "url": "https://files.pythonhosted.org/packages/b1/17/6a1c51a2edee03305df8fea62cba4bbfaba28e39f99b25f90b6c310eae63/bufferer-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8ed9997f628fdc9bc67816af556e7f5d", "sha256": "5f2536f62322a24f100299d3368d5608db3ecbd2643ba6dbbf59bdc007a1dfcc" }, "downloads": -1, "filename": "bufferer-0.14.tar.gz", "has_sig": false, "md5_digest": "8ed9997f628fdc9bc67816af556e7f5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1149047, "upload_time": "2019-07-08T09:23:33", "url": "https://files.pythonhosted.org/packages/55/05/bb46db8169c34a744316398fe8e11af9437daa5ad79221d8c9d098170609/bufferer-0.14.tar.gz" } ] }