我使用 ffmpeg concat 合并多个 ts 文件,我使用以下命令
ffmpeg -y -f concat -i filelist.txt -c copy test.mkv
所有 ts 文件的路径都放在 filelist.txt 中,运行良好,但现在我的需求发生了变化,我想部分合并这些文件,例如,filelist.txt 中每个文件的长度为 1 分钟,但我只想合并每个文件的前 7 秒,所以我查看了 ffmpeg 文档并在 filelist.txt 中使用以下设置
file 'file1.ts'
inpoint 00:00:00.000
outpoint 00:00:07.000
file 'file2.ts'
inpoint 00:00:00.000
outpoint 00:00:07.000
...
运行上述命令时,ffmpeg 出现以下错误
[matroska @ 03eb10a0] Error parsing AAC extradata, unable to determine samplerate.
Error writing trailer of test.mkv: Invalid argumentframe= 0 fps=0.0 q=-1.0 Lsize= 1kB time=00:00:00.00 bitrate=N/A speed=N/A
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
我猜错误是由那些 ts 文件(无法确定采样率?)引起的,而不是命令行错误,但我的问题是现在如果有办法或一些 ffmpeg 命令标志来抑制此错误并仅合并那些 ts 文件无需重新编码或者如果源 ts 文件包含采样率问题,您就无法部分合并它们,谢谢!
更新:我尝试了 Gyan 关于 ffmpeg 建议的最后一个问题(ffmpeg 遇到未知时间戳错误), 合并为 mp4 但不合并为 mkv,奇怪的是“解析 AAC 额外数据时出错”的错误信息确实消失了,但错误仍然出现:“输出文件为空,未编码任何内容(如果使用,请检查 -ss / -t / -frames 参数)”,这是否意味着此类源 ts 文件不能在不重新编码的情况下部分合并?还有其他建议吗?