我的网络服务从m3u8文件中获取大块的.ts文件并创建一个.ts文件。现在我想在网上播放这个文件。为此我在Ubuntu中使用'avconv'实用工具
avconv -i source.ts -acodec copy -vcodec copy destination.mp4
然而,每次我都没有得到一个好的'可玩'mp4。有时它只是音频和视频卡在两者之间。它还显示错误的持续时间标签。
有没有什么好方法可以将.ts转换成mp4或更好的转换为webm格式。我的要求是在网上播放......
提前致谢
答案 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