Direct Show 9 バックエンドを qt の phonon フレームワークで使用しようとすると、次のエラーが発生します。
Pins cannot connect due to not supporting the same transport. (0x80040266)
このエラーの意味や修正方法を知っている人はいますか? これは、フォノンの Direct Show 9 バックエンドの問題ですか?
Direct Show 9 バックエンドを qt の phonon フレームワークで使用しようとすると、次のエラーが発生します。
Pins cannot connect due to not supporting the same transport. (0x80040266)
このエラーの意味や修正方法を知っている人はいますか? これは、フォノンの Direct Show 9 バックエンドの問題ですか?
どうやら問題は悪いメタデータに関係しています。Id3タグが正しくない場合は、9つのバックエンドチョークを直接表示します。次の関数を書くことで問題を解決しました。
void removeTags(UDJ::DataStore::song_info_t& song){
static int fileCount =0;
if(song.source.fileName().endsWith(".mp3")){
UDJ::Logger::instance()->log("On windows and got mp3, copying and striping metadata tags");
QString tempCopy = QDesktopServices::storageLocation(QDesktopServices::TempLocation) + "/striped" + QString::number(fileCount) +".mp3";
if(QFile::exists(tempCopy)){
UDJ::Logger::instance()->log("Prevoius file existed, deleting now");
if(QFile::remove(tempCopy)){
UDJ::Logger::instance()->log("File removal worked");
}
}
bool fileCopyWorked = QFile::copy(song.source.fileName(), tempCopy);
if(!fileCopyWorked){
UDJ::Logger::instance()->log("File copy didn't work");
return;
}
TagLib::MPEG::File file(tempCopy.toStdString().c_str());
file.strip();
file.save();
Phonon::MediaSource newSource(tempCopy);
song.source = newSource;
if(fileCount == 3){
fileCount =0;
}
else{
fileCount++;
}
}
}
song_info_t
は、Phonon::MediaSourceメンバーを含む構造体source
です。この関数は、taglibを使用して曲のすべてのメタデータを取り除き、新しい曲を一時ファイルとして保存することで機能します。この関数はまた、一時ファイルに使用されるファイル名をローテーションして、無限の数の一時コピーファイルを作成しないようにします。これがこのエラーを抱えている他の人の助けになることを願っています。