問題タブ [qmediaplayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - QMediaPlayer にビデオ スクラビング アプリケーションの位置を正確に更新させますか?
ユーザーが開いているビデオをスクラブできるようにするアプリケーションを作成しています。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
か? ビデオでスムーズなスクラブを実装するより良い方法はありますか?
ご協力いただきありがとうございます!
qt - QMediaPlayer : メディアは UnknownMediaStatus のままです
QMediaPlayer を作成し、それにビデオ アドレスを渡しましたが、再生されません。mediaStatus とプレーヤーの状態を確認しましたが、常に 0 のままです。基本的な考え方は次のとおりです。
mediaStatus は単なる列挙型です: MediaStatus { UnknownMediaStatus, NoMedia, LoadingMedia, LoadedMedia, ..., InvalidMedia }
質問は次のとおりです。
この問題の原因とその修正方法を教えてください。
QMediaPlayer::mediaStatus() が QMediaPlayer::UnknownMediaStatus を返すのはどのような場合ですか? (結論を出してください)?
詳細を編集してください: 以下は、次のコードに対して得られる出力です。エラーメッセージの意味とそれを修正する方法を知っている人はいますか?
コード:
出力:
Mac 10.9 と Qt 5.3.0 を使用していますが、mac/qt のバージョンはこの問題には関係ないと思います。
qt - Qt で QMediaPlayer にファイルを再生せずに強制的にバッファリングさせる方法はありますか?
ファイルをインスタンスにロードする場合、ファイルQMediaPlayer
は自動的にバッファリングされません。を使用してファイルを再生するまでは が残りMediaStatus
、その後は. プレーヤーがファイルを再生せずにバッファリングするよう強制する方法をドキュメントで見つけることができません。これを行う方法はありますか?NoMedia
play()
BufferedMedia
現在、ミュートしてファイルを再生し、もう一度停止してミュートを解除することを計画していますが、気分が悪くなります。確かにこれを行うためのより良い方法はありますか?
duration
ところで、ファイルがバッファリングされるまでを取得できないため、これが必要であり、再生を開始するトラックでduration
を選択する必要があります。position
ありがとう
c++ - QT: tcp を介した vlc サーバーからのビデオストリーミング
VLC サーバーからブロードキャストを受信するアプリケーションに取り組んでいます。解決策はありますが、これは私のニーズに合わないため、別の解決策が必要です。
私の質問は、QTcpSocket を QByteArray としてビデオを受信し、QMediaPlayer で再生する方法があるということです。以下の記事を見つけましたが、実際にはうまくいきませんでした。
これが私がやろうとしてきたことです。ポートを「8080」に設定して、HTTPでVLCでストリームを開始します。テストしたのは、接続が発生することですが、QTcpSocketのreadReady()信号が決して出力されないため、VLCからデータを取得しないようです。read/readAll を使用してデータを読み取ることはできますが。
それがどのように機能するかはわかっていますが、このコードで想像したように、videoWidget で何らかの結果を確認できるはずです。
正しく行う方法を教えてください。
qt - 1 つの MediaPlayer で複数の VideoWidgets を制御できますか?
3 つのウィジェットで Qt5 QtMultimedia ライブラリを使用してビデオを同時に再生することは可能でしょうか。
3 つのウィジェットで表示したいビデオがあります。1 つは完全なビデオを表示し、もう 1 つはビデオ内で移動するオブジェクトに焦点を当て、最後の 1 つは再び他のオブジェクトに焦点を当てています。
私は今少し苦労しており、私の努力が価値があるかどうか疑問に思っています...
誰かが似たようなことを試したり、これに取り組む方法についてのヒントを教えてくれたりしましたか?