`
guanhuaing
  • 浏览: 1199810 次
文章分类
社区版块
存档分类
最新评论

关于flv自动转码服务器的建设[转载]作

 
阅读更多

1.看到很多一般在编程的时候上传都是在后台调用进程来进行转码。不过试验以后发现效果不是很好,特别是很多人的时候会出现问题。

2.另外一个就是在对于很多视频素材要进行转码上传的时候,要进行一定的统一编码。目前要做统一的flv的格式所有素材所有的都要进行flv编码,如果一段一段的进行编码的话,太过于麻烦而且要花费很大的人力。同样的一份素材如果我需要进行两份编码,比如一份mpg文件进行一份flv,一份3gp的编码那么就要花费大量的时间进行两次的手工操作。

上述就是存在的问题

如何解决?

参考了Discuz的supesite有了下面的解决方案

要使用的文件

1.ffmepg.exe下载地址http://sourceforge.net/projects/ffmpeg

2.Mencoder.exe下载地址http://www.mplayerhq.hu/MPlayer/releases/win32/下载其中的MPlayer-20060908-win32_gui.zip包并且提出其中的Mencoder.exe.

3.下载Mencoder.exe解码器http://www.mplayerhq.hu/design7/dload.html下载其中的BinaryCodecPackage

然后解开压缩包,把其中的drv43260.dllcopy到windows/system32/下面

然后开始->运行regsvr32drv42360.dll

开始工作

1.把ffmepg.exeMencoder.exe复制到c:/根目录下,当然你也可以是其他,只是我们后面定了这个目录

2.我们假定您的视频文件放置在D:/store下面,并且视频的原始文件在D:/store/video/temp/目录下

而新的文件flv文件和截图放置在D:/store/video/里面会按照日期建立文件夹里面.以上进行确认

工作思路

思路是建立windows的计划任务,让该计划每5分钟查看D:/store/video/temp下是否有文件,如果有文件那么调用批处理文件进行转换和截图,

所一这里需要一个task.bat用来建立windows计划任务(初始化使用),一个convert.vbs用来给转换的批处理调用shell并且传递目录参数,一个convert.bat这是真正要被convert.vbs调用的批处理文件这个文件是我们所有转码的关键。也就是convert.bat调用了ffmpegMencoder.exe来进行转码。

处理文件

1..建立一个计划任务的批处理task.bat(蓝色部分)

@schtasks/Create/tn视频转换/tr”C:/convert.vbs”/scminute/mo5

注释:/mo5表示5分钟,从上面看到他就是调用了convert.vbs

2.建立convert.vbs

Setshell=Wscript.createobject(”wscript.shell”)
convert=shell.run(”C:/convert.batD:/store”,0)

注释:从上满看到该vbscript创建了一个shell同时调用convert.bat传入两个参数

3.真正的内容convert.bat

@echooff
for/R%1/video/temp%%Iin(*.mov*.avi*.mpg*.mpeg*.mpe*.3gp)docall:Convert%1%%~I%%~nI
for/R%1/video/temp%%Iin(*.rm*rmvb*.wmv*.asf*.asx)docall:Convert1%1%%~I%%~nI
goto:END
:ConvertSitePathFullFileFileName
setlocalenableextensions
setfile=%3
setPath=%file:~-14,6%
IFNOTEXIST%1/video/%Path%mkdir%1/video/%Path%
C:/ffmpeg.exe-i%2-y-ab56-ar11025-ac2-b1500-qscale9-r15-s320*240%1/video/%Path%/%3.flv
C:/ffmpeg.exe-i%2-y-fimage2-ss8-sameq-t0.001-s320×240%1/video/%Path%/%3.jpg
del%2
endlocal
:Convert1SitePathFullFileFileName
setlocalenableextensions
setfile=%3
setPath=%file:~-14,6%
IFNOTEXIST%1/video/%Path%mkdir%1/video/%Path%
C:/mencoder.exe%2-o%1/video/%Path%/%3.flv-oflavf-lavfoptsi_certify_that_my_video_stream_does_not_use_b_frames-oacmp3lame-lameoptsabr:br=56-ovclavc-lavcoptsvcodec=flv:vbitrate=200:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1-vfscale=320:240-ofps12-srate22050
C:/ffmpeg.exe-i%1/video/%Path%/%3.flv-y-fimage2-ss8-sameq-t0.001-s320×240%1/video/%Path%/%3.jpg
del%2
endlocal
:END

上面的语法不多做解释了,可以参看偶博客

有一点要注意的是,在转码结束以后调用了del也就是原文件会被删除,当然你可以不删除

1.http://hi.baidu.com/x2p2/blog/item/06121d2d092cc936349bf731.html

2.http://hi.baidu.com/x2p2/blog/item/cb25e5c4d8233ac938db4923.html

或者参考Mencoder以及ffmpeg的一些相关参数说明

4.把这三个文件都保存到c:/根目录下.然后运行task.bat让计划任务自动执行

mencoder压缩后生成的flv缺少meta信息,会造成播放时没有进度条等问题,需要再用flvmdi修复一下

代码flvmditest.flv

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics