ユーザーが開いているビデオをスクラブできるようにするアプリケーションを作成しています。Qt 5.3 を使用して Windows 7/8 で開発し、サンプル プロジェクトを使用QMediaPlayer
してQVideoWidget
フォローしてきました。がアイドル時間中にのみ更新されるように見えるqvideowidget
ことを除けば、結果はかなり良好です。QVideoWidget
それでも、それは良いスタートであり、使用可能です.
ただし、Mac OS 10.10 (Qt 5.3 を使用) でビルドすると、スクラブは、ビデオに 1 秒あたり 1 フレームしかないかのように動作します。「位置」スライダーをドラッグすると、ビデオは 1 つのフレームから 1 秒後のフレームにジャンプし、その後 1 秒後にジャンプしますが、QMediaPlayer::setPosition
これらの 2 つのフレーム間の位置で何度か呼び出しています。
videowidget
この問題は、Qt 5.3 に同梱されている例を使用して再現できQt\Examples\Qt-5.3\multimediawidgets\videowidget
ます: スライダーが Windows マシンでドラッグされると、QVideoWidget
かなり接近したフレーム間で が移動します。スライダーが Mac (少なくとも私の場合) でドラッグされると、QVideoWidget
フレーム間のジャンプは約 1 秒間隔で行われます。「中間」フレームがレンダリングされるのをどれだけ待っても、「再生」ボタンを押さない限りレンダリングされません。
次々と呼び出して更新を強制しようとQMediaPlayer::play()
しましたが、これは機能していないようです-非同期で機能するため、更新が有効になる時間がありません.QMediaPlayer::pause()
QMediaPlayer
の値を確認するとQMediaPlayer::position
、これらのジャンプ間で実際には変化しないことがわかります。を呼び出すとQMediaPlayer::setPosition
、実際には位置が Mac では 1 秒単位で丸められ、Windows マシンではさらに細かい単位で丸められているようです。
理想的には、ビデオの特定の位置にジャンプして、そのフレームをすぐにレンダリングしたいと考えていQVideoWidget
ます。強制的QMediaPlayer
に位置を正確に設定し、関連するを更新する方法はありますQVideoWidget
か? ビデオでスムーズなスクラブを実装するより良い方法はありますか?
ご協力いただきありがとうございます!