4

リアルタイムのビデオ再エンコードを行う良い方法を知っている人はいますか (ターゲット形式は 3GP s263 AMR ナローバンドと MP4 mp4v mp4a ですが、もちろん同時にではありません。入力ファイルは WMV ですが、より多くの入力形式がサポートされています。より良い)?

現在、ffmpeg コマンドラインを呼び出す C# サービスを使用して非同期処理を行っていますが、同期要求に対してそれを行うという考えは、ユーザーが再生を開始する前にかなりの時間を待たなければならないため、少し最適ではありません (ただし、それが最良のシナリオが私に知らせてくれ、私はそれを受け入れると思います)。

ファイルの提供と保存を同時に行うことができれば (将来の要求のために保存できるように) 素晴らしいことですが、それができなくても大惨事にはなりません。

補足として、ストリーミング ソリューションをサポートするデバイスが少ないため、ストリーミング ソリューションは避けたいと思います。

アップデート

私が到達した場所を最新の状態に保つために、現在、exeではなくFFmpegのDLLを直接呼び出すラッパーを作成するというアイデアをいじっています。取得できるかもしれないと考え始めています私がその方法を求めている機能(すべてが完了するのではなく、徐々にデータをキャッチすることで、十分にリアルタイムに近づくことができます)。

これが機能するかどうかまだ試しており、その方法の良いサンプルを見つけようとしています (C# ではなく C で記述されている場合でも、DLL とのインターフェイス方法が示されます)。

4

2 に答える 2

1

私は、プレゼンテーションやユーザー グループ ミーティングのリアルタイム エンコーディングをいじっています。私が見つけた最良の解決策は、Microsoft Expression Encoder でした。付属の SDK は非常に簡単に使用でき、必要な機能のほとんどを提供するはずです。

于 2009-12-07T14:06:35.537 に答える
1

ストリーミング ソリューションについては、StreamCoders の MediaSuite.netを使用しました。MPG ベースのビデオを 3GP/H263 にストリーミングする場合、問題なく動作しました。ただし、仕様、フォーマット、エンコーディングなどに関して、自分が何をしているのかを正確に知っておく必要があります。それは巨大な分野であり、彼らの製品は基本的な用語のいくつかを「説明」していません。さらに、私が覚えている限りでは、オーディオ チャネルとビデオ チャネルを手動で同期する必要があります。彼らのデモアプリはそれを行う方法を示しています(ただし、これは単なるデモアプリであるため、最適化してしまう可能性があります).

ストリーミングだけでなく、再エンコードにも使用できると思いますが、最近は試していません。結果をどのように出力する予定ですか?としてSystem.IO.MemoryStream

もう 1 つのストリーミング ソリューションは、Xenonなどのよく知られているストリーミング サーバーを用意し、それを使用して "back-to-back" 手法を実行することです。ハンドラーはリクエストを取得し、ストリーミング サーバーへのリクエストを作成します。ストリーミング サーバーの応答がクライアントにストリーミングされます。ハックのようなものですが、しばらくの間はうまくいきました。

あなたのffmpegソリューションは問題なく、低レベルのほぼリアルタイムの変換よりも実装が簡単であることに気付くかもしれません。これを「許容」できるなら、そのままにしておく方がいいかもしれません。

更新: ffmpegを .Net ライブラリでラップすることになった場合、これは優れたソリューションのように思われます。ffmpegは優れたライブラリであるため、ソリューションを共有していただければ幸いです。私たちはそれで遊んでみましたが、十分な時間がありませんでした。

于 2009-12-06T14:29:37.223 に答える