﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java天空 任我翱翔-随笔分类-video</title><link>http://www.blogjava.net/persister/category/24409.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 10 Sep 2010 00:38:50 GMT</lastBuildDate><pubDate>Fri, 10 Sep 2010 00:38:50 GMT</pubDate><ttl>60</ttl><item><title>视频网站技术二（播放）</title><link>http://www.blogjava.net/persister/archive/2007/07/31/133523.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 31 Jul 2007 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2007/07/31/133523.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/133523.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2007/07/31/133523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/133523.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/133523.html</trackback:ping><description><![CDATA[&lt;object type="application/x-shockwave-flash"<br />
&nbsp; data="dir/play.swf?file=dir/vid.flv&amp;autoStart=false" <br />
&nbsp; width="436" height="344"&gt;<br />
&lt;param name="movie"<br />
&nbsp; value="dir/play.swf?file=dir/vid.flv&amp;autoStart=false" <br />
&nbsp; /&gt;<br />
&lt;param name="wmode" value="transparent" /&gt;<br />
&lt;img src="play.gif" width="436" height="344"<br />
&nbsp; alt="Player" /&gt;<br />
&lt;/object&gt;
<p><br />
其中 play.swf是flash播放器, vid.flv是转换好的flv文件, autoStart=false表示不在网页读完之后就立刻播放. 而 play.gif表示当浏览器不支持Flash时网页所显示的图片.<br />
</p>
<img src ="http://www.blogjava.net/persister/aggbug/133523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2007-07-31 10:59 <a href="http://www.blogjava.net/persister/archive/2007/07/31/133523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>视频网站技术一（FLV转换和截图工具）</title><link>http://www.blogjava.net/persister/archive/2007/07/31/133514.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 31 Jul 2007 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2007/07/31/133514.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/133514.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2007/07/31/133514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/133514.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/133514.html</trackback:ping><description><![CDATA[今天接到一个视频网站的兼职项目，本来不想做的，但是正好是老乡，但有一时半会找不到合适的人，我就接下来了。这个一个将电视台节目中插播的广告提取出来并点播的网站，实际提供的就是电视节目的avi视频文件和节目单。那这里就需要使用到现在非常流行视频技术了，到网上搜索了一下，下面是整理的内容：<br />
<br />
youtube火起来以后，国内外跟进的一大把，不过技术和流程上没有任何突破，基本上就是服务器自动对用户上传的视频进行压缩，压成可以用flash在线播放的flv，缩小尺寸并降低码率。然后再用Flash制作一个播放器，可以根据参数在线播放指定的flv视频，当然有些还会加上水印和跳自己网站等功能。<br />
<br />
转换工具可以选择ffmpeg和mencoder，这2个都是gnu项目，并且可以非常完美的在linux/Mac/Win32等平台下使用。不过ffmpeg支持的视频格式较少(不能很方便的支持rmvb,mov等，不过据说Google Video用的是这个)，而mencoder则不能进行截图，所以可以考虑2者结合使用，mencoder负责转换，ffmpeg负责截图。<br />
<br />
关于下载和安装，ffmpeg烦一点，官方网站上只提供了svn，需要自己编译。具体可以参考http://blog.5ilinux.com/archives/2006/08/ffmpeg.html，Windows还需要装MinGW来MSYS模拟linux环境，偷懒的话可以直接找个编译好的版本，不过功能可能会不全。<br />
<br />
mencoder则很简单，本来就是mplayer的一部分，会装mplayer就成。注意把codecs都装全了<br />
<br />
<br />
首先通过mencoder把普通视频转化为flv格式，命令如下<br />
<br />
代码<br />
mencoder test.avi -o test.flv -of lavf -oac mp3lame -lameopts abr:br=32:mode=3 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -vf scale=350:-3 -sws 2<br />
<br />
<br />
mencoder 的参数超级复杂，视音频压缩本身又是一门非常高深的学问，本人略知皮毛，下面只对自己了解的一些参数做些说明，详细解释请看手册<br />
<br />
引用<br />
test.avi<br />
输入文件路径，是Mplayer能支持的格式即可<br />
<br />
-o test.flv<br />
输出路径<br />
<br />
-of lavf<br />
输出格式 lavf表示libavcodec<br />
<br />
-oac mp3lame<br />
输出音频编码方式，lame是最好的mp3编码器<br />
<br />
-lameopts abr:br=32:mode=3<br />
lame的选项<br />
abr代表平均码率，相对于cbr(固定码率)和vbr(可变码率,貌似不支持)<br />
br就是音频的码率，越高音质越好<br />
<br />
mode=3，0-3分别代表Stereo,Joint Stereo,Force ms_stereo,Mono(默认为自动，事实上1和3对文件大小的影响并不是很大)<br />
另外可选的还有 vol(音量，取值0-10,数值越大音量越大，不建议修改)等<br />
<br />
-srate 22050<br />
声音采样频率设置，也可以选11025，文件可以稍小一点<br />
<br />
-ovc lavc<br />
输出视频编码 lavc就是libavcodec<br />
<br />
-lavcopts<br />
lavc的的选项<br />
codec=flv flv格式压缩<br />
vbitrate=150 视频码率<br />
其他几个选项一概不懂，请看手册(一般来说看了还是不懂)<br />
<br />
-vf scale=350:-3 -sws 2<br />
缩放视频，指定宽度为350，高度按比例来。质量由-sws选项控制，具体看手册<br />
<br />
-ofps 23 设定帧数，缩小帧数对节约文件大小效果不明显，且可能造成画面声音同步。建议不设置<br />
<br />
<br />
mencoder压缩后生成的flv缺少meta信息，会造成播放时没有进度条等问题，需要再用flvmdi修复一下<br />
<br />
代码<br />
flvmdi test.flv<br />
<br />
<br />
生成后的flv通过MPC就可以预览。<br />
<br />
ffmpeg截图<br />
代码<br />
ffmpeg -i test.flv -ss 10 -vframes 1 -r 1 -ac 1 -ab 2 -s 320&#215;240 -f image2 test.jpg<br />
<br />
-ss 10 就是说1秒后的那一帧<br />
<br />
然后生成flash视频播放器的话，网上例子很多，自己对Flash研究也不深，也就不多说了，要自定义播放器界面的参考http://www.adobe.com/cn/devnet/flash/articles/custom_flvcomp_print.html<br />
<br />
唯一需要补充一下的是视频的smoothing属性，现在的在线播放器尺寸一般都回比实际压缩后的视频尺寸大一些，smoothing=true可以保证放大的质量(包括全屏后的)，具体的文章见http://www2.flash8.net/Teach/5156.htm。
<img src ="http://www.blogjava.net/persister/aggbug/133514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2007-07-31 10:26 <a href="http://www.blogjava.net/persister/archive/2007/07/31/133514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>