【问题标题】:How to convert .ts file into good quality mp4 programmatically?如何以编程方式将 .ts 文件转换为高质量的 mp4?
【发布时间】:2015-09-23 14:15:58
【问题描述】:

我的网络服务从 m3u8 文件中获取 .ts 文件块并创建一个 .ts 文件。现在我想在网络上播放这个文件。为此,我在 Ubuntu 中使用“avconv”实用程序通过

avconv -i source.ts -acodec copy -vcodec copy destination.mp4

但是我每次都没有得到一个好的“可播放”mp4。有时它只是介于两者之间的音频和视频。它还显示错误的持续时间标签。

有没有什么好的方法可以将.ts 转换成mp4 或者更好的转换成webm 格式。我的要求是在网络上播放...

提前致谢

【问题讨论】:

    标签: video html5-video webm


    【解决方案1】:

    首先确保你的输入文件是OK的,因为GIGO(garbage in,garbage out)。

    HLS 可以使用自适应流媒体,因此请检查您的 m3u8 是否是变体播放列表。例如:

    #EXTM3U
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
    http://example.com/low.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
    http://example.com/mid.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
    http://example.com/hi.m3u8
    

    这是必要的,因为流可能会根据您的网络状况切换到不同的质量。如果可用带宽足够低,它可以选择仅音频流(如果可用)。

    如果是这种情况,请选择具有您可以获取的最大比特率的子播放列表,并将其直接用作ts 片段的来源。

    关于转码部分,我建议您使用ffmpeg 尝试相同的命令。获取最新的git 版本。您可以自己编译(推荐)或获取包/静态构建。

    如果复制编码仍然不起作用,您可以尝试重新编码文件(例如:-c:v x264 -c:a libfdk_aac)。

    对于WebM,您可以这样做:

    ffmpeg -i input.ts -c:v libvpx -c:a libvorbis output.webm
    

    对于VP8/Vorbis 或:

    ffmpeg -i input.ts -c:v libvpx-vp9 -c:a opus output.webm
    

    对于VP9/Opus

    这是最基本的例子,你应该设置编码参数而不是使用默认值。检查documentation

    https://trac.ffmpeg.org/wiki/Encode/VP8

    https://trac.ffmpeg.org/wiki/Encode/VP9

    https://trac.ffmpeg.org/wiki/Encode/H.264

    【讨论】:

    • 谢谢@aergistal !!安装 ffmpeg 确实适用于 mp4 和 webm .. 但是我正在考虑 mp4,因为 webm 编码需要很长时间!
    • @AnkitDhanna 你应该试试VP8,它更快。您可以按照指南中所示调整参数以获得更好的速度。即使是 MP4 中的 H.264 也可能需要一段时间才能使用较慢的配置文件(更好的压缩)。
    • 谢谢...我会调查的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2015-06-28
    • 2011-11-26
    • 2011-01-30
    • 2013-02-15
    • 2014-11-17
    • 1970-01-01
    相关资源
    最近更新 更多