LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2434|回复: 19

请教:mplayer中的OSD函数

[复制链接]
发表于 2008-4-16 16:30:19 | 显示全部楼层 |阅读模式
我想在mplayer的播放画面中加入自己的滚动文字,但是在代码中没找到相关的OSD函数。有哪为知道的还望指教一下,先谢过了。有兴趣的可留下联系方式一起讨论。
发表于 2008-4-16 17:03:31 | 显示全部楼层
提示: mplayer 的显示是由 libvo/ 目录下的相应的 vo 完成的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-22 16:27:07 | 显示全部楼层
libvo里的vo我也看过,但还是不太明白,能否说再详细点
回复 支持 反对

使用道具 举报

发表于 2008-4-22 19:14:31 | 显示全部楼层
提示: vo 的接口有哪些?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-23 15:49:12 | 显示全部楼层
我这用的是vo_x11.c里draw_osd()这个函数实现的OSD显示,draw_osd()最后是通过调用vo_draw_alpha_rgb32实现的。
不知道我说的是否正确
回复 支持 反对

使用道具 举报

发表于 2008-4-23 16:28:58 | 显示全部楼层
对呀. 这样不就知道显示文字的方法了么. 至于滚动显示, 在合适的接口中按帧数计算偏移就好了, 比如 flip_page()

不过 MPlayer 在 Pause 的状态下不调用 vo, 如果这时候也想要有滚动文字的话用以上的方法就不行了, 需要自己加定时器, 完成文字的显示及背景的恢复, 而且不排除对 MPlayer 产生意外干扰的可能
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-24 16:18:40 | 显示全部楼层
如果要控制显示的位置(比如说,我要它在画面的底部或顶部显示),要用到哪个函数中的哪个变量。试了老半天也找不找出来
回复 支持 反对

使用道具 举报

发表于 2008-4-24 18:38:32 | 显示全部楼层
mplayer 中的 OSD 和输出的视频图像没有什么本质的区别. 尽管特定的 vo 可以用不同的方式来实现 OSD, 比如可能有一种 vo 支持多图层, 那么就可能在不同的图层中显示 OSD 和图像, 但是本质上来说对于大多数 vo 而言, OSD 不过就是一些 "图像" 而已. 为了让 vo 不必关心 OSD 文字的显示大小与位置, mplayer 中提供了 vo_draw_text() 函数.

我不清楚楼主想显示的是什么, 但是从楼主的描述来看, 似乎还是直接把想显示的内容当成 "图像" 来对待, 而非 OSD 更合适一些.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-4 15:39:13 | 显示全部楼层
(休了近10的假,回来接着干)已经弄得差不多了,还有个问题不知道怎么解决,滚动显示的时候会有文字重叠现象,还望指教
回复 支持 反对

使用道具 举报

发表于 2008-5-4 17:05:56 | 显示全部楼层
显然是只做了 "显示", 未做 "恢复".

现在是在哪个接口中进行的显示? 如果打算按帖对文字进行移位, 那么在 flip 这样的帧同步调用的接口中画文字就刚好不需要显示. 否则在绘制之前就要对背景进行备份, 还要记得当背景切换时更新备份
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表