問題タブ [vp8]

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.

0 投票する
0 に答える
952 参照

websocket - autobahn websockets、gstreamer、および html5 mediaSource API の実装を組み合わせる

autobahn|python を使用して websocket サーバーを実行しています。サーバー側では、「appsink」を使用して webm フレームをキャプチャするために使用している gstreamer パイプラインも実行しています。実装されている gstreamer パイプラインは次のとおりです。

毎回、appsink でバッファを受信し、sendMessage を使用してバイナリの「メッセージ」として Websocket 経由で送信します。

クライアント側では、受信した frame_data blob の複雑なフローがあります。FileReader、MediaSource、およびソース バッファがあります。frame_data が受信されるたびに、filereader を使用してバッファとして読み取られます。ファイルリーダーが前の frame_data の読み取りでビジー状態の場合、それを「buffer_pool」に追加します。frame_data がバッファとして読み取られると、「sourceBuffer」に追加されます。「sourceBuffer」がまだ前のチャンクを更新している場合、それは「sourceBufferpool」に追加されます。

最終結果は、ブラウザ ウィンドウに 1 つのフレームしか表示されず、ビデオがフリーズするというものです。chrome://media-internals/ を確認すると、次の手がかりが得られます。

ふぅ、かなり長い説明!!! この行までたどり着いたことを願っています。さて、本当の質問:

  1. 1 フレームだけ表示した後にビデオがフリーズするのはなぜですか?
  2. webmチャンクを個別のメッセージとして扱っているのに対し、これは「sendMessageFrameData」として処理する必要があるため、websocketの「sendMessage」メソッドが原因ですか?
  3. 送信された順序で受信されるように、到着した frame_data の順序付けが必要ですか?
  4. または私のアプローチ全体が間違っていますか?

助けてください!

0 投票する
1 に答える
1861 参照

android - Android mediarecorder 設定または camprofile 微調整で Webm 形式を記録しますか?

ばかげた質問に思えるかもしれませんが、私はこれに一晩中取り組んでいましたが、モバイルから記録された WebM ビデオを取得できませんでした。

1 つだけ使用する必要があると思われるので、カムコーダーのプロファイル行にコメントを付けました。また、API レベル 21 が必要であるというメモも見たので、ロリポップ 5.0.2 で moto G を使用しています。

私が得ているエラーは、カメラがエラー100で死亡しました。メディアrecorder.prepare()が発生することがありますが、メディアrecorder.start()がエラーをスローします。どうすればいいのか困っています。一度エラーが発生しませんでした。しかし、再生できなかった6.19KBのファイルしかありませんでした。

0 投票する
1 に答える
2285 参照

webrtc - VP8/OPUS フレームの解析

C言語を使用してLinux環境でwebrtcシミュレーターを開発しています。ここでは、ある webrtc シミュレーターから別の webrtc シミュレーターにメディアを送信する必要があります。VP8 と Opus コーデックを使用する必要があります。今、私は VP8 コーデックから始めています。私は VP8 を初めて使用するので、親切にも理解を深めてください。

  1. シミュレーターなのでリアルタイムでメディアをキャプチャ・再生したくありません。ファイルからオーディオ/ビデオ データを読み取り、リモートに送信する必要があります。リモートで抽出されたメディア データを取得し、ファイルに保存します。

  2. エンコードされた VP8 データを含むファイル形式はどれですか? それはwebmファイル形式ですか、それとも何か他のものですか?

  3. webm ファイルに VP8 および OPUS コーデック データが含まれていると仮定すると (よくわかりません)、どうすればフレームごとに解析できますか。たとえば、AMR-NB ファイルからオーディオ フレームを抽出すると、ファイルから amr フレームを解析できます。同様に、VP フレームの解析ロジックを学習するヘルプ ページはありますか。

  4. または、webm ファイルから VP8/OPUS フレームを解析できるオープン ソースがありますか。

0 投票する
1 に答える
882 参照

webrtc - Webm (VP8 / Opus) ファイルの読み取りと書き戻し

