几天来我一直在尝试解决这个问题,但我无法找出问题所在。我是 C# 和 javascript 的初学者,所以这可能是一个重要因素。所以我使用 RecordRTC.js 从我的网络摄像头录制视频。从中获取记录的Blob,我想将它保存在我的解决方案中的某个位置。这是我在代码隐藏中发送 blob 的代码:
recordedBuffer.replace('data:video/mp4;base64,', '')
$.ajax({
type: 'POST',
url: 'BasePage.aspx/UploadVideo',
data: '{ "video" : "' + recordedBuffer + '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert("SUCCESS: " + data.d);
}, error: function (xhr, err) {
alert(xhr.responseText);
}
});
然后在 C# 中:
[WebMethod()]
public static string UploadVideo(string video)
{
DateTime date = DateTime.Now;
string fileNameWitPath = MapPathStatic("~/Gallery/Videos/" + date.ToString("yyyyMMddHHmmss") + ".mp4");
//MapPathStatic is a static version I made of Server.MapPath()
using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
byte[] data = Convert.FromBase64String(video);
bw.Write(data, 0, data.Length);
bw.Close();
return fileNameWitPath;
}
}
}
该文件正在正确的文件中创建。但是当我尝试播放它时,它说它无法渲染文件。这只是1-2秒的视频。所以视频在中途被破坏了?做错了什么?为什么渲染不正确。我还找到了使用 PHP 保存文件的解决方案,但我真的很想为此使用 C#。
任何帮助或建议将不胜感激!