flv在线录制、视频转换网站开发文档

news/2024/5/10 0:56:55/文章来源:https://blog.csdn.net/chinalinuxzend/article/details/1828451
原贴:http://www.1hao8.com/show.asp?id=7316

flv在线录制、视频转换网站开发文档


Mencoder简介:

     Mencoder是Mplayer自带的编码工具(Mplayer是Linux下的播放器,开源,支持几乎所有视频格式的播放,现在有windows和Mac版本)。

Mplayer的获得与配置:

     Mplayer windows版本下载列表:http://www5.mplayerhq.hu/MPlayer/releases/win32/
列表中会有版本发布日期,可以挑选最新的版本,也可以选择old/去下载老的版本,笔者用的是6月份的版本。下载后解压到某个文件夹中即可。

     Codecs下载列表:http://www5.mplayerhq.hu/MPlayer/releases/codecs/
选择windows-all-********.zip(*表示年月日)下载,将zip包中的文件夹下所有文件,包括*.dll、*.acm、*.ax等等全部copy到Mplayer根目录下的codecs文件夹中。

     此时最好把Mplayer.exe所在路径,同时也是Mencoder.exe所在路径添加到环境变量path中。

    现在可以试试用Mplayer播放视频,比如有个视频位于D:/music/APerfectMatch.wmv,那么可以打开一个cmd窗口,输入 mplayer “D:/music/APerfectMatch.wmv”,感受一下来自Linux的播放器吧,可以通过键盘来操纵。

Mencoder转换视频格式:

     以将各种格式转换为flv格式为例(flv格式是flash支持的视频格式):

mencoder ””E:/test.m2p”” -o ””E:/output.flv”” -of lavf  -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=512:-3 -ofps 12 -srate 22050

     在命令行中输入这行代码(注意:windows的命令行是不支持换行的),按回车运行,一段时间之后就可以得到一个.flv文件,播放一下看看品质如何(可以直接用Mplayer播放)。

     下图是我这边转换的效果对比,左边是原视频,右边是转换后的视频:


     所有人都会觉得,转换后品质下降了很多,确实是这样,同时可以发现转换后的文件由原来的13M变成了1M,如果要提高品质,可以将vbitrate=500改为vbitrate=5000。

     转换后的效果对比,左边是原视频,右边是转换后的视频:

     品质几乎一样了,但同时,转换文件变成了6M。

     关于命令中的一些参数,解释一下:

-o ””E:/output.flv””:是输出文件路径;

-of lavf:是输出文件格式,这里不是flv而是lavf,是因为flv属于libavformat;

-lavfopts i_certify_that_my_video_stream_does_not_use_b_frames:-lavfopts表示对lavf进行一 些设置,设置的内容就是i_certify_that_my_video_stream_does_not_use_b_frames,翻译成中文就是: 我确定,我的视频不用B frames,对于转换flv格式,最好加上这个参数,否则可能会报错,如图:

-oac mp3lame:oac=output audio codec,输出音频编码器,这里用的mp3lame;

-lameopts abr:br=56:lame options,是专门针对mp3lame的参数设置,abr:br=56,是设置音频比特率为56(比特率:每秒钟输出的音频大小,单位kb/s);

-ovc lavc:ovc=output video codec,输出视频编码器,lavc表示one of libavcodec’s video codec,输出格式为libavformat之一,编码器当然也是libavcodec之一啦,至于libavodec里都有哪些编码器,可以查看 Mplayer的官方文档;

-lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:v4mv:trell:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1:对lavc进行一些设置,详细介绍如下:
vcodec=flv:指定视频编码器为flv;
vbitrate=500:指定视频比特率为500,这个参数很重要,vbitrate大了可以让视频品质增加,但会让文件变的很大(可以参考flash8自带的转换工具的参数:低品质为150kb/s,中等品质为400kb/s,高品质为700kb/s)。
mbd:宏模块选择算法,值为0~2默认为0,值越大转换越缓慢,但在品质和文件大小方面有好处;
mv0:编译每个宏模块并选择最好的一个,当mbd=0时无效;
v4mv:会稍微增加品质,mbd>0时效果更明显;
trell:量子化网格搜索,对每8×8block找到最优化编码;
cbp:只能和trell一期使用,评估失真的图像块编码;
last_pred=3:与上一帧相比的移动数量预测,值为0~99,1~3比较合适,大于3时对品质的提高已经无关紧要,但却会降低速度;
dia=4:移动搜索范围,值为-99~6,对于快速转换,-1是个不错的值,如果不是很重视速度,可以考虑2~4;
cmp=6:值为1~2000,默认为0,设置用于全象素移动预算的比较函数
vb_strategy=1:对动作很大的场景会有帮助,对有些视频,设置vmax_b_frames会有损品质,加上vb_strategy=1会好点。

     以上是对-lavcopts的详细解释,接下来继续说明mencoder的参数:

-vf scale=512:-3:-vf表示视频格式,scale是缩放,512:-3表示强制将宽度设置为512,高度写为-3表示保持高宽比,也可以设置为 -1或-2,具体表示什么,有兴趣的可以尝试一下。如果要强制转化为统一大小,可以直接写-vf scale=640:480,但笔者个人建议用-3来保持高宽比。-vf里还有expand和crop参数,例如:-vf scale=512:384,expand=512:384:::1,crop=512:384:0:0,expand表示膨胀,crop表示裁剪;

-ofps 12:输出视频的帧频,一般,用于flash播放的视频帧频高了没有没有意义,反而会增加视频文件大小,但如果ofps设置的不合适,比如源视频帧频不是 ofps的整数倍,可能会导致转换后的视频、音频不同步,似乎可以将这一参数改为-noskip来解决这一问题;

-srate 22050:音频采样率一般为22050或44100。

     对于转换flv格式,lavsopts的设置比较重要,还有很多参数本文没有涉及到,在笔者参考的文献中会有具体的说明,感兴趣的可以去看一下。我对于 Mencoder的认识主要也是来源于下面2篇文章,实践的比较少,如果有理解和翻译的失误,再次欢迎与我交流。


参考文献:

《Mplayer官方文档,英文版》http://www.mplayerhq.hu/DOCS/HTML-single/en/MPlayer.html
《Linux Reviews》http://linuxreviews.org/man/mencoder/

