Intento convertir un video de .raw a .mp4. Por esta razón, descargué, compilé e instalé x264 y ffmpeg. Sin embargo, comando:
ffmpeg -f h264 -i output.raw -vcodec copy output.mp4
falla con error (se muestra en la imagen a continuación). ¿Hay alguna forma de arreglar esto?
Comandos que también ejecuto:
1
root@beagleboard:/# v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
2
root@beagleboard:/dev# v4l2-ctl --set-fmt-video=pixelformat=0
ffmpeg -i output.raw
suponiendo que está tratando de convertiroutput.raw
? Además, si intentasffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4
cuál es la salida de la consola?output.raw
y cómo lo creaste?./capture -f -c 100 -o > output.raw
. capture.c descargado de: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .Respuestas:
Su entrada simplemente no es una transmisión h264, pero le está diciendo a ffmpeg que es una.
Debe decirle a ffmpeg qué es realmente: una transmisión v4l2 en formato mjpeg o yuyv (según el formato en el que se configuró su cámara en el momento de la captura, de los dos enumerados por
v4l2-ctl --list-formats
). Si desea que ffmpeg lo transcodifique a un h264, también debe decirle eso.Si la entrada es cuadros YUYV sin procesar, desea:
Reemplace 640x480 y 25 con las dimensiones y la velocidad de fotogramas de su video.
Si la entrada es MJPEG, debería poder dejar de lado
-f
y ffmpeg debería resolverlo:Por cierto, no necesita otra herramienta de captura; ffmpeg puede capturar desde dispositivos v4l2 muy bien:
fuente