FFmpeg捕获、mkvtimestamp_v2和时间码don';我玩得不好

FFmpeg捕获、mkvtimestamp_v2和时间码don';我玩得不好,ffmpeg,video-capture,vsync,decklink,Ffmpeg,Video Capture,Vsync,Decklink,之后尝试捕获并修改文件中的TC。 我找到了一种很好的方法来存储捕获的时间戳。 使用以下行可以很好地工作: ffmpeg -hide_banner -f "decklink" -queue_size "1073741824" -raw_format "auto" -format_code "Hi50" -video_input "sdi" -i "bm mini One" -f

之后尝试捕获并修改文件中的TC。 我找到了一种很好的方法来存储捕获的时间戳。

使用以下行可以很好地工作:

ffmpeg -hide_banner -f "decklink" -queue_size "1073741824" -raw_format "auto" -format_code "Hi50" -video_input "sdi" -i "bm mini One" -filter_complex "settb=1/1000,setpts=RTCTIME/1000-1500000000000,mpdecimate,split[out][ts];[out]setpts=N/25/TB[out]" -map "[out]" -c:a "copy" -c:v "prores" -profile:v "1" -vendor "ap10" -pix_fmt "yuv422p10le" "/Volumes/Data/tst1.mov" -map "[ts]" -f mkvtimestamp_v2 "/Volumes/Data/time.txt" -vsync 0
但是,当我添加-timecode“00:00:00:00”(在输出中强制使用TC原子)时,可怕的事情发生了

ffmpeg -f "decklink" -queue_size "1073741824" -raw_format "auto" -format_code "Hi50" -video_input "sdi" -i "bm mini One" -filter_complex "settb=1/1000,setpts=RTCTIME/1000-1500000000000,mpdecimate,split[out][ts];[out]setpts=N/25/TB[out]" -map "[out]" -timecode "00:01:00:00" -c:a "copy" -c:v "prores" -profile:v "1" -vendor "ap10" -pix_fmt "yuv422p10le" "/Volumes/Data/tst1.mov" -map "[ts]" -f mkvtimestamp_v2 "/Volumes/Data/time.txt" -vsync 0
时间码不会以视频速度运行,会在此处或那里跳过一两帧,并且图像会在随机时间量(10秒到1分钟左右)后冻结

为什么时间码会把事情搞得那么糟?据我所知,它只是moov原子中的一对原子,以及一个实际TC值(作为帧)存储在mdat中的引用

我高度怀疑-vsync 0也能在视频上工作,我以前也遇到过这样的问题。如果我忽略这一点,视频很好,TC很好,但是没有元数据输出,只有#timecode格式v2