如何使用ffmpeg和H.265预分频帧

时间:2017-07-20 19:33:58

标签: 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,但这没有帮助)

1 个答案:

答案 0 :(得分:2)

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

将缩放和转换为RGB作为一个步骤