ffmpeg: Tidak dapat menemukan parameter codec untuk streaming 0 (Video: h264) ukuran tidak ditentukan

9

Saya mencoba mengonversi video dari .raw ke .mp4. Untuk alasan ini saya mengunduh, membangun dan menginstal x264 dan ffmpeg. Namun, perintah:

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

gagal dengan kesalahan (ditunjukkan pada gambar di bawah). Apakah ada cara untuk memperbaikinya?

masukkan deskripsi gambar di sini

Perintah yang saya jalankan:

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
dempap
sumber
bisakah Anda memposting output ini ffmpeg -i output.raw:, dengan asumsi Anda mencoba untuk mengkonversi output.raw. Juga jika Anda mencoba ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4apa output konsol?
Rajib
Terima kasih untuk balasan Anda. Kedua output persis sama, seperti yang diedit di atas. Apakah Anda pikir ada masalah dalam penyandian, atau dalam file saat merekam video?
dempap
Dari mana Anda output.rawberasal dan bagaimana Anda membuatnya?
slhck
Dengan mengeksekusi ./capture -f -c 100 -o > output.raw. capture.c diunduh dari: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .
dempap

Jawaban:

0

Input Anda sama sekali bukan aliran H264, namun Anda mengatakan ffmpeg itu adalah stream.

Anda perlu memberi tahu ffmpeg apa sebenarnya itu: aliran v4l2 dalam format mjpeg atau yuyv (tergantung pada format apa kamera Anda diatur pada saat pengambilan, dari dua yang terdaftar oleh v4l2-ctl --list-formats). Jika Anda ingin ffmpeg melakukan transkode ke h264, Anda juga harus mengatakannya.

Jika inputnya adalah frame YUYV mentah, Anda ingin:

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

Ganti 640x480 dan 25 dengan dimensi dan framerate video Anda.

Jika inputnya adalah MJPEG, Anda harus bisa meninggalkan -fdan ffmpeg harus mencari tahu:

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

Kebetulan, Anda tidak perlu alat tangkap lain; ffmpeg dapat menangkap dari perangkat v4l2:

ffmpeg -f v4l2 -r 25 -s:v 640x480 -i /dev/video0 -c:v libx264 output.mp4
tgies
sumber