商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > PHP调用FFmpeg实现视频切片

PHP调用FFmpeg实现视频切片

  发布于2026-07-23 阅读(0)

扫一扫,手机访问

注:使用的视频为mp4,转换成.m3u8播放列表和.ts切片文件

安装FFmpeg

在CentOS上操作,FFmpeg的安装可以选择多种方式。这里选择通过Nux Dextop仓库来安装,流程相对标准。

先把EPEL仓库装上,这是很多扩展包的基础依赖:

sudo yum install -y epel-release

接着,下载并导入Nux Dextop仓库的RPM包和密钥:

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

更新一下YUM缓存,确保仓库信息生效:

sudo yum update -y

然后,正式安装FFmpeg及其开发包:

sudo yum install -y ffmpeg ffmpeg-devel

最后,验证一下安装是否成功:

ffmpeg -version

PHP调用FFmpeg实现视频切片

安装PHP

PHP环境同样是必须的,安装命令非常直接:

sudo yum install php php-cli

确认版本号:

php -v

PHP调用FFmpeg实现视频切片

PHP脚本实现

核心的切片逻辑,看一下具体的脚本实现。这里会把输入视频按指定时长分割成多个.ts文件,同时生成一个.m3u8播放列表文件——这是HLS流媒体的标准格式。

创建目录(/data)

视频文件放在:/data/video

PHP脚本(命名为 slice_video.php)放在:/data

执行脚本

一切就绪后,直接在命令行执行:

php slice_video.php

生成的切片文件夹

PHP调用FFmpeg实现视频切片

安装Nginx

切片文件需要Web服务器来提供访问,Nginx是一个不错的选择。

先安装:

sudo yum install nginx -y

启动并设置为开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

检查一下运行状态:

sudo systemctl status nginx

开发环境里,为了方便测试,可以先把防火墙关掉:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl status firewalld

接下来是关键的Nginx配置,编辑 /etc/nginx/nginx.conf。核心思路是:添加一个location,将HLS文件目录暴露出去,并配置正确的MIME类型:

sudo nginx -t  # 测试配置文件语法是否正确
sudo systemctl reload nginx  # 重新加载 Nginx使配置生效

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen 80;
        server_name 192.168.126.129;

        location /hls/ {
            alias /data/target_dir/; # 替换为你的实际目录路径
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
         }
            add_header 'Cache-Control' 'no-cache';
            add_header 'Access-Control-Allow-Origin' '*';
        }
    }
 }

编写HTML播放器

最后,编写一个简单的HTML页面来播放这个HLS流。借助hls.js库,可以在大多数现代浏览器中实现流畅播放:




    
    HLS Stream Player
    


视频播放器

本文转载于:https://www.jb51.net/program/336350pok.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注