Re: [問題] ffmpeg解h264的stream
※ 引述《SocketAM2 (AM2)》之銘言:
: 第二個問題:
: avcodec_decode_video2()成功解碼,把畫面存在AVFrame pFrame裡面之後,
: 若我想要把這個解好的畫面"長寬大小不變"的依據Y、U、V取出存在另一塊記憶體中,
: 我需要知道這個解完的frame的編碼方式(YUV420、422或其他等等)
: 和在AVFrame pFrame中存放排列的方法,
: 請問有人知道要怎麼獲取這段解好的原始資料嗎?
: 現在暫時可行的做法是使用sws_scale(),因為它的output是我知道排列方式的。
: 但我擔心即使是透過sws_scale()做"原尺寸、原編碼方式"的輸出,
: 實際上仍然需要相當的計算effort,
: 也就是這一步造成了多於計算資源的浪費。
: 小弟希望在有限的電腦上盡可能的快速處理大量高解析度影像,
: 故對效率性希望能做一些提高。
單純要取 yuv data 可以這麼做:
AVFrame *pFrame = ...
uint8_t *data = ....
int y_size = pFrame->linesize[0] * height;
int u_size = pFrame->linesize[1] * height;
int v_size = pFrame->linesize[2] * height;
data = malloc ....
memcpy(data, pFrame->data[0], sizeof(uint8_t) * y_size);
memcpy(data + y_size, pFrame->data[1], sizeof(uint8_t) * u_size);
memcpy(data + y_size + v_size, pFrame->data[2], sizeof(uint8_t) * v_size);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.248.248
→
03/24 11:21, , 1F
03/24 11:21, 1F
→
03/24 11:22, , 2F
03/24 11:22, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):