C# Azure媒体服务-3gp文件返回错误“;不支持文件类型或编解码器。”;

C# Azure媒体服务-3gp文件返回错误“;不支持文件类型或编解码器。”;,c#,azure,video-encoding,azure-media-services,C#,Azure,Video Encoding,Azure Media Services,在Azure Media Services中尝试上载、转换/编码和准备.3gp视频文件时,我们收到错误文件类型或不支持编解码器。基于,应支持3gp导入。如何正确导入3gp并将其转换为MP4 以下是我们的内部日志: The job stopped due to cancellation or an error. Job ID: nb:jid:UUID:6dc360df-de54-eb45-ae0d-bdc3d2c810fe Job Name: Encoding and Packaging for

在Azure Media Services中尝试上载、转换/编码和准备.3gp视频文件时,我们收到错误
文件类型或不支持编解码器。
基于,应支持3gp导入。如何正确导入3gp并将其转换为MP4

以下是我们的内部日志:

The job stopped due to cancellation or an error.
Job ID: nb:jid:UUID:6dc360df-de54-eb45-ae0d-bdc3d2c810fe
Job Name: Encoding and Packaging for dedf426e0b5b41199e8a111f27744890
Job State: Error
Error Details:  
Task Id: nb:tid:UUID:12424cbb-0013-4685-8e6b-b224d99db186
    Error Code: UserInput
    Error Message: File type or codec not supported.
我们的守则:

