私は QMediaplayer ライブラリで遊んでいます。ストリーミング ビデオ ソースでどのように機能するのか興味があったので、VLC を使用して、udp プロトコルを使用していくつかのビデオをストリーミングしました。
簡単なテストを行うために、MediaPlayer exampleという名前の Qt の例を使用しました。この例はオフライン ファイルでのみ動作するように設計されているため、Player の実装にダム関数を追加しました。
void setM(QUrl url){player->setMedia(url);player->play();}
次に、main.cppファイルで、この関数を次のように呼び出します。
...
player.setM(QUrl("udp://239.1.1.1:1234"));
return app.exec();
これは、プログラムが読み込まれると、ストリーム ソースの再生を開始することを意味します。
ここでの問題は、Qt を通じて次のエラーが発生することです。
DirectShowPlayerService::doSetUrlSource: Unresolved error code 800c000d
ローカル ファイルとhttp ストリーミングでこれを行うには、うまくいきます...しかし、UDP または RTP で試してみると、常に同じエラーが発生します。
私はより多くの情報を探すのに数時間を費やしましたが、いつも同じ応答が得られます... QMLVLC を使用してください... たとえば、これを見てください。
誰もこれを前に試しましたか?ここで何が問題なのですか?
PD: これを機能させるための VLC プラグインがあることは知っていますが、これを Qt でのみ機能させたい (または、少なくとも、ここで何が起こっているかを理解してください)。
PD2: Windows 8.1、Qt 5.5 (mingw 4.9.2) を使用しており、重要なコーデックがすべてインストールされています。
前もって感謝します、
アップデート
最後に、私は新しいhttp://code.qt.ioに対処することができました。これは、udp (およびその他の) プロトコルをブロックしていると思われるコードです。おそらく、Directshowsservice で有効なストリーム ソースとして受け入れられるのは "http" と "https" だけです... 今週は、udp プロトコルを関数 doSetUrlSource に追加するために、Windows 用のマルチメディア モジュールだけを再コンパイルするために、少し時間をとってみます。そして何が起こるか見てください。誰かが最初にテストした場合は、ここでお知らせください。
更新 2
まず第一に、AddFilter メソッドが原因で QMediaPlayer が UDP/RTP コンテンツを再生できなかったと思われます...とにかく、http、https、および rtsp は完全に機能します。
第二に、udp プロトコルで奇妙な動作を発見しました。テストマルチキャスト方向として「udp://@239.1.1.1:1234」を使用しています。奇妙なことに、あるテスト中に、この方向を誤って「udp://@239.1.1.1:1234z」に設定しましたが、今回はエラーは発生しませんでした。方向には文字が含まれている必要があるようです。