Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从web api C将.mp4上载到Azure媒体服务#_C#_Azure - Fatal编程技术网

C# 从web api C将.mp4上载到Azure媒体服务#

C# 从web api C将.mp4上载到Azure媒体服务#,c#,azure,C#,Azure,我有一个用C#编写的API,用于从前端接收文件。现在它是一个字节数组,我想把它转换成一个.mp4文件,然后用blobstorage将它发送到我的azure媒体服务。我不想将它存储在本地,也无法从磁盘读取它。最好的方法是什么 我创建了CloudBlobClient,如下所示: private CloudBlobClient CloudBlobClient() { var storageAccount = CloudStorageAccoun

我有一个用C#编写的API,用于从前端接收文件。现在它是一个字节数组,我想把它转换成一个.mp4文件,然后用blobstorage将它发送到我的azure媒体服务。我不想将它存储在本地,也无法从磁盘读取它。最好的方法是什么

我创建了CloudBlobClient,如下所示:

 private CloudBlobClient CloudBlobClient()
        {
            var storageAccount =         CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);
            var blobStorage = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobStorage.GetContainerReference(Constants.VideoBlobContainer);
            if (container.CreateIfNotExist())
            {
                var permissions = container.GetPermissions();
                permissions.PublicAccess = BlobContainerPublicAccessType.Container;
                container.SetPermissions(permissions);
            }
            return blobStorage;
        }
然后我有了我已经开始的这个方法

 private Uri UploadToStorage(CloudBlobClient blobStorage, byte[] video, VideoSize size)
        {
            var uniqueBlobName = GetVideoUriAsString(VideoId, Type, size);
            CloudBlockBlob blob = blobStorage.GetBlockBlobReference(uniqueBlobName);
我不知道在这里该怎么处理。我一直在网上寻找很多方法,但我找到的只是控制台应用程序从磁盘读取的示例


有谁熟悉这种上传到媒体服务的方式吗?

您正在前往那里的路上,不过您应该从第一种方法的blob容器中获取对blob的引用。非常粗糙,但你看:

public void uploadBytesToBlobWithMimeAndStorageCreds(string theFolder, string theFileName, byte[] videoBytes, string theMimeType)
{
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);

    CloudBlobClient client = storageAccount.CreateCloudBlobClient;
    CloudBlobContainer container = client.GetContainerReference(theFolder);

    CloudBlob blob = container.GetBlobReference(theFileName);
    blob.UploadByteArray(theBytes);
    blob.Properties.CacheControl = "max-age=3600, must-revalidate";
    blob.Properties.ContentType = theMimeType; // e.g. "video/mp4"
    blob.SetProperties();

}

这很有效,谢谢你,阿达姆。如果我想为这个视频创建一个缩略图,最好的方法是什么?Thanks@martoo我从来没有这样做过,但看起来相对容易做到-看,我还有另一个问题要问你adaam如果你有时间,如果我想将视频从blob存储复制到媒体服务中,最好的方法是什么,这是我到目前为止所做的:看编辑你的答案被覆盖了adaam抱歉<代码>public void UploadToMediaServices(Uri storageAddress){var filePath=storageAddress.ToString();var context=new CloudMediaContext(“Name”、“Key”);var uploadAsset=context.Assets.Create(Path.GetFileNameWithoutExtension(filePath),AssetCreationOptions.None);var assetFile=uploadAsset.AssetFiles.Create(Path.GetFileName(filePath));assetFile.Upload(filePath);}@martoo请参阅本页代码示例中的方法
CreateAssetFromExistingBlobs