c - 如何使用 ffmpeg 和 H.265 预缩放帧

标签 c ffmpeg scale h.265

我想用 H.265 编码解码视频帧 (AV_CODEC_ID_HEVC) 我使用以下代码:

AVCodec *hevcCodec = avcodec_find_decoder(AV_CODEC_ID_HEVC);
AVCodecContext *avctx  = avcodec_alloc_context3(hevcCodec);
avcodec_open2(avctx, hevcCodec, 0);
AVFrame *frame = av_frame_alloc();
AVPacket pkt;
av_init_packet(&pkt);
pkt.data = myDataPtr;
pkt.size = myDataSize;
int got_frame = 0;
avcodec_send_packet(avctx, &pkt);
if (avcodec_receive_frame(avctx, frame) >=0 ) {
        got_frame = 1;
        ...
}

这很好用,我得到了我的 YUV 帧并可以进一步处理它(比如转换为 RGB 或缩放等) 但是,我想以某种方式告诉 ffmpeg 库,在解码时缩放 AVFrame(2 的幂的比例因子就足够了)。 我不想在转换为 RGB 或使用 swscale 或任何东西后缩放。我必须解码很多帧并且需要更小的分辨率。

是否可以为 AVCodecContext 提供一些缩放帧的提示? (我尝试设置 avctx.widthavctx.height,但这没有帮助)

最佳答案

不,解码和缩放不能组合成一个更快的步骤。您必须完全解码然后缩放。您可以使用 swscale

一步缩放和转换为 RGB

关于c - 如何使用 ffmpeg 和 H.265 预缩放帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45223758/

相关文章:

c++ - C数组文字中的显式索引?

C - For循环做一个简单的操作,不增加计数器

ffmpeg - 如何使用 ffmpeg 对多个输出视频的音频进行一次编码

FFMPEG - 裁剪和填充视频(保持 3840x1920 但带有黑色边框)

html - 背景而非内容的动画效果

c - c 中开关的奇怪行为

c - 如何使用链接实现在c中的队列中插入元素

ffmpeg - 我们指定使用 ffmpeg 的 Mozilla、MacOS 和 Safari 版本有什么区别?

安卓 : Zoom by center pinch

Android ImageView 应该比屏幕大