public sealed class VideoStream.Types.Vp9CodecSettings : IMessage<VideoStream.Types.Vp9CodecSettings>, IEquatable<VideoStream.Types.Vp9CodecSettings>, IDeepCloneable<VideoStream.Types.Vp9CodecSettings>, IBufferMessage, IMessage
Reference documentation and code samples for the Transcoder v1 API class VideoStream.Types.Vp9CodecSettings.
Select the GOP size based on the specified duration. The default is
3s. Note that gopDuration must be less than or equal to
segmentDuration, and
segmentDuration must be divisible by
gopDuration.
The height of the video in pixels. Must be an even integer.
When not specified, the height is adjusted to match the specified width
and input aspect ratio. If both are omitted, the input height is used.
For portrait videos that contain horizontal ASR and rotation metadata,
provide the height, in pixels, per the horizontal ASR. The API calculates
the width per the horizontal ASR. The API detects any rotation metadata
and swaps the requested height and width for the output.
Enforces the specified codec profile. The following profiles are
supported:
profile0 (default)
profile1
profile2
profile3
The available options are
WebM-compatible.
Note that certain values for this field may cause the
transcoder to override other fields you set in the Vp9CodecSettings
message.
The width of the video in pixels. Must be an even integer.
When not specified, the width is adjusted to match the specified height
and input aspect ratio. If both are omitted, the input width is used.
For portrait videos that contain horizontal ASR and rotation metadata,
provide the width, in pixels, per the horizontal ASR. The API calculates
the height per the horizontal ASR. The API detects any rotation metadata
and swaps the requested height and width for the output.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-09 UTC."],[[["\u003cp\u003eThis webpage provides reference documentation for the \u003ccode\u003eVideoStream.Types.Vp9CodecSettings\u003c/code\u003e class within the Transcoder v1 API, which is used to define VP9 codec settings for video streams.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of the \u003ccode\u003eGoogle.Cloud.Video.Transcoder.V1\u003c/code\u003e package is 2.9.0, and documentation is available for versions dating back to 1.0.0.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eVp9CodecSettings\u003c/code\u003e inherits from \u003ccode\u003eobject\u003c/code\u003e and implements interfaces such as \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e, offering functionalities for message manipulation, comparison, cloning, and buffer management.\u003c/p\u003e\n"],["\u003cp\u003eKey properties of \u003ccode\u003eVp9CodecSettings\u003c/code\u003e include \u003ccode\u003eBitrateBps\u003c/code\u003e, \u003ccode\u003eCrfLevel\u003c/code\u003e, \u003ccode\u003eFrameRate\u003c/code\u003e, \u003ccode\u003eGopDuration\u003c/code\u003e, \u003ccode\u003eGopFrameCount\u003c/code\u003e, \u003ccode\u003eHeightPixels\u003c/code\u003e, \u003ccode\u003ePixelFormat\u003c/code\u003e, \u003ccode\u003eProfile\u003c/code\u003e, \u003ccode\u003eRateControlMode\u003c/code\u003e, and \u003ccode\u003eWidthPixels\u003c/code\u003e, which allow configuring various aspects of VP9 video encoding.\u003c/p\u003e\n"],["\u003cp\u003eThere are available constructors, one default and another for copying the settings of another \u003ccode\u003eVp9CodecSettings\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Transcoder v1 API - Class VideoStream.Types.Vp9CodecSettings (2.10.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.10.0 (latest)](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.9.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.9.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.8.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.8.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.7.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.7.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.6.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.6.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.5.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.5.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.4.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.4.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.3.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.2.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.2.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.1.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.1.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [2.0.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/2.0.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings)\n- [1.0.0](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/1.0.0/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings) \n\n public sealed class VideoStream.Types.Vp9CodecSettings : IMessage\u003cVideoStream.Types.Vp9CodecSettings\u003e, IEquatable\u003cVideoStream.Types.Vp9CodecSettings\u003e, IDeepCloneable\u003cVideoStream.Types.Vp9CodecSettings\u003e, IBufferMessage, IMessage\n\nReference documentation and code samples for the Transcoder v1 API class VideoStream.Types.Vp9CodecSettings.\n\nVP9 codec settings. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e VideoStream.Types.Vp9CodecSettings \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[VideoStream](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream)[Types](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream.Types)[Vp9CodecSettings](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[VideoStream](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream)[Types](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream.Types)[Vp9CodecSettings](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[VideoStream](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream)[Types](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream.Types)[Vp9CodecSettings](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1.VideoStream.Types.Vp9CodecSettings), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Google.Cloud.Video.Transcoder.V1](/dotnet/docs/reference/Google.Cloud.Video.Transcoder.V1/latest/Google.Cloud.Video.Transcoder.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.Video.Transcoder.V1.dll\n\nConstructors\n------------\n\n### Vp9CodecSettings()\n\n public Vp9CodecSettings()\n\n### Vp9CodecSettings(Vp9CodecSettings)\n\n public Vp9CodecSettings(VideoStream.Types.Vp9CodecSettings other)\n\nProperties\n----------\n\n### BitrateBps\n\n public int BitrateBps { get; set; }\n\nRequired. The video bitrate in bits per second. The minimum value is\n1,000. The maximum value is 480,000,000.\n\n### ColorFormatCase\n\n public VideoStream.Types.Vp9CodecSettings.ColorFormatOneofCase ColorFormatCase { get; }\n\n### CrfLevel\n\n public int CrfLevel { get; set; }\n\nTarget CRF level. Must be between 10 and 36, where 10 is the highest\nquality and 36 is the most efficient compression. The default is 21.\n\n**Note:** This field is not supported.\n\n### FrameRate\n\n public double FrameRate { get; set; }\n\nRequired. The target video frame rate in frames per second (FPS). Must be\nless than or equal to 120.\n\n### FrameRateConversionStrategy\n\n public VideoStream.Types.FrameRateConversionStrategy FrameRateConversionStrategy { get; set; }\n\nOptional. Frame rate conversion strategy for desired frame rate. The\ndefault is `DOWNSAMPLE`.\n\n### GopDuration\n\n public Duration GopDuration { get; set; }\n\nSelect the GOP size based on the specified duration. The default is\n`3s`. Note that `gopDuration` must be less than or equal to\n[`segmentDuration`](#SegmentSettings), and\n[`segmentDuration`](#SegmentSettings) must be divisible by\n`gopDuration`.\n\n### GopFrameCount\n\n public int GopFrameCount { get; set; }\n\nSelect the GOP size based on the specified frame count. Must be greater\nthan zero.\n\n### GopModeCase\n\n public VideoStream.Types.Vp9CodecSettings.GopModeOneofCase GopModeCase { get; }\n\n### HasGopFrameCount\n\n public bool HasGopFrameCount { get; }\n\nGets whether the \"gop_frame_count\" field is set\n\n### HeightPixels\n\n public int HeightPixels { get; set; }\n\nThe height of the video in pixels. Must be an even integer.\nWhen not specified, the height is adjusted to match the specified width\nand input aspect ratio. If both are omitted, the input height is used.\n\nFor portrait videos that contain horizontal ASR and rotation metadata,\nprovide the height, in pixels, per the horizontal ASR. The API calculates\nthe width per the horizontal ASR. The API detects any rotation metadata\nand swaps the requested height and width for the output.\n\n### Hlg\n\n public VideoStream.Types.Vp9ColorFormatHLG Hlg { get; set; }\n\nOptional. HLG color format setting for VP9.\n\n### PixelFormat\n\n public string PixelFormat { get; set; }\n\nPixel format to use. The default is `yuv420p`.\n\nSupported pixel formats:\n\n- `yuv420p` pixel format\n- `yuv422p` pixel format\n- `yuv444p` pixel format\n- `yuv420p10` 10-bit HDR pixel format\n- `yuv422p10` 10-bit HDR pixel format\n- `yuv444p10` 10-bit HDR pixel format\n- `yuv420p12` 12-bit HDR pixel format\n- `yuv422p12` 12-bit HDR pixel format\n- `yuv444p12` 12-bit HDR pixel format\n\n### Profile\n\n public string Profile { get; set; }\n\nEnforces the specified codec profile. The following profiles are\nsupported:\n\n- `profile0` (default)\n- `profile1`\n- `profile2`\n- `profile3`\n\nThe available options are\n[WebM-compatible](https://www.webmproject.org/vp9/profiles/).\nNote that certain values for this field may cause the\ntranscoder to override other fields you set in the `Vp9CodecSettings`\nmessage.\n\n### RateControlMode\n\n public string RateControlMode { get; set; }\n\nSpecify the mode. The default is `vbr`.\n\nSupported rate control modes:\n\n- `vbr` - variable bitrate\n\n### Sdr\n\n public VideoStream.Types.Vp9ColorFormatSDR Sdr { get; set; }\n\nOptional. SDR color format setting for VP9.\n\n### WidthPixels\n\n public int WidthPixels { get; set; }\n\nThe width of the video in pixels. Must be an even integer.\nWhen not specified, the width is adjusted to match the specified height\nand input aspect ratio. If both are omitted, the input width is used.\n\nFor portrait videos that contain horizontal ASR and rotation metadata,\nprovide the width, in pixels, per the horizontal ASR. The API calculates\nthe height per the horizontal ASR. The API detects any rotation metadata\nand swaps the requested height and width for the output."]]