开发者社区 问答 正文

有什么方法可以记录视频直接传递到SQL数据库? (关闭)

关闭。 这个问题需要细节和清晰。 目前还不能接受的答案。 想改善这个问题?添加细节和澄清的问题编辑这篇文章。 关闭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();
    }  
}             

}

展开
收起
SONGYiiiD 2019-12-06 21:30:17 1553 分享 版权
阿里云 AI 助理回答

在您的问题中,您希望在UWP(Universal Windows Platform)应用程序中使用媒体捕捉功能录制视频,并将录制的视频存储到SQL数据库中。这里有几个关键点需要注意和调整:

  1. 录制视频: 您已经正确地初始化了_mediaCapture对象并开始录制视频到一个文件中。确保在调用StartRecordToStorageFileAsync之前,您已经初始化了_mediaCapture实例并且请求了相应的权限。

  2. 读取视频文件为字节流: 在您的代码中,File.ReadAllBytes("")是空字符串,这意味着它尝试读取一个不存在或未指定的文件。您应该提供刚录制的视频文件的路径,如下所示:

    cmd.Parameters.Add("@video", SqlDbType.VarBinary).Value = await File.ReadAllBytesAsync(videoFile.Path);
    
  3. 处理大文件: 直接将视频文件作为二进制数据存储在数据库中可能不是最佳实践,特别是对于较大的视频文件,这可能导致性能问题、存储效率低下以及数据库操作变慢。通常建议将视频文件存储在文件系统或云存储服务(如阿里云OSS - Object Storage Service)上,然后在数据库中仅存储该文件的URL或唯一标识符。

  4. 使用阿里云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;
    
  5. 数据库连接字符串: 确保ConnectionString变量包含了正确的数据库连接信息,包括服务器地址、数据库名、用户名和密码等。

综上所述,推荐的做法是将视频文件上传到阿里云OSS,然后在数据库中存储视频的URL,这样可以更高效地管理和检索视频内容。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答