本文目录导读:

在 Laravel 中进行音频处理,可以根据不同的需求选择合适的库,以下是几个常用且功能强大的选项:
FFmpeg(最推荐)
功能最全面,几乎可以处理所有音频需求。
安装
# 安装 FFmpeg 系统依赖 sudo apt-get install ffmpeg # 或 macOS brew install ffmpeg # 安装 PHP FFmpeg 库 composer require pbmedia/laravel-ffmpeg
使用示例
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg;
// 音频格式转换
FFMpeg::fromDisk('local')
->open('audio.mp3')
->export()
->toDisk('public')
->inFormat(new \FFMpeg\Format\Audio\Aac())
->save('output.aac');
// 音频剪辑
FFMpeg::fromDisk('local')
->open('audio.mp3')
->export()
->addFilter('-ss 00:00:30 -to 00:01:30')
->save('clip.mp3');
// 合并音频
FFMpeg::fromDisk('local')
->open(['audio1.mp3', 'audio2.mp3'])
->concat()
->export()
->save('merged.mp3');
// 获取音频信息
$audio = FFMpeg::open('audio.mp3');
$duration = $audio->getDurationInSeconds();
$format = $audio->getFormat();
getID3
专门用于获取音频元数据,性能好,无需外部依赖。
安装
composer require james-heinrich/getid3
使用
use JamesHeinrich\GetID3\GetID3;
$getID3 = new GetID3();
$file = $getID3->analyze(storage_path('app/audio.mp3'));
// 获取信息
$duration = $file['playtime_seconds'];
$bitrate = $file['audio']['bitrate'];
$sample_rate = $file['audio']['sample_rate'];
$channels = $file['audio']['channels'];
Laravel Audio Video
专为 Laravel 设计的多媒体处理包,封装了常用功能。
安装
composer require shyvlas/laravel-audio-video
使用
// 音频处理
use Shevlas\LaravelAudioVideo\Facades\Audio;
$audio = Audio::open('audio.mp3');
$audio->clip(0, 30); // 前30秒
$audio->export('clip.mp3');
PHP Wav Utilities
专门处理 WAV 格式音频的 PHP 库。
安装
composer require refbyte/phpaudiotools
使用
use Refbyte\Phpaudiotools\Wav;
$wav = new Wav('audio.wav');
$duration = $wav->getLength();
$sampleRate = $wav->getSampleRate();
推荐方案
根据不同需求选择:
| 场景 | 推荐库 | 原因 |
|---|---|---|
| 格式转换、剪辑、合并 | FFmpeg | 功能最全面 |
| 仅读取元数据 | getID3 | 轻量、快速 |
| 简单的 WAV 处理 | PHP Wav Utilities | 专门针对 WAV |
| Laravel 原生集成 | Laravel FFMPEG | 优雅的 Laravel API |
实际项目示例
// app/Services/AudioService.php
namespace App\Services;
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg;
use JamesHeinrich\GetID3\GetID3;
class AudioService
{
public function processAudio(string $path): array
{
// 获取元数据
$getID3 = new GetID3();
$metadata = $getID3->analyze(storage_path("app/{$path}"));
// 音频处理
$output = 'processed_' . time() . '.mp3';
FFMpeg::fromDisk('local')
->open($path)
->export()
->addFilter('-codec:a libmp3lame -b:a 128k') // 转码为 MP3 128kbps
->save($output);
return [
'original' => $metadata,
'output' => $output,
'duration' => $metadata['playtime_seconds']
];
}
}
建议根据项目的具体需求(音频格式、处理复杂度、性能要求)选择合适的库,如果只是简单的音频元数据读取,getID3 就足够了;如果需要复杂的音频处理,首选 FFmpeg。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播