关于用mencoder将各种格式转换为flv格式,网络上应该也有一些文章,我把最近学习的心得和大家分享一下.
如果您正准备开始使用mencoder,似乎也可以当作教程来看,如果您有更好的方法或技术,请不吝赐教!
mencoder,可以从其官方网站上获得:
http://www.mplayerhq.hu
下载完之后,修改一下环境变量,将mencoder.exe及mplayer.exe文件所在的目录添加到path变量里。
mencoder是在命令行中执行的(官网上的文档里的实例似乎都是linux下的)
我是计算机小白,当然只会使用windows……
开始菜单 -> 运行 -> cmd -> 回车,就打开了命令行窗口
这时,我们可以拿一个视频来试试看,我用的是一个mtv,wmv格式的,文件名:APerfectMatch.wmv。
在命令行中输入:(注意,不要从网页上直接copy这段命令到cmd,windows的命令行似乎是不支持换行的......)
mencoder "D:/music/sk8ter_boi_300.wmv" -o "D:/output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050
按下回车后,如果你看到显示:“mencoder 不是内部或外部命令,也不是可运行的程序,或批处理文件”,那么说明环境变量没有设置好
如果正常,会看到开始转视频,会看到一排一排的字往上翻,内容大概是这样:
Pos: 226.8s 297f (100%) 48fps Trem: 0min 5mb a-v:-0.009 [142:56]
这里边的内容,我最关注的是2个括号里面的,小括号里应该是转换的进度,中括号里的内容很重要,142表示视频比特率,56表示音频比特率(比特率这个词不知道用的对不对......)
转换结束,会显示2行文字:
Video stream: 142.564 kbit/s (17820 B/s) size: 4046677 bytes 227.080 secs 2700 frames
Audio stream: 56.938 kbit/s (7117 B/s) size: 1616197 bytes 227.082 secs
这2 行信息我想大家都能明白,其中我一直关注的是那个142.564kbit/s,用过flash8自带转换工具的应该知道高级设置里有个选项是最大数据速 率,当选中中等画质的时候,是400kb/s,而低品质也是150kb/s,也就是说,用那句命令转换的视频,其画质都不如品质的,那么,品质怎么样呢? 看一下,怎么看flv文件?别忘了我们有万能播放器mplayer,哈哈,直接在命令行里输入:
mplayer "d:/output.flv",看到咱们刚刚转好的视频,我当时一看,画面上马赛克倒是没有,全是瓷砖,我晕倒...
进入正题了,怎么来提高画面品质?(晕倒,原来前面都不是正题...=_=o)
回头看一下我们的命令行:
mencoder "D:/music/sk8ter_boi_300.wmv" -o "D:/output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050。
下面一个一个分析:
mencoder 说明你用的是mencoder;
"d:/.....wmv" -> 是指你的输入视频;
-o -> 后面指定输出路径;(前面有“-”的都是option(选项的意思))
-of -> 大概是output format的缩写,输出文件格式,咦!为什么不是flv,而是lavf?lavf表示你使用了libavcodec里的格式,flv正好是libavcodec里的,呵呵;
-oac -> 大概是output audio codec的缩写,指定输出音频编码,这儿选用的是mp3lame;
-lameopts -> 指定lame的options,就是设置音频输出的一些参数啦,我只关心视频,跳过
-ovc -> 大概是output video codec的缩写,制定输出视频编码(我最关心的好像要上场了),选用的lavc,什么意思?说是用了libavcodec的编码器;
-lavcopts -> 是lavc的options,要设置视频编码的参数了!(心跳加速,血压升高,口中开始大量分泌唾液),看看它后面都有什么:
codec=flv 说的是用的flv编码器,这个咱不理;
vbitrate=150 video bit rate!视频数据速率!就是它了!原来我设的是150啊!
找到了,下面不看了!改成vbitrate=1000,再试试看!
结果,和前一次一模一样......(我还改成10000的,真的,还是一样,我当时以为它的单位是b/s而不是kb/s)
冷静下来,去往上看了一下官方文档,这个参数是最大数据速率,最大嘛,你设多大都一样啊,看来不是靠它来控制品质。
不卖关子了,直接给出我的结论吧,设置品质有2种途径:
1、设置-lavcopts,看这样一句命令:
mencoder "D:/music/APerfectMatch.wmv" -o "D:/output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=320:240,expand=320:240:::1,crop=320:240:0:0 -ofps 30 -srate 22050
看看多了什么?
在-lavcopts里多了dia=4:cmp=6:vb_strategy=1这3条
他们的含义我只是大概了解一点点,毕竟不是专业搞视频编码的
dia越大品质越高,如果需要快速编码,设置为-1,设为4时已经很有利于品质了;
cmp越大品质越高,默认值0,是最快速的,一般设到3,设为6已经只会细微提高品质了,但速度会慢
vb_strategy,大概是1或者0,默认值可能为0,我这里设为1,会对编码有帮助,这个参数我自己没有过多推敲,可能并不影响品质......
2、加-sws选项,看下面的命令:
mencoder "D:/music/APerfectMatch.wmv" -o "D:/output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -sws 3 -vf scale=320:240,expand=320:240:::1,crop=320:240:0:0 -ofps 30 -srate 22050
只是加一个 -sws 3进去,转换后的效果和前面一种方法大致相同,视频数据速率都是422.5kb/s左右,解释一下
-sws就是用来设置品质的,默认值为2,那么,为什么不用这种简单的方式呢?我个人认为,用前面一种方法有利于找到一个速度和品质的平衡点,毕竟变化的范围比较大。
其他一些选项,我也没有深入研究。

