关闭。 这个问题需要细节和清晰。 目前还不能接受的答案。 想改善这个问题?添加细节和澄清的问题编辑这篇文章。 关闭45分钟前。 我想写一个函数使用媒体捕捉和记录视频寄给UWP应用程序的SQL数据库。 我不知道这将是正确的方法。 谁能指导我吗?
private StorageFolder _captureFolder = null;
private async Task StartRecordingAsync() { using (SqlConnection sqlConn = new SqlConnection(ConnectionString)) { string myquery = "INSERT INTO persons (video) VALUES (@video)"; using (SqlCommand cmd = new SqlCommand(myquery, sqlConn)) { var videoFile = await _captureFolder.CreateFileAsync("SimpleVideo.mp4", CreationCollisionOption.GenerateUniqueName); var encodingProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto); await _mediaCapture.StartRecordToStorageFileAsync(encodingProfile, videoFile);
cmd.Parameters.Add("@video", System.Data.SqlDbType.VarBinary).Value =File.ReadAllBytes("") ;
sqlConn.Open();
cmd.ExecuteNonQuery();
sqlConn.Close();
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您的问题中,您希望在UWP(Universal Windows Platform)应用程序中使用媒体捕捉功能录制视频,并将录制的视频存储到SQL数据库中。这里有几个关键点需要注意和调整:
录制视频: 您已经正确地初始化了_mediaCapture
对象并开始录制视频到一个文件中。确保在调用StartRecordToStorageFileAsync
之前,您已经初始化了_mediaCapture
实例并且请求了相应的权限。
读取视频文件为字节流: 在您的代码中,File.ReadAllBytes("")
是空字符串,这意味着它尝试读取一个不存在或未指定的文件。您应该提供刚录制的视频文件的路径,如下所示:
cmd.Parameters.Add("@video", SqlDbType.VarBinary).Value = await File.ReadAllBytesAsync(videoFile.Path);
处理大文件: 直接将视频文件作为二进制数据存储在数据库中可能不是最佳实践,特别是对于较大的视频文件,这可能导致性能问题、存储效率低下以及数据库操作变慢。通常建议将视频文件存储在文件系统或云存储服务(如阿里云OSS - Object Storage Service)上,然后在数据库中仅存储该文件的URL或唯一标识符。
使用阿里云OSS存储视频: 如果决定采用云存储方式,您可以使用阿里云OSS来上传视频文件,并在数据库中存储返回的Object URL。示例代码如下:
首先,需要安装阿里云OSS .NET SDK,并配置好访问密钥等信息。
然后,使用以下代码上传文件至OSS并获取URL:
using Aliyun.OSS;
// 初始化OSSClient
var client = new OssClient(YourEndpoint, YourAccessKeyId, YourAccessKeySecret);
// 上传文件到OSS
var ossPath = "your-bucket-name/" + videoFile.Name; // 自定义存储路径
var uploadResult = await client.PutObjectAsync("your-bucket-name", ossPath, videoFile.Path);
// 将返回的URL存储到数据库
string videoUrl = uploadResult.HttpMetadata.Location;
cmd.Parameters.Add("@video_url", SqlDbType.NVarChar).Value = videoUrl;
数据库连接字符串: 确保ConnectionString
变量包含了正确的数据库连接信息,包括服务器地址、数据库名、用户名和密码等。
综上所述,推荐的做法是将视频文件上传到阿里云OSS,然后在数据库中存储视频的URL,这样可以更高效地管理和检索视频内容。