Django框架的简单视频转码应用

django-video-transcoding的Python项目详细描述


django视频转码

Django框架的简单视频转码应用

buildcodecovUpdatesPyPI version

安装

系统要求

对于最新的Ubuntu LTS(20.04):

  1. ffmpeg-4.x版
$> sudo apt install ffmpeg
  1. 媒体信息
^{pr2}$
  1. 拉比MQ
$> sudo apt install rabbitmq-server

django视频转码

pip install django-video-transcoding

配置Django

编辑您的项目settings.py

INSTALLED_APPS+=['video_transcoding']

环境

django web服务器和celery中使用的常见env变量

DJANGO_SETTINGS_MODULE=YOUR_PROJECT.settings
VIDEO_TRANSCODING_CELERY_BROKER_URL=amqp://guest:guest@rabbitmq:15672/

仅限Web服务器环境变量:

VIDEO_DOWNLOAD_SOURCE=0
VIDEO_EDGES='http://edge-1.localhost,http://edge-2.localhost'

仅限芹菜的环境变量:

VIDEO_TEMP_DIR=/tmp
VIDEO_TRANSCODING_CELERY_CONCURRENCY=2
VIDEO_ORIGINS='http://origin-1.localhost/video,http://origin-2.localhost/video'

启动芹菜工人

$> celery worker -A video_transcoding.celery

演示项目

运行管理、存储和芹菜工人

docker-compose up

转换代码

  • curl -T cat.mp4 http://storage.localhost:8080/videos/sources/cat.mp4
  • 用上面的链接创建新视频
  • 等待视频将状态更改为“完成”。在
  • 在视频更改窗体管理页上有一个示例视频播放器。在

发展

测试

src/manage.py test

类型检查

$> pip install mypy django-stubs
$> cd src && /data/dvt/virtualenv/bin/dmypy run -- \
   --config-file ../mypy.ini video_transcoding

待定:

  • [x] 特拉维斯ci
  • []斯芬克斯文件-autodoc+手动
  • [x] 覆盖范围
  • [x] 打字
  • [x] 徽章
  • [x] 视频托管演示项目,包括docker compose、nginx和播放器演示

生产

正常关机

  • 如果您正在docker中运行代码转换器,请确保celery master进程 有pid 1(docker默认向其发送SIGTERM)
  • 当使用单独的芹菜应用程序时,将SIGUSR1从master发送到workers以触发 软停堆处理 (见video_transcoding.celery.send_term_to_children

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java理解泛型   java Guava:如何自定义减少多重映射?   java无法构建实体管理器工厂JPA/Hibernate   不区分大小写的LDAP搜索   在java中同时调用所有类对象中的方法   java做高级数字计算?2.1k等于2100等。。?   java Camel netty组件:未能创建选择器   exceljava。lang.ClassCastException:ExcelStreamAction无法强制转换为com。开放交响乐团。xwork2。行动   java避免对嵌套a4j:区域进行验证   java如何使一帧在1秒内显示50次,每次显示时消失   java一个HashMap的遍历,我得到NullPointerException   windows HP Stream 8平板电脑。。。Java swing JScrollPane滚动在触摸屏上不工作   java如何在运行时根据用户/程序员的需要自动增加数组的大小?