Próbuję przekonwertować wideo z .raw na .mp4. Z tego powodu pobrałem, zbudowałem i zainstalowałem zarówno x264, jak i ffmpeg. Jednak polecenie:
ffmpeg -f h264 -i output.raw -vcodec copy output.mp4
kończy się błędem (pokazany na poniższym obrazku). Czy jest jakiś sposób to naprawić?
Polecenia, które uruchamiam również:
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
przy założeniu, że próbujesz dokonać konwersjioutput.raw
. Również jeśli spróbujesz,ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4
co jest wyjściem konsoli?output.raw
i jak to stworzyłeś?./capture -f -c 100 -o > output.raw
. capture.c pobrane z: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .Odpowiedzi:
Twój wkład nie jest po prostu strumieniem h264, ale mówisz ffmpeg, że jest jeden.
Musisz powiedzieć ffmpeg, co to właściwie jest: strumień v4l2 w formacie mjpeg lub yuyv (w zależności od formatu, w którym aparat został ustawiony w momencie przechwytywania, z dwóch wymienionych przez
v4l2-ctl --list-formats
). Jeśli chcesz, aby ffmpeg transkodował go na h264, musisz to również powiedzieć.Jeśli dane wejściowe to surowe ramki YUYV, chcesz:
Zastąp 640 x 480 i 25 wymiarami i liczbą klatek filmu.
Jeśli dane wejściowe to MJPEG, powinieneś być w stanie po prostu pominąć
-f
i ffmpeg powinien to rozgryźć:Nawiasem mówiąc, nie potrzebujesz innego narzędzia do przechwytywania; ffmpeg może dobrze przechwytywać z urządzeń v4l2:
źródło