Handhabung der ffmpeg-Bibliotheksschnittstelle beim Aktualisieren von ffmpeg geändert

8

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 ...
Ссылка
Ссылка
Ссылка
Ссылка
Ссылка
Ссылка

    
Antonio 03.07.2013, 08:20
quelle

2 Antworten

6

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!

    
codetaku 11.07.2013, 20:52
quelle
7

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.

    
Gabi Davar 09.07.2013 19:24
quelle

Tags und Links