将.mp4文件从blob正确保存为C#

将.mp4文件从blob正确保存为C#,c#,file,mp4,C#,File,Mp4,我想从字节数组中保存一个.mp4文件。这些字节来自websocket,表示在支持的浏览器(如Chrome或Firefox)中使用getUserMedia()时用户的网络摄像头和麦克风录制。当我处理所有内容时,我只需要加入视频的多个部分并保存它,我有以下代码: foreach (TransFile tf in ltf.Value.OrderBy(m=>m.sequence)){ using (BinaryWriter writer = new Bin

我想从字节数组中保存一个.mp4文件。这些字节来自websocket,表示在支持的浏览器(如Chrome或Firefox)中使用
getUserMedia()
时用户的网络摄像头和麦克风录制。当我处理所有内容时,我只需要加入视频的多个部分并保存它,我有以下代码:

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);
               }    
}
文件在my D驱动器中结束,但输出视频有问题:

当我尝试使用VLC打开它时会发生这种情况…打开我视频的唯一播放器是BSPlayer。如何保存此文件以便任何玩家都可以打开它


更新:为了修复编解码器错误,我使用
ffmpeg
转换了保存的文件,以便能够在播放机中、本地或使用网页上的HTML5播放机播放此文件。

确定您的问题没有正确的解决方案。但我会尽力解释一下

关于音频和/或视频文件,您需要了解两件事。包装和编码。你可以阅读这篇关于这个主题的文章

MP4是一种编码,但MP4文件可以打包成许多不同的结构,这可能是在更简化的播放器中运行视频的问题

此外,如果二进制数据不是MP4文件,则可以另存为MP4,但这不会使此视频数据成为MP4文件。可能您正在使用.MP4文件名保存其他格式


最后,如果你需要保证在MP4中保存,你需要在你的程序中加入一个视频转换器来检查格式,并在需要时进行转换。

你不能只将字节写入文件并调用它。
。MP4
它必须用MP4编码(你需要一个库)@EpicKip:这取决于字节是否已经是MP4格式,不过。他们显然不在伊哈文诺基亚的案子里@保罗:那是真的!我猜一下,它还没有编码,因此出现了错误。这个问题无法回答。谢谢,现在我有一些关键字要放在我的谷歌搜索中;)