如何以编程方式将 .ts 文件转换为高质量的 mp4?
How to convert .ts file into good quality mp4 programmatically?
我的网络服务从一个 m3u8 文件中获取 .ts 文件块并创建一个 .ts file.Now 我想在我使用 'avconv' 实用程序的 web.For 上播放这个文件在 Ubuntu 通过
avconv -i source.ts -acodec copy -vcodec copy destination.mp4
但是我没有得到好的 'playable' mp4 everytime.Sometimes 它只是音频和视频卡在两者之间。它还显示错误的持续时间标签。
有什么好的方法可以将 .ts 转换成 mp4 或更好地转换成 webm format.My 要求是在网络上播放 ...
提前致谢
首先确保你的输入文件是正确的,因为 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
这是必要的,因为流可能会根据您的网络状况切换到不同的质量。如果可用带宽足够低,它可以 select 纯音频流(如果可用)。
如果是这样,请选择您可以获取的最大比特率的子播放列表,并将其直接用作您的 ts
片段的来源。
关于转码部分,我建议您使用 ffmpeg 尝试相同的命令。获取最新的 git
版本。您可以自己编译(推荐)或获取 package/static 构建。
如果复制编码仍然不起作用,您可以尝试重新编码文件(例如:-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
我的网络服务从一个 m3u8 文件中获取 .ts 文件块并创建一个 .ts file.Now 我想在我使用 'avconv' 实用程序的 web.For 上播放这个文件在 Ubuntu 通过
avconv -i source.ts -acodec copy -vcodec copy destination.mp4
但是我没有得到好的 'playable' mp4 everytime.Sometimes 它只是音频和视频卡在两者之间。它还显示错误的持续时间标签。
有什么好的方法可以将 .ts 转换成 mp4 或更好地转换成 webm format.My 要求是在网络上播放 ...
提前致谢
首先确保你的输入文件是正确的,因为 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
这是必要的,因为流可能会根据您的网络状况切换到不同的质量。如果可用带宽足够低,它可以 select 纯音频流(如果可用)。
如果是这样,请选择您可以获取的最大比特率的子播放列表,并将其直接用作您的 ts
片段的来源。
关于转码部分,我建议您使用 ffmpeg 尝试相同的命令。获取最新的 git
版本。您可以自己编译(推荐)或获取 package/static 构建。
如果复制编码仍然不起作用,您可以尝试重新编码文件(例如:-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