C/C++ で webrtc シミュレーターを開発しようとしています。メディアの取り扱いには、libavを使用する予定です。2つのwebrtcシミュレーター間のメディア交換を実現するために、以下の手順を考えています。2 つの webrtc シミュレーターABがあるとします。

  1. av_read_frame apiを使用して、入力 webm ファイルから A でメディアを読み取ります。
  2. エンコードされたメディア (オーディオ/ビデオ) データを取得すると思いますが、これでよろしいですか?
  3. エンコードされたメディア データをUDP ソケット経由でシミュレータBに送信します。
  4. シミュレータBはメディア データを UDP ソケットで RTP パケットとして受信します。
  5. シミュレータBは、受信したばかりの RTP パケットからオーディオ/ビデオ データを抽出します。
  6. シミュレータBで抽出されたメディアデータは、エンコードされたデータのみであると想定しています(ここで正しいですか)。デコードしたくありません。ファイルに書きたい。後でファイルを再生して、すべてが正しく行われたかどうかを確認します。

この問題を単純化するために、UDP ソケット部分を取り出してみましょう。次に、私の質問は、webm 入力ファイルからデータを読み取り、エンコードされたメディアを取得し、パケットを準備し、av_interleaved_write_frameまたはその他の適切な API を使用して出力ファイルに書き込むことになります。libavを使用してやりたいことすべて。

私が参照できるコード例はありますか。
または、誰かがそれを開発するように私を案内してもらえますか。

テストプログラムで試しています。最初のステップとして、私の目的は、ファイルから読み取り、出力ファイルに書き込むことです。以下のコードがありますが、正しく動作していません。

このプログラムを実行すると、「コーデックが見つかりません」と出力されます。何がうまくいかないのか、誰か助けてください。

コーデックが見つからない問題は、libvpx1.4 バージョンを個別にビルドすることで解決されます。ソースファイルからの読み取りと宛先ファイルへの書き込みにまだ苦労しています。

編集 1: コードの変更後、ファイルに書き込むことができるのはビデオのみですが、さらにいくつかのエラーがまだ存在します。

編集 2: 修正されたコード (2 回目) を使用すると、ビデオ フレームが正しく書き込まれていることがわかります。オーディオ フレームの場合、マクロ_AUDIO_WRITE_ENABLED_の下にコードを追加しました が、このマクロ プログラムを有効にするとクラッシュします。誰かがオーディオ書き込み部分 (マクロ _AUDIO_WRITE_ENABLED_ の下のコード) で何が問題なのかを案内できますか?

0 投票する
1 に答える
1456 参照

javascript - 2 つ以上の WebM ビデオ BLOB の一部を連結する

クライアント側の JavaScript だけを使用して、webm 形式でエンコードされた 2 つ以上のビデオ blob の一部を連結することは可能ですか?

0 投票する
1 に答える
1385 参照

google-chrome - Chromium に WebRTC で VP9 コーデックを使用させるにはどうすればよいですか?

ビデオ チャットに Chromium(48) または Chrome(45) を使用すると、ブラウザは VP9 ではなく VP8 コーデックを使用しているように見えます。Chromium WebRTC ソース コードを検索すると、VP9 コーデックへの参照が多数表示されるので、サポートされていると思います。

インターネット検索に基づいて、「--enable-webrtc-vp9-support」フラグが使用されている場合、Chrome は WebRTC で VP9 コーデックを使用する必要があるように見えますが、このフラグは ChromeまたはChromiumでは何の効果もないように見えることがわかりました。SDP は、VP8 が使用されていることを示しています。

Chromium ソース コードを検索しても、「enable-webrtc-vp9-support」で一致するものは返されません。

0 投票する
1 に答える
526 参照

android - WebRTC を使用した Google Glass からのグレースケール ビデオ ストリーミング

Google グラスからブラウザにオーディオとビデオをストリーミングしようとしています。ブラウザはビデオとオーディオを受信するだけです。

ここの指示に従ってGoogleソースコードをコンパイルしましたhttp://www.webrtc.org/native-code/android

これまでのところ、動作します。しかし、私はビデオに問題があります。グレースケールで表示されており、これを修正するためにソース コードをどのように変更すればよいかわかりません。

問題のスクリーンショットは次のとおりです。

ここに画像の説明を入力 stackoverflow.com で 2 つの関連する問題を見つけましたが、解決策が見つかりませんでした。

あなたが提供できる助けをありがとう!