closca/sonus

此包已被放弃,不再维护。未建议替代包。

由ffmpeg驱动的laravel音频和视频转换、缩略图生成和元数据编辑包

维护者

详细信息

github.com/closca/sonus

源代码

问题

安装次数: 6,595

依赖项: 0

建议者: 0

安全性: 0

星标: 22

关注者: 6

分支: 35

开放问题: 9

语言:JavaScript

dev-master 2015-06-10 13:56 UTC

This package is not auto-updated.

Last update: 2024-07-20 15:05:34 UTC


README

Latest Stable Version Build Status Total Downloads ProjectStatus License

**** 注意 **** 这是对 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文件中正确设置了progresstmp_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());

故障排除

在打开问题之前,请确保以下陈述是正确的

  1. 我能够使用与Sonus配置文件中定义的相同路径在终端访问FFMPEG

  2. 我已经检查了web服务器的错误日志,并且没有找到FFMPEG输出消息

通常,遵循以下两个步骤就可以解决所有问题。如果你仍然遇到问题,你始终可以打开一个故障报告。

许可证

Sonus 是一个遵循 MIT 许可协议免费分发的软件。

更多信息

如有任何疑问,请随时联系我。

如有任何问题,请在此处报告