视频网站自动生成FLV格式

上一篇 / 下一篇  2007-10-17 08:26:33 / 个人分类:视频处理

看到一些视频网站,觉得挺新奇的,能够把上传的视频文件转成FLV格式,而且还会有几张截图出来,当时在想,是不是网站专门请了一批人处理这些上传的文件,然后把图截出来,现在想想这念头确实挺幼稚的。

其实说白了,也挺简单的,就是通过php的执行函数,比如exec,然后调用服务器的转换程序,转换结束后将文件生成到指定的文件夹,更新数据库记录,并转到相应的页面。

因为要上传比较大的文件,所以要先设置最大上传文件的大小,打开php.ini,找到upload_max_filesize,这一行,将值改为50M或更大。

至于转换程序的选择,我最初是用ffmpeg的,但是发现转换经常失败,不得不放弃,后来发现另一款非常棒的转换软件,mencoder,也是linux下的,但我的环境是windows,所以找到了一个绿色的以mencoder为核心的应用软件wisMencoder,里面有mencoder,如果是从网上下的话,应该有三个相应的mencoder,分别是对应不同的处理器的。

如果要生成截图,可以通过ffmpeg来生成。


程序代码:

exec ("$cgi_url $source_url -o $dest_url -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 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames",$arr,$sta);
if($sta!=0){
    die ("转换出错!");
}
//优化生成的flv
exec("flvmdi.exe $dest_url");
$imgW="160";
$imgY="120";
exec("ffmpeg.exe -i $dest_url -ss 10 -vframes 1 -r 1 -ac 1 -ab 2 -s $imgW*$imgY -f image2 $pic_url");
echo "文件转换完毕";
if(filesize($pic_url)=="0"){
    echo "文件转换出错";
}

这里解释一下,上面的$cgi_url,指的是要调用的转换程序的url,$source_url指的是上传的文件的url,$dest_url,是生成的flv的存放路径,后面的参数比较复杂,就不具体解释了,网上应该有相应的文章,最后的$sta,是判断是否转换成功
调用flvmdi.exe是因为mencoder生成的flv不能拖放,用这个程序来修复一下
最后调用ffmpeg来生成截图
当然转换生成结束后还要更新一下数据库记录

顺便提一句,由于上传的文件可能比较大,所以最好将php的执行时间相应延长,比如延长到300秒
set_time_limit(300);

至此视频网站的最核心技术就完全捅破了,如果还有什么问题,欢迎和我交流。
 
 

TAG: FLV flv

引用 删除 Guest   /   2007-11-18 01:09:46
评 二品
1111的个人空间 引用 删除 1111   /   2007-10-17 14:10:21
good
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-05  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 13264
  • 日志数: 17
  • 图片数: 16
  • 视频数: 62
  • 书签数: 4
  • 建立时间: 2007-09-12
  • 更新时间: 2008-11-20

RSS订阅

Open Toolbar