使用ffmpeg连接MKV时的问题:如何正确设置时间戳?

使用ffmpeg连接MKV时的问题:如何正确设置时间戳?,ffmpeg,timestamp,concatenation,mkv,Ffmpeg,Timestamp,Concatenation,Mkv,我尝试使用以下命令将2个mkv视频与ffmpeg连接起来: ffmpeg -i file-01.mkv -f mpegts -c copy -bsf:v h264_mp4toannexb file-01.mpeg.ts ffmpeg -i file-02.mkv -f mpegts -c copy -bsf:v h264_mp4toannexb file-02.mpeg.ts ffmpeg -isync -i "concat:file-01.mpeg.ts|file-02.mpeg.ts" -f

我尝试使用以下命令将2个mkv视频与ffmpeg连接起来:

ffmpeg -i file-01.mkv -f mpegts -c copy -bsf:v h264_mp4toannexb file-01.mpeg.ts
ffmpeg -i file-02.mkv -f mpegts -c copy -bsf:v h264_mp4toannexb file-02.mpeg.ts
ffmpeg -isync -i "concat:file-01.mpeg.ts|file-02.mpeg.ts" -f matroska
-c copy output.mkv
但是,我收到以下错误:

[matroska@0x7fc72a000600]流0的数据包中未设置时间戳。这已被弃用,将来将停止工作。修复代码以正确设置时间戳 [matroska@0x7fc72a000600]无法写入时间戳未知的数据包 av_交错_写入_帧():参数无效

如何设置时间戳?

好的,尝试以下步骤:

ffmpeg -i file-01.mkv -c copy -map v 01.mp4
ffmpeg -i file-02.mkv -c copy -map v 02.mp4
ffmpeg -i 01.mp4 -i file-01.mkv -map 0:v -map 1:a -c copy -bsf:v h264_mp4toannexb file-01.mpeg.ts
ffmpeg -i 02.mp4 -i file-02.mkv -map 0:v -map 1:a -c copy -bsf:v h264_mp4toannexb file-02.mpeg.ts
ffmpeg -i "concat:file-01.mpeg.ts|file-02.mpeg.ts" -f matroska
-c copy output.mkv

一些H.264流具有没有PTS值的数据包。FFmpeg随意支持多路复用这些流。

本身不一定是一个解决方案,但mkvmerge最终为我工作。也要简单得多:

mkvmerge -o "merged.mkv" "file1.mkv" +"file2.mkv"

-isync
在几年前被禁用。除非你的ffmpeg太旧,否则请将其删除。在
-i
之前添加
-fflags+genpts
,谢谢,@Mulvya。我使用
-fflags+genpts
尝试过,但是收到了关于未设置时间戳的相同错误。结果正常吗?谢谢,@Mulvya。结果显示,但结果基本上是两个MKV中第一个的重命名版本。文件是否有音频?仍然不工作,@Mulvya。导致转换失败的相同错误:
[matroska@0x7f869c000000]时间戳在流0的数据包中未设置。这已被弃用,将来将停止工作。修复代码以正确设置时间戳[matroska@0x7f869c000000]无法写入时间戳未知的数据包av_交错_write_frame():无效参数帧=1143 fps=0.0 q=-1.0 Lsize=8381kB时间=00:00:45.60比特率=1505.7kbits/s速度=667x视频:7857kB音频:528kB字幕:0kB其他流:0kB全局头:0kB muxing开销:未知转换失败上传文件。我最终使用了mkvmerge。没有问题。简单得多。