本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7580802
建立时间:2006年5月29日




[视频处理]视频网站截图转换一网打尽
软件技术

lhwork 发表于 2007/2/6 9:20:04

有很多软件能够截取影片图像、合并图像,但如果影片太多,比如视频网站为用户上传的图像生成预览图之类的,人工在gui方式下操作就不可取了,我们需要在命令行方式下来截取、合并。 首先,截取影片图像使用最多的就是mplayer或者ffmpeg,我用mplayer比较熟,本文就以此为例了,ffmpeg功能也是非常强大的,但据说支持的文件格式却不丰富。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张图片,最后一个参数是要生成的目标文件名,现在,我们就能够得到像刚才那张一样的图片了。 下面再列一些在网上找到的其他mplayer、mencoder、ffmpeg的使用实例: mplayer获取影片信息mplayer -identify movie-filename -nosound -vc dummy -vo null从所有输出中可以grep到如下信息:- filetype: ASF file format detected.- dimensions and format: VIDEO: [MP43] 320×240 24bpp 1000.000 fps 0.0 kbps ( 0.0 kbyte/s)- video format: ID_VIDEO_FORMAT=MP43- width (dimensions): ID_VIDEO_WIDTH=320- height (dimensions): ID_VIDEO_HEIGHT=240- length in seconds: ID_LENGTH=98.00 mencoder图片做成电影#用当前目录中的所有JPEG文件创建DivX4文件:mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi#用当前目录中的一些JPEG文件创建DivX4文件:mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi \*.jpg#用当前目录中的所有JPEG文件创建Motion JPEG(MJPEG)文件:mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o output.avi \*.jpg#用当前目录中的所有PNG文件创建一个非压缩的文件:mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb -o output.avi \*.png简单用法:mencoder *.jpg -mf on:fps=15 -o output.avi -ovc xvid ffmpeg屏幕录像ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024×768 ~/test.avi  其中,-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。录制的视频文件为 test.avi,将保存到用户主目录中。其他选项可查阅其说明文档。  如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。  你也可以重新调整视频尺寸大小,如:./ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi。 mplayer对video进行截屏 截图(wmv mpeg mov flv all works)mplayer 78.mov -ss 1 -nosound -vo jpeg:outdir=./ -frames 2我截的第一张图不知为何全部都是黑屏 转换为flv文件mencoder NOW.wmv -ffourcc FLV1 -of lavf -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 -srate 22050 -oac mp3lame -o NOW.flvffmpeg -i a.asf -ab 56 -ar 22050 -b 500 -r 15 -s 320×240 asf.flv-------------------------------------- mencoder转制:mencoder NOW.wmv -ffourcc FLV1 -of lavf -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 -srate 22050 -oac mp3lame -o NOW.flvNOW.wmv : 转制的源文件及地址-ffourcc FLV1 -of lavf -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 :转制格式编码以及声音编码-srate 22050: 声音采样率,22050hz-o NOW.flv 输出文件及地址下面是大概的转制速度:rm 速度:300k/srmvb 速度:1000k/swmv 速度:1000k/savi 速度:1000k/smov 速度:300k/smp4 速度:700k/sffmpeg转制:asf: ffmpeg -i a.asf -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 asf.flv 速度:600k/swmv: 支持wmv8以下版本抓图:使用ffmpeg可以很方便的抓图:jpg: ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 -ss a.jpg //注意-ss就是要提取视频文件中指定时间的图像jpg: ffmpeg -i asf.flv -y -f image2 -t 1 asf.jpggif: ffmpeg -i test.asf -vframes 30 -y -f gif a.gif ---------------------------------------------- 使用ffmpeg抓图ffmpeg -i test2.asf -y -f image2 -ss 08.010 -t 0.001 -s 352×240 b.jpgjpg: ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352×240 -ss a.jpg //注意-ss就是要提取视频文件中指定时间的图像jpg: ffmpeg -i asf.flv -y -f image2 -t 1 asf.jpggif: ffmpeg -i test.asf -vframes 30 -y -f gif a.gif 如何合并几个视频片段mencoder -oac copy -ovc copy -idx -o output.avi video1.avi video2.avi video3.avi* 其中,-oac copy 选项告诉 mencoder 要正确拷贝音频流。而 -ovc copy 选项则是拷贝视频流。* 如果在视频文件中没有找到索引的话,那么 -idx 选项会要求 mencoder 建立它。* -o 选项指定输出文件的名称。* 最后几个参数为需要合并的几个视频片段。本文路径:http://www.91kg.com/k/blog.asp?id=15


阅读全文(3794) | 回复(1) | 编辑 | 精华
 


回复:视频网站截图转换一网打尽
软件技术

ymm(游客)发表评论于2009/7/1 15:18:47

标牌 机柜 台湾液压 台湾液压元件 液压元件 液压系统 液压 液压油缸 北京机票 国际机票 澳洲机票欧洲机票 美国机票 机票代理 国际机票预订 北京国际机票 热喷涂 锅炉防磨 锅炉喷涂丝材 锅炉喷涂 热喷涂 防磨喷涂 聚脲喷涂钢板网 护栏网 气液过滤网 铁丝网 尼龙网 打印机维修 金属软管 北京金属软管 不锈钢金属软管 不锈钢软管 波纹补偿器 波纹管四氟软管 黄金投资 黄金交易 黄金T+D 生日报 生日礼品 电脑票据 票据印刷 无碳复写纸印刷 打孔无碳 OTDR 熔接机 光万用表 光功率计 误码仪 ADSL测试仪 信号源 千兆以太网测试仪 热像仪 防雷器测试仪 搪玻璃放料阀


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144751344 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号