A.B*_*per 1 php ffmpeg laravel
我正在使用PHP-FFMpeg库来处理音频和视频文件.
我知道要获得特定视频的持续时间可以这样:
$ffprobe = \FFMpeg\FFProbe::create();
$duration = $ffprobe->format('path/to/file')->get('duration');
Run Code Online (Sandbox Code Playgroud)
但我知道如何为给定的音频文件执行此操作.
有人知道解决方案吗?
小智 5
对于音频和视频,它的工作方式应该完全相同.
例如这段代码:
$ffprobe = \FFMpeg\FFProbe::create();
$durationMp3 = $ffprobe->format('test.mp3')->get('duration');
$durationFlac = $ffprobe->format('test.flac')->get('duration');
echo "$durationMp3\n";
echo "$durationFlac\n";
Run Code Online (Sandbox Code Playgroud)
输出mp3和FLAC格式的持续时间(以秒为单位):
255.477551
255.477551
Run Code Online (Sandbox Code Playgroud)
您的音频文件是否可能未正确编码,因此ffmpeg本身无法识别?
您可以尝试运行cli命令:
ffmpeg -i test.mp3 2>&1 | grep Duration | awk '{print $2}' | tr -d ,
Run Code Online (Sandbox Code Playgroud)
对于它产生的相同test.mp3
00:04:15.48
Run Code Online (Sandbox Code Playgroud)
这与php代码生成的255.48秒相同
如果直接运行ffmpeg不会产生任何有用的东西,那么问题在于音频文件本身.然后,您可以修复文件或使用其他(正确编码的)文件进行测试.