FFMPEG für Videotextur verwenden (OPENGL)

Alles rund um die Programmierung mit Qt
Antworten
a.weider
Beiträge: 5
Registriert: 13. September 2009 10:00

FFMPEG für Videotextur verwenden (OPENGL)

Beitrag 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
arj
Beiträge: 45
Registriert: 1. Juni 2009 13:51
Wohnort: Ihringen

Beitrag 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()) 
a.weider
Beiträge: 5
Registriert: 13. September 2009 10:00

Beitrag 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??
a.weider
Beiträge: 5
Registriert: 13. September 2009 10:00

Beitrag 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.
arj
Beiträge: 45
Registriert: 1. Juni 2009 13:51
Wohnort: Ihringen

Beitrag 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.
a.weider
Beiträge: 5
Registriert: 13. September 2009 10:00

Beitrag 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
Antworten