亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP基于ffmpeg實現轉換視頻,截圖及生成縮略圖的方法

2024-05-04 23:59:44
字體:
來源:轉載
供稿:網友

本文實例講述了PHP基于ffmpeg實現轉換視頻,截圖及生成縮略圖的方法。分享給大家供大家參考,具體如下:

這里把ffmpeg 和  生成縮略圖整合了一下:

include("ImageResize.class.php") //轉視頻 $cmd="ffmpeg.exe -i starwar.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 1.flv"; exec($cmd); //視頻截圖 $cmd="ffmpeg.exe -i starwar.avi -f image2 -ss 10 -s 400*300 -vframes 1 1.jpg"; exec($cmd); //生成縮略圖 $thumbnail = new ImageResize(); $thumbnail->resizeimage("1.jpg", 30,30, 0, "small1.jpg");class ImageResize {  //圖片類型  var $type;  //實際寬度  var $width;  //實際高度  var $height;  //改變后的寬度  var $resize_width;  //改變后的高度  var $resize_height;  //是否裁圖  var $cut;  //源圖象  var $srcimg;  //目標圖象地址  var $dstimg;  //臨時創建的圖象  var $im;function resizeimage($img, $wid, $hei,$c,$dstpath) {    $this->srcimg = $img;    $this->resize_width = $wid;    $this->resize_height = $hei;    $this->cut = $c;    //圖片的類型    $this->type = strtolower(substr(strrchr($this->srcimg,"."),1));    //初始化圖象    $this->initi_img();    //目標圖象地址    $this -> dst_img($dstpath);    //--    $this->width = imagesx($this->im);    $this->height = imagesy($this->im);    //生成圖象    $this->newimg();    ImageDestroy ($this->im);  }function newimg() {//改變后的圖象的比例    $resize_ratio = ($this->resize_width)/($this->resize_height);//實際圖象的比例    $ratio = ($this->width)/($this->height);if(($this->cut)=="1") {      //裁圖 高度優先      if($ratio>=$resize_ratio){        $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);        imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);        ImageJpeg ($newimg,$this->dstimg);      }      //裁圖 寬度優先      if($ratio<$resize_ratio) {        $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);        imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, $this->width, (($this->width)/$resize_ratio));        ImageJpeg ($newimg,$this->dstimg);      }    } else {      //不裁圖      if($ratio>=$resize_ratio) {        $newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);        imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);        ImageJpeg ($newimg,$this->dstimg);      }      if($ratio<$resize_ratio) {        $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);        imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height);        ImageJpeg ($newimg,$this->dstimg);      }    }  }//初始化圖象  function initi_img() {    if($this->type=="jpg") {      $this->im = imagecreatefromjpeg($this->srcimg);    }    if($this->type=="gif") {      $this->im = imagecreatefromgif($this->srcimg);    }    if($this->type=="png") {      $this->im = imagecreatefrompng($this->srcimg);    }    if($this->type=="bmp") {      $this->im = $this->imagecreatefrombmp($this->srcimg);    }  }//圖象目標地址  function dst_img($dstpath) {    $full_length = strlen($this->srcimg);    $type_length = strlen($this->type);    $name_length = $full_length-$type_length;    $name = substr($this->srcimg,0,$name_length-1);    $this->dstimg = $dstpath;    //echo $this->dstimg;  }  function ConvertBMP2GD($src, $dest = false) {    if(!($src_f = fopen($src, "rb"))) {      return false;    }    if(!($dest_f = fopen($dest, "wb"))) {      return false;    }    $header = unpack("vtype/Vsize/v2reserved/Voffset", fread($src_f,14));    $info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", fread($src_f, 40));    extract($info);    extract($header);    if($type != 0x4D42) { // signature "BM"      return false;    }    $palette_size = $offset - 54;    $ncolor = $palette_size / 4;    $gd_header = "";    // true-color vs. palette    $gd_header .= ($palette_size == 0) ? "/xFF/xFE" : "/xFF/xFF";    $gd_header .= pack("n2", $width, $height);    $gd_header .= ($palette_size == 0) ? "/x01" : "/x00";    if($palette_size) {      $gd_header .= pack("n", $ncolor);    }    // no transparency    $gd_header .= "/xFF/xFF/xFF/xFF";fwrite($dest_f, $gd_header);if($palette_size) {      $palette = fread($src_f, $palette_size);      $gd_palette = "";      $j = 0;      while($j < $palette_size) {        $b = $palette{$j++};        $g = $palette{$j++};        $r = $palette{$j++};        $a = $palette{$j++};        $gd_palette .= "$r$g$b$a";      }      $gd_palette .= str_repeat("/x00/x00/x00/x00", 256 - $ncolor);      fwrite($dest_f, $gd_palette);    }$scan_line_size = (($bits * $width) + 7) >> 3;    $scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size &    0x03) : 0;for($i = 0, $l = $height - 1; $i < $height; $i++, $l--) {      // BMP stores scan lines starting from bottom      fseek($src_f, $offset + (($scan_line_size + $scan_line_align) * $l));      $scan_line = fread($src_f, $scan_line_size);      if($bits == 24) {        $gd_scan_line = "";        $j = 0;        while($j < $scan_line_size) {          $b = $scan_line{$j++};          $g = $scan_line{$j++};          $r = $scan_line{$j++};          $gd_scan_line .= "/x00$r$g$b";        }      }      else if($bits == 8) {        $gd_scan_line = $scan_line;      }      else if($bits == 4) {        $gd_scan_line = "";        $j = 0;        while($j < $scan_line_size) {          $byte = ord($scan_line{$j++});          $p1 = chr($byte >> 4);          $p2 = chr($byte & 0x0F);          $gd_scan_line .= "$p1$p2";        }        $gd_scan_line = substr($gd_scan_line, 0, $width);      }      else if($bits == 1) {        $gd_scan_line = "";        $j = 0;        while($j < $scan_line_size) {          $byte = ord($scan_line{$j++});          $p1 = chr((int) (($byte & 0x80) != 0));          $p2 = chr((int) (($byte & 0x40) != 0));          $p3 = chr((int) (($byte & 0x20) != 0));          $p4 = chr((int) (($byte & 0x10) != 0));          $p5 = chr((int) (($byte & 0x08) != 0));          $p6 = chr((int) (($byte & 0x04) != 0));          $p7 = chr((int) (($byte & 0x02) != 0));          $p8 = chr((int) (($byte & 0x01) != 0));          $gd_scan_line .= "$p1$p2$p3$p4$p5$p6$p7$p8";        }        $gd_scan_line = substr($gd_scan_line, 0, $width);      }      fwrite($dest_f, $gd_scan_line);    }    fclose($src_f);    fclose($dest_f);    return true;  }function imagecreatefrombmp($filename) {    $tmp_name = tempnam("/tmp", "GD");    if($this->ConvertBMP2GD($filename, $tmp_name)) {      $img = imagecreatefromgd($tmp_name);      unlink($tmp_name);      return $img;    }    return false;  }}

