hansim / sonus
由ffmpeg驱动的laravel音频和视频转换、缩略图生成器和元数据编辑器包
Requires
- laravel/framework: 5.*
This package is not auto-updated.
Last update: 2024-09-20 19:26:02 UTC
README
**** 注意 **** 这是一个https://github.com/rafasamp/sonus的副本。我创建了这个副本,因为原始包已被遗弃,我需要更多与Laravel视频工作的功能。Sonus是一个工具,旨在利用Laravel 4和ffmpeg的力量来完成以下任务:
- 音频/视频转换
- 视频缩略图生成
- 元数据操作
快速开始
设置
更新你的composer.json
文件,在require
键下添加以下内容
"hansim/sonus": "dev-master"
对于Laravel 5使用
"hansim/sonus": "dev-l5"
运行composer update命令
$ composer update
在你的config/app.php
中,将'Hansim\Sonus\SonusServiceProvider'
添加到$providers
数组的末尾
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Hansim\Sonus\SonusServiceProvider',
),
仍在config/app.php
中,将'Sonus' => 'Hansim\Sonus\Facade'
添加到$aliases
数组
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
...
'Sonus' => 'Hansim\Sonus\Facade',
),
运行下面的artisan
命令以发布配置文件
$ php artisan config:publish Hansim/Sonus
导航到app/config/packages/Hansim/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许可证条款分发的免费软件。
附加信息
有任何问题,请随时联系我。
如有任何问题,请在此处报告