22

最近我的任务是将文件格式转换为 mp4 并流式传输。我使用 ffmpeg 作为转码工具。MP4 文件不会通过 http 协议流式传输 [使用 php cgi 包装器],但随后输出格式更改为 mpegts 流式传输发生并且工作正常。在网络http://wiki.videolan.org/MPEG上快速搜索 相关并建议使用 mpegts 流式传输 mp4 文件。我需要更多地了解这两种格式,它们的优点和区别。

谢谢,彼得

4

3 回答 3

50

MPEG-TS 设计用于通过 DVB、UDP 多播以及 HTTP 实时流式传输事件。它将流划分为基本流,这些基本流被分割成小块。系统信息会定期发送,因此接收方可以随时开始播放流。

MPEG-TS 不适用于流文件,因为它不提供有关电影或歌曲持续时间的信息,以及您可以寻找的点。

有一些新协议可以使用 MPEG-TS 在 HTTP 上进行流式传输,将额外的元数据放入文件中并解决我之前谈到的缺点。它们是 HTTP Live Streaming 和 DASH(基于 HTTP 的动态自适应流)。

另一方面,MP4 在流的一部分中具有该信息,称为 moov atom。关键是moov必须放在媒体内容之前并首先从服务器下载。这样视频播放器知道持续时间并且可以在不下载整个文件的情况下搜索任何点(这称为HTTP伪流)。

可悲的是,ffmpeg 将 moov 放在文件的末尾。您可以使用 Xmoov-PHP 等软件解决此问题。

在这里您可以找到有关伪流的更多信息。

于 2012-08-03T09:23:47.593 回答
12

您可以使用以下 FFMPEG 命令重新排序 MP4 文件,将 moov 部分放在文件的开头:

ffmpeg -i your.mp4 -vcodec copy -acodec copy -movflags +faststart reordered.mp4

于 2015-01-03T18:48:22.510 回答
0

.mp4 是文件的扩展名,而 mpeg ts 用于传输流......mpeg ts 是用于数字视频广播的标准,用于发送 mpeg 视频和 mpeg 音频。基本上有两种类型的 ts spts 和 mpts spts 仅包含单个程序,而 mpts 包含多个程序。ts 阅读器和 vlc 媒体播放器用于播放 mpeg ts,如果您想了解更多信息,请参阅 MPEG TS OR TRANSPORT STREAM MPTS SPTS

传输流文件的扩展名为 .ts

于 2017-02-24T16:54:39.473 回答