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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.