全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

视频转码如何触发php代码执行_视频转码触发php代码执行方法【解析】

视频转码同步执行PHP代码有五种方法:一、FFmpeg命令后用&&调用PHP脚本;二、通过-progress HTTP接口轮询触发回调;三、监听输出文件写入完成事件;四、借助消息队列解耦执行;五、利用-vstats_file生成日志触发钩子。

如果在视频转码过程中需要同步执行 PHP 代码,通常是因为需在转码完成、失败或特定阶段触发业务逻辑,例如更新数据库状态、发送通知、生成缩略图或写入日志。以下是实现该目标的多种方法:

一、通过 FFmpeg 的 -exec 或 -report 机制配合 shell 脚本调用 PHP

FFmpeg 本身不直接支持 PHP 执行,但可通过其 -exec 参数(需编译时启用)或结合 shell 脚本,在转码结束时调用 PHP 解释器运行指定脚本。

1、编写 PHP 脚本 /var/www/trigger/transcode_done.php,确保具有可执行权限且 Web 服务器用户可读。

2、构造 FFmpeg 命令,在转码完成后执行 shell 命令:ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4 -y && php /var/www/trigger/transcode_done.php

3、若需传递参数(如输入文件名、输出路径),可在命令中追加:&& php /var/www/trigger/transcode_done.php "input.mp4" "output.mp4"。

二、使用 FFmpeg 的 -progress HTTP 接口轮询并触发回调

FFmpeg 支持通过 -progress 参数向 HTTP 端点持续上报进度,PHP 后端可监听该端点,在收到 finish 事件时执行对应逻辑。

1、启动一个轻量 PHP HTTP 服务(如使用 PHP 内置服务器)监听 /transcode-progress。

2、运行 FFmpeg 命令:ffmpeg -i input.mp4 -c:v libx264 output.mp4 -y -progress http://127.0.0.1:8000/transcode-progress

3、PHP 服务接收到包含 quit=1 或 progress=finished 的 POST 请求后,解析 query 参数并调用业务函数。

三、基于文件系统事件监听转码输出文件生成

当转码输出文件被完整写入磁盘时,可借助 inotifywait(Linux)或 fswatch(macOS)监控目标目录,检测文件创建或关闭写入事件,进而调用 PHP 脚本。

1、安装 inotify-tools:apt-get install inotify-tools(Debian/Ubuntu)。

2、运行监听命令:inotifywait -m -e close_write /var/www/output/ | while read path action file; do [ \"\$file\" = \"output.mp4\" ] && php /var/www/trigger/on_file_complete.php \"\$file\"; done

3、确保 PHP 脚本中校验文件大小是否稳定(避免监听到未写完的临时文件),可添加 sleep 1 后二次 stat 比对。

四、通过消息队列解耦转码与 PHP 执行

将转码任务提交至队列系统(如 Redis List、RabbitMQ),由独立的 PHP Worker 进程消费任务并在转码结束后执行回调逻辑,提升可靠性与扩展性。

1、FFmpeg 转码完成后,使用 redis-cli 向队列推送完成消息:echo \"{'job_id':'abc123','status':'done','output':'/out/video.mp4'}\" | redis-cli -n 2 RPUSH transcode_queue

2、PHP Worker 使用 while 循环阻塞式读取:$msg = $redis->blPop('transcode_queue', 0)。

3、Worker 解析 JSON 消息,调用业务类处理完成事件,如更新 MySQL 中 job_status 字段为 completed。

五、利用 FFmpeg 的 -f null 输出配合 -vstats_file 触发钩子

通过伪造一个无实际输出的转码流程(-f null),同时启用 -vstats_file 记录统计信息,当该文件被成功创建并写入最终帧数据时,视为转码逻辑完成,可触发 PHP 调用。

1、执行命令:ffmpeg -i input.mp4 -f null -vstats_file /tmp/vstats_abc.log -v quiet -stats

2、编写检测脚本定期检查 /tmp/vstats_abc.log 是否存在且末尾含 frame=xxxx,表示已到达终帧。

3、一旦确认完成,执行:php /var/www/trigger/post_vstats.php /tmp/vstats_abc.log,由 PHP 解析日志提取耗时、帧数等信息。


# mysql  # php  # linux  # redis  # js  # json  # ubuntu  # 后端  # mac  # ai  # macos  # cos  # rabbitmq  # echo  # NULL  # while  # 循环  # 接口  # var  # 事件  # input  # 数据库  # http  # debian  # ffmpeg  # 回调  # 帧数  # 完成后  # 是因为  # 并在  # 可在  # 可通过  # 五种  # 统计信息  # 该文件 


相关文章: 建站主机功能解析:服务器选择与快速搭建指南  建站之星3.0如何解决常见操作问题?  如何用西部建站助手快速创建专业网站?  如何在Ubuntu系统下快速搭建WordPress个人网站?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  设计网站制作公司有哪些,制作网页教程?  音乐网站服务器如何优化API响应速度?  制作网页的网站有哪些,电脑上怎么做网页?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  制作门户网站的参考文献在哪,小说网站怎么建立?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  如何在七牛云存储上搭建网站并设置自定义域名?  如何快速搭建高效可靠的建站解决方案?  建站VPS能否同时实现高效与安全翻墙?  建站之星安装后界面空白如何解决?  招贴海报怎么做,什么是海报招贴?  如何在景安服务器上快速搭建个人网站?  浅析上传头像示例及其注意事项  如何通过二级域名建站提升品牌影响力?  如何通过老薛主机一键快速建站?  如何在万网自助建站中设置域名及备案?  公司网站的制作公司,企业网站制作基本流程有哪些?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  建站之星如何快速生成多端适配网站?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何破解联通资金短缺导致的基站建设难题?  如何在VPS电脑上快速搭建网站?  建站之星2.7模板:企业网站建设与h5定制设计专题  如何用美橙互联一键搭建多站合一网站?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  北京制作网站的公司,北京铁路集团官方网站?  C++中引用和指针有什么区别?(代码说明)  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  如何在阿里云香港服务器快速搭建网站?  如何高效利用200m空间完成建站?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何用y主机助手快速搭建网站?  太原网站制作公司有哪些,网约车营运证查询官网?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  如何通过建站之星自助学习解决操作问题?  Android自定义控件实现温度旋转按钮效果  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  网站制作软件有哪些,制图软件有哪些?  中山网站制作网页,中山新生登记系统登记流程?  相册网站制作软件,图片上的网址怎么复制?  广州美橙建站如何快速搭建多端合一网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。