Wir versuchen derzeit, die von unserem Programm verwendete ffmpeg-Version zu aktualisieren. Der Sprung ist groß, denn was wir bisher benutzt haben, ist ffmpeg 0.8, und die neueste Version ist 1.2.
In diesen Tests verwende ich (sagen wir) erstaunliche Pakete, die ich hier finde .
Als erstes habe ich versucht, gegen ffmpeg 1.2 herunterzuladen und zu bauen, und natürlich habe ich viele Warnungen und Fehler bekommen, über Funktionen und Variablen, die nicht mehr existieren oder veraltet sind.
Um den Übergang zu glätten, versuchte ich dann gegen ffmpeg 1.0 zu bauen, die nächst höhere Version in Bezug auf 0.8. Ich habe eine Liste mit Warnungen und Fehlern erhalten, die ich hier unten auflistet.
Meine Frage ist die folgende: Gibt es eine Anleitung, um bei diesen Transitionen zu helfen, alte ffmpeg-Paradigmen / Funktionsaufrufe in der neuen Version zu konvertieren? Da wir über viel Code sprechen, der Ich habe nicht geschrieben und möchte nicht Zeile für Zeile analysieren, ich wäre sehr froh, wenn es möglich wäre, eine eins-zu-eins-Konvertierung von alten Funktionsaufrufen zu neuen Funktionsaufrufen durchzuführen, gleiches für Variablen.
Hier ist die Liste der Warnungen und Fehler (Ich habe es gelöscht, so dass es nur einen Eintrag pro Fehler / Warnung gibt)
%Vor%
Bearbeiten:
Ich schaue mir diese an ...
Ссылка
Ссылка
Ссылка
Ссылка
Ссылка
Ссылка
Gabi weist darauf hin, dass diese URL die meisten der veralteten Konstanten ersetzt.
Es fehlen jedoch ein paar von ihnen, also werde ich alle Änderungen veröffentlichen, die Ihre Ausgabe anzeigt, um diesen Kompilierungsschritt zu durchlaufen:
%Vor%Es ist wahrscheinlich erwähnenswert, dass av_set_parameters veraltet ist und komplett verschrottet wurde. Sie sollten jetzt Parameter im Aufruf von avformat_open_input angeben.
%Vor%Das sollte alle Ihre tatsächlichen Fehler abdecken. Wenn es nur eine Warnung gibt, dann nehmen Sie sich etwas Zeit, um herauszufinden, was sie gerade einführen!
Schauen Sie hier nach.
%Vor%Ich hoffe, dass das oben Genügende ist, um Sie zu beginnen.
Falls der Link nicht überleben sollte, hier ist das vollständige Texttranskript:
Ich habe einige Ressourcen zum Portieren von altem Code gefunden ( hier , hier und hier ) , aber da es nicht das war, was ich brauchte, entschied ich mich, meine eigene Version zu schreiben. Also, hier sind wir.
url_open()
Diese Funktion wurde in avio_open geändert. Es gibt auch URL_Close welches in avio_close umbenannt wird. Diese Information habe ich hier gefunden.
av_new_stream()
Diese Funktion wird ab FFMPEG 1.0.1 weiterhin unterstützt, ist jedoch markiert als veraltet. Es wird durch avformat_new_stream () ersetzt. Annehmen dass der alte Code war:
%Vor%Der modifizierte Code sollte sein:
%Vor%Achten Sie darauf, zuerst zu überprüfen, dass st nicht NULL ist!
dump_format()
Diese Funktion wurde in av_dump_format () umbenannt.
av_write_header()
Ersetzt durch avformat_write_header (), das zwei Argumente akzeptiert anstelle von eins. Übergeben Sie NULL als zweites Argument, um identisch zu werden Verhalten gegenüber der alten Funktion.
av_codec_open()
Dieser wird durch av_codec_open2 () ersetzt. Die Ersatzfunktion akzeptiert drei Argumente statt zwei, sondern NULL als drittes Argument, um das gleiche Verhalten wie die alte Funktion zu erhalten.
avcodec_encode_audio()
Ersetzt durch avcodec_encode_audio2 ().
av_set_parameters()
Ich konnte den Ersatz für diesen nicht gut machen. Zuerst habe ich das gefunden Diese Funktion hat keinen Ersatz. Aber es war, als es still war verfügbar in FFMPEG, obwohl veraltet. Dann haben sie es entfernt, und deshalb muss es ersetzt werden. An bestimmten Orten habe ich das gefunden Sie haben es nur deaktiviert, bei anderen, dass seine Parameter übergeben werden müssen zu avformat_write_header. Am Ende gab ich auf, weil ich nicht brauchte Arbeitsversion dieses Teils des Codes für jetzt. Da in meinem Fall avformat_alloc_context () wird aufgerufen und dann av_set_parameters (), zuletzt Ich habe stattdessen versucht, stattdessen avformat_alloc_output_context2 () aufzurufen von avformat_alloc_context (). Aber die Veränderung ist nicht trivial, also ich übersprungen es.
SampleFormat
Diese Enumeration wurde in AVSampleFormat umbenannt.
URL_WRONLY
Diese Konstante wurde durch AVIO_FLAG_WRITE ersetzt.
SAMPLE_FMT_U8, SAMPLE_FMT_S16, SAMPLE_FMT_S32, etc.
Diese sind jetzt mit AV_ vorangestellt, also benutze AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S16, etc.
Tags und Links build ffmpeg upgrade deprecated