sproutvideo/sproutvideo

用于 SproutVideo (https://sproutvideo.com) 的 PHP 客户端

v2.0.0 2024-09-24 19:45 UTC

README

使用此库与 SproutVideo API 交互

安装

使用 Composer 安装

如果您使用 Composer 管理依赖项,可以使用以下命令添加 SproutVideo。

{
  "require": {
    "sproutvideo/sproutvideo": "1.5.1"
  }
}

Composer 将为您处理自动加载,因此如果您需要 vendor/autoload.php,您就可以开始了。

从 GitHub 安装源代码

要安装源代码

$ git clone git://github.com/sproutvideo/sproutvideo-php.git

然后使用自动加载器包含它

<?php
require_once '/path/to/sproutvideo-php/lib/SproutVideo/Autoloader.php';
SproutVideo_Autoloader::register();
?>

入门

与 SproutVideo API 交互的第一件事是您的 API 密钥。

<?php
SproutVideo::$api_key = 'abcd1234';
?>

视频

以下方法可用: list_videosget_videocreate_videoupdate_videoreplace_videodelete_video

list_videos

默认情况下,视频列表按每页 25 个视频分页,并按上传日期升序排序。您可以通过传递两个参数来控制分页:page 和 per_page。您还可以传递标签的 ID 以仅返回带有该标签的视频。

<?php
SproutVideo\Video::list_videos();
SproutVideo\Video::list_videos(array('per_page' => 10));
SproutVideo\Video::list_videos(array('per_page' => 10, 'page' => 2));
SproutVideo\Video::list_videos(array('tag_id' => 'abc'));
?>

get_video

传递给 get_video 的字符串是 SproutVideo 视频的 ID。

<?php
SproutVideo\Video::get_video('abc123');
?>

create_video

您可以执行的最基本的上传是将视频文件的路径传递给该方法。视频的标题将默认为文件名。

<?php
SproutVideo\Video::create_video('/path/to/video.mp4');
?>

您也可以通过传递数组来设置标题以及许多其他参数

<?php
SproutVideo\Video::create_video('/path/to/video.mp4', array('title' => 'My Awesome Video', 'description' => 'This video is great', 'privacy' => 2));
?>

您还可以通过传递它们的 ID 来为新上传应用任意数量的标签

<?php
SproutVideo\Video::create_video('/path/to/video.mp4', array('tags' => array('ec61', 'abc123'));
?>

您还可以在上传时动态创建和应用程序标签,通过传递标签名称

<?php
SproutVideo\Video::create_video('/path/to/video.mp4', array('tag_names' => array('Tag One', 'Tag Two'));
?>

您还可以指定 webhook URL。当视频完成处理或处理过程中发生错误时,我们将发送带有视频 JSON 的 HTTP POST。

<?php
SproutVideo\Video::create_video('/path/to/video.mp4', array('notification_url' => 'https://example.com/webhook_url'));
?>

最后,如果您使用 source_video_url 参数而不是直接上传文件,请使用以下语法

<?php
SproutVideo\Video::create_video(null, array('source_video_url' => 'https://example.com/video-file.mp4'));
?>

update_video

第一个参数是要编辑的视频的 ID。第二个参数是要更新的视频的属性数组。

<?php
SproutVideo\Video::update_video('abc123', array('title' => 'Updated Title'));
?>

replace_video

第一个参数是要替换的视频的 ID。第二个参数是视频文件的本地路径。

<?php
SproutVideo\Video::replace_video('abc123', '/path/to/video.mp4');
?>

标签

要将标签添加到视频,请确保包含所有当前与视频关联的标签。例如,如果视频已经具有 ID 为 "abc" 和 "123" 的标签,并且您要添加 ID 为 "def" 的标签,请将 "abc"、"123" 和 "def" 传递给更新方法。

<?php
SproutVideo\Video::update_video('abc123', 'tags' => array("abc", "123", "def"));
?>

如果您要从视频中删除标签,请从视频上的标签列表中删除该标签,但请确保包含您希望保留的所有标签。例如,如果您现在要删除上面示例中的 ID 为 "123" 的标签,请传递 "abc" 和 "def"。

<?php
SproutVideo\Video::update_video("abc123", array('tags' => array("abc","def"));
?>

您可以通过仅传递空数组作为标签参数来从视频中删除所有标签。

<?php
SproutVideo\Video::update_video('abc123', array('tags' => array()));
?>

上传海报帧

您可以通过调用upload_poster_frame方法来上传视频的自定义海报帧。第一个参数是要关联海报帧的视频的id,第二个参数是图像文件的路径。

<?php
SproutVideo\Video::upload_poster_frame('abc123','/path/to/video.mp4');
?>

delete_video

传入您要删除的视频的id。

<?php
SproutVideo\Video::delete_video('abc123');
?>

签名嵌入代码

您可以使用此便利方法来签名嵌入代码。它将返回嵌入代码URL,可用于构建iframe嵌入代码。

<?php
SproutVideo\Video::signed_embed_code($video_id, $security_token, $query_parameters, $expiration_time, $protocol);
?>

参数

video_id - String ( 必需 ) : 您要生成签名嵌入代码的视频的id

security_token - String ( 必需 ) : 您要生成签名嵌入代码的视频的安全令牌

query_parameteres - Array ( 可选 ) : 要传递给嵌入代码的查询参数数组。例如:array('type' => 'hd', 'autoplay' => 'true')

expiration_time - Integer ( 可选 ) : 从Epoc起,此签名嵌入代码应该过期的秒数。默认为生成签名嵌入代码时的5分钟。

protocol - String ( 可选 ) : httphttps。默认为 http

示例

<?php
SproutVideo\Video::signed_embed_code('abc123','def456'); #sign a base embed code with no other options
SproutVideo\Video::signed_embed_code('abc123','def456', array('type' => 'hd')); #set parameters for the embed code such as changing the default video type to HD
SproutVideo\Video::signed_embed_code('abc123','def456', array(), 1368127991); #set a specific expiration time for the signed embed code. (By default the expiration time is set to 5 minutes from the time the signed embed code was generated).
SproutVideo\Video::signed_embed_code('abc123','def456', array(), null, 'https'); #Use https instead of http
?>

上传令牌

以下方法可用:create_upload_token

create_upload_token

<?php
SproutVideo\UploadToken::create_upload_token();
SproutVideo\UploadToken::create_upload_token(array('return_url' => 'https://example.com'));
SproutVideo\UploadToken::create_upload_token(array('return_url' => 'https://example.com', 'seconds_valid' => 3600));
?>

实时流

以下方法可用:list_live_streamscreate_live_streamget_live_streamupdate_live_streamdelete_live_streamend_live_streamupload_poster_frame

list_live_streams

默认情况下,实时流列表按每页25个实时流分页,并按创建日期升序排序。您可以传入两个参数来控制分页:page和per_page。

<?php
SproutVideo\LiveStream::list_live_streams();
SproutVideo\LiveStream::list_live_streams('per_page' => 10);
SproutVideo\LiveStream::list_live_streams('per_page' => 10, 'page' => 2);
?>

get_live_stream

<?php
SproutVideo\LiveStream::get_live_stream('d3f456')
?>

create_live_stream

<?php
SproutVideo\LiveStream::create_live_stream(array('name' => 'new live_stream'));
// with a poster frame
$file = '/users/dw/beach.jpg';
$data = [ 'title' => 'beacch vibezz' ];
Sproutvideo\LiveStream::create_live_stream($data, $file);
?>

update_live_stream

<?php
SproutVideo\LiveStream::update_live_stream('abc123', array('name' => 'updated live_stream name'));
// with a poster frame
$file = '/users/dw/beach.jpg';
$data = [ 'title' => 'beacch vibezz' ];
Sproutvideo\LiveStream::update_live_stream('abc123', $data, $file);
?>

delete_live_stream

传入您要删除的实时流的id。

<?php
SproutVideo\LiveStream::delete_live_stream('abc123');
?>

end_live_stream

传入您要结束的实时流的id。

<?php
SproutVideo\LiveStream::end_live_stream('abc123');
?>

标签

以下方法可用:list_tagscreate_tagget_tagupdate_tagdelete_tag

list_tags

默认情况下,标签列表按每页25个标签分页,并按创建日期升序排序。您可以传入两个参数来控制分页:page和per_page。

<?php
SproutVideo\Tag::list_tags();
SproutVideo\Tag::list_tags('per_page' => 10);
SproutVideo\Tag::list_tags('per_page' => 10, 'page' => 2);
?>

get_tag

<?php
SproutVideo\Tag::get_tag('d3f456')
?>

create_tag

<?php
SproutVideo\Tag::create_tag(array('name' => 'new tag'));
?>

update_tag

<?php
SproutVideo\Tag::update_tag('abc123', array('name' => 'updated tag name'));
?>

delete_tag

传入您要删除的标签的id。

<?php
SproutVideo\Tag::delete_tag('abc123');
?>

文件夹

以下方法可用:list_folderscreate_folderget_folderupdate_folderdelete_folder

list_folders

默认情况下,文件夹列表按每页25个文件夹分页,并按created_at日期升序排序。您可以传入两个参数来控制分页:pageper_page。如果不传入parent_id,则仅返回根文件夹中的文件夹。要获取特定文件夹中的文件夹,请确保使用parent_id参数传入该文件夹的id。

<?php
SproutVideo\Folder::list_folders();
SproutVideo\Folder::list_folders(array('order_by' => 'name', 'order_dir' => 'desc'));
SproutVideo\Folder::list_folders(array('parent_id' => 'def456'));
?>

create_folder

在没有parent_id的情况下创建文件夹将将其放置在根文件夹中。传入parent_id将新创建的文件夹放置在由parent_id指定的文件夹中。

<?php
 // folder is created in the root folder.
SproutVideo\Folder::create_folder(array('name' => 'New Folder'));

// folder is created as a child of the folder specified by the id 'def456'
SproutVideo\Folder::create_folder(array(
  'name' => 'New Folder',
  'parent_id' => 'def456'
));
?>

get_folder

<?php
SproutVideo\Folder::get_folder('d3f456')
?>

update_folder

<?php
SproutVideo\Folder::update_folder('def456', array('name' => 'Renamed Folder'))
?>

delete_folder

默认情况下,删除文件夹时,该文件夹的所有内容(视频和文件夹)将被移动到根文件夹,以防止意外数据丢失。如果您确实要删除文件夹的所有内容,请确保将delete_all设置为true。

<?php
// delete the folder and move it's contents to the root folder
SproutVideo\Folder::delete_folder('def456');

// delete the folder and everything in it.
SproutVideo\Folder::delete_folder('def456', array('delete_all' => 'true'));
?>

播放列表

以下方法可用:list_playlistscreate_playlistget_playlsitupdate_playlistdelete_playlist

list_playlists

默认情况下,播放列表列表每页显示25个播放列表,并按创建日期升序排序。您可以通过传递两个参数来控制分页:page和per_page。

<?php
SproutVideo\Playlist::list_playlists();
SproutVideo\Playlist::list_playlists(array('per_page' => 10));
SproutVideo\Playlist::list_playlists(array('per_page' => 10, 'page' => 2));
?>

create_playlist

创建播放列表时,您可以通过在videos参数中传递要添加的视频以及它们出现的顺序来向播放列表添加视频。

<?php
SproutVideo\Playlist::create_playlist(array(
  'title' => 'New Playlist',
  'privacy' => 2,
  'videos' => array('abc123','def456','ghi789'));
?>

update_playlist

<?php
SproutVideo\Playlist::update_playlist('abc123', array('title' => 'Update Playlist Title'));
?>

videos

要向播放列表添加视频,请确保包含该播放列表当前关联的所有视频。例如,如果播放列表已经包含ID为"abc"和"123"的视频,并且您想添加ID为"def"的视频,则请将"abc"、"123"和"def"传递给update方法。

<?php
SproutVideo\Playlist::update_playlist('abc123', array('videos' => array("abc", "123", "def")));
?>

如果您想从播放列表中删除视频,请从播放列表中的视频列表中删除该视频,但请确保包含您希望保留的所有视频。例如,如果您现在想从上面的示例中删除ID为"123"的视频,请传递"abc"和"def"。

<?php
SproutVideo\Playlist::update_playlist("abc123", array('videos' => array("abc","def")));
?>

您只需传递一个空数组作为videos参数,就可以从播放列表中删除所有视频。

<?php
SproutVideo\Playlist::update_playlist('abc123', array('videos' => array()));
?>

delete_playlist

传递您想要删除的播放列表的ID。

<?php
SproutVideo\Playlist::delete_playlist('abc123');
?>

登录

以下方法可用:list_loginscreate_loginget_loginupdate_logindelete_login

list

默认情况下,登录列表每页显示25个标签,并按创建日期升序排序。您可以通过传递两个参数来控制分页:page和per_page。

<?php
SproutVideo\Login::list_logins();
SproutVideo\Login::list_logins(array('per_page' => 10));
SproutVideo\Login::list_logins(array('per_page' => 10, 'page' => 2));
?>

create_login

create_login需要两个必需参数,emailpassword,这些参数将被用来允许观众登录观看视频,如果登录与该视频的access_grant相关联。

<?php
SproutVideo\Login::create_login(array(
  'email' => 'test@example.com',
  'password' => 'thisisthepassword'));
?>

get_login

传递给get_login的字符串是SproutVideo登录的ID。

<?php
SproutVideo\Login::get_login('abc123');
?>

update_login

您可以更改登录的密码。

<?php
SproutVideo\Login::update_login('abc123',array(
  'password' => 'newpassword'));
?>

delete_login

传递您想要删除的登录的ID。

<?php
SproutVideo\Login::delete_login('asdf1234');
?>

访问授权

以下方法可用:list_access_grantscreate_access_grantget_access_grantupdate_acces_grantdelete_access_grant

list_access_grants

默认情况下,访问授权列表每页显示25个标签,并按创建日期升序排序。您可以通过传递两个参数来控制分页:page和per_page。

<?
SproutVideo\AccessGrant::list_access_grants();
SproutVideo\AccessGrant::list(array('per_page' => 10));
SproutVideo\AccessGrant::list(array('per_page' => 10, 'page' => 2));
?>

create_access_grant

create_access_grant需要两个必需参数,video_idlogin_id,这些参数将被用来允许观众根据其他可选参数登录观看视频。

<?php
SproutVideo\AccessGrant::create_access_grant(array(
  'video_id' => 'abc123',
  'login_id' => 'abc123'));
?>

bulk_create_access_grants

bulk_create_access_grants接受一个访问授权对象数组,并使用单个API调用来创建它们,从而有效地批量创建访问授权,并减少所需的API调用次数。

<?php
SproutVideo\AccessGrant::bulk_create_access_grants(
  array(
    array(
      'video_id' => 'abc123',
      'login_id' => 'abc123'
    ),
    array(
      'video_id' => 'def456',
      'login_id' => 'def456'
    )
  )
);
?>

get_access_grant

传递给get_access_grant的字符串是SproutVideo登录的ID。

<?php
SproutVideo\AccessGrant::get_access_grant('abc123');
?>

update_access_grant

您可以更改访问授权的可选参数。

<?php
SproutVideo\AccessGrant::update_access_grant('abc123', array(
  'allowed_plays' => 20,
  'access_ends_at' => '2015-04-15T00:00:00+00:00'));
?>

delete_access_grant

传递您想要删除的访问授权的ID。

<?php
SproutVideo\AccessGrant::delete_access_grant('asdf1234')
?>

分析

API客户端提供了以下分析方法

  • play_counts
  • domains
  • geo
  • video_types
  • playback types
  • device_types

请检查API文档以获取有关这些调用返回的数据的更多信息。

每个方法都可以单独调用,以获取所有时间段的总体账户数据,如下所示

<?php
SproutVideo\Analytics::play_counts();
SproutVideo\Analytics::download_counts();
SproutVideo\Analytics::domains();
SproutVideo\Analytics::geo();
SproutVideo\Analytics::video_types();
SproutVideo\Analytics::device_types();
?>

每个方法还可以接受一个包含:video_id的options数组,以检索特定视频的总体数据

<?php
SproutVideo\Analytics::play_counts(array('video_id' => 'abc123'));
SproutVideo\Analytics::download_counts(array('video_id' => 'abc123'));
SproutVideo\Analytics::domains(array('video_id' => 'abc123'));
SproutVideo\Analytics::geo(array('video_id' => 'abc123'));
SproutVideo\Analytics::video_types(array('video_id' => 'abc123'));
SproutVideo\Analytics::device_types(array('video_id' => 'abc123'));
?>

以下方法也可以接受一个包含:live的options数组,以检索特定视频的总体数据

<?php
SproutVideo\Analytics::play_counts(array('live_stream_id' => 'abc123'));
SproutVideo\Analytics::domains(array('live_stream_id' => 'abc123'));
SproutVideo\Analytics::geo(array('live_stream_id' => 'abc123'));
SproutVideo\Analytics::device_types(array('live_stream_id' => 'abc123'));
?>

每个方法还可以接受可选的:start_date和:end_date以指定返回数据的日期范围

<?php
SproutVideo\Analytics::play_counts(array('start_date' => '2013-01-01'));
SproutVideo\Analytics::device_types(array('video_id' => 'abc123', 'end_date' => '2012-12-31'));
?>

geo方法可以接受可选的:country以获取该国城市内的播放数据

<?php
SproutVideo\Analytics::geo(array('video_id' => 'abc123', 'country' => 'US'));
?>

其他分析端点

<?php
SproutVideo\Analytics::popular_videos();
SproutVideo\Analytics::popular_downloads();
?>

参与度

您可以通过这种方式获取已观看视频的总秒数

<?php
SproutVideo\Analytics::engagement();
?>

对于直播

<?php
SproutVideo\Analytics::live_streams_engagement();
?>

您可以这样获取特定视频的参与度

<?php
SproutVideo\Analytics::engagement(array('video_id' => 'abc123'));
?>

对于直播

<?php
SproutVideo\Analytics::live_streams_engagement(array('live_stream_id' => 'abc123'));
?>

最后,您可以通过这种方式获取视频的每个播放会话

<?php
SproutVideo\Analytics::engagement_sessions('abc123')
SproutVideo\Analytics::engagement_sessions('abc123', array('page' => 3));
SproutVideo\Analytics::engagement_sessions('abc123', array('page' => 3, 'per_page' => 40));
?>

您还可以通过这种方式获取特定电子邮件地址的视频参与会话

<?php
SproutVideo\Analytics::engagement_sessions('abc123', array('vemail' => 'test@example.com'));
?>

您还可以获取直播的参与会话

<?php
SproutVideo\Analytics::live_streams_engagement_sessions();
// and for a specific live stream
SproutVideo\Analytics::live_streams_engagement_sessions(array('live_stream_id' => 'abc123'));
?>

账户

以下方法可用:get_accountupdate_account

get_account

<?php
SproutVideo\Account::get_account();
?>

update_account

<?php
SproutVideo\Account::update_account(array('download_hd' => true));
?>

字幕

以下方法可用:list_subtitlescreate_subtitleget_subtitleupdate_subtitledelete_subtitle

list_subtitles

默认情况下,字幕列表按每页25个字幕分页,并按创建日期升序排序。您可以通过传递两个参数来控制分页:page和per_page。必须在选项数组中传递video_id。

<?php
SproutVideo\Subtitle::list_subtitles(array('video_id' => 'abd124'));
SproutVideo\Subtitle::list_subtitles(array('video_id' => 'abd124', 'per_page' => 10));
SproutVideo\Subtitle::list_subtitles(array('video_id' => 'abd124', 'per_page' => 10, 'page' => 2));
?>

create_subtitle

要创建字幕,您必须传递以下data:语言和内容。您还必须传递要添加字幕的视频的video_id选项。

<?php
$data = array('language' => 'en', 'content' => 'WEBVTT FILE...');
$options = array('movie_id' => 'abc123');

SproutVideo\Subtitle::create_subtitle($data, $options);
?>

update_subtitle

<?php
$data = array('language' => 'fr');
$options = array('movie_id' => 'abc123', 'id' => 'cde345');

SproutVideo\Subtitle::update_subtitle($data, $options);
?>

delete_subtitle

传入您要删除的字幕的id及其关联的video_id。

<?php
$options = array('movie_id' => 'abc123', 'id' => 'cde345');
SproutVideo\Subtitle::delete_subtitle($options);
?>

行动号召

以下方法可用:list_ctascreate_ctaget_ctaupdate_ctadelete_cta

list_ctas

默认情况下,行动号召列表按每页25个行动号召分页,并按创建日期升序排序。您可以通过传递两个参数来控制分页:page和per_page。必须在选项数组中传递video_id。

<?php
SproutVideo\CallToAction::list_ctas(array('video_id' => 'abd124'));
SproutVideo\CallToAction::list_ctas(array('video_id' => 'abd124', 'per_page' => 10));
SproutVideo\CallToAction::list_ctas(array('video_id' => 'abd124', 'per_page' => 10, 'page' => 2));
?>

create_cta

要创建行动号召,您必须传递以下data:文本、URL、开始时间和结束时间。您还必须传递要添加行动号召的视频的video_id选项。

<?php
$data = array('text' => 'get it done', 'url' => 'https://sproutvideo.com', 'start_time' => 1, 'end_time' => 2);
$options = array('movie_id' => 'abc123');

SproutVideo\CallToAction::create_cta($data, $options);
?>

update_cta

<?php
$data = array('text' => 'do something else');
$options = array('movie_id' => 'abc123', 'id' => 'cde345');

SproutVideo\CallToAction::update_cta($data, $options);
?>

delete_cta

传入您要删除的行动号召的id及其关联的video_id。

<?php
$options = array('movie_id' => 'abc123', 'id' => 'cde345');
SproutVideo\CallToAction::delete_cta($options);
?>

为sproutvideo-php做出贡献

  • 查看最新master分支,以确保功能尚未实现或错误尚未修复。
  • 查看问题跟踪器,以确保没有人已经请求或贡献了它。
  • 分支项目。
  • 开始功能/错误修复分支。
  • 提交并推送,直到你对你的贡献满意。

设置

  • 通过运行composer install下载依赖项
  • 通过运行./vendor/bin/phpunit tests运行测试套件

版权

版权(C)2021 SproutVideo。有关更多信息,请参阅LICENSE.txt。