Estoy tratando de convertir un video H.264 a rawvideo usando el siguiente comando:
ffmpeg -r 50 -i test.ts -c:v rawvideo -r 50 -pix_fmt yuv420p -filter_complex "[0:v] setpts=PTS-STARTPTS" -y test.yuv
Y aquí se espera que el archivo de video sin procesar tenga 50 fps:
Output #0, rawvideo, to 'test.yuv':
Metadata:
encoder : Lavf57.71.100
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 552960 kb/s, 50 fps, 50 tbn, 50 tbc
Metadata:
encoder : Lavc57.89.100 rawvideo
frame=15599 fps=111 q=-0.0 Lsize=21058650kB time=00:05:11.98 bitrate=552960.0kbits/s speed=2.22x
video:21058650kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
Pero cuando reviso el archivo con ffmpeg, lo muestra como 25 fps y la duración es el doble de la duración original del video:
ffmpeg -s:v 1280x720 -i test.yuv
[rawvideo @ 0x55ad594ad840] Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from 'test.yuv':
Duration: 00:10:23.96, start: 0.000000, bitrate: 276480 kb/s
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720, 276480 kb/s, 25 tbr, 25 tbn, 25 tbc
At least one output file must be specified
¿Por qué cuando reviso el archivo de video sin procesar con ffmpeg, la velocidad de fotogramas se indica como 25 fps y se informa que la duración es el doble de la duración original?
El video sin procesar es solo eso: un volcado sin procesar de la carga de contenido de video, no hay paquetes ni metadatos.
Salida a Y4M para un formato con metadatos
ffmpeg -r 50 -i test.ts -pix_fmt yuv420p -vf "setpts=PTS-STARTPTS" -y test.y4m