php - 在php中获取ffmpeg中的音频持续时间

标签 php laravel ffmpeg

我正在使用 PHP-FFMpeg处理音频和视频文件的库。

我知道要获得特定视频的持续时间可以这样:

$ffprobe    = \FFMpeg\FFProbe::create();
$duration   = $ffprobe->format('path/to/file')->get('duration');

但我知道如何为给定的音频文件做到这一点。

有人知道解决方案吗?

最佳答案

它对音频的工作方式应该与对视频的工作方式完全相同。

例如这段代码:

$ffprobe    = \FFMpeg\FFProbe::create();
$durationMp3   = $ffprobe->format('test.mp3')->get('duration');
$durationFlac   = $ffprobe->format('test.flac')->get('duration');

echo "$durationMp3\n";
echo "$durationFlac\n";

输出 mp3 和 FLAC 格式的持续时间(以秒为单位):
255.477551
255.477551

您的音频文件是否可能未正确编码,因此 ffmpeg 本身无法识别?

您可以尝试运行 cli 命令:
ffmpeg -i test.mp3 2>&1 | grep Duration | awk '{print $2}' | tr -d ,

对于它产生的相同 test.mp3
00:04:15.48

这与生成的 php 代码相同的 255.48 秒

如果直接运行 ffmpeg 没有产生任何有用的东西,那么问题出在音频文件本身。然后,您可以修复文件或使用其他(正确编码的)文件进行测试。

关于php - 在php中获取ffmpeg中的音频持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42371387/

相关文章:

php - 使用Twig显示PHP对象参数

php - 在Laravel中如何在编译前每次在运行时更改 View 内容

php - Laravel:通过 xp_start 和 xp_end 查找行

video - 音频在 ffmpeg 视频转换中不起作用

ffmpeg 视频压缩/特定文件大小

php - 如何在单击时更改文本字段的值?

php - 在带有进度条的浏览器中上传大文件,更喜欢没有 flash,只有 js 和 php

php - MYSQL & PHP 将 LAST_INSERT_ID() 保存为局部变量

facebook - OAuth2、Facebook 身份验证和移动 API

c++ - 在 C++ 中使用 FFmpeg 覆盖视频帧