通过Xamarin将视频上传到Azure存储 [英] Uploading video to Azure Storage through Xamarin

查看:132
本文介绍了通过Xamarin将视频上传到Azure存储的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将视频文件上传到我的Azure存储帐户.我已经将其与图像配合使用,但是尝试查看上传的视频会显示消息不支持视频格式或MIME类型".视频格式为mp4.

我使用以下代码进行上传:

public async Task UploadVideo(Stream video, string path)
{

    var container = GetContainer("videos");

    // Creates the container if it does not exist
    await CreateContainer(container);

    //Gets the file extension
    string lastPart = path.Split('.').Last();

    // Uploads the video to the blob storage
    CloudBlockBlob videoBlob = container.GetBlockBlobReference(path);
    videoBlob.Properties.ContentType = "video/" + lastPart;
    await videoBlob.UploadFromStreamAsync(video);
} 

我做错什么了吗?

谢谢

这是我用来在手机上捕获视频的代码:

    private async Task TakeVideoButton_Clicked(object sender, EventArgs e)
    {
        if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakeVideoSupported)
        {
            await DisplayAlert("No Camera", ":( No camera avaialble.", "OK");
            return;
        }

        mediaFile = await CrossMedia.Current.TakeVideoAsync(new Plugin.Media.Abstractions.StoreVideoOptions
        {
            Name = "video.mp4",
            Directory = "DefaultVideos",
        });

        if (mediaFile == null)
            return;

        await DisplayAlert("Video Recorded", "Location: " + mediaFile.Path, "OK");
        videoStream = mediaFile.GetStream();

        file.Dispose();
    }

解决方案

我只是在手机上而不是在模拟器上测试了它,并且在那儿工作得很好,所以我将假定它纯粹是与模拟器有关的问题. >

I'm trying to upload a video file to my Azure Storage account. I've got it working with images, however trying to view an uploaded video gives the message "Video format or MIME-type is not supported". The video format is mp4.

I use the following code to upload:

public async Task UploadVideo(Stream video, string path)
{

    var container = GetContainer("videos");

    // Creates the container if it does not exist
    await CreateContainer(container);

    //Gets the file extension
    string lastPart = path.Split('.').Last();

    // Uploads the video to the blob storage
    CloudBlockBlob videoBlob = container.GetBlockBlobReference(path);
    videoBlob.Properties.ContentType = "video/" + lastPart;
    await videoBlob.UploadFromStreamAsync(video);
} 

Am I doing something wrong?

Thanks

Edit:

Here's the code I use to capture video on the phone:

    private async Task TakeVideoButton_Clicked(object sender, EventArgs e)
    {
        if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakeVideoSupported)
        {
            await DisplayAlert("No Camera", ":( No camera avaialble.", "OK");
            return;
        }

        mediaFile = await CrossMedia.Current.TakeVideoAsync(new Plugin.Media.Abstractions.StoreVideoOptions
        {
            Name = "video.mp4",
            Directory = "DefaultVideos",
        });

        if (mediaFile == null)
            return;

        await DisplayAlert("Video Recorded", "Location: " + mediaFile.Path, "OK");
        videoStream = mediaFile.GetStream();

        file.Dispose();
    }

解决方案

I just tested this on my phone instead of my emulator and it worked perfectly there, so I'm going to assume it's purely a emulator related issue.

这篇关于通过Xamarin将视频上传到Azure存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