经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
php如何利用ffmpeg获取视频第一帧为缩略图
来源:jb51  时间:2022/3/2 13:43:19  对本文有异议

php ffmpeg获取视频缩略图

1.环境

  • centos 7
  • ffmpeg version 2.8.15 Copyright

2.centos7安装ffmpeg

centos7安装ffmpeg

  1. sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
  2. sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
  3.  
  4. sudo yum install ffmpeg ffmpeg-devel -y

【Ubuntu安装ffmpeg】

  1. sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
  2.  
  3. sudo apt-get update
  4.  
  5. sudo apt-get install ffmpeg

查看环境变量是否配置成功

ffmpeg -version

3.项目安装ffmpeg包

  1. composer require php-ffmpeg/php-ffmpeg

github链接https://github.com/PHP-FFMpeg/PHP-FFMpeg

4.php代码

  1. <?php
  2. include '../vendor/autoload.php';
  3. use FFMpeg\FFMpeg;
  4. class MyFfmpeg
  5. {
  6. public function run()
  7. {
  8. $file_path = __DIR__ . '/' . uniqid() . '.jpg';
  9.  
  10. $ffmpeg = FFMpeg::create([
  11. 'ffmpeg.binaries' => '/usr/bin/ffmpeg',
  12. 'ffprobe.binaries' => '/usr/bin/ffprobe'
  13. ]);
  14. $video = $ffmpeg->open('1.mp4');
  15. $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1))->save($file_path);
  16. }
  17. }
  18.  
  19. $a = new MyFfmpeg();
  20. $a->run();
  21.  

附Fmpeg读取视频信息

  1. <?php
  2. define('FFMPEG_PATH', '/usr/local/ffmpeg2/bin/ffmpeg -i "%s" 2>&1');
  3. function getVideoInfo($file) {
  4. $command = sprintf(FFMPEG_PATH, $file);
  5. ob_start();
  6. passthru($command);
  7. $info = ob_get_contents();
  8. ob_end_clean();
  9. $data = array();
  10. if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/", $info, $match)) {
  11. $data['duration'] = $match[1]; //播放时间
  12. $arr_duration = explode(':', $match[1]);
  13. $data['seconds'] = $arr_duration[0] * 3600 + $arr_duration[1] * 60 + $arr_duration[2]; //转换播放时间为秒数
  14. $data['start'] = $match[2]; //开始时间
  15. $data['bitrate'] = $match[3]; //码率(kb)
  16. }
  17. if (preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $info, $match)) {
  18. $data['vcodec'] = $match[1]; //视频编码格式
  19. $data['vformat'] = $match[2]; //视频格式
  20. $data['resolution'] = $match[3]; //视频分辨率
  21. $arr_resolution = explode('x', $match[3]);
  22. $data['width'] = $arr_resolution[0];
  23. $data['height'] = $arr_resolution[1];
  24. }
  25. if (preg_match("/Audio: (\w*), (\d*) Hz/", $info, $match)) {
  26. $data['acodec'] = $match[1]; //音频编码
  27. $data['asamplerate'] = $match[2]; //音频采样频率
  28. }
  29. if (isset($data['seconds']) && isset($data['start'])) {
  30. $data['play_time'] = $data['seconds'] + $data['start']; //实际播放时间
  31. }
  32. $data['size'] = filesize($file); //文件大小
  33. return $data;
  34. }
  35. //用法
  36. $video_info = getVideoInfo('video.mp4');
  37. print_r($video_info);
  38. ?>

总结

到此这篇关于php如何利用ffmpeg获取视频第一帧为缩略图的文章就介绍到这了,更多相关php ffmpeg获取视频缩略图内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号