如何将.ts文件转换为高质量的mp4编程?

时间:2015-09-23 14:15:59

标签: video html5-video webm

我的网络服务从m3u8文件中获取大块的.ts文件并创建一个.ts文件。现在我想在网上播放这个文件。为此我在Ubuntu中使用'avconv'实用工具

  

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

然而,每次我都没有得到一个好的'可玩'mp4。有时它只是音频和视频卡在两者之间。它还显示错误的持续时间标签。

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

提前致谢

1 个答案:

答案 0 :(得分:1)

首先确保输入文件正常,因为GIGO(垃圾输入,垃圾输出)。

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