一个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教程有兴趣的朋友有所帮助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



1. Installez nginx 2. Installez vsftpd 3. Modifiez le fichier de configuration nginx nginx.conf 3.1 Ajoutez l'utilisateur ftp userftpuser dans la première ligne ; 3.2 Configurez le chemin d'accès correspondant au serveur{ Listen80 ; #nginx proxy port server_namelocalhost ; images{ root /home/ftpuser; #Le chemin absolu du dossier du serveur proxy ftp indexftpuser #Définir la page d'accueil;

Avec le développement rapide d'Internet, le protocole de transfert de fichiers (FTP) a toujours été une méthode de transfert de fichiers importante. En langage Go, l'utilisation de FTP pour transférer des fichiers peut être un besoin pour de nombreux développeurs. Cependant, peut-être que beaucoup de gens ne savent pas comment utiliser FTP en langage Go. Dans cet article, nous explorerons comment utiliser FTP en langage Go, de la connexion au serveur FTP au transfert de fichiers, et comment gérer les erreurs et les exceptions. Créer une connexion FTP En langage Go, on peut utiliser le package standard "net" pour se connecter à FTP

Les commandes ftp sous Linux incluent : 1. commande ftp ; 2. commande close ; 3. commande open ; 5. commande user ; 7. commande bye ; commande ; 10. commande rhelp ; 11. commande ascii ; 12. commande binaire/bi 13. commande bell ;

PHP et FTP : permettez le partage de fichiers entre plusieurs départements lors du développement de sites Web. Avec le développement d'Internet, de plus en plus d'entreprises commencent à utiliser des plateformes de sites Web pour la diffusion d'informations et la promotion commerciale. Cependant, le problème qui se pose est de savoir comment réaliser le partage de fichiers et la collaboration entre plusieurs départements. Dans ce cas, PHP et FTP deviennent l’une des solutions les plus utilisées. Cet article explique comment utiliser PHP et FTP pour réaliser le partage de fichiers entre plusieurs départements lors du développement de sites Web. 1. Introduction à FTP FTP (FileTransferPr

WindowsServerBackup est une fonction fournie avec le système d'exploitation WindowsServer, conçue pour aider les utilisateurs à protéger les données importantes et les configurations système, et à fournir des solutions complètes de sauvegarde et de récupération pour les petites, moyennes et grandes entreprises. Seuls les utilisateurs exécutant Server2022 et versions ultérieures peuvent utiliser cette fonctionnalité. Dans cet article, nous expliquerons comment installer, désinstaller ou réinitialiser WindowsServerBackup. Comment réinitialiser la sauvegarde de Windows Server Si vous rencontrez des problèmes avec la sauvegarde de votre serveur, si la sauvegarde prend trop de temps ou si vous ne parvenez pas à accéder aux fichiers stockés, vous pouvez envisager de réinitialiser vos paramètres de sauvegarde de Windows Server. Pour réinitialiser Windows

Comment comparer des répertoires et des fichiers sur un serveur FTP via PHP Dans le développement Web, nous devons parfois comparer des fichiers locaux avec des fichiers sur le serveur FTP pour assurer la cohérence entre les deux. PHP fournit quelques fonctions et classes pour implémenter cette fonctionnalité. Cet article explique comment utiliser PHP pour comparer des répertoires et des fichiers sur un serveur FTP et fournit des exemples de code pertinents. Tout d'abord, nous devons nous connecter au serveur FTP. PHP fournit la fonction ftp_connect() pour établir un serveur FTP

Introduction à FTP FTP, File Transfer Protocol, est un protocole standard de transfert de fichiers sur le réseau. Le client FTP peut télécharger des fichiers du local vers le serveur ou du serveur vers le local. Le module ftplib Python fournit une bibliothèque standard ftplib pour implémenter les fonctions client FTP en Python. En utilisant ftplib, nous pouvons nous connecter au serveur FTP et effectuer diverses opérations FTP, telles que le téléchargement et le téléchargement de fichiers, etc. Explication du code Voici un exemple de code pour télécharger des fichiers via FTP à l'aide de Python : fromftplibimportFTPimportargparsed

linux ftp530 signifie l'erreur de connexion ftp linux 530. La solution est la suivante : 1. Vérifiez "cat /etc/shells" pour voir si le répertoire personnel et le shell de connexion de votre utilisateur sont là. Sinon, ajoutez-les ; /secure" et réinitialisez le délai d'expiration du mot de passe.
