欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > centos下安装ffmpeg

centos下安装ffmpeg

2024/12/31 1:08:29 来源:https://blog.csdn.net/cmj8043719242/article/details/144430480  浏览:    关键词:centos下安装ffmpeg

如果你在CentOS 7.9下执行 sudo yum install ffmpeg 时遇到问题,可能是因为默认的yum仓库中没有FFmpeg或者其版本太旧。你可以通过添加第三方仓库如Nginx、Remi或EPEL来安装更新版本的FFmpeg。以下是具体的步骤:

添加并启用必要的仓库

  1. 安装EPEL仓库(如果尚未安装): EPEL (Extra Packages for Enterprise Linux) 是由Fedora项目维护的一个额外软件包集合。

    sudo yum install epel-release
  2. 添加Nux Dextop仓库(包含多媒体应用程序和库): Nux Dextop是一个第三方仓库,它包含了包括FFmpeg在内的多媒体应用。

    rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
    rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
  3. 对于CentOS 7,你也可以考虑使用Remi仓库: Remi仓库提供了许多最新的软件包,包括FFmpeg。

    sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

    然后启用remi-media源:

    sudo yum-config-manager --enable remi-media

安装FFmpeg

完成上述仓库配置之后,可以尝试再次安装FFmpeg:

 
sudo yum install ffmpeg ffmpeg-devel

检查FFmpeg安装是否成功

安装完成后,可以通过以下命令检查FFmpeg是否正确安装:


ffmpeg -version
ffprobe -version

如果显示了FFmpeg的版本信息,则说明安装成功。

注意事项

  • 在添加任何第三方仓库之前,请确保了解这些仓库的安全性和稳定性。
  • 如果你在企业环境中工作,确保遵守公司的安全策略,并在必要时咨询IT管理员。
  • 不同的仓库可能会提供不同版本的FFmpeg,选择最适合你需求的版本。
  • 如果你遇到了冲突或者其他问题,可能需要调整已启用的仓库优先级或者禁用某些仓库以避免冲突。

希望这些信息可以帮助你解决安装FFmpeg的问题

使用中的报错解决,在php中使用

使用compoer安装:composer  require php-ffmpeg/php-ffmpeg

代码中使用

1、获取视频时长

 //获取视频时长   public function video_time(){$videoPath = 'https://ruinuoedu.oss-cn-qingdao.aliyuncs.com/uploads/20241205/96b9387572e6456043b1d23a234c2263.mp4';//方式一$ffmpeg  = FFMpeg::create(['ffmpeg.binaries'  => '/usr/bin/ffmpeg', // 替换为你的 ffmpeg 路径'ffprobe.binaries' => '/usr/bin/ffprobe', // 替换为你的 ffprobe 路径'timeout'          => 0, // The timeout for the underlying process'ffmpeg.threads'   => 12, // The number of threads that FFMpeg should use]);try {// 打开视频文件$video = $ffmpeg->open($videoPath);// 获取视频时长(以秒为单位)$duration = $video->getStreams()->first()->get('duration');// 将秒数格式化为 H:i:s 格式echo "Video duration: " . gmdate("H:i:s", (int)$duration) . PHP_EOL;} catch (Exception $e) {echo 'Error: ' . $e->getMessage() . PHP_EOL;}//方式二// 使用FFmpeg命令行工具获取视频时长$output = [];exec("ffmpeg -i \"$videoPath\" 2>&1", $output, $return_var);if ($return_var !== 0) {echo "Error executing FFmpeg command.";exit;}// 查找包含"Duration"的行foreach ($output as $line) {if (preg_match('/Duration: ([0-9:.]+)/', $line, $matches)) {$duration = $matches[1];break;}}echo "Video duration: $duration" . PHP_EOL;}

方案一(验证可行)

相关错误:

a、Unble to load FFProbe ,需要指定路径或者配置环境变量

相关指令(查看安装地址):which/whereis ffmpeg  , which ffprobe

$ffmpeg  = FFMpeg::create(['ffmpeg.binaries'  => '/usr/bin/ffmpeg', // 替换为你的 ffmpeg 路径'ffprobe.binaries' => '/usr/bin/ffprobe', // 替换为你的 ffprobe 路径'timeout'          => 0, // The timeout for the underlying process'ffmpeg.threads'   => 12, // The number of threads that FFMpeg should use
]);

b、报错:file_exists(): open_basedir restriction in effect. File(/usr/bin/ffprobe) is

需要关闭网站的防跨站攻击,如果使用宝塔,再网站目录中关闭即可

2、获取远程视频的第一帧

use FFMpeg\Coordinate\TimeCode;
use FFMpeg\FFMpeg;require 'vendor/autoload.php';$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open('https://xxx.mp4');// 获取视频的时长(秒)
$duration = $video->getStreams()->first()->get('duration');echo $duration;
$outputImage = '/data/b.jpg';  // 替换为您希望保存第一帧的物理路径// 提取第一帧(默认情况下,FFMpeg库将从视频的开始处获取第一帧)
$frame = $video->frame(TimeCode::fromSeconds(0));// 将第一帧保存到指定的图像文件
$frame->save($outputImage, 'image/jpeg');

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com