如何使用mplayer播放到内存

Ale*_*ato 2 c c++ linux mplayer

我需要在我的程序中嵌入一个视频播放器(C++),但是我不能使用XEmbed,因为我必须进行一些后期处理.是否可以将输出作为原始RGB写入内存缓冲区,就像使用ffmpeg一样?

Rus*_*hPL 5

不幸的是,mplayer无法作为库运行,但如果您愿意对mplayer代码进行一些更改,可能会有一些hacky解决方案.这应该适用于Windows和MacOSX,但需要一些适应.

下载mplayer源并查找该./libvo/vo_png.c文件.您可以将此文件用作模板并创建自己的文件(比方说)./libvo/vo_shm.c- 有一个获取原始像素的函数.想法是创建一个共享内存对象(man shmget).您可以稍后使用相同的键引用此内存,并shmget在将显示像素缓冲区的其他进程中调用.请注意,您应该创建至少两个内存缓冲区,以便一次只有一个进程使用一个缓冲区.也许甚至三个或更多缓冲区也是最佳的.

另外,不要忘记更改static const vo_info_t infostruct初始化以将视频输出设备注册为其他名称.据我所知,您的新文件vo_shm.c可以添加到config.mak文件中的构建系统中.

祝好运.