最近我有一个任务,需要将文件格式转换为 mp4 并进行流式传输。我使用 ffmpeg 作为转码工具。使用 php cgi wrapper 协议时,MP4 文件无法通过 http 协议进行流式传输,但是当输出格式更改为 mpegts 时,流媒体传输就可以正常运行。在网络上快速搜索 http://wiki.videolan.org/MPEG ,了解到建议使用 mpegts 格式来流式传输 mp4 文件。我需要更多关于这两种格式的深入了解,它们的优点和区别。
谢谢, 彼得
最近我有一个任务,需要将文件格式转换为 mp4 并进行流式传输。我使用 ffmpeg 作为转码工具。使用 php cgi wrapper 协议时,MP4 文件无法通过 http 协议进行流式传输,但是当输出格式更改为 mpegts 时,流媒体传输就可以正常运行。在网络上快速搜索 http://wiki.videolan.org/MPEG ,了解到建议使用 mpegts 格式来流式传输 mp4 文件。我需要更多关于这两种格式的深入了解,它们的优点和区别。
谢谢, 彼得
MPEG-TS旨在通过DVB、UDP组播以及HTTP进行事件的实时流式传输。它将流分割成基本流,并将其分段成小块。系统信息定期发送,以便接收器随时可以开始播放流。
MPEG-TS不适合用于流式传输文件,因为它不提供有关电影或歌曲持续时间以及您可以寻找的点的信息。
目前有一些新协议可以使用MPEG-TS通过HTTP进行流媒体传输,这些协议在文件中添加了附加元数据并解决了我之前提到的缺点。这些协议是HTTP Live Streaming和DASH(动态自适应流式传输)。
另一方面,MP4的流部分包含该信息,称为moov原子。问题是moov必须在媒体内容之前放置并首先从服务器下载。这样视频播放器就知道持续时间并且可以在不下载整个文件的情况下寻找任何点(称为HTTP伪流式传输)。
遗憾的是,ffmpeg将moov放在文件末尾。您可以使用像Xmoov-PHP这样的软件来解决这个问题。
ffmpeg -i your.mp4 -vcodec copy -acodec copy -movflags +faststart reordered.mp4
.mp4是文件的扩展名,而mpeg ts用于传输流。MPEG TS是数字视频广播中用于发送MPEG视频和MPEG音频的标准。基本上有两种类型的TS:SPTS和MPTS。SPTS仅包含单个节目,而MPTS则包含多个节目。
TS阅读器和VLC媒体播放器用于播放MPEG TS。如果您想了解更多信息,请访问以下链接:MPEG TS或传输流MPTS SPTS
传输流文件的扩展名为.ts。