【发布时间】:2017-12-29 12:10:21
【问题描述】:
我正在尝试将视频文件上传到我的 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();
}
【问题讨论】:
-
是什么给了你这个错误信息?
-
文件是否可能刚刚损坏?似乎 Azure 尝试将文件作为 MP4 视频提供,所以这部分没问题。您是否尝试再次下载文件并在本地播放?
-
我快速下载了文件(仅 146 KB?),无法在本地播放,所以我认为文件上传不完整。您的代码看起来不错 - 您可以检查文件大小,以及您的
video流是否按预期工作? -
正如 Philipp Sumi 提到的,您可以检查原始视频文件是否可以工作。如果它在本地工作。然后你可以直接用Azure storage explore上传视频,看看能不能用。我用你的代码测试,它在我这边正常工作。我从浏览器查看视频文件。
标签: c# azure xamarin video xamarin.forms