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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Blob中正确保存C#中的.mp4文件[关闭]相关的知识,希望对你有一定的参考价值。

我想从一个字节数组中保存.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播放器。

答案

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

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

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

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

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

以上是关于从Blob中正确保存C#中的.mp4文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

“运行时检查失败 #0 - ESP 的值未在函数调用中正确保存”从 C++ 代码成功 C# 回调后

如何在 django 中正确保存多个文件?

如何在 Windows DLL 中正确实现和关闭休眠线程

如何在 Core Data 中正确保存?

网页无法在谷歌浏览器中正确保存

在 Symfony 中正确保存相关实体(外键)