簡體   English   中英

如何使用ffmpeg和H.265預縮放幀

[英]How to prescale a frame using ffmpeg and 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM