Eu tento converter um vídeo de .raw para .mp4. Por esse motivo, baixei, compilei e instalei o x264 e o ffmpeg. No entanto, comando:
ffmpeg -f h264 -i output.raw -vcodec copy output.mp4
falha com erro (mostrado na figura abaixo). Existe alguma maneira de corrigir isso?
Comandos também executo:
1 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
:, supondo que você esteja tentando converteroutput.raw
. Além disso, se você tentarffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4
qual é a saída do console?output.raw
e como você o criou?./capture -f -c 100 -o > output.raw
. capture.c baixado de: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .Respostas:
Sua entrada simplesmente não é um fluxo h264, mas você está dizendo ao ffmpeg que é um.
Você precisa informar ao ffmpeg o que realmente é: um fluxo v4l2 no formato mjpeg ou yuyv (dependendo do formato em que sua câmera foi configurada no momento da captura, dos dois listados por
v4l2-ctl --list-formats
). Se você deseja que o ffmpeg o transcodifique para um h264, também é necessário dizer isso.Se a entrada for quadros YUYV brutos, você deseja:
Substitua 640 x 480 e 25 pelas dimensões e taxa de quadros do seu vídeo.
Se a entrada for MJPEG, você poderá deixar de fora o
-f
e ffmpeg deve descobrir:Aliás, você não precisa de outra ferramenta de captura; O ffmpeg pode capturar a partir de dispositivos v4l2 muito bem:
fonte