关于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 下载其中的Binary Codec Package

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

然后 开始->运行 regsvr32 drv42360.dll

开始工作

1.把ffmepg.exe Mencoder.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调用了ffmpeg Mencoder.exe来进行转码。

处理文件

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

@schtasks /Create /tn 视频转换 /tr ”C:/convert.vbs” /sc minute /mo 5

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

2.建立convert.vbs

Set shell = Wscript.createobject(”wscript.shell”)
convert = shell.run(”C:/convert.bat D:/store”, 0)

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

3.真正的内容convert.bat

@echo off
for /R %1/video/temp    %%I in (*.mov *.avi *.mpg *.mpeg    *.mpe *.3gp) do call :Convert %1 %%~I %%~nI
for /R %1/video/temp    %%I in (*.rm *rmvb *.wmv *.asf *.asx) do call :Convert1 %1 %%~I %%~nI
goto :END
:Convert SitePath FullFile FileName
setlocal enableextensions
set file=%3
set Path=%file:~-14,6%
IF NOT EXIST %1/video/%Path% mkdir %1/video/%Path%
C:/ffmpeg.exe -i %2 -y -ab 56 -ar 11025 -ac 2 -b 1500 -qscale 9 -r 15 -s 320*240 %1/video/%Path%/%3.flv
C:/ffmpeg.exe -i %2 -y -f image2 -ss 8 -sameq -t 0.001 -s 320×240 %1/video/%Path%/%3.jpg
del %2
endlocal
:Convert1 SitePath FullFile FileName
setlocal enableextensions
set file=%3
set Path=%file:~-14,6%
IF NOT EXIST %1/video/%Path% mkdir %1/video/%Path%
C:/mencoder.exe %2 -o %1/video/%Path%/%3.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=200:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=320:240 -ofps 12 -srate 22050
C:/ffmpeg.exe -i %1/video/%Path%/%3.flv -y -f image2 -ss 8 -sameq -t 0.001 -s 320×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修复一下

代码flvmdi test.flv 

 
这个是试用版,如果您下载后本授权已经过期可联系我们。 关于几个参数的标准: 1. 同步周期:软件每隔多少秒就会查询指定的文件夹有没有需要转码的视频文件,如果上传量大可以设置短一些。 2. 最大任务数:软件同时执行转码任务的数量,只要你服务器够强大,完全可以马力全开,设置几十个也不是问题。 3. 是否删除文件:源视频文件是否在转码完成后删除?0为不删除,1为删除。 4. 视频来源目录:举例“d:\WWW\web”,末尾无需\或者/,如果视频文件在其他目录,确保该路径没有符号和空格。 5. 转码格式:指的是要把哪些格式的视频转码为mp4,多个视频格式|分隔,比如flv|mpg|mpeg|avi|vod 如果还有其他格式要转 继续在后面添加,原视频格式可以和输出格式相同,比如原来是mp4文件转码出来也是可以是mp4文件,这样原来的mp4文件会根据设置的参数进行重新处理,让视频更符合网络视频播放规范。 6. 码率:设为500效果比较好,是压缩率和清晰度都能均衡到的最好设置,数字越小 画质越差,视频文件越小,反之亦然,设置为0则保持原来视频的码率,可转高清视频。如果原视频码率低于设置码率,则保持原视频码率输出(低画质视频,强制升高码率只会让文件变得更大,但对画质并无改善,故此设置),如果原视频码率大于设置码率则降低码率按设置码率输出。 7. 是否切片:如果需要把视频分段存放,则勾选。 a. 分片前缀:因为播放器要读取xml里面分段视频的绝对路径,这里需要设置一个相对于网站根目录的绝对地址。 b. 是否保留原文件:这里的源文件是指转码为整个mp4后的视频文件,如果你的视频需要在移动设备播放,xml列表的播放效果可能不太完美,你就需要保留这个整体的mp4文件在移动端播放,当然不需要你也可以删除,只保留分段的视频文件。 8. 分辨率:保持原视频分辨率设置为0 如果要固定分辨率设置为如:720x480 9. 水印:无需水印设置为0,水印设置标准 10:10 从右上角起距左、距右各10像素,具体要求,自己多调试。 :为英文符号,水印图片的名称必须为watermark.png,否则会错。 10. 图片参数:135*71,新版是随机截取视频图片,135*71是图片大小,如需多图截取则用|分隔多个像素,比如135*71|320*240|480*720,不同图片的截取方便缩略图在网站不同位置调用或选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值