需要用到的组件
ASPExec
mencoder
ffmpeg.exe

第一步骤: 在线转换

Set Executor = Server.CreateObject("ASPExec.Execute")
Executor.Application = "cmd /c mencoder E:/qiancheng/upload/"&request.QueryString("keys")&" -o E:/qiancheng/shipin/record/streams/_definst_/record/"&lid&"/"&keys&".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -lavcopts vcodec=flv:vbitrate=200:mbd=2:mv0:v4mv:last_pred=3:dia=3:cmp=3:vb_strategy=1 -vf scale=330:-3 -ofps 12 -srate 22050"
Executor.Parameters = ""
strResult = Executor.ExecuteDosApp

asp执行 .bat文件

第二步骤: 通过ffmpeg生成所略图+fso 删除源件

Server.ScriptTimeout=0
flvname=keys
streamPath="../shipin/record/streams/_definst_/record/"&lid&"/"&flvname&".flv"
imgW ="120"
imgY = "90"
imgQuality = "100"
ss="3"
newName = "../upload/"&flvname&".jpg"
str="e:/qiancheng/webadmin/ffmpeg.exe"
str=str+" -i "&server.mappath(streamPath)&" -ss 3 -vframes 1 -r 1 -ac 1 -ab 2 -s 120*90 -f image2 "&server.mappath(newName)&""
Set shellffmpeg=server.CreateObject("ffmpeg.shellffmpeg")
aa=shellffmpeg.shellffmpeg1(str)
Set shellffmpeg = Nothing
””删除上传的文件
tupianid="../upload/"&request.QueryString("keys")
set   fso=server.CreateObject("scripting.filesystemobject")   
if fso.FileExists(Server.MapPath(tupianid))   then   
fso.deletefile(server.MapPath(tupianid))   
end if   
set fso=nothing

flash视频整站程序制作完成, 在线录制视频+音频+ 缩略图+在线转flv +asp + sqlserver

拼音:f l v zai xian lu zhi shi pin zhuan huan wang zhan kai fa wen dang

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_831778.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何评价一个网站的人气(Link Popularity Check)

如何评价一个网站的人气(Link Popularity Check) 通过一些大型搜索引擎的隐含命令来评价网站的"人气"。 提高网站在Google中的排名(1)——面向搜索引擎的网站设计提高网站在Google中的排名(2)——面向搜索引擎的广告模式提高网站在Googel中的排名(3)——面向搜索引擎…

Digg 网站架构

原贴:http://www.dbanotes.net/techmemo/digg_arch_cache_and_shard.htmlDigg 网站架构 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/techmemo/digg_arch_cache_and_shard.html 本篇描述一下 Digg 的网…

Tailrank 网站架构

原贴:http://www.dbanotes.net/review/tailrank_arch.htmlTailrank 网站架构 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/review/tailrank_arch.html 每天数以千万计的 Blog 内容中,实时的…

PlentyOfFish 网站架构学习

原贴:http://www.dbanotes.net/arch/plentyoffish_arch.htmlPlentyOfFish 网站架构学习 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/plentyoffish_arch.html 采取 Windows 技术路线的 Web 2.0 站…

Yupoo! 的网站技术架构

原贴:http://www.dbanotes.net/arch/yupoo_arch.htmlYupoo! 的网站技术架构 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/yupoo_arch.html 又有机会爆料国内 Web 2.0 网站的架构了。这次是 Yupoo!…

郁闷少年架设某大型网站服务器之全部过程

原贴:http://www.cublog.cn/u/19818/showart.php?id118957郁闷少年架设某大型网站服务器之全部过程 郁闷少年架设某大型网站服务器之全部过程 *版权所有 所有:郁闷少年&&二娃家园 网站:http://www.mingfor.com 发布:mingfu 联系:msn:linuxmingfor.com 日期:2006-04-04…

