1

我正在尝试自学一些有关视频流和转码的知识,同时进行一些 Roku 应用程序开发。我有许多视频文件(主要是 FLV 格式(H.264/AAC)),我想流式传输到客户端,在这种情况下是 Roku 盒子(接受 MP4(H.264/AAC)和HTTP 实时流 (HLS))。我想知道是否可以对 FLV 文件进行转码/重新混合并将它们即时流式传输到客户端,也许是通过 HLS?

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

但我想知道......是否可以设置服务器来转码/重新混合文件并立即将输出文件(来自 ffmpeg/我正在使用的任何工具)流式传输到客户端?如果是这样,需要哪些工具来完成这项工作?是否可以在文件被转码或重新混合时使用媒体文件分段器来分割文件?

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

抱歉,如果我在这里离开基地,只是想通过这个破解我的方式。

谢谢!

4

1 回答 1

1

在 TS 段完成后立即获得 HLS 服务的技巧是让播放列表在数据到达磁盘时动态更新。

您要做的基本上是通过 HLS 流式传输实时事件,这绝对可以完成,它只需要工具之间的协调。

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

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

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

分段器可以在这里下载

于 2012-10-28T10:25:50.273 回答