ffmpeg: impossibile trovare i parametri del codec per le dimensioni non specificate dello stream 0 (Video: h264)


9

Provo a convertire un video da .raw a .mp4. Per questo motivo ho scaricato, compilato e installato sia x264 che ffmpeg. Tuttavia, comando:

ffmpeg -f h264 -i output.raw -vcodec copy output.mp4

fallisce con errore (mostrato nella figura sotto). Esiste un modo per risolvere questo problema?

inserisci qui la descrizione dell'immagine

Comandi che eseguo anche:

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

potresti semplicemente pubblicare l'output di questo ffmpeg -i output.raw:, supponendo che stai cercando di convertire output.raw. Anche se provi ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4qual è l'output della console?
Rajib,

Grazie per la tua risposta. Entrambe le uscite sono esattamente le stesse, come modificato sopra. Pensi che ci sia un problema nella codifica o nel file durante l'acquisizione di video?
Scappare il

Da dove vieni output.rawe come lo hai creato?
slhck,

Eseguendo ./capture -f -c 100 -o > output.raw. capture.c scaricato da: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .
Deprappare il

Risposte:


0

Il tuo input non è semplicemente un flusso h264, ma stai dicendo a ffmpeg che è uno.

Devi dire a ffmpeg di cosa si tratta: uno stream v4l2 in formato mjpeg o yuyv (a seconda del formato impostato sulla tua fotocamera al momento dell'acquisizione, dei due elencati da v4l2-ctl --list-formats). Se vuoi che ffmpeg lo transcodifichi su un h264, devi dirlo anche a quello.

Se l'input è frame YUYV non elaborati, si desidera:

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

Sostituisci 640x480 e 25 con le dimensioni e il framerate del tuo video.

Se l'input è MJPEG, dovresti essere in grado di tralasciare -fe ffmpeg dovrebbe capirlo:

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

Per inciso, non è necessario un altro strumento di acquisizione; ffmpeg può catturare dai dispositivi v4l2 bene:

ffmpeg -f v4l2 -r 25 -s:v 640x480 -i /dev/video0 -c:v libx264 output.mp4
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.