0

我有 UWP C# 应用程序,它应该从网络摄像头录制视频。

一旦用户点击“开始录制”,我应该捕获视频并保存到 azure blob 存储中。因此,为了捕获网络摄像头,我使用了 mediaCapture。

此时我可以使用以下代码保存到本地存储中

// Create storage file for the capture
var videoFile = await _captureFolder.CreateFileAsync("SimpleVideo.mp4", CreationCollisionOption.GenerateUniqueName);
var encodingProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto);
// Calculate rotation angle, taking mirroring into account if necessary
var rotationAngle = CameraRotationHelper.ConvertSimpleOrientationToClockwiseDegrees(_rotationHelper.GetCameraCaptureOrientation());
encodingProfile.Video.Properties.Add(RotationKey, PropertyValue.CreateInt32(rotationAngle));

Debug.WriteLine("Starting recording to " + videoFile.Path);

await _mediaCapture.StartRecordToStorageFileAsync(encodingProfile, videoFile);
_isRecording = true;

Debug.WriteLine("Started recording!");

但是我的目标是直接使用 Azure.Storage.Blobs 开始上传到 Azure blob,而不保存在本地机器中。

请问有什么建议吗?

4

1 回答 1

0

Blob 存储允许您以块的形式上传文件 [将文件拆分为较小的大小],一旦完成,您可以按特定顺序提交这些块:

试试这些方法,

  1. 放块上传一个块

  2. PutBlockList按特定顺序提交块列表

例如,使用这些方法,您可以在内存中创建一个缓冲区,用于存储视频并在PutBlock每次缓冲区达到一定大小时调用。然后,一旦录制完成,您就可以调用PutBlockList以提交所有块。因此,您的 blob 将包含完整的记录,而无需先将其保存到本地磁盘。

如何使用这些方法请参考本文档SO Thread

于 2021-10-07T09:49:24.970 回答