首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用mplayer回放到内存

如何使用mplayer回放到内存
EN

Stack Overflow用户
提问于 2011-10-05 17:47:21
回答 2查看 1.7K关注 0票数 2

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-05 19:03:01

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

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

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

祝好运。

票数 5
EN

Stack Overflow用户

发布于 2011-10-05 19:59:26

许多Linux程序都嵌入了一个mplayer播放器(IIRC: gimp-gap,k9copy等等)

我认为最常见的方法是将mplayer中的子窗口直接嵌入到X父窗口中。显然,在X11架构上比在windows上更容易实现这一点:)

man mplayer显示:

代码语言:javascript
复制
 mplayer -wid <windowId>

-guiwid <window id>

这将告诉图形用户界面也使用X11窗口,并将自己固定在视频的底部,这对于在浏览器中嵌入迷你图形用户界面非常有用(例如,使用mplayerplug-in )。

-wid <window id>

这将告诉MPlayer使用X11窗口,该窗口对于在浏览器中嵌入MPlayer非常有用(例如,使用plugger扩展)。

您可以(例如,使用Qt应用程序)简单地使用

代码语言:javascript
复制
 mplayer -wid mywidget->winId();

所以你需要做的就是

  1. a安装依赖于mplayer
  2. man execve/man mplayer
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7659447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档