問題タブ [mediastreamsource]
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# - Silverlight HttpWebRequest BinaryReader の 2 番目の読み取り操作には常に長い時間がかかります (12 秒)
サーバーからライブ ビデオをストリーミングするために、H.264 MediaStreamSource 実装を利用する Silverlight アプリケーションを作成しています。フレームごとにサンプルを読み取るマルチパートストリーマーを作成しました。
ローカル マシンで実行されているサーバーに接続すると、ReadHeaders() 関数で応答ストリームから 2 番目のバイトを読み取るのに 12 秒かかります。したがって、基本的にはホストに即座に接続し、1 バイトを正常に読み取り、後続の ReadByte() ブロックをブロックします (コール スタックがどこにあるかを見ると、別のスレッドの System.Windows.dll!MS.Internal.InternalNetworkStream.ReadOperation にあります)。 (オブジェクトの状態))。これをテストするたびに、一貫して12秒かかります。この時間が経過すると、後続のすべての読み取りが即座に行われ、アプリケーションは正常に動作します。この同じコードを単純な .NET コンソール アプリケーションで使用すると、12 秒の遅延は発生しません。
何がこれを引き起こしているのでしょうか?
ReadHeaders() 関数:
編集: これは 2 つのスレッドのコール スタックです。
Worker Thread Worker Thread GenIIIWebClient.CVRESTLib.HttpMultipartStreamer.ReadHeaders Normal [スリープ中、待機中、参加中]
mscorlib.dll!System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle waitableSafeHandle, long millisecondsTimeout, bool hasThreadAffinity, bool exitContext) + 0x21 バイト
mscorlib.dll!System.Threading.WaitHandle.WaitOne(長いタイムアウト、bool exitContext) + 0x21 バイト
mscorlib.dll!System.Threading.WaitHandle.WaitOne(int ミリ秒タイムアウト、bool exitContext) + 0x1f バイト
mscorlib.dll !System.Threading.WaitHandle.WaitOne() + 0x10 バイト
System.Windows.dll!MS.Internal.InternalNetworkStream.EndRead(System.IAsyncResult asyncResult) + 0x40 バイト
System.Windows.dll!MS.Internal.InternalNetworkStream.Read(byte[] バッファー、int オフセット、int カウント) + 0x38 バイト
mscorlib.dll!System.IO.Stream.ReadByte() + 0x28 バイト
mscorlib.dll!System.IO.BinaryReader.ReadByte() + 0x1d バイト
GenIIIWebClient!GenIIIWebClient.CVRESTLib.HttpMultipartStreamer.ReadHeaders(System.IO.BinaryReader リーダー) 行201 + 0x19 バイト
GenIIIWebClient!GenIIIWebClient.CVRESTLib.HttpMultipartStreamer.OnGetResponse(System.IAsyncResult res) 126 行目 + 0xf バイト
System.Windows.dll!System.Net.Browser.ClientHttpWebRequest.InvokeGetResponseCallback.AnonymousMethod__18(オブジェクト状態 2) + 0x11 バイト
mscorlib.dll!System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(オブジェクト状態) + 0x3e バイト
mscorlib.dll!System.Threading. ExecutionContext.Run(System.Threading.ExecutionContext executionContext、System.Threading.ContextCallback コールバック、オブジェクト状態、bool preserveSyncCtx) + 0x97 バイト
mscorlib.dll!System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() + 0x5a バイト
mscorlib .dll!System.Threading.ThreadPoolWorkQueue.Dispatch() + 0x1b3 バイト
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() + 0x5 バイト
[マネージド移行のネイティブ]
[Appdomain 移行]
[マネージド移行のネイティブ]
フラグなし 5096 5 ワーカー スレッド ワーカー スレッド [スリープ、待機、または参加中] 通常 [スリープ、待機、または参加中]
mscorlib.dll!System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle waitableSafeHandle, long
mscorlib.dll!System.Threading.WaitHandle.WaitOne(長いタイムアウト、bool exitContext) + 0x21 バイトmscorlib.dll
!System.Threading.WaitHandle.WaitOne(int ミリ秒タイムアウト、bool exitContext) + 0x1f バイト
mscorlib.dll!System.Threading.WaitHandle.WaitOne() + 0x10 バイト
System.Windows.dll!MS.Internal.InternalNetworkStream.ReadOperation(オブジェクトの状態) + 0x8a バイト
mscorlib.dll!System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(オブジェクトの状態) + 0x3e バイト
mscorlib.dll!System.Threading.ExecutionContext.Run( System.Threading.ExecutionContext executionContext、System.Threading.ContextCallback コールバック、オブジェクト状態、bool preserveSyncCtx) + 0x97 バイト
mscorlib.dll!System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() + 0x5a バイト
mscorlib.dll!System .Threading.ThreadPoolWorkQueue.Dispatch() + 0x1b3 バイト
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() + 0x5 バイト
[マネージド移行のネイティブ]
[Appdomain 移行]
[マネージド移行のネイティブ]
c#-4.0 - Windows Phone で MediaStreamSource を使用して H264 ファイルを再生する方法
MediaStreamSource を使用すると、Windows Phone で h264 ファイルを再生できますが、それについては何も見つかりません。私が見た唯一のサンプルは、それを開始するのに本当に役立ちました: http://msdn.microsoft.com/en-us/library/hh180779(v=vs.95).aspx しかし、私は運が悪かった...お願いします助けてください、できるだけ早く実装する必要があります!
しばらくの間、mediaElement.SetSource() を使用するときに呼び出される MediaStreamSource オーバーライド メソッドを実装しようとしました。私が間違っているのは何ですか?
`public class VideoMediaStreamSource : MediaStreamSource { private MediaStreamDescription _videoDesc; プライベート MediaStreamType _mediaType;
ここに、私が今やろうとしているコードがあります。つまり、MediaElement 内で OpenMediaAsync を呼び出すことです。「slamtv60.h264」ファイルは私のソリューションにあります。
`private void PlayMediaStreamSource() { MediaElement media = new MediaElement(); VideoMediaStreamSource videoMedia = new VideoMediaStreamSource(); media.Source = new Uri("/slamtv60.h264", UriKind.RelativeOrAbsolute); media.SetSource(videoMedia); media.AutoPlay = true;
私を助けてください...
c# - MediaStreamSource Mp4 コンテナーからの Raw AAC フレーム サイズ
生の AAC オーディオ フレームを 1 つずつデコーダーに送信する必要があります。MP4 ファイル コンテナーから未加工の AAC ビットストリームを解析できましたが、オーディオ フレーム サイズを特定する解決策や方法が見つかりません。
C# を使用して、Codeplex のBMFF ライブラリを使用して AAC バイストリームを解析しました。
javascript - webrtc でカスタム メディアストリームを作成して送信する
webrtc通信のビデオ部分のメディアストリームソースとしてキャンバス要素を使用したいのですが、このトピックについて議論しているリソースがあまり見つかりませんでした。
* 長いバックグラウンド ストーリー *
問題は、カメラからビデオを直接送信できないことです。これは、表示する前にビデオを処理する要件の一部です (一部の画像処理は、この問題の範囲外です)。
以前は、他のピアのブラウザーで、タグを使用してビデオを直接表示する代わりに<video>
、非表示のキャンバス要素で何らかの処理を行い、詳細を別のキャンバスにコピーしました (描画を続けるために settimeout を使用し、illusion of live video
.
現在、クライアントは video の送信前に処理を行う必要があるため、webrtc を使用してオーディオ ストリームを直接渡しました (以前は、オーディオとビデオの両方が webrtc 経由で送信されていました)。ビデオ ストリームについては、次の 2 つの解決策がありました。
手順:
ローカル ピアでビデオを処理し、非表示のキャンバスに描画します。簡単な部分。
タイムアウトを使用して、画像データを繰り返しキャプチャして送信
しwebsockets( yes, goes through server)
ます。
b) を使用するRTCDataChannel
と、パフォーマンスが大幅に向上しますが、理由もなく失敗する場合があります。他にもいくつかの問題がありました (たとえば、webp の代わりに jpeg を送信したため、余分な帯域幅が使用されました)。
別の大きな問題は、タイムアウトを使用しているためです。タブを切り替えると、反対側でフレームレートが低下します。
それで、手動で行う代わりに、非表示のキャンバスをメディアストリームソースとして使用する方法はありますか?
javascript - MediaSource: Uncaught InvalidStateError: 'SourceBuffer' で 'appendBuffer' を実行できませんでした: この SourceBuffer は削除されました
最初のデモ MediaSource を試してみましたが、ビデオを再生できません。私が使用しているソースは webm ビデオ「big-buck-bunny_trailer.webm」です。「Uncaught InvalidStateError: Failed to execute 'endOfStream' on 'MediaSource': The 'updating' attribute is true on one or more of this MediaSource's SourceBuffers.」というメッセージが引き続き表示されます。ソースバッファ更新フラグも処理しましたが、まだ機能していないようです。
google-chrome-extension - RecordRTC: Chrome でオーディオ メディアストリームをどのようにキャプチャしますか?
そこで、RecordRTC を使用して、タブからのオーディオを録音しようとしました。RecordRTC は、ページからのストリームをキャプチャする必要がある引数として Mediastream を渡す必要があります。そのストリームをキャプチャしようとするコードをここにリンクしましたが、動作させることはできません。また、私の github リポジトリをリンクします: https://github.com/laotsunami/soundbyte
助けてください!
windows-phone-8.1 - MediaStreamSource を使用した WindowsPhone MediaTranscoder
WindowsPhone 8.1 SDK の MediaTranscoder クラスを使用して、画像付きのビデオを作成しようとしています。成功したら、それを使用して、より多くの画像を含むビデオを作成します。
以下のコードでは、写真ライブラリ内の画像を見つけて、そこから MediaStreamSample を作成しています。これはうまくいきます!
次に、期間が 1 (秒) の MediaStreamSource を作成し、それを前に作成したサンプルに関連付けます。これもうまくいきます!
機能しないのは MediaTranscoder インスタンスです。
上記のメソッドを呼び出すと、「参照がインスタンスに設定されていません」という例外が発生します。(ヌル参照例外)
なぜこれが起こるのかわかりません...助けてください。
silverlight - Silverlight MediaElement は、1 つの画像をレンダリングするために多くの H.264 フレームを必要とします
基本的な H.264 NAL ユニットを MediaElement に供給するカスタム MediaStreamSource を実装する Silverlight アプリケーションに取り組んでいます。私のストリームはキー フレームから始まりますが、1 つの画像をレンダリングするのに平均で約 20 フレームかかることに気付きました。H.264 エンコーダーで GOP サイズを 8 に設定しています。このビデオはセキュリティ カメラからのもので、ライブ ストリーム アプリケーションで表示されています。
主な問題は、実際にイベントが発生してから画像が実際にレンダリングされるまでの間にかなりの遅延が発生することです。わずかな遅延が予想されますが、最初のフレームを受信してから最初の画像がレンダリングされるまでに約 3 秒かかることが判明しました。最初のキー フレームには、理論的には画像をデコードするのに十分な情報が含まれているべきではないでしょうか? テスト用に、キャプチャした H.264 ストリームをファイルからロードし、ファイル全体を内部的にバッファリングするサンプルの Silverlight アプリケーションを用意しました。この方法では、MediaStreamSource が開くとすぐに最大 20 フレームを消費し、実質的に待ち時間なしで画像をレンダリングします。
Microsoft / Silverlight / H.264 の専門家は、なぜこれが起こっているのか詳しく説明したいと考えていますか?
javascript - mediaStreamTrack.enabled が変更されたときに通知/イベントを受け取るにはどうすればよいですか?
getUserMedia
Web カメラにアクセスするために使用しています。次のことを行うビデオのオンとオフを切り替える機能があります。
enabled
の値が変更されたときにイベントを受け取るにはどうすればよいですか? を使ってみましObject.observe
たが、うまくいきません。