从Blob中正确保存C#中的.mp4文件[关闭]

问题描述 投票:-1回答:1

我想从一个字节数组中保存.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);
               }    
}

该文件以我的D驱动器结束,但输出视频出现问题:

enter image description here

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

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

c# file mp4
1个回答
1
投票

好的,你的问题没有正确的解决方案。但我会尝试对此有所了解。

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

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

此外,如果您的二进制数据不是MP4文件,您可以保存为MP4,但这不会使此视频数据成为MP4文件。也许你正在保存一些名为.MP4​​文件的其他格式。

最后,如果您需要保证在MP4中保存,则需要在程序中加入视频转换器以检查格式并在需要时进行转换。

© www.soinside.com 2019 - 2024. All rights reserved.