我如何使用 libavcodec 强制将当前帧编码为帧内帧
How can i forcing current frame to be encoded as intra frame using libavcodec
我想更改 gop 动态以适应播放器。较小的 gop 有助于降低首屏成本;大 gop 有助于降低比特率以节省带宽。
我发现nvenc有一个功能可以解决上面的问题。
https://docs.nvidia.com/video-technologies/video-codec-sdk/nvenc-video-encoder-api-prog-guide/#forcing-current-frame-to-be-encoded-as-intra-frame
但我正在使用 ffmpeg。 ffmpeg中有没有类似的功能?
如果 AVFrame->pict_type
设置为 AV_PICTURE_TYPE_I
,则 NVENC 编码器默认会将其编码为帧内帧。他们还有一个私有选项来强制将其作为 IDR 框架。
对于后者,在打开编码器之前添加。
av_opt_set(avctx->priv_data, "forced_idr", "1", 0);
我想更改 gop 动态以适应播放器。较小的 gop 有助于降低首屏成本;大 gop 有助于降低比特率以节省带宽。
我发现nvenc有一个功能可以解决上面的问题。 https://docs.nvidia.com/video-technologies/video-codec-sdk/nvenc-video-encoder-api-prog-guide/#forcing-current-frame-to-be-encoded-as-intra-frame
但我正在使用 ffmpeg。 ffmpeg中有没有类似的功能?
如果 AVFrame->pict_type
设置为 AV_PICTURE_TYPE_I
,则 NVENC 编码器默认会将其编码为帧内帧。他们还有一个私有选项来强制将其作为 IDR 框架。
对于后者,在打开编码器之前添加。
av_opt_set(avctx->priv_data, "forced_idr", "1", 0);