2017-10-02 19 views
-1

バイトの配列から.mp4ファイルを保存します。このバイトはwebsocketに接続されており、ChromeやFirefoxなどのサポートされているブラウザでgetUserMedia()を使用すると、ユーザーのウェブカメラとマイクの記録を表します。私はすべてを処理し、そして私は、ビデオの複数の部分に参加し、それを保存する必要があり、私はこのコードを持っている場合:BLOBからC#で.mp4ファイルを正しく保存します。

foreach (TransFile tf in ltf.Value.OrderBy(m=>m.sequence)){ 
    using (BinaryWriter writer = 
       new BinaryWriter(File.Open("d:\\" + ltf.Key + ".mp4", FileMode.Append))) 
       { 
        writer.Write(tf.bytes); 
       }  
} 

ファイルには、私のDドライブに終了しますが、出力ビデオに問題があります:私は私のビデオを開いただけでプレイヤーがBSPlayerだった... VLCを使用して、それを開こうとすると

enter image description here

これが起こります。どのようにしてこのファイルを保存して、どのプレーヤーでも開くことができますか?

更新:コーデックエラーを修正するために、保存されたファイルをffmpegで変換して、このファイルをプレイヤーで、ローカルで、またはWebページのHTML5プレーヤーを使用して再生できるようにしました。

+3

ファイルにバイトを書き込むだけで、それをmp4でエンコードする必要があります(libが必要です) – EpicKip

+3

@EpicKip:バイトはすでにMP4形式であるかどうかによって異なります。彼らは明らかにihavenokiaのケースではない...! – Paul

+0

@Paulそれは本当です! – EpicKip

答えて

1

あなたの質問に正しい解決策はありません。しかし、私はそれにいくつかの光を当てようとします。

あなたが知る必要があるオーディオやビデオファイルについて2つのことがあります。パッキングとエンコーディング。このトピックについてはarticleを読むことができます。

MP4はエンコーディングですが、MP4ファイルをさまざまな構造にパックすることができます。これは、より簡略化されたプレーヤーでビデオを実行する際に問題になる可能性があります。

また、バイナリデータがMP4ファイルでない場合、MP4として保存できますが、このビデオデータをMP4ファイルにすることはできません。多分.MP4ファイルの名前で他のフォーマットを保存しているかもしれません。

最後に、MP4での保存を保証する必要がある場合は、形式を確認して必要に応じて変換するビデオコンバータをプログラムに組み込む必要があります。

+0

ありがとう、私はいくつかのキーワードを私のGoogleの検索に入れている;) – ihavenokia

関連する問題