Неверный ввод: исходное видео имеет скорость avg_frame_rate NaN fps и r_frame_rate 90000 fps в службе мультимедиа Azure

Я пытался загрузить формат файла песни (.mp4) в медиа-сервисы. он успешно загружен, но, когда я пытался создать задание на кодирование, я получаю указанную ниже ошибку. Для нескольких файлов я получаю сообщение об ошибке ниже, а для нескольких файлов это не так. невозможно определить, в чем заключается ошибка и как решить эту проблему?

Сообщение об ошибке:

    Encoding task
ErrorProcessingTask : An error has occurred. Stage: ApplyEncodeCommand. Code: System.IO.InvalidDataException.

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. --->
System.IO.InvalidDataException: Bad input: the source video has an avg_frame_rate of NaN fps and r_frame_rate of 90000 fps.

Код: использование кодировки "H264 Multiple Bitrate 720p"

static public IAsset CreateEncodingJob(IAsset asset, string preset,string fileName)
        {           
            IJob job = _context.Jobs.Create(preset + " encoding job");
            var mediaProcessors =
                  _context.MediaProcessors.Where(p => p.Name.Contains("Media Encoder Standard")).ToList();
            var latestMediaProcessor =
                mediaProcessors.OrderBy(mp => new Version(mp.Version)).LastOrDefault();
            ITask task = job.Tasks.AddNew(preset + " encoding task",
                latestMediaProcessor,
                preset, 
                Microsoft.WindowsAzure.MediaServices.Client.TaskOptions.ProtectedConfiguration);            
         task.InputAssets.Add(asset);
         task.OutputAssets.AddNew(fileName + " " + preset,
                AssetCreationOptions.None);
         job.StateChanged += new
                    EventHandler<JobStateChangedEventArgs>(StateChanged);

            job.Submit();


            LogJobDetails(job.Id);

            Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None);
            progressJobTask.Wait();

            if (job.State == JobState.Error)
            {
                throw new Exception("\nExiting method due to job error.");
            }

            return job.OutputMediaAssets[0];
        }

Может ли кто-нибудь помочь мне в этом?

1 ответ

Решение

Нашли решение: нажмите здесь

Повторно опубликовать комментарий:

Ваши задачи кодирования не выполняются, потому что номинальная частота кадров, сообщаемая входным видео, либо слишком высока, либо слишком низка. Вам придется переопределить настройку выходной частоты кадров в предустановке кодирования. Предположим, вы знаете, что входное видео было записано со скоростью 30 кадров в секунду, а затем:

  1. Возьмите JSON для "H264 Multiple Bitrate 720p" с https://msdn.microsoft.com/en-us/library/azure/mt269953.aspx

  2. Отредактируйте / замените каждую запись "FrameRate": "0/1" на "FrameRate": "30/1". Обратите внимание, что необходимо заменить несколько записей.

  3. Сохранить полученный JSON

  4. При отправке задачи кодирования в CreateEncodingTask замените строку "preset" на весь JSON (с помощью System.IO.File.ReadAllText("song.Json"))


С уважением, Дилип.

Другие вопросы по тегам