从 beaglebone black 上的文件实时转码 1080p 流的选项
Posted
技术标签:
【中文标题】从 beaglebone black 上的文件实时转码 1080p 流的选项【英文标题】:Options for realtime transcoding 1080p streams from file on beaglebone black 【发布时间】:2014-02-28 15:33:38 【问题描述】:我有几个 1080p 视频流。我希望能够将这些流中的任何一个流式传输到浏览器。这要求我转码为更小的分辨率和 flv 格式或 ogg/webm 格式。我使用以下命令行在 beagle bone black 上使用 vlc 进行了尝试。
cvlc 00080.MTS --sout "#transcodevcodec=FLV1,acodec=mp3,vb=200,deinterlace,ab=32,width=720,height=480:stdaccess=http,mux=ffmpegmux=flv,dst=/stream.flv,caching=3000"
这给了我以下错误
[h264 @ 0xb547c3e0] reference picture missing during reorder
[h264 @ 0xb547c3e0] Missing reference picture
我认为这是因为处理器太慢且无法处理 1080p。因为我用 480p 视频尝试了同样的事情,但我没有收到这样的错误。
我的问题是 - 有没有其他方法可以即时转码为更小的分辨率,以便可以流式传输或通过 html5 视频观看。我尝试对所有流进行预转码,但我花了 4 天时间,它仍然没有完成对我拥有的所有视频的转码 :) 所以这可能不是一个选择。提前感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:要使用 html5 播放器,您唯一的选择是 ogg and webm(或 mp4,但 vlc 不支持)
流式传输到 WEBM
cvlc \
v4l2:///dev/video0 \
--sout '#transcodevcodec=VP80,vb=1000:stdaccess=httpmime=video/webm,mux=webm,dst=:8080/cam1' \
-vvv
注意事项:
180% - 250% CPU 使用率(在 4 核/8 线程 i7-4770 上)
流式传输到 OGG
cvlc \
v4l2:///dev/video0 \
--sout '#transcodevcodec=theo,vb=2000:stdaccess=httpmime=video/ogg,mux=ogg,dst=:8080/cam1' \
-vvv
注意事项
30% CPU 使用率 质量比 webm 差(即使比特率为 2xWebM 比特率)【讨论】:
谢谢马蒂亚斯。看起来 webm 是不可能的,因为我需要在低功耗处理器上工作。 Ogg可能是一种可能性。但是我已经拿到了一个树莓派板,我将尝试使用编译为使用 GPU 和解码器硬件加速器的 vlc 进行流式传输,看看这是否能给我带来一些性能改进。 I will be following the steps in this tutorial。当我完成它时,我会在这里发布结果。 酷 :) 期待看到你的结果 如果有人感兴趣。我能够使用树莓派上的硬件加速器使用名为 omxtx 的开源项目将 1080p MTS(h264 视频)转码(仍在处理流媒体)到 480p 视频。我的计划是将它混合到一个 mp4 容器中,并将其用于 html5 视频标签(大多数浏览器都支持 mp4 视频标签)。无论如何,decode-resize-encode 路径的 cpu 利用率只有 20%,我认为这相当不错,因此流式传输 1080p 视频似乎是一个现实的选择。 转码工作正常。你也可以使用 ffmpeg 。问题是 mp4 不是适合实时流媒体的格式(仅当您对其进行分段时)。 Mp4 将对于回放很重要的元数据放在文件的末尾,这在实时流中是不存在的。这就是为什么通常它不起作用的原因。 所以 ffmpeg 不使用 rpi 内置的硬件加速,因此会非常慢。至于实时流媒体,我必须玩一点,但可以使用零散的 mp4 和其他此类选项。我不确定是否所有浏览器都支持它,但从谷歌搜索来看,至少 saffari 支持某种形式的 mp4 文件流式传输。还有 1 个我可以尝试的实验是我使用硬件解码和缩放,然后在 cpu 上使用 ffmpeg 对缩放的 YUV 进行编码。我不确定我是否可以满足实时要求,但如果 mp4 不起作用,它是我的备份。以上是关于从 beaglebone black 上的文件实时转码 1080p 流的选项的主要内容,如果未能解决你的问题,请参考以下文章
Beaglebone Black 和 Qt 上的 ALSA 问题:-lasound 未找到
如何使用Debian 8.2图像闪烁BeagleBone Black eMMC?