Медиа-сервисы Azure - кодирование 4K UHD-видео с версией 3 - PullRequest
0 голосов
/ 19 октября 2018

Я создал библиотеку, которая кодирует видео в Azure, используя v3 API (.NET Core).Я успешно сделал кодирование до FHD.Но затем я попытался закодировать 4k UHD-видео (на основе Как кодировать с помощью пользовательских статей Transform и H264 Multiple Bitrate 4K ).Итак, вот мой код для создания этого преобразования:

        private static async Task<Transform> Ensure4kTransformExistsAsync(IAzureMediaServicesClient client,
        string resourceGroupName,
        string accountName)
    {
        H264Layer CreateH264Layer(int bitrate, int width, int height)
        {
            return new H264Layer(
                profile: H264VideoProfile.Auto,
                level: "auto",
                bitrate: bitrate, // Note that the units is in bits per second
                maxBitrate: bitrate,
                //bufferWindow: TimeSpan.FromSeconds(5),    // this is the default
                width: width.ToString(),
                height: height.ToString(),
                bFrames: 3,
                referenceFrames: 3,
                adaptiveBFrame: true,
                frameRate: "0/1"
            );
        }

        // Does a Transform already exist with the desired name? Assume that an existing Transform with the desired name
        // also uses the same recipe or Preset for processing content.
        Transform transform = await client.Transforms.GetAsync(resourceGroupName, accountName, TRANSFORM_NAME_H264_MULTIPLE_4K_S);

        if (transform != null) return transform;

        // Create a new Transform Outputs array - this defines the set of outputs for the Transform
        TransformOutput[] outputs =
        {
            // Create a new TransformOutput with a custom Standard Encoder Preset
            new TransformOutput(
                new StandardEncoderPreset(
                    codecs: new Codec[]
                    {
                        // Add an AAC Audio layer for the audio encoding
                        new AacAudio(
                            channels: 2,
                            samplingRate: 48000,
                            bitrate: 128000,
                            profile: AacAudioProfile.AacLc
                        ),
                        // Next, add a H264Video for the video encoding
                        new H264Video(
                            // Set the GOP interval to 2 seconds for both H264Layers
                            keyFrameInterval: TimeSpan.FromSeconds(2),
                            // Add H264Layers
                            layers: new[]
                            {
                                CreateH264Layer(20000000, 4096, 2304),
                                CreateH264Layer(18000000, 3840, 2160),
                                CreateH264Layer(16000000, 3840, 2160),
                                CreateH264Layer(14000000, 3840, 2160),
                                CreateH264Layer(12000000, 2560, 1440),
                                CreateH264Layer(10000000, 2560, 1440),
                                CreateH264Layer(8000000, 2560, 1440),
                                CreateH264Layer(6000000, 1920, 1080),
                                CreateH264Layer(4700000, 1920, 1080),
                                CreateH264Layer(3400000, 1280, 720),
                                CreateH264Layer(2250000, 960, 540),
                                CreateH264Layer(1000000, 640, 360)
                            }
                        ),
                        // Also generate a set of PNG thumbnails
                        new PngImage(
                            start: "25%",
                            step: "25%",
                            range: "80%",
                            layers: new[]
                            {
                                new PngLayer(
                                    "50%",
                                    "50%"
                                )
                            }
                        )
                    },
                    // Specify the format for the output files - one for video+audio, and another for the thumbnails
                    formats: new Format[]
                    {
                        // Mux the H.264 video and AAC audio into MP4 files, using basename, label, bitrate and extension macros
                        // Note that since you have multiple H264Layers defined above, you have to use a macro that produces unique names per H264Layer
                        // Either {Label} or {Bitrate} should suffice

                        new Mp4Format(
                            "Video-{Basename}-{Label}-{Bitrate}{Extension}"
                        ),
                        new PngFormat(
                            "Thumbnail-{Basename}-{Index}{Extension}"
                        )
                    }
                ),
                OnErrorType.StopProcessingJob,
                Priority.Normal
            )
        };

        const string DESCRIPTION = "Multiple 4k";
        // Create the custom Transform with the outputs defined above
        transform = await client.Transforms.CreateOrUpdateAsync(resourceGroupName, accountName, TRANSFORM_NAME_H264_MULTIPLE_4K_S,
            outputs,
            DESCRIPTION);

        return transform;
    }

Но задание заканчивается следующей ошибкой:

Задание завершено с ошибкой: Неустранимая ошибка службы,пожалуйста, свяжитесь со службой поддержки.Произошла ошибка.Этап: ProcessSubtaskRequest.Код: System.Net.WebException.

И я использовал S3 Media Reserved Unit для кодирования.Так есть ли способ заставить его работать?

1 Ответ

0 голосов
/ 09 ноября 2018

Отправка решений в эту ветку для полноты

  1. В коде sample (метод RunAsync ()) произошла ошибка, из-за которой Джобс использовал неверный выводАктив.Ошибка исправлена.
  2. В обработке ошибок возникла связанная ошибка
...