tentando capturar uma placa de captura com FFmpeg em 60000/1001 (59,94) FPS. Tudo parece funcionar bem até que eu arrasto o arquivo para outro programa como o Adobe Premiere, ele não consegue dizer que o vídeo é um timecode drop-frame.
Quando analiso o vídeo ffprobe -i [input] -show_streams
, ele diz timecode=N/A, como faço para injetar o timecode adequado nos metadados do arquivo durante a gravação? Estou mesmo entendendo isso corretamente? É apenas quando eu arrasto o vídeo para o Premiere e "crio a sequência do clipe", que define automaticamente o timecode para 59,94 quadros sem queda, o que obviamente será um problema para a sincronização A/V. Posso alterar manualmente o código de tempo da sequência, mas prefiro muito mais que apenas puxe isso do arquivo de alguma forma.
Comando que estou usando para gravar:
ffmpeg -y -hide_banner `
-thread_queue_size 9999 -indexmem 9999 -f dshow -rtbufsize 2147.48M -video_size 3840x2160 -framerate 60000/1001 `
-pixel_format yuyv422 -i video="AVerMedia HD Capture GC573 1":audio="SPDIF/ADAT (1+2) (RME Fireface UC)" `
-map 0:0,0:1 -map 0:1 -c:v h264_nvenc -preset: hp -r 60000/1001 -rc-lookahead 120 `
-pix_fmt yuv420p -b:v 288M -minrate 288M -maxrate 288M -bufsize 288M -c:a aac -ar 44100 -b:a 320k `
-af "aresample=async=250" -max_muxing_queue_size 9999 `
C:\Users\djcim\Videos\FFmpeg\AM\AM.mov
Não sei como o Premiere funciona especificamente, mas o timecode não é o mesmo que a taxa de quadros do projeto. O timecode é apenas um rótulo atribuído aos quadros para indicar seu registro de data e hora no
HH:MM:SS;FF
formulário. Como o timecode consiste em elementos inteiros, eles não podem manter correspondência com precisão com a contagem de quadros real em um fluxo com uma taxa de quadros fracionária. Se não for corrigido, isso cria um desvio de expansão com o carimbo de data/hora real dos quadros. Portanto, o timecode drop-frame foi inventado para pular alguns rótulos de timecode em intervalos regulares, de modo que o desvio é periodicamente reduzido (mas raramente zerado).O Premiere deve manter internamente intervalos de tempo precisos entre os quadros, independentemente do esquema de rotulagem. No entanto, para anexar um fluxo de timecode à saída, você pode adicionar
-timecode 00:00:00;00
ao seu comando.