You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过FFmpeg单命令将多个.m2ts文件合并为MKV/FLAC文件?

用单条FFmpeg命令合并蓝光多.m2ts文件为单个MKV

当然可以!你完全能用单条FFmpeg命令完成多.m2ts文件的合并,同时保留原视频编码、转音频为FLAC并忽略未知流。核心是借助FFmpeg的concat demuxer来可靠处理文件合并,还能保证播放顺序和原蓝光一致。

直接可用的单条命令

如果你的蓝光.m2ts文件是按顺序命名的(比如00001.m2ts00002.m2ts...),直接用这条命令:

ffmpeg -f concat -safe 0 -i <(printf "file '%s'\n" /mnt/dvd/BDMV/STREAM/0000*.m2ts) -vcodec copy -c:a flac -ignore_unknown output_merged.mkv

命令关键部分拆解

  • -f concat:告诉FFmpeg使用concat demuxer合并文件,这是处理同编码视频最稳妥的方式,能最大程度保证音视频同步。
  • -safe 0:允许FFmpeg读取绝对路径的文件(你的蓝光文件在/mnt路径下,默认安全模式会拒绝这类绝对路径)。
  • -i <(printf "file '%s'\n" /mnt/dvd/BDMV/STREAM/0000*.m2ts):这是Shell的进程替换技巧,动态生成包含所有目标.m2ts文件的列表,确保文件按命名顺序合并(对应蓝光的原生播放顺序),不用手动创建额外文本文件。
  • 后面的-vcodec copy -c:a flac -ignore_unknown:和你原来的命令完全一致,负责复制原视频流、将音频转码为FLAC、忽略光盘中可能存在的未知流类型。

额外注意事项

  1. 精准匹配文件:确保你用0000*.m2ts匹配的都是蓝光主内容文件,别误把花絮、菜单等无关文件加进来。如果主内容是特定编号范围(比如00001.m2ts00005.m2ts),可以把通配符改成0000[1-5].m2ts来精准筛选。
  2. 解决同步问题:如果合并后出现音视频不同步,可添加-fflags +genpts参数重新生成时间戳,命令调整为:
ffmpeg -f concat -safe 0 -fflags +genpts -i <(printf "file '%s'\n" /mnt/dvd/BDMV/STREAM/0000*.m2ts) -vcodec copy -c:a flac -ignore_unknown output_merged.mkv
  1. Shell兼容性<(...)进程替换在bash、zsh等主流Shell中都支持,如果用的是其他Shell,也可以先手动创建一个文本文件(比如filelist.txt),每行写file '/mnt/dvd/BDMV/STREAM/0000X.m2ts',再用ffmpeg -f concat -safe 0 -i filelist.txt ...执行。

内容的提问来源于stack exchange,提问作者dimm0k

火山引擎 最新活动