标题: [转载] mplayer截图功能
龙夜香
版主
Rank: 7Rank: 7Rank: 7


Medal No.1   Medal No.18  
UID 3
精华 0
积分 548
帖子 537
威望 548 1
铜钱 150 10
功力 556 5
智慧果 224 20
金龙币 0 1000
经验值 504 2
阅读权限 100
注册 2007-5-17
状态 离线
发表于 2007-8-24 02:53  资料  个人空间  短消息  加为好友 
mplayer截图功能

windows版本的mplayer是有截图功能的,默认绑定 s
  键,非常好用。

发现mplayer自己是支持视频截图的,只要在播放视频的时候使用如下参数:

mplayer   -vf screenshot   视频文件
然后在需要截图的地方按s键,就会生成视频的截图。生成的图片会放在当前目录下(用命令行播放)或home目录下(从文件浏览器中点击播放)。
如果觉得每次都要输入命令太麻烦,可以在~/.mplayer/config中加上一行:

vf=screenshot

如果使用kde的kmplayer作为mplayer的前端,就需要改一下kmplayer的快捷键设置,因为kmplayer中的s是停止播放。不过我的kmplayer死活都改不了快捷键,每次重启软件后改动都会失效。这样的话,就必须改mplayer的快捷键了。在~/.mplayer/input.conf中加上一行(如果没有这个文件,可以直接创建一个):

F12 screenshot
这里是将截图的快捷键绑定到F12键,如果需要绑定到其他键的话,可以用
mplayer -input keylist命令查看mplayer所支持的所有按键。
--------------------------
Mplayer的截图热键
kk版1119?好像是这个版本的。截图应该是s键。不过暂停时截的图要播放以后才可以在媒体文件所在的文件夹下看到。

加上参数 -vo x11, 按 alt PrintScreen 截屏
或者加上参数 -vf screenshot, 然后按 s 截屏。

如果我在gmplayer图形界面下该如何做呢?是不是需要修改某个conf文件的配置?
echo "vo=x11">>~/.mplayer/config

要激活 MPlayer 或 GMPlayer 的截屏功能,需要使用下列命令:
mplayer[gmplayer] $s -vf screenshot movie.file

对该命令作出解释:
  $ 用于指定截屏时所用的快捷键。MPlayer 默认的截屏按键是 s。但这个 s 键可能在 GMPlayer 中已被占用,通过 $
  选项可以临时指定一个不同的按键。
  设置截屏快捷键的更加牢固地做法,是利用 input.conf 文件。input.conf 文件原始位于 /etc/mplayer/ 中,其作用是定制
  MPlayer 的快捷键。在使用时需要复制到 $HOME/.mplayer 目录。在 input.conf 中设置按键的格式为 快捷键 命令 值,例如:S screenshot 0。其中,值为 0 时生成单一的屏照,值为 1 时则生成一系列连续的屏照。
  该选项为可选,如果不用,MPlayer 会采用默认配置。
  vf 即 video filter,通过搭载 screenshot 参数,以便使 MPlayer 在播放电影时能够截取屏照。
  movie.file 为播放的电影文件。
MPlayer 默认会将截取的屏照保存到播放的电影文件的目录中,生成的文件类似 shot0001.png、shot0002.png……等。

如果使用其他截图软件,比如scrot,只能得到一张纯蓝色的图,取不到真正的图像,不过Dark和Toy为我们琢磨出了十分简便的方法:
  在~/.mplayer/config中添加一句: vf=screenshot
  这是告诉mplayer启动的使用启用这个参数,然后再在~/.mplayer/input.conf中设置一个未冲突的快捷键绑定(这个文件一般是不存在的,新建一个即可):
  c screenshot 0 那么在播放影片是按c键就可以截图了,据说如果后面那个数字0改为1,还会连续截图。 […]
-------------------
截图时如何把mplayer播放窗口中的视频画面截下来

