FFmpeg in Win32-Projekt einbinden

Hunter

Erfahrenes Mitglied
Hallo,
ich versuche jetzt schon seit geraumer Zeit die ffmpeg-library in mein Projekt mit einzubinden - leider immer erfolglos.. Nicht einmal die examples oder die ffmpeg.c oder ffplay.c lassen sich kompilieren. Es gibt immer einige Probleme bei den Includes.

Deshalb wollte ich mal fragen, ob sich jemand schon mal ein bisschen damit beschäftigt hat, oder ob er mir ein bisschen weiterhelfen könnte. :)
Ich würde die Bibliothek hauptsächlich zum konvertieren von Videos verwenden.


Mfg Hunter :)
 
Hi

und die Fehlermeldungen lauten...?
Was genau hast du gemacht?

Und wenn du FFMpeg nur als fertiges Programam verwenden willst,
warum keine Binary herunterladen?
 
Erstmal danke für die Antwort. :)

Ich hab die ganzen Fehlermeldungen mal als Bild hochgeladen. Es sind erstmal ein paar Quelen (common.h, avconfig.h, inttypes.h) gar nicht vorhanden; danach gibt es viele Probleme mit dem Zuweisen, jedoch weiß ich nicht ob sich diese dann mit dem Include aufheben.

Die Binary hab ich ja schon verwendet, nur leider ist sie ganze 25BM groß. Das wäre mal der Erste Grund. Der Zweite ist, dass ich keinen wirklichen Return-Wert bekomme, da ich dann alles in einer GUI festigen will, und somit nur abschätzen kann, wie weit schon konvertiert wurde.
 
Zuletzt bearbeitet:
@sheel
Danke für den Link, dort sind die Includes alle vorhanden.


Da ich jetzt den Link von sheel verwendet habe, verwende ich nun diese Version: "Download FFmpeg git-785dc14 64-bit Shared".
Ich hab ein neues Win32-Konsolenprojekt in VS erstellt, und die Sample-Datei decoding_encoding.c zum Projekt hinzugefügt. Dann hab ich noch den Include-Pfad angegeben, sodass alle Includes mit eingebunden werden können.
Habe jetzt versuch es zu kompilieren, und dann kamen noch diese Fehlermeldungen:

Code:
1>------ Neues Erstellen gestartet: Projekt: ConsoleApplication4, Konfiguration: Debug Win32 ------
1>  decoding_encoding.c
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\rational.h(55): error C2054: Nach 'inline' muss '(' folgen
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\rational.h(55): error C2085: 'av_cmp_q': Nicht in der formalen Parameterliste enthalten
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\rational.h(55): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\rational.h(69): error C2054: Nach 'inline' muss '(' folgen
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\rational.h(69): error C2085: 'av_q2d': Nicht in der formalen Parameterliste enthalten
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\rational.h(69): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\error.h(100): error C2054: Nach 'inline' muss '(' folgen
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\error.h(101): error C2085: 'av_make_error_string': Nicht in der formalen Parameterliste enthalten
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\error.h(101): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(93): error C2054: Nach 'inline' muss '(' folgen
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(94): error C2085: 'av_malloc_array': Nicht in der formalen Parameterliste enthalten
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(94): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(228): error C2054: Nach 'inline' muss '(' folgen
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(229): error C2085: 'av_mallocz_array': Nicht in der formalen Parameterliste enthalten
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(229): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(311): error C2054: Nach 'inline' muss '(' folgen
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(312): error C2085: 'av_size_mult': Nicht in der formalen Parameterliste enthalten
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\mem.h(312): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\avutil.h(295): error C2054: Nach 'inline' muss '(' folgen
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\avutil.h(296): error C2085: 'av_x_if_null': Nicht in der formalen Parameterliste enthalten
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\libavutil\avutil.h(296): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\decoding_encoding.c(100): warning C4244: 'return': Konvertierung von 'uint64_t' in 'int', möglicher Datenverlust
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\decoding_encoding.c(196): warning C4244: '=': Konvertierung von 'double' in 'float', möglicher Datenverlust
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\decoding_encoding.c(375): error C2059: Syntaxfehler: '{'
1>d:\bibliothek\downloads\ffmpeg-20140115-git-785dc14-win32-dev\include\decoding_encoding.c(513): warning C4013: 'snprintf' undefiniert; Annahme: extern mit Rückgabetyp int
========== Alles neu erstellen: 0 erfolgreich, 1 fehlerhaft, 0 übersprungen ==========
 
Hallo,

du verwendest offenbar Visual Studio, richtig? FFMpeg ist sehr wahrscheinlich für GCC-kompatible Compiler gebaut, optimiert und syntaktisch korrekt, nicht unbedingt aber für VS. Du wirst wahrscheinlich nicht drum herum kommen, die Header für Visual Studio zu korrigieren. Die Fehlermeldungen geben dir einen Anhaltspunkt, wo genau in den Headern zu VS inkompatible Anweisungen stehen.
 
Ich hab jetzt den Compiler auf C++ geändert, und habe alle Fehler versucht zu beheben. :)
Jetzt gibt es nur noch einen Fehler, bei dem ich nicht weiter weiß:
C:
//Definition
void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);

//Code
samples = av_malloc(buffer_size);

samples ist ein uint16_t und erwartet somit einen Wert. Jedoch kommt als Fehlermeldung folgendes:
Fehler 3 error C2440: '=': 'void *' kann nicht in 'uint16_t *' konvertiert werden
 

Neue Beiträge

Zurück