Transcode / remux FLV和流动

时间:2012-07-31 02:03:36

标签: ruby-on-rails video-streaming video-encoding mediastreamsegmenter roku

我正在尝试教自己一些关于视频流和转码的内容,以及一些Roku应用程序开发。我有许多视频文件(主要是FLV格式(H.264 / AAC)),我想要流式传输到客户端,在这种情况下是一个Roku盒子(接受MP4(H.264 / AAC)和HTTP直播流(HLS))。我想知道是否有可能转发/重新启动FLV文件并将它们动态传输到客户端,也许是通过HLS传输?

我尝试使用ffmpeg来重新传输文件并在转码过程中立即提供它们,但在写入过程完成之前它们无法播放。我可以让Roku通过Apache / Rails播放完成的MP4文件。

但我想知道......是否可以设置服务器来转码/重新传输文件并立即将输出文件(来自ffmpeg /我正在使用的任何工具)流式传输到客户端?如果是这样,需要哪些工具才能实现这一目标?是否可以使用媒体文件分段程序来切换文件,因为它正在被转码或重新加载?

我很清楚转码过程是CPU密集型的,但我并不担心转码和流媒体的实用性,因为这只是一个个人教育项目(而且我有一个闲置系统,如果处理这个是有能力的。)

道歉,如果我离开这里,只是试图破解我的方式。

谢谢!

1 个答案:

答案 0 :(得分:1)

立即获得HLS的技巧是TS段已经完成,使得播放列表在数据到达磁盘时动态更新。

你要做的事实上是通过HLS传输Live事件,这绝对可以完成,它只是需要工具之间的协调。

开源分段器能够做到这一点,诀窍是让ffmpeg写出单个MPEG-TS流(未分段)并将其写入命名管道(或等效于您的操作系统),然后从中读取分段器命名管道并将文件写入共享网站空间中的目录。

分段器在处理时反复更新磁盘上的M3U8文件,因此可以将其用作“实时”流,直到任务完成。

当ffmpeg关闭其输出时,分段器将结束标记放入M3U8,文件变为“VOD”。

可以下载分段器here