一个FFMPEG视频转换的PHP类
<?php class local_video { public $options; public $ffmpeg; public $phpcms_path; public $backup; function __construct($options,$ffmpeg,$backup=true) { $this->opti $this->options = array_filter($options) + $this->options; $this->ffmpeg=$ffmpeg; //ffmpeg路径 $this->backup=$backup; } //获取视频信息 function video_info($file) { ob_start(); passthru(sprintf($this->ffmpeg . ' -i "%s" 2>&1', $file));//ffmpeg -i test.avi 2>&1 $info = ob_get_contents(); ob_end_clean(); // 通过使用输出缓冲,获取到ffmpeg所有输出的内容。 $ret = array(); // Duration: 01:24:12.73, start: 0.000000, bitrate: 456 kb/s if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/",$info, $match)) { $ret['duration'] = $match[1]; // 提取出播放时间 $da = explode(':', $match[1]); $ret['seconds'] = $da[0] * 3600 + $da[1] * 60 + $da[2]; // 转换为秒 $ret['start'] = $match[2]; // 开始时间 $ret['bitrate'] = $match[3]; // bitrate 码率 单位 kb } // Stream #0.1: Video: rv40, yuv420p, 512x384, 355 kb/s, 12.05 fps, 12 tbr, 1k tbn, 12 tbc if (preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $info, $match)) { $ret['vcodec'] = $match[1]; // 编码格式 $ret['vformat'] = $match[2]; // 视频格式 $ret['resolution'] = $match[3]; // 分辨率 $a = explode('x', $match[3]); $ret['width'] = $a[0]; $ret['height'] = $a[1]; } // Stream #0.0: Audio: cook, 44100 Hz, stereo, s16, 96 kb/s if (preg_match("/Audio: (\w*), (\d*) Hz/", $info, $match)) { $ret['acodec'] = $match[1]; // 音频编码 $ret['asamplerate'] = $match[2]; // 音频采样频率 } if (isset($ret['seconds']) && isset($ret['start'])) { $ret['play_time'] = $ret['seconds'] + $ret['start']; // 实际播放时间 } $ret['size'] = filesize($file); // 文件大小 return $ret; } function convert() { $verifyToken = md5('unique_salt' . $this->options['timestamp']); if ($verifyToken == $this->options['token']) { $orgFile = $this->options['org_path'] . $this->options['org']; $setting=' '; if(isset($this->options['video_size'])) $setting=$setting.'-vf scale="'.$this->options['video_size'].'"'; $mp4 = $this->ffmpeg . ' -i ' . $orgFile . ' -ss 00:01:02 -vcodec libx264 -strict -2 '.$setting.' ' . $this->options['mp4_path_temp'] . $this->options['org'] . ''; //转换视频 exec($mp4); if(isset($this->options['watermark'])){ $watermark=' "'.$this->options['watermark'].'" '; $mp4 = $this->ffmpeg.' -i '.$this->options['mp4_path_temp'] . $this->options['org'] . ''.' -vf '.$watermark.' '.$this->options['mp4_path'] . $this->options['org'] . ''; //增加水印 exec($mp4); @unlink($this->options['mp4_path_temp'] . $this->options['org'] . ''); } $duration = $this->video_info($orgFile); $seconds = intval($duration['seconds']); $offset = intval($seconds / 21); //截图间隔 秒 $thumbs = explode(',', $this->options['thumb_size']); for ($i = 0; $i options['thumb_path'] . $this->options['org'] . '/'; if (!file_exists($targetPath)) @mkdir(rtrim($targetPath, '/'), 0777); if ($i == 0) { $time = 1; $name = $i == 0 ? 'default.jpg' : $i . '.jpg'; $img_size = $this->options['main_size']; } else { $time = $i * $offset; $name = $i . '.jpg'; $img_size = $thumbs[$i-1]; } $jpg = $this->ffmpeg . ' -i ' . $orgFile . ' -f image2 -ss ' . $time . ' -vframes 1 -s ' . $img_size . ' ' . $targetPath . $name; //截图 @exec($jpg); } //复制文件到对应的FTP服务器 $ftp_server = pc_base::load_config('ftp_server'); $remote_server = $_POST['remote_server']; $ftp_server = $ftp_server[$remote_server]; if($ftp_server['ftp_server']) pc_base::ftp_upload($orgFile, $ftp_server['ftp_server'], $ftp_server['ftp_user_name'], $ftp_server['ftp_user_pass']); //备份到所有FTP服务器 if($this->backup){ $ftp_backup = pc_base::load_config('ftp_backup'); foreach ($ftp_backup as $v) { pc_base::ftp_upload( $orgFile, $ftp_backup['ftp_server'], $ftp_backup['ftp_user_name'], $ftp_backup['ftp_user_pass']); } } $result['url']=$ftp_server['ftp_server']['http_address']. $this->options['mp4_path'] . $this->options['uniqid'] . '.mp4';//记录视频播放地址 $result['uniqid']=$this->options['uniqid']; $result['videoTime'] = $this->video_info($orgFile); $result['videoTime'] = $result['videoTime']['seconds']; return $result;//返回处理结果 } else die('验证失败!'); } } ?>
参考
http://www.fieryrain.com/blog/FFMPEG_VIDEO_TIME
http://keren.iteye.com/blog/1773536
http://www.cnblogs.com/dwdxdy/p/3240167.html
http://www.cnblogs.com/chen1987lei/archive/2010/12/03/1895242.html
以上就介绍了 一个FFMPEG视频转换的PHP类,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



1. Pasang nginx 2. Pasang vsftpd 3. Ubah suai fail konfigurasi nginx nginx.conf 3.1 Tambah pengguna ftp userftpuser dalam baris pertama 3.2 Konfigurasi pelayan laluan yang berkaitan { listen80; images{ root /home/ftpuser; #Laluan mutlak folder ftp server indexftpuser proksi #Tetapkan halaman selamat datang

Dengan perkembangan pesat Internet, File Transfer Protocol (FTP) sentiasa menjadi kaedah pemindahan fail yang penting. Dalam bahasa Go, menggunakan FTP untuk memindahkan fail mungkin memerlukan banyak pembangun. Namun, mungkin ramai yang tidak tahu cara menggunakan FTP dalam bahasa Go. Dalam artikel ini, kami akan meneroka cara menggunakan FTP dalam bahasa Go, daripada menyambung ke pelayan FTP kepada pemindahan fail dan cara mengendalikan ralat dan pengecualian. Cipta sambungan FTP Dalam bahasa Go, kita boleh menggunakan pakej "bersih" standard untuk menyambung ke FTP

Perintah ftp di bawah Linux termasuk: 1. perintah ftp; 3. perintah putuskan sambungan; perintah ;10. perintah rhelp; 11. perintah ascii

PHP dan FTP: Mencapai perkongsian fail antara pelbagai jabatan dalam pembangunan laman web Dengan perkembangan Internet, semakin banyak syarikat mula menggunakan platform laman web untuk pengeluaran maklumat dan promosi perniagaan. Namun, masalah yang timbul ialah bagaimana untuk mencapai perkongsian fail dan kerjasama antara pelbagai jabatan. Dalam kes ini, PHP dan FTP menjadi salah satu penyelesaian yang paling biasa digunakan. Artikel ini akan memperkenalkan cara menggunakan PHP dan FTP untuk mencapai perkongsian fail antara pelbagai jabatan dalam pembangunan laman web. 1. Pengenalan kepada FTP FTP (FileTransferPr

Bagaimana untuk membandingkan direktori dan fail pada pelayan FTP melalui PHP Dalam pembangunan web, kadangkala kita perlu membandingkan fail tempatan dengan fail pada pelayan FTP untuk memastikan konsistensi antara kedua-duanya. PHP menyediakan beberapa fungsi dan kelas untuk melaksanakan fungsi ini. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membandingkan direktori dan fail pada pelayan FTP, dan memberikan contoh kod yang berkaitan. Pertama, kita perlu menyambung ke pelayan FTP. PHP menyediakan fungsi ftp_connect() untuk mewujudkan pelayan FTP

WindowsServerBackup ialah fungsi yang disertakan dengan sistem pengendalian WindowsServer, direka untuk membantu pengguna melindungi data penting dan konfigurasi sistem, serta menyediakan penyelesaian sandaran dan pemulihan yang lengkap untuk perusahaan peringkat kecil, sederhana dan perusahaan. Hanya pengguna yang menjalankan Server2022 dan lebih tinggi boleh menggunakan ciri ini. Dalam artikel ini, kami akan menerangkan cara memasang, menyahpasang atau menetapkan semula WindowsServerBackup. Cara Menetapkan Semula Sandaran Pelayan Windows Jika anda mengalami masalah dengan sandaran pelayan anda, sandaran mengambil masa terlalu lama, atau anda tidak dapat mengakses fail yang disimpan, maka anda boleh mempertimbangkan untuk menetapkan semula tetapan sandaran Pelayan Windows anda. Untuk menetapkan semula Windows

linux ftp530 bermaksud ralat log masuk linux ftp 530. Penyelesaiannya ialah: 1. Semak "cat /etc/shells" untuk melihat sama ada direktori utama pengguna anda dan shell log masuk. Jika tidak, tambahkan "/var /log /secure" dan tetapkan semula masa tamat tempoh kata laluan.

Pengenalan kepada FTP FTP ialah File Transfer Protocol (FileTransferProtocol), yang merupakan protokol standard untuk pemindahan fail pada rangkaian. Pelanggan FTP boleh memuat naik fail dari tempatan ke pelayan atau memuat turun dari pelayan ke tempatan. Modul ftplib Python menyediakan perpustakaan standard ftplib untuk melaksanakan fungsi klien FTP dalam Python. Menggunakan ftplib, kami boleh menyambung ke pelayan FTP dan melakukan pelbagai operasi FTP, seperti memuat naik dan memuat turun fail, dsb. Penjelasan kod Berikut ialah contoh kod untuk memuat naik fail melalui FTP menggunakan Python: fromftplibimportFTPimportargparsed
