{ "info": { "author": "Robikz", "author_email": "zalewapl@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "Voyoffnik Andzej\n================\n\nVoyoffnik Andzej (voyandz) is a real-time AV streaming server akin to\nthe discontinued `ffserver`. Its primary purpose is to enable network\nstreaming of audio, video or audio & video in form of continuous,\nnon-seekable streams. The source feed can be any feed that can be\nprovided in a streamable form through a preinstalled program such as\n`ffmpeg`. The output stream can be any stream that can be produced by\na preinstalled program such as `ffmpeg`. Voyoffnik Andzej itself\ndoesn't delve into codec details, but merely deals with piping.\n\n`ffmpeg` not attached.\n\nHome page: https://github.com/Zalewa/voyandz/\n\nInstallation\n============\n\n```\n pip3 install voyandz\n```\n\nThen run:\n\n```\n voyandz -h\n```\n\nCurrent State\n=============\n\nAt current stage voyandz is already usable. It is possible to prepare\nconfiguration file that will create a usable pipeline. HTTP clients,\nsuch as browsers or command line downloaders, can be used to connect\nto stream endpoints and download the data produced by voyandz.\nvoyandz will work with as many input feeds and HTTP clients as possible\nuntil it hits soft limits such as CPU power or throughput.\n\nIt is currently untested how voyandz will behave during long-time\noperation or under heavy usage.\n\n\nWhat works\n----------\n\n- Home page, stats page - HTML, config dump - dumps config in JSON format.\n- Reading and parsing a config-file with defined streams and feeds.\n- Piping feeds to streams and then to HTTP clients; creating pipelines.\n- YAML configuration files allowing to define transcoding commands, mimetypes,\n client exclusive or shared streams, listen port, listen host.\n- A \"screenshot\" stream that produces one picture and closes connection.\n- Logging stderr of commands to a configured logdir.\n\n\nUnstable\n--------\n\n- Config format.\n- API.\n\n\nTODO\n----\n\n- Config documentation.\n- Config command templating; command args; allow to declare\n multiple similar feeds and streams without having to copy\n and paste the same text all over the config file.\n- Code documentation (docstrings).\n- Limit stderr logfiles to a set size, even\n though it should be logrotate's job.\n- Daemon mode (in the systemd era, should I even be concerned?)\n- Dead feed resurrection.\n\n\nDevelopment\n===========\n\nRequirements:\n\n- Python 3\n- virtualenv\n- make (optional)\n\nCreate virtual env, install dependencies, link the application:\n\n```\n python3 -m venv venv\n . venv/bin/activate\n make init\n make dev\n```\n\nTo start in development mode:\n\n```\n FLASK_ENV=development voyandz -f config/minimal\n```\n\nCleaning:\n\n```\n make clean\n rm -rf venv\n```\n\nRepository Structure\n====================\n\nProject file structure should adhere to the practices\nrecommended for Python and Flask projects.\n\n```\n .\n |- config - example configuration files\n |- sandbox - development scraps, experiments\n \\- voyandz - application code\n```\n\nName\n====\n\nV stands for Video, A stands for Audio, ff implies purpose.\nThe rest is gibberish. Short name is `voyandz`, all lower-case.\n\nTroubleshooting\n===============\n\n**Problem:** Running on Linux and getting\n\"cannot modify pipe size: [Errno 1] Operation not permitted\"\nerror upon heavy load.\n\n**Solution:**\n\nvoyandz makes extensive use of pipes. To improve piping performance,\nthe size of those pipes is increased using `F_SETPIPE_SZ` `fcntl` calls.\nHowever, Linux kernel imposes a limit on non-root users on how much\nmemory can be consumed by the pipes by each user. This limit is\ncontrolled through a kernel parameter\n\n```\n fs.pipe-user-pages-soft\n```\n\nThe value of this parameter is expressed in *pages*, which means the total\nallowed size is at least 4kB times this value. You can read more at:\nhttps://patchwork.kernel.org/patch/8055531/\n\nvoyandz will continue to operate even if the limit is breached, but all\npipes that try to go above the limit will actually be limited to the\nsize of one page. Once usage drops and old pipes are closed, new pipes\nrecover the capability to increase their sizes.\n\nTo allow more pipes to be opened with increased size do one of those:\n\n* `sudo sysctl fs.pipe-user-pages-soft=65536` to increase the limit;\n Choose a value right for you if you think 65536 is still not enough.\n\n* `sudo sysctl fs.pipe-user-pages-soft=0` to disable the limit completely\n\nTo persist this value between reboots add it to `/etc/sysctl.conf` or\n`/etc/sysctl.d/`.\n\nMore info: http://man7.org/linux/man-pages/man7/pipe.7.html\n\nKeywords: pipe-user-pages-soft, PermissionError, Operation not permitted\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT License\n\nCopyright (c) 2018 Robikz \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", "maintainer": "", "maintainer_email": "", "name": "voyandz", "package_url": "https://pypi.org/project/voyandz/", "platform": "", "project_url": "https://pypi.org/project/voyandz/", "project_urls": null, "release_url": "https://pypi.org/project/voyandz/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "Voyoffnik Andzej - an AV HTTP piping server", "version": "0.2.2" }, "last_serial": 4374267, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "4c36347db41e19265a369dcc979ddcdd", "sha256": "722694f58c0ab127cc9afc52e316b05c7a09dfa377244dad816d5d9dfc45d850" }, "downloads": -1, "filename": "voyandz-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4c36347db41e19265a369dcc979ddcdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14536, "upload_time": "2018-07-29T21:49:15", "url": "https://files.pythonhosted.org/packages/72/7b/1a40d8f4f2c8e396c292d14fd5e7246631a4998bc722b0fdcb90921a4883/voyandz-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f03dca470dbd3ebbf73507fc025d94ad", "sha256": "d29eb38edc64fdd021449308729c4e1b9f9d742be7ba9f12b84d10c52b207e9c" }, "downloads": -1, "filename": "voyandz-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f03dca470dbd3ebbf73507fc025d94ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14727, "upload_time": "2018-07-29T22:03:12", "url": "https://files.pythonhosted.org/packages/cf/22/834341a64f60f61e0bb1ed85b946eab0062aed3b35483862cc06b753f66c/voyandz-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "078451d138c8158c9e1f3b8c815682a6", "sha256": "279ce2fd1ab1b9e50a5e0a5e886e561e9e2892f8b66a50c29c209cda16443f27" }, "downloads": -1, "filename": "voyandz-0.1.2.tar.gz", "has_sig": false, "md5_digest": "078451d138c8158c9e1f3b8c815682a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13275, "upload_time": "2018-08-01T17:31:09", "url": "https://files.pythonhosted.org/packages/bc/f3/5ea432bea69e384fb11abdf8dce140ca8ebc325ea742738037b367a9f480/voyandz-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "44d453e241f212d5cc2ede0746ed4294", "sha256": "c3170542e5a322615254b8017338881cba179001b962b79372fb71aff7343192" }, "downloads": -1, "filename": "voyandz-0.2.0.tar.gz", "has_sig": false, "md5_digest": "44d453e241f212d5cc2ede0746ed4294", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17110, "upload_time": "2018-08-23T17:25:18", "url": "https://files.pythonhosted.org/packages/ea/87/ffd053879df4a8dbbff8bd468b3ff80ed9edea31375bfda74ba022bbf064/voyandz-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "0ff5f494856f126ac9f4f649355b575e", "sha256": "6181e9f925a198f584ccac32fcac1205c3feb98bae0cf2e0a2ea5a308bac7e93" }, "downloads": -1, "filename": "voyandz-0.2.1.tar.gz", "has_sig": false, "md5_digest": "0ff5f494856f126ac9f4f649355b575e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16437, "upload_time": "2018-09-12T10:03:02", "url": "https://files.pythonhosted.org/packages/d4/82/a8076a07f81bd1c25c833cc7ca572bf25a874fa4c14c86ea7ace53e605c7/voyandz-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "40393a5558e47d4e2483a4a7a96c2030", "sha256": "a714c779de7be220071571f8257595a2438e8287d0afe87d6d7cb10509c5989a" }, "downloads": -1, "filename": "voyandz-0.2.2.tar.gz", "has_sig": false, "md5_digest": "40393a5558e47d4e2483a4a7a96c2030", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19337, "upload_time": "2018-10-14T13:42:26", "url": "https://files.pythonhosted.org/packages/9d/b3/ebb24d3060d53c4c90b7f3b28cf6719f216b6fd81a7bf3d41f22518f35f4/voyandz-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "40393a5558e47d4e2483a4a7a96c2030", "sha256": "a714c779de7be220071571f8257595a2438e8287d0afe87d6d7cb10509c5989a" }, "downloads": -1, "filename": "voyandz-0.2.2.tar.gz", "has_sig": false, "md5_digest": "40393a5558e47d4e2483a4a7a96c2030", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19337, "upload_time": "2018-10-14T13:42:26", "url": "https://files.pythonhosted.org/packages/9d/b3/ebb24d3060d53c4c90b7f3b28cf6719f216b6fd81a7bf3d41f22518f35f4/voyandz-0.2.2.tar.gz" } ] }