QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2129|回复: 9

请问如何对影片截图?

[复制链接]
发表于 2006-5-4 03:02:25 | 显示全部楼层 |阅读模式
不是只截一张,而是一张图包含多个画面的预览式图片。手工在mplayer或xine里打开,截个10张8张再拼起来实在是太麻烦了。如果没有直接做到的程序,那有没有什么控制台工具,可以对某个影片文件指定时间截一张图?如果可以做到,写个程序自动拼接一下也可以省不少事。mplayer有png的vo,可好像一开始播放就截个没完没了,不知道怎么指定截一张就退出。
发表于 2006-5-4 13:52:52 | 显示全部楼层
framestep and tile filter in action
回复

使用道具 举报

发表于 2006-5-4 13:57:17 | 显示全部楼层
MPlayer on tiled GGI display
回复

使用道具 举报

 楼主| 发表于 2006-5-4 16:16:47 | 显示全部楼层
framestep好像可以用到,可是怎么知道一个影片文件一共有多少frame?
回复

使用道具 举报

发表于 2006-5-4 22:02:27 | 显示全部楼层
把影片时间换算成秒,然后在mplayer的log里面看看此影片每秒多少frame,乘一下就知道了……
回复

使用道具 举报

 楼主| 发表于 2006-5-5 14:33:05 | 显示全部楼层
这也太。。。
win32下有个Image Grabber,就是不知道wine能不能跑得起来
回复

使用道具 举报

发表于 2006-5-5 18:47:43 | 显示全部楼层
我的办法是最合算的方法……与其跑wine,不如自己动手……
回复

使用道具 举报

 楼主| 发表于 2006-5-6 18:25:34 | 显示全部楼层
我好像找到法子了,用sstep。不过这样抓下来的图很有可能有残影,刚才随便试了一个文件,30张图有3张非常明显,其他的质量也不高。我试试写个脚本包装一下,看看情况再说。
回复

使用道具 举报

 楼主| 发表于 2006-5-7 18:44:15 | 显示全部楼层
[code:1]#!/bin/sh

scale_width=150
tile_x=5
tile_y=6

sum=$[$tile_x*$tile_y]
len=`mplayer -quiet -vo null -nosound -frames 0 -identify "$1" | grep ID_LENGTH | awk -F"=" '{print $2}'`
sstep=$[$len/$sum]
mplayer -vo png:z=9 -nosound -sstep $sstep -vf scale=$scale_width:-2,tile=$tile_x:$tile_y:$sum:2:2 "$1"[/code:1]

勉强可用,但还是不太好用。我测试的文件中,有的rmvb抓下来的头两张是一模一样的,但片头显然没那么长时间,不知道怎么回事。还有些rmvb,不知是不是时间轴有问题,mplayer跑起来会没完没了,抓出N张图来,但除了第一张正确之外,其他图片几乎都没内容。另外有些文件可能需要对sstep的数值进行一下修正,譬如说-1之类的,不然也会抓不出东西来。
总之问题多多,而且翻了一圈,似乎也没找到可以获取媒体文件信息的工具。。
回复

使用道具 举报

发表于 2006-5-7 18:49:16 | 显示全部楼层
rmvb 的编码是封闭的…………
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-4 18:03 , Processed in 0.039650 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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