打印

请问如何对影片截图?

请问如何对影片截图?

不是只截一张,而是一张图包含多个画面的预览式图片。手工在mplayer或xine里打开,截个10张8张再拼起来实在是太麻烦了。如果没有直接做到的程序,那有没有什么控制台工具,可以对某个影片文件指定时间截一张图?如果可以做到,写个程序自动拼接一下也可以省不少事。mplayer有png的vo,可好像一开始播放就截个没完没了,不知道怎么指定截一张就退出。

TOP

framestep and tile filter in action
即使各种网络展现在眼前 想让进化为光与电子的意识 朝向同一目标 但这个时代情报化的程度 仍然无法使孤独的个人 统合成为复合的个体 ——《Stand Alone Complex_Ghost in the Shell》

TOP

MPlayer on tiled GGI display
即使各种网络展现在眼前 想让进化为光与电子的意识 朝向同一目标 但这个时代情报化的程度 仍然无法使孤独的个人 统合成为复合的个体 ——《Stand Alone Complex_Ghost in the Shell》

TOP

framestep好像可以用到,可是怎么知道一个影片文件一共有多少frame?

TOP

把影片时间换算成秒,然后在mplayer的log里面看看此影片每秒多少frame,乘一下就知道了……
即使各种网络展现在眼前 想让进化为光与电子的意识 朝向同一目标 但这个时代情报化的程度 仍然无法使孤独的个人 统合成为复合的个体 ——《Stand Alone Complex_Ghost in the Shell》

TOP

这也太。。。
win32下有个Image Grabber,就是不知道wine能不能跑得起来

TOP

我的办法是最合算的方法……与其跑wine,不如自己动手……
即使各种网络展现在眼前 想让进化为光与电子的意识 朝向同一目标 但这个时代情报化的程度 仍然无法使孤独的个人 统合成为复合的个体 ——《Stand Alone Complex_Ghost in the Shell》

TOP

我好像找到法子了,用sstep。不过这样抓下来的图很有可能有残影,刚才随便试了一个文件,30张图有3张非常明显,其他的质量也不高。我试试写个脚本包装一下,看看情况再说。

TOP

[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之类的,不然也会抓不出东西来。
总之问题多多,而且翻了一圈,似乎也没找到可以获取媒体文件信息的工具。。

TOP

rmvb 的编码是封闭的…………
不想要 ID 了请找我。

TOP