Tor
schafft Ich bin eine kleine Proof-of-Concept-Anwendung zu schreiben einige Rohbilddaten nehmen ich von einem digitalen erwerben Kamera (eine Reihe von RGB24-Bildern), und kombinieren Sie sie zu einer einfachen, keine Audio-Video-Datei.FFMPEG - Es kann kein Video aus der Serie von Bildern mit RGB24 Pixelformat
Arbeit So Far
Der Initialisierungscode ist wie folgt:
AVCodec* pCodec = NULL;
AVCodecContext* pCodecContext = NULL;
AVFrame* pFrame = NULL;
/* Register all available codecs. */
avcodec_register_all();
/* Determine if desired video encoder is installed. */
pCodec = avcodec_find_encoder(CODEC_ID_MJPEG);
if (!pCodec) {
printf("Codec not installed!\n");
}
pCodecContext = avcodec_alloc_context3(pCodec);
pFrame = avcodec_alloc_frame();
Sehr cut-and-dry. Aber wenn ich versuche, den Codec zu registrieren, schlägt es mit meiner benutzerdefinierten Fehlermeldung und ein fiel in einem schönen farbcodierten Format direkt von den FFmpeg-Bibliotheken:
[mjpeg @ 0x650d00] Specified pixel format rgb24 is invalid or not supported
Codec not available.
Ich kann bestätigen, dass das Pixelformat gültig ist leicht genug:
Pixel formats:
I.... = Supported Input format for conversion
.O... = Supported Output format for conversion
..H.. = Hardware accelerated format
...P. = Paletted format
....B = Bitstream format
2>&1 ffmpeg -pix_fmts | grep -i -e rgb24 -e flags
FLAGS NAME NB_COMPONENTS BITS_PER_PIXEL
IO... rgb24 3 24
Ich kann auch bestätigen, dass der Video-Codec, den ich verwenden möchte, für die Codierung gültig ist.
Codecs:
D..... = Decoding supported
.E.... = Encoding supported
..V... = Video codec
..A... = Audio codec
..S... = Subtitle codec
...I.. = Intra frame-only codec
....L. = Lossy compression
.....S = Lossless compression
2>&1 ffmpeg -codecs | grep -i mjpeg
DEVIL. mjpeg Motion JPEG
Frage
Warum ist das Pixelformat nicht unterstützt? Es scheint so ein gewöhnlicher Vorgang zu sein, wenn man mit anderen Utilities wie MATLAB, OpenCV, FreeImage usw. arbeitet. Gibt es irgendwelche Optionen oder Funktionen in FFMPEG/AVcodec, die dieses Problem lösen können? Ich möchte vermeiden, dass ich mein Bild nach Möglichkeit manuell in einen anderen Farbraum umwandeln muss. Ich verbrenne also keine CPU-Zyklen, indem ich das RGB24-Bild zuerst in ein neues Format umwandle es.
Vielen Dank.
Scheint, ich habe die "unterstützten Formate" von der Kommandozeile missverstanden. Ich konvertiere (mit einem zusätzlichen Schritt) in ein unterstütztes Format. Vielen Dank! – DevNull