首页/新闻资讯/正文详情

PHP调用FFmpeg实现视频切片

发布时间:2026/9/23 21:50:50 来源:云帆数科 栏目:资讯中心
PHP调用FFmpeg实现视频切片
注使用的视频为mp4转换成.m3u8播放列表和.ts切片文件1、安装FFmpeg我这边是通过Nux Dextop仓库来安装FFmpeg。1 安装EPEL仓库1sudoyuminstall-y epel-release2下载并安装Nux Dextop仓库的RPM包1sudorpm --importhttp://li.nux.ro/download/nux/RPM-GPG-KEY-nux.rosudorpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm3更新YUM缓存1sudoyum update -y4 安装FFmpeg1sudoyuminstall-y ffmpeg ffmpeg-devel5验证安装1ffmpeg -version2、安装PHP1sudoyuminstallphp php-cli验证安装1php -v3、php脚本123456789101112131415161718192021222324252627282930313233343536373839?php// 设置输入视频文件、切片时长秒和输出目录$videoFile/data/video/input.mp4;// 输入视频文件路径$segmentDuration 10;// 切片时长单位秒$outputDiroutput;// 输出目录// 确保输出目录存在if(!is_dir($outputDir)) {mkdir($outputDir, 0777, true);}// 构建并执行FFmpeg命令以生成.m3u8播放列表和.ts切片文件// 使用-strict -2参数允许使用实验性编码器aac$cmdffmpeg -i .escapeshellarg($videoFile) . -codec:v libx264 -codec:a aac -strict -2 -hls_time .escapeshellarg($segmentDuration) . -hls_list_size 0 -hls_flags delete_segments .escapeshellarg($outputDir./output.m3u8);// 或者如果您有 libfdk_aac 可用可以替换 -codec:a aac -strict -2 为 -codec:a libfdk_aac// $cmd ffmpeg -i . escapeshellarg($videoFile) .// -codec:v libx264 -codec:a libfdk_aac -hls_time . escapeshellarg($segmentDuration) .// -hls_list_size 0 -hls_flags delete_segments . escapeshellarg($outputDir . /output.m3u8);shell_exec($cmd);// 设置目标目录$targetDirtarget_dir;if(!is_dir($targetDir)) {mkdir($targetDir, 0777, true);}// 检查.m3u8文件是否存在$playlistFile$outputDir./output.m3u8;if(file_exists($playlistFile)){// 复制.m3u8播放列表文件copy($playlistFile,$targetDir./output.m3u8);// 获取所有.ts切片文件并将其复制到目标目录$tsFilesglob($outputDir./*.ts);foreach($tsFilesas$tsFile) {copy($tsFile,$targetDir./.basename($tsFile));}echo视频切片及文件复制操作完成。\n;}else{echoFFmpeg处理失败未找到输出文件。\n;}?4、创建目录/data视频目录/data/videophp脚本目录/data 脚本名称slice_video.php5、执行脚本1php slice_video.php6、生成的切片文件夹7、安装Nginx1安装1sudoyuminstallnginx -y2启动 Nginx12sudosystemctl start nginxsudosystemctlenablenginx3 检查 Nginx 状态1sudosystemctl status nginx4关闭防火墙123sudosystemctl stop firewalldsudosystemctl disable firewalldsudosystemctl status firewalld5nginx.conf文件配置文件位置/etc/nginx/nginx.conf1234567891011121314151617181920212223242526272829303132333435363738394041424344454647sudo 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_headerCache-Controlno-cache;add_headerAccess-Control-Allow-Origin*;}}}8、编写html播放器1234567891011121314151617181920212223242526272829303132333435!DOCTYPE htmlhtmllangenheadmetacharsetUTF-8titleHLS Stream Player/titlescriptsrchttps://cdn.jsdelivr.net/npm/hls.jslatest/script/headbodyh1视频播放器/h1videoidvideocontrols autoplay/videoscriptif(Hls.isSupported()) {var video document.getElementById(video);var hls new Hls();// 这里替换为你的.m3u8文件的实际URLvar url http://192.168.126.129/hls/output.m3u8; // 替换为你的实际URLhls.loadSource(url);hls.attachMedia(video);hls.on(Hls.Events.MANIFEST_PARSED, function() {video.play();});} else if (video.canPlayType(application/vnd.apple.mpegurl)) {// 如果浏览器直接支持HLS则可以直接设置srcvideo.src http://192.168.126.129/hls/output.m3u8; // 替换为你的实际URLvideo.addEventListener(loadedmetadata, function() {video.play();});}/script/body/html到此这篇关于PHP调用FFmpeg实现视频切片的文章就介绍到这了,

