上一篇
📰 最新动态(2025-08)
短视频和播客内容持续爆发式增长,据统计,全球每分钟上传的视频时长已突破 50万小时!对于开发者而言,快速提取音视频元信息(如时长)成为常见需求,PHP作为后端主力语言之一,如何高效实现这一功能?本文将手把手教你用PHP搞定!
✅ 用户体验:前端展示“总时长”进度条
✅ 数据分析:统计用户观看/收听时长占比
FFmpeg是音视频处理的“瑞士军刀”,通过PHP调用命令行即可获取时长:
function getVideoDuration($filePath) { $command = "ffmpeg -i " . escapeshellarg($filePath) . " 2>&1 | grep 'Duration' | cut -d ' ' -f 4"; $duration = shell_exec($command); return substr($duration, 0, -1); // 去掉末尾逗号 } // 示例:获取MP4视频时长 $videoPath = 'uploads/video.mp4'; echo "🎥 视频时长:" . getVideoDuration($videoPath); // 输出:00:05:23.45
优点:支持几乎所有视频格式(MP4、AVI、MOV等)
注意:需确保服务器已安装FFmpeg(安装命令:sudo apt install ffmpeg
)
通过Composer安装封装好的PHP-FFmpeg库:
composer require php-ffmpeg/php-ffmpeg
代码实现:
use FFMpeg\FFProbe; $ffprobe = FFProbe::create(); $duration = $ffprobe->format('uploads/video.mp4')->get('duration'); echo "⏱️ 精确到秒:" . round($duration) . "秒"; // 输出:323秒
适用场景:需要更精细控制(如获取分辨率、码率等)
对于MP3文件,可用PHP内置函数快速解析:
function getAudioDuration($mp3Path) { $id3 = getid3($mp3Path); return $id3['playtime_string']; // 返回格式化时长 } // 示例 echo "🔊 音频时长:" . getAudioDuration('audio.mp3'); // 输出:03:45
依赖:需安装getid3
库(composer require james-heinrich/getid3
)
escapeshellarg
转义) ffmpeg -v error -i file.mp4
检测 // 结合日期显示友好格式 function formatDuration($seconds) { return gmdate("H:i:s", $seconds); // 将秒转为 时:分:秒 }
方法 | 适用场景 | 精度 |
---|---|---|
FFmpeg命令行 | 通用视频/音频 | 高(毫秒) |
PHP-FFmpeg扩展 | 需要其他元信息 | 高 |
getID3 | 仅MP3音频 | 中 |
💡 小贴士:如果是Web应用,建议在前端通过<video>
标签的duration
属性直接获取,减少服务器压力!
试着用PHP给你的音视频文件“把把脉”吧! 🚀
本文由 令狐夏旋 于2025-08-01发表在【云服务器提供商】,文中图片由(令狐夏旋)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/507958.html
发表评论