QT上用的视频播放解码是基于FFmpeg的吗?
看了这个网页的讨论,初步有这个怀疑:http://bbs.chinaunix.net/thread-1271555-1-1.html
以下是讨论摘要——
解码出来的数据是YUV的。用QPainter?一幅一幅的往上面画?
--------------------------------------------------------------------------------
QUOTE:原帖由 dxzk7 于 2008-9-19 09:10 发表
rt
解码出来的数据是YUV的。用QPainter?一幅一幅的往上面画?
YUV转成QPainter能认的格式,然后用QPainter,
如果慢,用底层点的API,可以考虑xshm,这个是X上最快的方法了。
--------------------------------------------------------------------------------
部分代码如下。
XvImage *image = XvCreateImage(dpy, port, 0x32315659, NULL, avctx->width, avctx->height);
image->data = malloc(image->data_size);
pict.data[0] = image->data+image->offsets[0];
pict.data[1] = image->data+image->offsets[2];
pict.data[2] = image->data+image->offsets[1];
pict.linesize[0] = image->pitches[0];
pict.linesize[1] = image->pitches[2];
pict.linesize[2] = image->pitches[1];
img_convert(&pict,PIX_FMT_YUV420P,
pFrame, PIX_FMT_YUV420P,
avctx->width, avctx->height);
XvPutImage(dpy,port,win,gc,image,
0,0,avctx->width, avctx->height,
0,0,704,576);
XFlush(dpy);
XFree(image);
但是窗体上一片黑啊。运行倒是没错。困惑。