Seite 1 von 1

Probleme mit der richtigen Kodierung...

Verfasst: 15. Oktober 2010 22:33
von listeman
Hallo Leute,

aus einer SQLite-Datenbank lese ich den Inhalt eines Verzeichnisses aus, also die Dateinamen (vorher habe ich die natürlich darein geladen).
Mit einem Filter beschränke ich alles auf die Videodateien darin. Per ffmpegthumbnailer möchte ich nun aus den allen nach und nach ein Thumbnail erstellen. Mit normalen Dateinamen (also ohne Sonderzeichen) funktioniert dies auch einwandfrei. Doch sobald ein Sonderzeichen dazukommt sind alle meine Versuche bisher fehlgeschlagen. Hier ist mal ein Auszug aus meinem Code:

Code: Alles auswählen

        QSqlQuery query = db.exec("SELECT * FROM files");
	int filepathIndex = query.record().indexOf("filepath");

	while(query.next()) {

		QString path = query.value(filepathIndex).toString().toUtf8();

		QProcess *thumbnail = new QProcess;
		QStringList command;
		command << "-s"<< "100" << "-f" << "-i" << QString::fromUtf8(path.toUtf8()) << "-o" << QDir::tempPath() + "/videos.jpg";
		std::cout << command.join(" ").toStdString() << std::endl;
		thumbnail->execute("ffmpegthumbnailer",command);

	        (...)

	}
Bevor ich ffmpegthubnailer ausführe, gebe ich die StringList command noch einmal auf der Konsole aus und erhalte auch eine perfekte Ausgabe (beim Erstellen von command muss ich sowohl fromUtf8 als auch toUtf8 aufrufen, andernfalls ist auch die Konsolenausgabe "falsch").
Jedoch ffmpegthumbnailer gibt mir z.B. folgende Fehlermeldung:

Code: Alles auswählen

Error: Could not open input file: /home/listeman/Videos/beispiele/übung.mp4
Irgendwo fehlt da was im Code. Ich vermute, dass die Lösung sehr simpel ist, doch ich bekomme es partout nicht hin...

Schon mal Danke im Vorraus!!

Viele Grüße
listeman

Verfasst: 16. Oktober 2010 08:33
von Christian81
Was soll das denn?

Code: Alles auswählen

QString path = query.value(filepathIndex).toString().toUtf8(); 
Du wandelst ein QVariant in einen QString und diesen dann in ein QByteArray. Dieses wird dann einem QString zugewiesen.

Code: Alles auswählen

QString::fromUtf8(path.toUtf8())
Hier genauso - ein QString wird nach QByteArray gewandelt und einen QString zugewiesen. Wie sollte das je funktionieren?

Verfasst: 16. Oktober 2010 12:17
von listeman
Ich wusste, dass das irgendein Leichtsinnsfehler ist... natürlich!!

Ein simples

Code: Alles auswählen

		QByteArray name = query.value(filenameIndex).toByteArray();
		QByteArray path = query.value(filepathIndex).toByteArray();
macht einen wunderbaren Job...


Danke!! :)

Verfasst: 16. Oktober 2010 12:50
von Christian81
Alles in QByteArray ist auch nicht korrekt. QProcess möchte eine QStringList als Parameter :)

Verfasst: 16. Oktober 2010 14:19
von listeman
Ja, klar, das mach ich auch :) Dieser Teil des Codes war ja richtig...