PHP调用FFmpeg实现视频切片

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

1、安装FFmpeg

我这边是通过Nux Dextop仓库来安装FFmpeg。

(1) 安装EPEL仓库

1
sudo yum install -y epel-release

(2)下载并安装Nux Dextop仓库的RPM包

1
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

(3)更新YUM缓存

1
sudo yum update -y

(4) 安装FFmpeg

1
sudo yum install -y ffmpeg ffmpeg-devel

(5)验证安装

1
ffmpeg -version

2、安装PHP

1
sudo yum install php php-cli

验证安装

1
php -v

3、php脚本

1
 

4、创建目录(/data)

视频目录:/data/video

php脚本目录:/data  脚本名称:slice_video.php 

5、执行脚本

1
php slice_video.php

6、生成的切片文件夹

7、安装Nginx

(1)安装

1
sudo yum install nginx -y

(2)启动 Nginx

1
2
sudo systemctl start nginx
sudo systemctl enable nginx

(3) 检查 Nginx 状态

1
sudo systemctl status nginx

(4)关闭防火墙

1
2
3
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl status firewalld

(5)nginx.conf文件配置

文件位置:/etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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' '*';
        }
    }
  
}

8、编写html播放器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    <title>HLS Stream Player</title><h1>视频播放器</h1>
<video id="video" controls="" autoplay="" data-origwidth="0" data-origheight="0" style="width: 1264px;"></video>
    if(Hls.isSupported()) {
        var video = document.getElementById('video');
        var hls = new Hls();
        // 这里替换为你的.m3u8文件的实际URL
        var url = 'http://192.168.126.129/hls/output.m3u8'; // 替换为你的实际URL
         
        hls.loadSource(url);
        hls.attachMedia(video);
        hls.on(Hls.Events.MANIFEST_PARSED, function() {
            video.play();
        });
    } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
        // 如果浏览器直接支持HLS,则可以直接设置src
        video.src = 'http://192.168.126.129/hls/output.m3u8'; // 替换为你的实际URL
        video.addEventListener('loadedmetadata', function() {
            video.play();
        });
    }

到此这篇关于PHP调用FFmpeg实现视频切片的文章就介绍到这了,更多相关PHP FFmpeg视频切片内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/code/php/15152.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部