Mac OS X の Qt 4.8.1 でポッドキャストを聞くアプリケーションを作成しています。現在、MediaObject
ポッドキャストの RSS アイテムからエンクロージャー URL を使用するように設定しています。
mediaObj->setCurrentSource(Phonon::MediaSource(QUrl(idx.data(Metadata::Enclosure).toString())));
注:idx
は、ユーザーがウィジェットでクリックしたモデル内にQModelIndex
対応するです。QStandardItem
QTreeView
ただ、現在2つの問題があります。
- ストリームを一時停止して再開すると、最初から開始されます。あまり役に立ちません。:-(
- ウィジェットを使用して
Phonon::SeekSlider
、まだバッファリングしていないストリームの一部にスキップすると、ストリームの先頭に戻ってしまいます。
私の (潜在的に欠陥のある) 考えではmediaObj
、ストリームの特定の時間から再生を開始する方法を見つけられれば、これらの問題の両方を解決できるというものです。それで、私はこれを試しました:
void BrodCastMainWin::pauseStream()
{
//save the "left off at" point in the stream
qDebug() << "current time is:" << currentTime;
qDebug() << "Saving place at" << currentTimeString
<< "in item" << nowPlaying.data(Qt::DisplayRole).toString();
//need to use QModelIndex for setData()
QModelIndex nowPlayingHandle = nowPlaying;
feed.setData(nowPlayingHandle, QVariant(currentTime), Metadata::LeftOffAt);
//pause the stream
mediaObj->pause();
}
void BrodCastMainWin::playStream()
{
//seek to the "left off at" point in the stream
qDebug() << "Trying to seek to" << convertTime(nowPlaying.data(Metadata::LeftOffAt).toLongLong())
<< "in item" << nowPlaying.data(Qt::DisplayRole).toString();
mediaObj->seek(nowPlaying.data(Metadata::LeftOffAt).toLongLong());
//play the file
mediaObj->play();
}
注:currentTime
は、最後にtick()
信号が発信された時点の時間mediaObj
です。currentTime()
内のメソッドを使用してこのデータを取得しようとしましたがmediaObj
、うまくいきませんでした。しかし、それは別の日の戦いです。同様にcurrentTimeString
、人間が読める形式の同じ情報です。
残念ながら、動作しません:-(。これは、ストリームを再生すると、そのコードで何が起こるかです:
current time is: 32153
Saving place at "00:32" in item "Leo Laporte - The Tech Guy 867"
switching button to 'play'
グルーヴィー。しかし、もう一度プレイしようとすると:
Trying to seek to "00:32" in item "Leo Laporte - The Tech Guy 867"
Playing/Loading/Buffering; switching button to 'pause'
current time is: 0
Saving place at "00:00" in item "Leo Laporte - The Tech Guy 867"
switching button to 'play'
Trying to seek to "00:00" in item "Leo Laporte - The Tech Guy 867"
Playing/Loading/Buffering; switching button to 'pause'
私は完全に混乱しています。Phonon を望まない方法で動作させようとしているようです。私が恐れているのは、これは Phonon モジュールの長年にわたる問題のように思われることであり、別の方法でストリームを実装する必要があるかもしれません。ヘルプ?