You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MediaTranscoder中使用AMD AV1硬件编码器?

屏幕录制AV1硬编失败:MediaTranscoder找不到匹配编码器

我目前用MediaTranscoder配合GraphicsCaptureItem实现屏幕捕获并录制压缩视频。设备搭载Ryzen AI 7 350内置的Radeon 860M显卡,硬件支持H.264和AV1编码。通过以下代码可以枚举到这两种硬件编码器:

var codecQuery = new CodecQuery();
var videoEncoders = await codecQuery
    .FindAllAsync(CodecKind.Video, CodecCategory.Encoder, "");

其中能获取到子类型为{31305641-0000-0010-8000-00AA00389B71}的AMDav1Encoder。

我按如下方式创建MediaEncodingProfile:

var encodingProfile = MediaEncodingProfile.CreateAv1(VideoEncodingQuality.Auto);
encodingProfile.Video = VideoEncodingProperties.CreateAv1();
encodingProfile.Video.Bitrate = 10_000_000;
encodingProfile.Video.FrameRate.Numerator = 20;
encodingProfile.Video.FrameRate.Denominator = 1;
encodingProfile.Video.PixelAspectRatio.Numerator = 1;
encodingProfile.Video.PixelAspectRatio.Denominator = 1;
encodingProfile.Video.ProfileId = 0;
// 配置音频输入
encodingProfile.Audio = MediaEncodingProfile.CreateM4a(AudioEncodingQuality.Low).Audio;
encodingProfile.Audio.SampleRate = 48000;

await _transcoder.PrepareMediaStreamSourceTranscodeAsync(_mediaStreamSource, destination, encodingProfile);

最后一行调用抛出COMException,错误码0xC00DA412,对应MF_E_TRANSCODE_NO_MATCHING_ENCODER,提示转码器找不到AV1编码器。需要说明的是_transcoder.HardwareAccelerationEnabled已设为true。

已尝试的解决方法

  • 使用H.264编码:将两处CreateAv1替换为CreateMp4和CreateH264后可正常工作,但无法使用AV1编码;
  • 修改ProfileId:设为0(默认值1时同样报错),问题依旧;
  • 转换捕获源格式:将屏幕捕获源格式从Bgra8改为NV12(猜测编码器仅支持NV12输入),仍抛出相同的MF_E_TRANSCODE_NO_MATCHING_ENCODER错误。

encodingProfile.Video.Properties 参数信息

  • {23e5cad8-a3fc-4f0f-97c3-dff51d03bc92} - 1 (uint)
  • {c6376a1e-8d0a-4027-be45-6d9a0ad39bb6} - 4294967297 (ulong)
  • {48eba18e-f8c9-4687-bf11-0a74c9f96a8f} - {73646976-0000-0010-8000-00aa00389b71} (System.Guid)
  • {c459a2e8-3d2c-4e44-b132-fee5156c7bb0} - 42949672961 (ulong)
  • {20332624-fb0d-4d9e-bd0d-cbf6786c102e} - 10000000 (uint)
  • {1652c33d-d6b2-4012-b834-72030849a37d} - 16492674418800 (ulong)
  • {f7e34c9a-42e8-4714-b74b-cb29d72c35e5} - {31305641-0000-0010-8000-00aa00389b71} (AV1子类型)
  • {ad76a80b-2d5c-4e0b-b375-64e520137036} - 1 (uint,即配置文件)

尝试HEVC编码(将CreateAv1替换为CreateHEVC)同样失败,错误码0xC00D6D60对应MF_E_TRANSFORM_TYPE_NOT_SET,该问题在Nvidia GPU设备上未出现。

内容的提问来源于stack exchange,提问作者LOST

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:43:17