当前位置: 首页 > article >正文

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');


http://www.kler.cn/a/441585.html

相关文章:

  • 优化使用 Flask 构建视频转 GIF 工具
  • 软件安全性测试报告如何编写?
  • 探秘Shortest与Stagehand:开启高效测试与自动化新篇
  • 51c~SLAM~合集1
  • CPU狂飙900%如何分析?怎么定位?怎么溯源处理
  • 小程序获取微信运动步数
  • Python爬虫之代理的设置
  • linux0.11源码分析第一弹——bootset.s内容
  • (2024.12)记录——Ubuntu20.04安装opencv库
  • 【JVM】JVM基础教程(四)
  • ubuntu20.04安装qt creator
  • Leetcode经典题8--H指数
  • 深度学习之Autoencoders GANs for Anomaly Detection 视频异常检测
  • xshell连接虚拟机,更换网络模式:NAT->桥接模式
  • SpringBoot集成ENC对配置文件进行加密
  • 阶段性demo 键盘信息过滤
  • 天猫魔盒M17/M17S_超级UI 线刷固件包-可救砖(刷机取消双勾)
  • 【HF设计模式】03-装饰者模式
  • Transformer 中 Self-Attention 的二次方复杂度(Quadratic Complexity )问题及改进方法:中英双语
  • 【Flink-scala】DataStream编程模型总结
  • 2025山东科技大学考研专业课复习资料一览
  • Java设计模式实战:策略模式、工厂模式、模板模式组合使用
  • 人工智能浪潮来袭:2024年技术革命与产业变革深度解析@附64页PDF文件下载
  • 基于Android的生活记录app的设计与实现
  • 【教程】让Jupyter支持打开CSV和Excel(xlsx)文件
  • 死信队列概述