Ich versuche ein Video von .raw nach .mp4 zu konvertieren. Aus diesem Grund habe ich sowohl x264 als auch ffmpeg heruntergeladen, erstellt und installiert. Befehl:
ffmpeg -f h264 -i output.raw -vcodec copy output.mp4
schlägt mit Fehler fehl (siehe Abbildung unten). Gibt es eine Möglichkeit, dies zu beheben?
Befehle, die ich auch ausführe:
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
vorausgesetzt, Sie versuchen zu konvertierenoutput.raw
. Auch wenn Sie versuchen,ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4
was ist die Konsolenausgabe?output.raw
und wie hast du es geschaffen?./capture -f -c 100 -o > output.raw
. capture.c heruntergeladen von: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .Antworten:
Ihre Eingabe ist einfach kein h264-Stream, aber Sie sagen ffmpeg, dass es einer ist.
Sie müssen ffmpeg mitteilen, was es tatsächlich ist: ein v4l2-Stream im MJPEG- oder Yuyv-Format (je nachdem, auf welches Format Ihre Kamera zum Zeitpunkt der Aufnahme eingestellt war, von den beiden von
v4l2-ctl --list-formats
). Wenn Sie möchten, dass ffmpeg es in ein h264 umcodiert, müssen Sie dies auch mitteilen.Wenn die Eingabe rohe YUYV-Frames sind, möchten Sie:
Ersetzen Sie 640 x 480 und 25 durch die Abmessungen und die Framerate Ihres Videos.
Wenn die Eingabe MJPEG ist, sollten Sie in der Lage sein, das einfach wegzulassen,
-f
und ffmpeg sollte es herausfinden:Im Übrigen benötigen Sie kein weiteres Capture-Tool. ffmpeg kann problemlos von v4l2-Geräten erfassen:
quelle