closca / sonus
由ffmpeg驱动的laravel音频和视频转换、缩略图生成和元数据编辑包
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
Requires (Dev)
- phpunit/phpunit: 4.1.*
This package is not auto-updated.
Last update: 2024-07-20 15:05:34 UTC
README
**** 注意 **** 这是对 https://github.com/rafasamp/sonus 的重复。我之所以重复,是因为原始包已被放弃,我需要更多的东西来在Laravel上处理视频。Sonus是一个工具,旨在利用Laravel 4和ffmpeg的强大功能来执行以下任务:
- 音频/视频转换
- 视频缩略图生成
- 元数据操作
快速入门
设置
更新你的 composer.json
文件,并在 require
键下添加以下内容
"closca/sonus": "dev-master"
对于Laravel 5,使用
"closca/sonus": "dev-l5"
运行composer update命令
$ composer update
在 config/app.php
中,将 'Closca\Sonus\SonusServiceProvider'
添加到 $providers
数组的末尾
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Closca\Sonus\SonusServiceProvider',
),
仍然在 config/app.php
中,将 'Sonus' => 'Closca\Sonus\Facade'
添加到 $aliases
数组
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
...
'Sonus' => 'Closca\Sonus\Facade',
),
运行以下 artisan
命令以发布配置文件
$ php artisan config:publish Closca/Sonus
导航到 app/config/packages/Closca/Sonus/config.php
并更新所有四个参数
示例
以下是将文件从FLAC转换为AAC的简单示例
Sonus::convert()->input('foo.flac')->bitrate(128)->output('bar.aac')->go();
Sonus还可以转换视频文件
Sonus::convert()->input('foo.avi')->bitrate(300, 'video')->output('bar.flv')->go();
Sonus还可以返回媒体信息作为数组或JSON
Sonus::getMediaInfo('foo.mov');
Sonus还可以轻松生成类似这样的智能电影缩略图
Sonus::getThumbnails('foo.mp4', 'foo-thumb', 5); // Yields 5 thumbnails
Sonus还可以为你的电影生成缩略图(创建短预览的缩略图)
Sonus::thumbnify('foo.mp4', 'foo-thumb', 40, '400'); // Yields 40 thumbnails (every 10 seconds) and video has 400 secs
尽管Sonus包含多个预设参数,但你也可以传递自己的参数
Sonus::convert()->input('foo.flac')->output('bar.mp3')->go('-b:a 64k -ac 1');
跟踪进度
请确保在config.php文件中正确设置了progress
和tmp_dir
选项
'progress' => true,
...
'tmp_dir' => '/Applications/ffmpeg/tmp/'
在初始化转换时传递进度方法
Sonus::convert()->input('foo.avi')->output('bar.mp3')->progress('uniqueid')->go();
现在你可以编写一个控制器操作来返回你传递的工作ID的进度,并使用你喜欢的任何JavaScript版本调用它
public function getJobProgress($id)
{
return Sonus::getProgress('uniqueid');
}
安全性和兼容性
Sonus使用PHP的shell_exec函数来执行ffmpeg和ffprobe命令。如果正在运行PHP 5.3或以下版本,并且启用了安全模式,则该命令将被禁用。
请确保ffmpeg和ffprobe至少是以下版本
- ffmpeg: 2.1.*
- ffprobe: 2.0.*
此外,请记住,文件路径必须相对于你的系统上FFMPEG的位置。为了确保兼容性,将输入和输出文件的完整路径传递是一个好习惯。以下是在Laravel中工作的示例
$file_in = Input::file('audio')->getRealPath();
$file_out = '\path\to\my\file.mp3';
Sonus::convert()->input($file_in)->output($file_out)->go();
最后,Sonus只能转换到ffmpeg支持的格式。要检查你的ffmpeg版本是否配置为编码或解码特定格式,你可以使用以下命令在php artisan tinker
中运行
var_dump(Sonus::canEncode('mp3'));
var_dump(Sonus::canDecode('mp3'));
要获取所有支持格式的列表,你可以运行
var_dump(Sonus::getSupportedFormats());
故障排除
在打开问题之前,请确保以下陈述是正确的
-
我能够使用与Sonus配置文件中定义的相同路径在终端访问FFMPEG
-
我已经检查了web服务器的错误日志,并且没有找到FFMPEG输出消息
通常,遵循以下两个步骤就可以解决所有问题。如果你仍然遇到问题,你始终可以打开一个故障报告。
许可证
Sonus 是一个遵循 MIT 许可协议免费分发的软件。
更多信息
如有任何疑问,请随时联系我。
如有任何问题,请在此处报告