ffmpeg: não foi possível encontrar parâmetros de codec para o tamanho não especificado do fluxo 0 (vídeo: h264)


9

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?

insira a descrição da imagem aqui

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

você poderia apenas postar a saída disso ffmpeg -i output.raw:, supondo que você esteja tentando converter output.raw. Além disso, se você tentar ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4qual é a saída do console?
Rajib

Obrigado pela sua resposta. Ambas as saídas são exatamente iguais, conforme editado acima. Você acha que há um problema na codificação ou no arquivo durante a captura de vídeo?
dempap

De onde você veio output.rawe como você o criou?
slhck 15/02

Executando ./capture -f -c 100 -o > output.raw. capture.c baixado de: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .
dempap

Respostas:


0

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:

ffmpeg -f rawvideo -pix_fmt yuyv422 -s:v 640x480 -r 25 -i output.raw -c:v libx264 output.mp4

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 -fe ffmpeg deve descobrir:

ffmpeg -i output.raw -c:v libx264 output.mp4

Aliás, você não precisa de outra ferramenta de captura; O ffmpeg pode capturar a partir de dispositivos v4l2 muito bem:

ffmpeg -f v4l2 -r 25 -s:v 640x480 -i /dev/video0 -c:v libx264 output.mp4
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.