我在这里看到(如何无损地将 .ts 文件转换为主流格式?)为此目的推荐 MKV(ffmpeg -i input -map 0 -c copy output.mkv
),但不推荐 MP4,据说它涉及重新编码视频。
(基于此,我sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv' %f
在上下文菜单操作中使用,如此处所述。)
在这里(如何将 .mkv 文件无损地转换为 .mp4 文件?)我看到无需重新编码即可将 MKV 转换为 MP4 非常容易(ffmpeg -i input.mkv -codec copy output.mp4
),只需更改容器即可。
如果 TS->MKV->MP4 转换-无需重新编码是可能的,那么 TS->MP4 不应该直接也可以吗?
我已将命令添加到我的文件管理器上下文菜单中,sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mp4' %f
并且它对 .ts 文件的工作没有问题,就像对 .mkv 一样。
使用 Mediainfo 检查两个生成的 MP4 文件(TS->MP4
和TS->MKV->MP4
,前面提到的命令在哪里->
),我看到有关其视频内容的基本相同信息。
其余的都是一样的:
编码设置:cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x3 / me=dia / subme=3 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=8 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min =25 / scenecut=40 / intra_refresh=0 / rc_lookahead=0 / rc=crf / mbtree=0 / crf=24.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / vbv_maxrate=3000 / vbv_bufsize=3000 /crf_max=0.0/nal_hrd=none/filler=0/ip_ratio=0.71/pb_ratio=1.30/aq=1:1.00
TS > MP4?视情况而定™
是的,如果视频和音频格式兼容,TS 视频可以直接转换(重新混合)为 MP4 视频,无需重新编码。您的视频是 H.264,这是目前 MP4 中最常见和最兼容的视频格式,因此将其从 TS 复制到 MP4 将没有问题。
任意格式
TS 支持的格式比 MP4 多。如果您尝试将任意格式复用到 MP4 中,可能的结果是:
成功- FFmpeg MP4 多路复用器和您的播放器/设备支持这些格式。
部分成功- FFmpeg MP4 多路复用器支持这些格式,但您的播放器/设备不支持这些格式。这可能是 MP4 支持的不太常见或传统格式的情况。
失败- 格式不受支持,并且多路复用器会给您一条错误消息,例如
Could not find tag for codec foo in stream #0, codec not currently supported in container
推荐的程序
因此,为了完全兼容,如果格式不是常见且广泛支持的 H.264 或 H.265/HEVC 视频 + AAC 音频,我建议重新编码。
对于自动化,您可以使用
ffprobe
来确定格式。请参阅有没有办法在转码之前使用 ffmpeg 来确定文件的编码?例如。然后在脚本中使用 if/then 语句来执行正确的命令。字幕
主要的例外是字幕。MP4 没有很好的字幕支持。如果您的 TS 包含文本字幕(ASS/SSA、SRT),那么您可以将它们转换为定时文本(
-c:s mov_text
),但播放器之间对定时文本字幕的支持并不普遍。必须排除基于图像的字幕,例如使用负映射-map 0 -map -0:s
。我有超过 200 个来自 DLINK 安全摄像头的 .ts 文件,我需要为当局(保险)无损缝合。
首先创建要组合的 ts 文件列表:
将它们合并为一个 ts:
然后将 ts 直接无损地转换为当局熟知的格式