无论用抓图软件还是“Alt+PrScreen”,都只能截取到窗口,中间的视频部分就是一片蓝,用import(需装ImageMagick)吧,可以用鼠标截取任意大小屏幕

mplayer截取影片图像的基本命令为:
mplayer -ss START_TIME -noframedrop -nosound -vo jpeg -frames N NAME_OF_VIDEO_FILE
上例中,-ss指定开始的时间,结合-frames参数,限定从某个时间开始、截取几帧图像。为了体现整个影片的内容,我需要在影片中间隔时间相同的几个点、每个点截取1帧图像,所以按道理应该用-frames
1,但是mplayer这样截图的情况下,第一帧似乎永远都会截取到一个黑屏,所以我常用-frames
2。截取下来的图像保存在了当前目录,名称从00000001.jpg开始依次递增,按照-frames
2,就是取00000002.jpg为结果,删除00000001.jpg即可。经过简单实验,在截取wmv、rmvb影片时,前面的好几帧都会是黑屏,也只能参考上面的做法多取几帧了。
为了取影片中间隔大致相同的几个点,可以用-ss指定时间,也可以用-sb指定开始字节,在我的实际使用中,使用-sb只会得到黑屏,所以通过文件大小来设置间隔点的办法不行,只能用-ss时间间隔了,这就需要首先得到影片的总时间。好在mplayer为我们提供了类似的功能:
mplayer -identify movie-filename -nosound -vc dummy -vo null
这样会输出一大堆影片信息,从中截取所需内容即可,在bash shell中,取得影片总时间长度(以秒为单位)的命令如下:
FILESIZE=`mplayer -identify -nosound -vc dummy -vo null $1 | grep ID_LENGTH | sed -r 's/ID_LENGTH=([[:digit:]]*)(.[[:digit:]]*)?/1/g'`
有了影片的总时长,我们就可以根据所要截取的帧数,计算出每个间隔点的时间位移了。不过要注意一般影片的开始-ss 0和结束-ss
TOTAL_TIME_OF_VIDEO截取下来都会是黑屏,在处理的时候要分别加上和减去若干秒。
截取工作完成后,我们拥有了一堆000000xx.jpg文件,如果能把这些文件都放到一个文件中,每行2张,成为一张大图片,在发布的时候会很方便。所以,我们使用imagemagick中的montage命令来实现:
montage -geometry +0+0 -tile 2 *.jpg montage.jpg
-geometry +0+0是设定使用原始图片大小,-tile
2参数设定每行放2张图片,最后一个参数是要生成的目标文件名,现在,我们就能够得到像刚才那张一样的图片了。
原理已经讲清楚了,可以自己写一个bash脚本来方便调用





顶部
龙老爷
版主
Rank: 7Rank: 7Rank: 7


Medal No.1   Medal No.4   Medal No.8   Medal No.60  
UID 8
精华 0
积分 2202
帖子 2212
威望 2202 1
铜钱 414 10
功力 2203 5
智慧果 468 20
金龙币 1 1000
经验值 2020 2
阅读权限 100
注册 2007-5-27
状态 离线
发表于 2007-8-25 03:18  资料  个人空间  短消息  加为好友 
发重了该删





顶部
微恬呼吸
资深会员
Rank: 5Rank: 5


Medal No.3   Medal No.60  
UID 75
精华 0
积分 78
帖子 67
威望 78 1
铜钱 63 10
功力 89 5
智慧果 45 20
金龙币 0 1000
经验值 70 2
阅读权限 70
注册 2007-9-26
状态 离线
发表于 2007-10-5 04:13  资料  个人空间  短消息  加为好友  QQ
建议大家用KMP那个播放器功能挺强大的   而且方便
截图是不必说了   还能录制视频  截取音频 把网上难找的mp3用这个截一段下来 再加工一下就ok.

顶部
 


800dragon

当前时区 GMT+8, 现在时间是 2010-9-4 18:35

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 龙象数码网 - Archiver - WAP