使用collective.transcode.daemon为Plone视频文件提供转码支持
项目描述
collective.transcode.* 或简称为 transcode.star,是一组模块,为Plone站点提供转码服务。
命名方案和基本设计原则都受到了 collective.blog.star 的启发。具体来说
模块化。不是每个人都想要软件提供的所有功能。
灵活。不要假设人们想要以某种方式使用您的软件。
简单。如果有简单的方法来做某事,那就这样做。
符合Plone风格。Plone已经内置了我们需要的90%。使用它。
它可以直接与标准Plone文件一起工作,提供转码服务,将视频内容上传为网络友好格式(mp4, ogv)。此外,还会从视频的第5秒提取jpeg缩略图,并在转码完成后,在IAboveContentBody视图管理器内显示指向生成的mp4文件的flowplayer小部件。
Transcode.star可以通过Plone控制面板轻松配置,以与任何自定义AT内容类型一起工作,只要模式中有文件字段。在Transcode设置面板中,您可以在支持门户网站类型中输入新行,格式为customPortalType:fileFieldName,其中customPortalType是您的portal_type名称,fileFieldName是需要转码的文件字段名称。
计划在即将发布的版本中支持Dexterity内容类型。
为了使转码工作,您需要启动buildout提供的transcodedaemon实例。
如果您的转码需求很高,您可以在负载均衡的设置中配置多个转码守护进程。Transcode.star将选择具有最小转码队列长度的守护进程。
transcode.star和transcode.daemon之间的所有通信都使用pycrypto模块的对称加密加密,以确保转码服务器(s)只转码Plone站点发送的视频,防止第三方滥用。此外,还特别关注通过使用相同的加密通道在私有状态(Plone站点中用户的典型场景,当用户上传文件)转码视频。
要求
除了buildout组装的内容之外,转码脚本要正常工作,还必须手动安装以下依赖项
具有x264支持的ffmpeg
ffmpeg2theora
在Ubuntu 10.04上,您可以使用以下命令安装上述内容
sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list \ http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list sudo apt-get --quiet update && sudo apt-get --yes --quiet \ --allow-unauthenticated install medibuntu-keyring sudo apt-get --quiet update sudo aptitude install build-essential libavcodec-unstripped-52 ffmpeg \ ffmpeg2theora
安装
Plone 4.x
python2.6 bootstrap.py ./bin/buildout
使用方法
启动zeo
./bin/zeoserver start
启动转码守护进程
./bin/transcodedaemon start # or fg to start it in the foreground
启动工作实例
./bin/worker start
启动Zope
./bin/instance start
添加新的Plone站点,转到安装产品表单并安装transcode.star。将出现一个名为“Transcode设置”的新控制面板屏幕。您可以使用它来配置支持的配置文件,支持的mime_types以及需要转码的portal_types及其相应字段。如果您已更改buildout中的密钥,请确保在此处也输入新密钥。
然后只需添加一个新对象(默认为文件)并上传一个具有支持mime_types中mime类型的文件。如果您在后台运行transcodedaemon和zope,您将能够看到正在进行的转码过程。当转码完成后,刷新您的内容类型视图页面,您应该会看到在您的视频上方加载了mp4版本的flowplayer实例。
对于生产部署,请确保更改buildout.cfg和Transcode设置面板中的密钥。
此外,在生产中使用时,请确保由Apache直接提供转码文件,而不是Twisted。
鸣谢
由unweb.me创建 - https://unweb.me
EngageMedia部分赞助开发 - http://engagemedia.org
贡献者
Dimitris Moraitis,unweb.me
Christos Psaltis,unweb.me
Markos Gogoulos,unweb.me
Mike Muzurakis,unweb.me
Anna Helme,sagaponic.net
Giacomo Spettoli,redomino.com
Rok Garbas,garbas.si
变更日志
0.21 (2013-01-30)
修复站点管理员的权限问题 [mgogoulos]
隐藏嵌入视图中的管理页脚 [mgogoulos]
从嵌入视频中删除统计信息 [clopy]
0.20 (2012-12-04)
更新transcodedaemon和脚本 [dimo]
更新unisubs小部件文件 [mgogoulos, dimo]
0.19 (2012-11-17)
添加下载链接和分享按钮 [dimo]
支持嵌入中的可变尺寸 [dimo]
修复嵌入样式 [clopy]
为通用字幕小部件使用本地js文件 [dimo, mgogoulos]
添加对通用字幕的支持 [dimo, clopy, mgogoulos]
修复转码私有视频时的未经授权访问 [clopy]
删除删除视频时删除的转码视频 [mgogoulos]
修复plone.app.async上的实用程序并删除已弃用的补丁 [mgogoulos]
0.18 (2012-07-23)
以iOS友好的方式初始化mediaelementjs播放器 [dimo]
0.17 (2012-07-12)
如果plone.app.async可用,则异步执行转码作业 [dimo, mgogoulos]
更新到Plone 4.2 [dimo]
删除对Plone 3.x的支持 [dimo]
0.16 (2012-04-11)
将嵌入的favicon代码移动到embed.pt [clopy]
在新标签页中打开unisubs共享链接 [clopy]
0.15 (2012-03-28)
修复嵌入视频中的字幕选择问题 [clopy]
为嵌入视频添加“查看原始网站标志” [mgogoulos]
0.14 (2012-01-05)
将video/x-matroska添加到支持的MIME类型 [dimo]
改进嵌入视图显示并修复嵌入尺寸 [dimo]
当由于不支持的MIME类型而跳过转码时发出警告 [dimo]
嵌入视图应使用父iframe的尺寸 [dimo]
首先在内容类型中查找缩略图 [dimo]
0.13 (2011-12-21)
预加载视频元数据,修复通用字幕小部件显示问题 [dimo]
0.12 (2011-12-18)
改进嵌入视图样式 [dimo]
0.11 (2011-12-17)
修复controlpanel界面的bug [giacomos]
将仓库移动到github [garbas]
使用html5/mediaelementjs进行视频播放,删除flowplayer [dimo, clopy, cpsaltis]
更新buildout、转码脚本,添加ffmpeg [cpsaltis, dimo]
启用切换到高/低质量 [dimo, clopy]
提供嵌入代码 [dimo, clopy]
跟踪转码进度 [dimo]
支持opensubtitles [dimo, clopy]
0.10 (2011-05-10)
更新bootstrap.py [dimo]
0.9 (2011-03-29)
在Plone 3 buildout中将plone.app.registry固定到1.0b2 - 感谢Daniel Marks的报告 [dimo]
0.8 (2011-03-10)
添加在添加作业到转码工具时指定转码配置文件选项
删除未使用的html5选项
0.7 (2010-11-25)
从setup.py中删除PasteScript依赖关系,这导致依赖包中出现问题 [dimo]
使用transcode daemon 0.7
0.6 (2010-10-21)
使用transcode daemon 0.6,防止可能的pycrypto版本冲突 [dimo]
0.5 (2010-10-09)
当从门户中删除相应的内容对象时,删除转码的视频文件 [clopy, dimo]
防止在Plone 3.x中重新安装时删除TranscodeTool [clopy]
collective.transcode.burnstation支持 [clopy, dimo, cpsaltis, provetza]
0.4 (2010-08-04)
使用transcode.daemon 0.4并简化buildout [dimo]
0.3 (2010-07-31)
解决plone.app.blob与Unicode文件名的问题的工作方案 [dimo]
修复强制重新转码挂起的请求 [dimo]
0.2 (2010-07-23)
首次公开发布 [dimo]