問題タブ [windows-media-format-sdk]

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 に答える
148 参照

video - WriteStreamSampleがパケットをドロップしないようにするにはどうすればよいですか?

私はWindowsMediaFormat 11 SDKを使用して、圧縮されたサンプルの読み取りと書き込みによってビデオファイルをコピーしています(つまり、デコード/エンコードは行われず、生のサンプルをコピーするだけです)。

私の問題は、ライターがデータパケットをドロップしていることです。元のファイルにあったすべてのデータパケットを保持したいので、これは最適ではありません。入力ファイルでビットレートが間違って定義されている場合、問題は特に深刻です(結局のところ、あらゆる種類の奇妙なファイルが浮かんでいます)。

パケットドロップを完全に無効にするために使用できる構成設定はありますか?私は今のところこのようなものを見つけていません。非常に高いビットレートとバッファウィンドウを設定しようとしましたが、ライタープロファイルにストリームを追加するときに情報のないエラーが発生しました。

現時点での私の唯一の選択肢は、すべてのASF解析コードを自分で再実装して、実際に低レベルのコピー操作を実行することだと思われます。ただし、これはかなりの無駄な時間になります。

私が見逃したものはありますか?どういうわけか、ライターにパケットをドロップしないように指示できますか?

編集:ビデオがWMV2(Windows Media Video 8)コーデックを使用している場合、問題は最も深刻であるように見えます。VC-1を使用すると、出力ビデオは正常です(または、少なくとも正常に近い場合、ファイルの内容を詳細に確認していませんが、視覚的には問題なく見えました)。おそらく、WMV2の実装はメディアフォーマットSDKでどういうわけか壊れていますか?さて、私は今のところWMV2サポートなしで生きなければなりません。

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

c# - IWMWriter の EndWriting を呼び出そうとすると、説明のつかない "Catastrophic Failure" エラーが発生する

Windows Media .Net ライブラリを使用して、asf ファイルであるオーディオ/ビデオ ファイルをコピーしようとしています。私は Windows Media フォーマット SDK に比較的慣れていないので、これを正しく行っているかどうかわかりません。ダウンロードに含まれているいくつかのサンプル プロジェクトと C++ バージョンのドキュメントを調べましたが、EndWriting を呼び出すとクラッシュする理由がわかりません。したがって、誰かがここで私が間違っていることを指摘するのを助けることができれば、感謝します.

記録を開始するためのボタンと、記録を終了するための別のボタンを持つ WinForm があります。私のクラスは IWMReaderCallback を実装し、SampleProp というプライベート クラスを使用して、OnSample メソッドで返されるポインタなどの値を保持します。そのため、OnSample メソッドでは、SampleProp インスタンスの byte[] メンバーに、返されるサンプルのコピーを入力しています。次に、SampleProp のインスタンスを、ProcessReaderSample という別のメソッドで使用されるコレクションに追加します。この別のメソッドでは、IWMReader オブジェクトと IWMWriter オブジェクトを作成しており、BeginWriting、AllocateSample、WriteSample、EndWriting を呼び出す while ループがあります。そして、それがクラッシュする場所です。これが私が使用している私のコードです...

誰かがこれで私を助けてくれるなら。前もって感謝します。

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

video - ASF file during power failure

ビデオ データを ASF ファイルに書き込むために WMWriterAdvanced および WriteStreamSample 関数を使用しています。サンプルの書き込み中に電源障害が発生すると、このファイルに既に書き込まれている約 20 秒が失われます。ASFView でファイルを調べたところ、最後の 500 パケットがゼロ バイトで埋められていることに気付きました。停電時に一部のデータが失われる可能性があることは理解していますが、20 秒のビデオは長すぎるようです。

既に書き込まれたサンプルが破損しているのはなぜですか?また、その量を減らすことは可能ですか?