Seite 1 von 1

FFMPEG für Videotextur verwenden (OPENGL)

Verfasst: 14. September 2009 10:45
von a.weider
Hallo,

ich habe folgendes Problem. In meinem Projekt möchte ich auf einer OpenGL Primitive eine VideoTextur laufen lassen. Das Video wollte ich mit ffmpeg laden und dann die einzelnen Frames in ein Qimage konvertieren. Ich hab dazu auch ein Tutorial gefunden. Das Problem dabei ist, dass ich die nötigen dll's nicht geladen bekomme. Egal ob statisch oder dynamisch mit QLibrary.

es wäre sehr schön wenn mir irgendwer weiter helfen könnte.

Im nun folgenden Code hab ich versucht die avcodec.dll zu laden. leider bekomme ich immer meine "Fehlschlag" Meldung. Aus diesem Grund, bekomme ich natürlich fehler beim verwenden der Methode avcodec_init().

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "libavcodec/avcodec.h"

#include <QApplication>
#include <QLibrary>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QLibrary myLib("./avcodec");
    if (myLib.load())

    {
           ui->textEdit->setText("Erfolgreich");
    }
    else
    {
        ui->textEdit->setText("Fehlschlag");
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
   //avcodec_init();
}
vielen Dank

Gruß Andi

Verfasst: 14. September 2009 10:55
von arj
Ich würde mal vermuten, dass man den relativen Pfad nicht angeben darf.
When loading the library, QLibrary searches in all the system-specific library locations (e.g. LD_LIBRARY_PATH on Unix), unless the file name has an absolute path.
Versuch es mal mit:

Code: Alles auswählen

QLibrary myLib("avcodec");
if (myLib.load()) 

Verfasst: 14. September 2009 11:34
von a.weider
Vielen dank für die schnelle Antwort.

leider funktioniert es damit auch noch nicht.

Mein Projektpfad ist

c:/test/

und dort habe ich auch die dll abgelegt. also
c:/test/avcodec.dll

daher sollte sie doch mit

Code: Alles auswählen

QLibrary myLib("avformat");
    if (myLib.load())
gefunden werden. Oder irre ich mich da??

Verfasst: 14. September 2009 12:33
von a.weider
Per myLib.errorString lass ich mir nun die fehlermeldung ausgeben.

Die Meldung:
Cannot load Library avcodec:: Das angegeben Modul wurde nicht gefunden.

Verfasst: 14. September 2009 12:50
von arj
Du sprichst nun einmal von avformat und einmal von avcodec? Prüf doch mal bitte ob die Dll auch wirklich den Namen hat den Du benutzt ;-)

Die Dll wird in Windows üblicherweise nur direkt im Ordner der Exe-Datei gesucht. Wenn dort nicht vorhanden dann an anderen Stellen. (Ich weiß nicht genau wie das Qt macht, aber wahrscheinlich orientiert es sich an den Betriebssystemvorgaben). Liegt die Dll direkt bei der Exe? Oder liegt die Exe etwa im Debug-Unterordner? Dann wird sie nicht gefunden werden! Dann kopier sie mal direkt in den Ordner wo die Exe-Datei auch liegt.

Alternativ kannst Du mal versuchen den kompletten Pfad anzugeben; das ist aber natürlich nichts für eine Releaseversion.

Verfasst: 14. September 2009 15:06
von a.weider
ich benötige beide bibliotheken. zunächst möchte ich die avcodec.dll
einbinden.

die DLL Datei liegt im selben Ordner wie die Exe. Ich habe es auch mit dem kompletten Pfad versucht.
Doch mein Fehlermeldung

"Cannot load Library avcodec:: Das angegeben Modul wurde nicht gefunden."

bleibt.

falls die DLL aufgrund von Compilierungsfehler nicht funktionieren würde, müsste sie doch zumindest gefunden werden. Oder liege ich da falsch