Wie codiert man h.264 mit libavcodec / x264?
Ich bin versucht zu Kodieren von video mit libavcodec/libavformat. Audio funktioniert gut, aber wenn ich versuchen zu codieren, bekomme ich folgenden Fehler:
[libx264 @ 0x10182a000]broken ffmpeg default settings detected
[libx264 @ 0x10182a000]use an encoding preset (vpre)
einfach zu beheben über die Kommandozeile ffmpeg, aber ich versuche zu tun das in C.
meine Optionen sind
AVStream *pVideoOutStream = av_new_stream(pOutFormatCtx, 0);
AVCodecContext *pVideoOutCodecCtx = pVideoOutStream->codec;
pVideoOutCodecCtx->codec_id = CODEC_ID_H264;
pVideoOutCodecCtx->codec_type = CODEC_TYPE_VIDEO;
pVideoOutCodecCtx->bit_rate = pVideoInCodecCtx->bit_rate;
pVideoOutCodecCtx->width = pVideoInCodecCtx->width;
pVideoOutCodecCtx->height = pVideoInCodecCtx->height;
pVideoOutCodecCtx->pix_fmt = pVideoInCodecCtx->pix_fmt;
pVideoOutCodecCtx->sample_rate = pVideoInCodecCtx->sample_rate;
pVideoOutCodecCtx->gop_size = 30;
aber avcodec_open() fehlschlägt.
Welche anderen Werte muss ich einstellen, um x264 glücklich?
InformationsquelleAutor der Frage szatmary | 2010-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht sicher, ob Sie es geschafft habe, aber die folgenden Parameter, die für mich arbeiten.
Die Fehlermeldung
broken ffmpeg default settings detected
wird angezeigt, in der x264-Bibliothek in x264/encoder/encoder.cwenn zu viele Einstellungen sind die Standard-ffmpeg-Einstellungen (z.B.qmin = 2, qmax = 31, qcompress = 0.5
), die änderung dieser drei Werte, um etwas anderes, z.B.qmin = 10, qmax = 51, qcompress = 0.6
wird der Fehler behoben.InformationsquelleAutor der Antwort Shea
Vergessen Sie nicht, verwenden x264 private Optionen.
Sie können immer ein Profil einstellen:
Oder stellen Sie die niedrigste Latenz-Codierung:
Oder wählen Sie eine Voreinstellung:
Vor öffnen eines codec
InformationsquelleAutor der Antwort Sergey Skopus
Folgende ist die Interpretation der ffmpeg x264 presets.
Leider weiß ich nicht mehr, die eine einfache Methode zum importieren von presets wie ffmpeg tut.
Sie können lookup das x264 preset-Werte, die gespeichert sind in /usr/local/share/ffmpeg/libx264-{name}.ffpreset, wobei {name} angegeben wird, für ffmpeg als -vpre {name} command-line-argument.
In der Regel also ffmpeg umfassen würde libx264-medium.ffpreset und dann libx264-main.ffpreset, angegeben als ffmpeg -vpre medium -vpre main
Können Sie lookup alle Optionen (wie definiert in der libx264-{name}.ffpreset-Dateien), um Ihre Struktur Namen durch suchen in den libavcodec/options.c-Datei, die gefunden werden können in der ffmpeg-SVN-repositories.
Hier ist, wie die Mittel-und main-presets werden übersetzt in C-code:
Haben Sie Blick auf die ffmpeg-Quellcode, wenn Sie wollen, analysieren diese presets automatisch.
Ich hoffe, dass die Informationen, die ich gerade gab, würde Ihnen helfen, sich ein bisschen mehr 🙂
InformationsquelleAutor der Antwort Pada
Ich encode YUV420P Bilder in verschiedene Formate mit verschiedenen codecs. CodecID ich nahm AVOutputFormat nach der Verwendung guess_format (...) - Funktion. Aber auch andere codec-Einstellungen sind
(Alle von Ihnen wurde ergriffen von ffmpeg-Beispiele " source code):
Dieser Einstellung arbeiten müssen, um die meisten codecs, aber ich hatte ein problem mit fps: nicht alle codecs unterstützt alle fps-Werte (und einige andere Parameter auch).
InformationsquelleAutor der Antwort Petroff
scheint, dass die ffmpeg-version 20130302 erfordert so etwas wie
InformationsquelleAutor der Antwort Jochen