/// <summary>
/// This method performs all processing necessary to the media in question. This method will wait while processing is completed.
/// </summary>
/// <param name="fileName">Unique file name with extension</param>
/// <returns>IsSuccess</returns>
public bool ProcessMedia(string fileName)
{
    var mediaCloud = GetCloudMediaContext();

    string assetName = GetAssetNameFromFileName(fileName);

    var asset = mediaCloud.Assets.Where(a => a.Name == assetName).SingleOrDefault();
    IJob job = mediaCloud.Jobs.Create("Encoding and Packaging for " + asset.Name);
    var encoder = GetMediaProcessor(_mediaProcessorNameMap[MediaProcessors.WindowsAzureMediaEncoder]);

    /* Firing off a chain of encoding jobs
     * 1) Original Encoding -> MP4 (Direct download stream)
     * 2) MP4 -> IIS Smooth Streaming (Microsoft Silverlight)
     * 3) IIS -> HLS (Apple and IOS) */

    //MP4
    var mp4Task = job.Tasks.AddNew(String.Format("MP4 Encoding for {0}", asset.Name), encoder, "H264 Broadband 720p", TaskOptions.None);
    mp4Task.InputAssets.Add(asset);
    var mp4Asset = mp4Task.OutputAssets.AddNew(String.Format(MP4_ASSET_NAME_FORMAT, asset.Name), AssetCreationOptions.None);

    //Generate thumbnails from MP4
    foreach (ThumbnailTypes thumbnailType in Enum.GetValues(typeof(ThumbnailTypes)))
    {
        var thumbnailTask = job.Tasks.AddNew(String.Format("Thumbnail Generation for {0}", asset.Name), encoder, 
            String.Format(TASK_THUMBNAIL_GENERATION_FORMAT, thumbnailType, ImageProcessor.ThumbnailSizes[thumbnailType].Height), 
            TaskOptions.None);
        thumbnailTask.InputAssets.Add(mp4Asset);
        var thumnailAsset = thumbnailTask.OutputAssets.AddNew(String.Format(THUMBNAIL_ASSET_NAME_FORMAT, thumbnailType, asset.Name), AssetCreationOptions.None);
    }

    //IIS
    var encodingTask = job.Tasks.AddNew(String.Format("IIS Encoding for {0}", asset.Name), encoder, "H264 Smooth Streaming 720p", TaskOptions.None);
    encodingTask.InputAssets.Add(mp4Asset);
    var ssOutput = encodingTask.OutputAssets.AddNew(String.Format(IIS_ASSET_NAME_FORMAT, asset.Name), AssetCreationOptions.None);

    //HLS
    var packager = GetMediaProcessor(_mediaProcessorNameMap[MediaProcessors.WindowsAzureMediaPackager]);
    var conversionTask = job.Tasks.AddNew(String.Format("HLS Packaging for {0}", asset.Name), packager, TASK_MSMOOTH_TO_HLS, TaskOptions.None);
    conversionTask.InputAssets.Add(ssOutput);
    conversionTask.OutputAssets.AddNew(String.Format(HLS_ASSET_NAME_FORMAT, asset.Name), AssetCreationOptions.None);

    if (job.Tasks.Count() == 0) //no processing was required
        return true;

    job.StateChanged += new EventHandler<JobStateChangedEventArgs>(StateChanged);

    job.Submit();

    // Check job execution and wait for job to finish. 
    Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None);
    progressJobTask.Wait();

    return job.State == JobState.Finished;
}
//
///此方法执行有关介质所需的所有处理。处理完成时,此方法将等待。
/// 
///具有扩展名的唯一文件名
///问题成功
公共布尔ProcessMedia(字符串文件名)
{
var mediaCloud=GetCloudMediaContext();
字符串assetName=GetAssetNameFromFileName(文件名);
var asset=mediaCloud.Assets.Where(a=>a.Name==assetName.SingleOrDefault();
IJob job=mediaCloud.Jobs.Create(“对“+asset.Name”进行编码和打包);
var encoder=GetMediaProcessor(_mediaProcessorNameMap[MediaProcessors.WindowsAzureMediaEncoder]);
/*启动一系列编码工作
*1)原始编码->MP4(直接下载流)
*2)MP4->IIS平滑流媒体(Microsoft Silverlight)
*3)IIS->HLS(苹果和IOS)*/
//MP4
var mp4Task=job.Tasks.AddNew(String.Format(“针对{0}的MP4编码”,asset.Name),encoder,“H264宽带720p”,TaskOptions.None);
mp4Task.InputAssets.Add(资产);
var mp4Asset=mp4Task.OutputAssets.AddNew(String.Format(MP4\u ASSET\u NAME\u Format,ASSET.NAME),AssetCreationOptions.None);
//从MP4生成缩略图
foreach(ThumbnailTypes枚举中的thumbnailType.GetValues(typeof(ThumbnailTypes)))
{
var thumbnailTask=job.Tasks.AddNew(String.Format(“为{0}生成缩略图”),asset.Name),编码器,
String.Format(任务\缩略图\生成\格式、thumbnailType、ImageProcessor.ThumbnailSizes[thumbnailType].Height),
任务选项(无);
thumbnailTask.InputAssets.Add(mp4Asset);
var thumnailAsset=thumbnailTask.OutputAssets.AddNew(String.Format(THUMBNAIL\u ASSET\u NAME\u格式、thumbnailType、ASSET.NAME)、AssetCreationOptions.None);
}
//非法移民
var encodingTask=job.Tasks.AddNew(String.Format(“针对{0}的IIS编码”,asset.Name),编码器,“H264平滑流720p”,TaskOptions.None);
encodingTask.InputAssets.Add(mp4Asset);
var ssOutput=encodingTask.OutputAssets.AddNew(String.Format(IIS_ASSET_NAME_Format,ASSET.NAME),AssetCreationOptions.None);
//HLS
var packager=GetMediaProcessor(_mediaProcessorNameMap[MediaProcessors.WindowsAzureMediaPackager]);
var conversionTask=job.Tasks.AddNew(String.Format(“HLS Packaging for{0}”,asset.Name),packager,TASK_MSMOOTH_TO_HLS,TaskOptions.None);
conversionTask.InputAssets.Add(ssOutput);
conversionTask.OutputAssets.AddNew(String.Format(HLS_ASSET_NAME_Format,ASSET.NAME),AssetCreationOptions.None);
if(job.Tasks.Count()==0)//不需要处理
返回true;
job.StateChanged+=新事件处理程序(StateChanged);
job.Submit();
//检查作业执行情况并等待作业完成。
Task progressJobTask=job.GetExecutionProgressTask(CancellationToken.None);
progressjobstask.Wait();
return job.State==JobState.Finished;
}
您应查看Microsoft Expression Encoder支持的文件格式,但不应查看Microsoft Expression Encoder支持的文件格式

上述文档说明,
.3GPP
.3GPP2
作为文件格式受支持。而且视频编解码器非常有限:
H.264
MPEG-1
MPEG-2
MPEG-4
VC-1
Windows Media Video
DV


基于
3GPP
数据。文件格式本身似乎支持多种视频和音频编解码器。Azure Media Encoder上只支持其中的几个。请使用一些第三方工具(如)仔细检查
3GP
文件的
音频和视频编解码器
,并确保它们在Azure Media Encoder支持的列表中。请注意,文件扩展名没有定义用于对该文件中的媒体进行编码的编解码器。

我用VLC检查了视频文件,结果显示:视频
编解码器:MPEG-4视频(mp4v)
和音频
编解码器:AMR窄带(samr)
,因为Azure支持MPEG-4,我假设此视频使用的音频编解码器不受支持?如果您阅读了提供的,您会发现Windows Azure Media Encoder不支持AMR音频。是的,您的音频不受支持。