1

私は 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」に設定しましたが、今回はエラーは発生しませんでした。方向には文字が含まれている必要があるようです。

4

0 に答える 0