ffmpeg: Codec-Parameter für Stream 0 (Video: h264) konnten nicht gefunden werden

9

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?

Geben Sie hier die Bildbeschreibung ein

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
dempap
quelle
Könnten Sie einfach die Ausgabe von diesem posten: ffmpeg -i output.rawvorausgesetzt, Sie versuchen zu konvertieren output.raw. Auch wenn Sie versuchen, ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4was ist die Konsolenausgabe?
Rajib
Danke für deine Antwort. Beide Ausgänge sind genau gleich, wie oben bearbeitet. Denken Sie, dass beim Aufnehmen von Videos ein Problem bei der Codierung oder in der Datei vorliegt?
Dempap
Woher kommst du output.rawund wie hast du es geschaffen?
Slhck
Durch Ausführen ./capture -f -c 100 -o > output.raw. capture.c heruntergeladen von: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .
Dempap

Antworten:

0

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:

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

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, -fund ffmpeg sollte es herausfinden:

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

Im Übrigen benötigen Sie kein weiteres Capture-Tool. ffmpeg kann problemlos von v4l2-Geräten erfassen:

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