相关推荐

运动健身社交媒体数据分析:从数据采集到业务洞察的完整指南
运动健身社交媒体数据分析:从数据采集到业务洞察的完整指南

今年年初,一个做运动消费品牌的朋友问我:社交媒体数据分析到底能不能帮我们定下下一季的产品方向?他手里有几十万条运动健身相关的打卡帖、评论和话题数据,却不知道怎么转化成决策。这个问题我太熟了。过去几年,我帮健… · 2026/9/23 21:50:25

信用卡客户价值预测实战:多元线性回归建模与报告输出
信用卡客户价值预测实战:多元线性回归建模与报告输出

简介:一套完整的Python多元线性回归实战项目,聚焦信用卡客户价值预测场景,适合作数据分析和机器学习课程的期末大作业、课程设计或毕业设计参考。项目包含可直接运行的Python代码、客户价值数据表,以及项目设计报告的Markdown、PD… · 2026/9/23 21:50:18

大模型多机并行训练与推理的 GPU 故障隔离:nvidia-smi drain 编排实战
大模型多机并行训练与推理的 GPU 故障隔离:nvidia-smi drain 编排实战

大模型多机并行训练与推理的 GPU 故障隔离:nvidia-smi drain 编排实战在大规模 GPU 集群中,硬件故障率与显卡数量呈严格的正相关关系。当集群规模达到上千张 A100/H800/H100 显卡时,每天几乎都会遇到不同程度的硬件亚健康与不可逆损坏&#x… · 2026/9/23 21:49:53

Apple Pay集成实战:从apple-pay.rar审包到服务端验签全指南
Apple Pay集成实战:从apple-pay.rar审包到服务端验签全指南

简介:面向SpringBoot开发者的Apple Pay服务端回调验证实现包,围绕iOS支付令牌接收、JWT解码、签名校验与Apple服务端通信展开,适合快速接入苹果支付的中高级Java工程师。压缩包共98个文件,以XML配置、Java源码、Class编译类为主&a… · 2026/9/23 22:27:59

数据分析网站怎么选?按阶段分类的实用推荐
数据分析网站怎么选?按阶段分类的实用推荐

经常有人私信我“数据分析方面比较好的几个网站有哪些”,这问题我每次回答都不一样,因为阶段不同答案就不同。先说一段我的个人经历:刚入行那会儿,浏览器收藏夹里塞了一百多个所谓“数据分析必备网站”,结果三个月后真… · 2026/9/23 22:27:59

Airbyte Python CDK 流 Schema 定义全指南:静态 JSON、动态生成与混合模式
Airbyte Python CDK 流 Schema 定义全指南:静态 JSON、动态生成与混合模式

Airbyte Python CDK 流 Schema 定义全指南:静态 JSON、动态生成与混合模式 【免费下载链接】airbyte Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-host… · 2026/9/23 22:27:53

在 Azure Container Apps 上托管 Orleans 集群:拓扑设计、端点映射与生产级部署指南
在 Azure Container Apps 上托管 Orleans 集群:拓扑设计、端点映射与生产级部署指南

在 Azure Container Apps 上托管 Orleans 集群:拓扑设计、端点映射与生产级部署指南 【免费下载链接】orleans Cloud Native application framework for .NET 项目地址: https://gitcode.com/gh_mirrors/or/orleans Azure Container Apps 是 .NET 云原生应用… · 2026/9/23 22:27:47

Python二维码与条形码生成识别实战:从批量制作到摄像头实时扫码
Python二维码与条形码生成识别实战:从批量制作到摄像头实时扫码

最近做的一个小工具涉及条形码和二维码的生成与识别,前后折腾了几天,总算把从生成、打印、到扫码入库这套流程完整跑通了。整个过程踩了不少坑,比如pyzbar在Windows上安装失败、批量生成标签时编码乱码、摄像头实时识别时二维码一闪而过却识别… · 2026/9/23 22:27:41

Kubernetes 边缘节点高可用配置实战:keepalived VIP + Traefik Ingress 单一入口方案(kubernetes-handbook)
Kubernetes 边缘节点高可用配置实战:keepalived VIP + Traefik Ingress 单一入口方案(kubernetes-handbook)

教程云原生容器编排 【免费下载链接】kubernetes-handbook Kubernetes 架构与生态:从云原生到 AI 原生基础设施的构建指南 项目地址: https://gitcode.com/gh_mirrors/ku/kubernetes-handbook 点击查看 免费下载 导读 在 Kubernetes 集群中&#xff0c… · 2026/9/23 22:27:28

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码