网站运维之道 关于可用性

原贴:网站运维之道 关于可用性 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_availability.html 这是前一段时间投稿给《程序员》的一篇文章。标题中的"道"有些大了&#…

网站运维之道 监控与报警机制

原贴: http://www.dbanotes.net/web/web_operations_monitoring_and_alert.html 网站运维之道 监控与报警机制 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_monitoring_and_alert.h…

网站运维之道 之容量规划

原贴: http://www.dbanotes.net/web/web_operations_capacity_planning.html 网站运维之道 之容量规划 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_capacity_planning.…

网站运维之道 之知识管理与积累

原贴:http://www.dbanotes.net/web/web_operations_knowledge_management.html网站运维之道 之知识管理与积累 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_knowledge_management.h…

网站运维之道 之自动化管理

原贴:http://www.dbanotes.net/web/web_operations_automatic.html网站运维之道 之自动化管理 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_automatic.html 还是继续这个网站运维的…

手机之家网站架构--对话高春辉

原贴:http://www.dbanotes.net/arch/imobile_web_arch_gaochunhui.html手机之家网站架构--对话高春辉 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/imobile_web_arch_gaochunhui.html 这次去北京参…

面向用户的网站性能优化

原贴: http://www.dbanotes.net/arch/user_oriented_web_tuning.html面向用户的网站性能优化 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.dbanotes.net/arch/user_oriented_web_tuning.html 在互联网这个行业&…

31个用来测试你网站各项性能的免费在线工具

原贴:http://blog.chinaunix.net/u/9465/showart.php?id173605231个用来测试你网站各项性能的免费在线工具 网站代码验证 没人可以细致到保证自己的网站代码都是正确的,你可以通过以下测试来验证网站代码是否正确。 1 . WDG HTML Validator 一个很好的工具&#…

网站优化之减少HTTP请求

原贴:http://lovelaozang.cn/show-6786-1.html网站优化之减少HTTP请求 Submitted by 老臧 on 2009, January 12, 11:37 PM. 好好学习 相关文章 评论 今天给大家分享一些网站优化的一些经验,如有不对的地方欢迎批评指正或与我讨论。关于网站优化,可以从多…

10个精选免费网站分析工具

原贴:http://www.cnbeta.com/articles/75109.htm10个精选免费网站分析工具 感谢zhengyongmw的投递 新闻来源:译言 在本文中,你将发现10个精选的免费web分析工具和应用程序,他们可以帮助你收集和分析与你网站内容有关的数据。 什么是Web分析学…

学习豆瓣好榜样--网站架构

原贴:http://www.dbanotes.net/arch/douban_arch.html 学习豆瓣好榜样--网站架构 这次的 QCon 会议,《豆瓣网技术架构的发展历程》这个议题差不多是最受关注的。洪强宁在演讲开始告诫大家期望值不要太高,我还是相信不会有人觉得失望的。 先说几句题外话&…

小规模低性能低流量网站设计原则

原贴:http://www.dbanotes.net/arch/small_site_arch.html 小规模低性能低流量网站设计原则 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.dbanotes.net/arch/small_site_arch.html 到处都是什么大规模啊…

使用Varnish代替Squid做网站缓存加速器的详细解决方案[原创]

原贴:http://blog.s135.com/post/313/ 使用Varnish代替Squid做网站缓存加速器的详细解决方案 大 | 中 | 小 [2007-11-29 22:11 | by 张宴 ] [文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.s135.…

简约而不简单:网站着陆页的设计(Landing Page Design)

着陆页是一个在线营销的概念,是指当访客点击一个搜索引擎优化的搜索结果进入的第一个页面或“着陆”页面。这是一个重要的页面,它和提供的产品或服务的广告有点类似,提供了与产品相关的精确的信息,告诉客户可以购买的产品或服务。…