3

我正在构建一个记录直播电视的应用程序(dvbt:mpeg.ts-files)并立即使用 ffmpeg 将其转码为 webm 文件。我能够以恒定的速度做到这一点;所以 ffmpeg 没有赶上不断增长的文件。

现在我想在 html5 网站上播放这个文件。这可行,但是当 ffmpeg 未完成转码(并且我的 webm 文件仍在增长)时,我无法找到它(并且没有进度条)。

是否可以在进行转码时查找视频文件?我错过了一些 ffmpeg 设置吗?还是 webm 的问题?

这就是我现在所拥有的:

ffmpeg -re "inputfile.ts" -y -f webm -vcodec libvpx -acodec libvorbis \ 
       -aq 90 -ac 2 -b:v 1300k -threads 2 "outputfile.webm"

谢谢

4

1 回答 1

1

我不知道这会有所帮助,但我已经研究了一个与您类似的解决方案,将 ffmpeg 转码为 flash 以在网络上流式传输。搜索方法需要播放器中的 JavaScript 来收集搜索位置,然后更改播放器的 URL,告诉后端从新位置重新开始流式传输,例如:

http://server/player.php?video=x.flv&pos=1838

在后端,ffmpeg 命令类似于:

ffmpeg -y -ss 1838 -i x.mpg -s 320x240 -g 30 -r 24 -f flv -deinterlace -ac 1 -ar 11025 -ab 64k -b 256k

但是,我遇到的问题是 -ss 导致 ffmpeg 在搜索时拍摄视频的快照。因此,如果视频是实时录制的(仍在写入),则转码流将在播放到达“相对结束”(流开始时结束的时间点)时结束。我仍然没有找到解决这个问题的方法。

如果您对观看现场录音不感兴趣,我认为类似的方法可能对您有用 - 如果您有将 JavaScript 注入 HTML5 播放器的方法。

于 2012-08-25T19:59:43.270 回答