附:完整實例代碼點擊此處本站下載。

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品h片在线播放| 69视频在线播放| 高清一区二区三区日本久| 久久精品国产成人精品| 亚洲国产精品一区二区久| 欧美一级电影在线| 久久亚洲精品毛片| 亚洲第一精品夜夜躁人人爽| 在线观看亚洲视频| 久久久免费观看| 欧美性猛交xxxx乱大交蜜桃| 欧美精品一区二区三区国产精品| 亚洲欧美国产高清va在线播| 欧美精品在线播放| 亚洲国产三级网| 国产狼人综合免费视频| 欧美日本在线视频中文字字幕| 久久精品国产2020观看福利| 亚洲2020天天堂在线观看| 日韩理论片久久| 亚洲在线视频观看| 亚洲国产精品国自产拍av秋霞| 欧美亚洲视频一区二区| 国产精品极品美女在线观看免费| 久久精品国产亚洲| 欧美在线视频在线播放完整版免费观看| 日韩中文字幕在线免费观看| 久久精品国产欧美激情| 欧美激情xxxxx| 亚洲最大福利网| 人妖精品videosex性欧美| 亚洲香蕉伊综合在人在线视看| 欧美俄罗斯乱妇| 欧美黑人性猛交| 亚洲图片在线综合| 亚洲人成五月天| 欧美精品一区二区免费| 成人黄色av网站| 国产一区二区三区视频在线观看| 国产精品久久久久久久久久三级| 亚洲综合小说区| 国内成人精品一区| 北条麻妃在线一区二区| 亚洲国内精品在线| 久久久久久综合网天天| 亚洲午夜未满十八勿入免费观看全集| 日韩美女激情视频| 亚洲视频免费一区| 在线视频免费一区二区| 亚洲自拍偷拍色片视频| 日本高清视频精品| 国产人妖伪娘一区91| 欧美激情精品在线| 欧美激情在线视频二区| 国产亚洲人成网站在线观看| 日韩欧美综合在线视频| 日韩美女在线观看一区| 亚洲电影免费观看高清完整版在线| 亚洲男人天堂视频| 欧美激情三级免费| 欧美中文在线观看国产| 亚州精品天堂中文字幕| 国产精品欧美日韩久久| 欧美性理论片在线观看片免费| 亚洲欧美精品一区二区| 久久精彩免费视频| 亚洲xxxx18| 久久久av网站| 欧美中文字幕视频| 91高清在线免费观看| 精品福利免费观看| 日本精品视频在线观看| 成年无码av片在线| 91香蕉嫩草神马影院在线观看| 91网站免费看| 色哟哟亚洲精品一区二区| 91高清视频免费| 少妇高潮久久77777| 国产精品久久久久久久久借妻| 欧美中文字幕在线视频| 欧美极品少妇全裸体| 成人性教育视频在线观看| 精品久久久久久电影| 亚洲第一av在线| 欧美激情欧美狂野欧美精品| 91精品免费久久久久久久久| 欧美激情综合色综合啪啪五月| 欧美黑人性生活视频| 91日韩在线视频| 在线国产精品播放| 久久久久北条麻妃免费看| 欧美另类极品videosbestfree| 欧美激情奇米色| 97av在线播放| 亚洲国产又黄又爽女人高潮的| 尤物精品国产第一福利三区| 日本一区二区在线免费播放| 成人国产精品免费视频| 精品美女永久免费视频| 亚洲成人a**站| 日韩精品视频在线播放| 91在线视频导航| 国a精品视频大全| 欧美xxxx综合视频| 亚洲一区亚洲二区| 欧美性精品220| 中文字幕国产亚洲2019| 97久久超碰福利国产精品…| 久久久久久国产| 性欧美在线看片a免费观看| 精品视频一区在线视频| 亚洲欧洲国产一区| 欧美日韩成人在线视频| 亚洲天堂av综合网| 在线观看视频99| 91免费欧美精品| 亚洲欧美在线免费观看| 国产一区二区三区在线| 国产精品视频不卡| 欧美裸体男粗大视频在线观看| 欧美日韩免费一区| 成人免费视频在线观看超级碰| 欧美日本啪啪无遮挡网站| 亚洲91精品在线| 日本精品免费观看| 亚洲激情免费观看| 欧美尤物巨大精品爽| 91伊人影院在线播放| 成人美女av在线直播| 中文字幕日韩专区| 亚洲美女av电影| 国内精久久久久久久久久人| 亚洲人成人99网站| 国产成人在线精品| 久久亚洲国产精品| 91在线观看欧美日韩| 欧美电影在线观看网站| 久久99热这里只有精品国产| 国产成人精品视频在线观看| 亚洲成色999久久网站| 97在线免费观看视频| 久久久久久免费精品| 久久777国产线看观看精品| 亚洲四色影视在线观看| 4438全国成人免费| 黑人极品videos精品欧美裸| 国产精品久久久一区| 亚洲成人精品久久| 精品国产一区av| 欧美裸身视频免费观看| 国产亚洲精品美女| 精品免费在线观看| 久久综合亚洲社区| 欧美日韩免费在线| 欧美激情在线观看视频| 欧美高清理论片| 亚洲人成电影网| 日韩av最新在线| 国产精品第10页| 日韩在线播放视频| 欧美日韩亚洲国产一区| 国产精品久久久久一区二区| 中文欧美日本在线资源| 日韩暖暖在线视频|