sproutvideo / sproutvideo
用于 SproutVideo (https://sproutvideo.com) 的 PHP 客户端
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-24 20:00:41 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_videos
,get_video
,create_video
,update_video
,replace_video
,delete_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 ( 可选 ) : http
或 https
。默认为 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_streams
、create_live_stream
、get_live_stream
、update_live_stream
、delete_live_stream
、end_live_stream
、upload_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_tags
、create_tag
、get_tag
、update_tag
、delete_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_folders
、create_folder
、get_folder
、update_folder
、delete_folder
。
list_folders
默认情况下,文件夹列表按每页25个文件夹分页,并按created_at
日期升序排序。您可以传入两个参数来控制分页:page
和per_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_playlists
、create_playlist
、get_playlsit
、update_playlist
、delete_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_logins
、create_login
、get_login
、update_login
、delete_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需要两个必需参数,email
和password
,这些参数将被用来允许观众登录观看视频,如果登录与该视频的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_grants
、create_access_grant
、get_access_grant
、update_acces_grant
、delete_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_id
和login_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_account
、update_account
。
get_account
<?php SproutVideo\Account::get_account(); ?>
update_account
<?php SproutVideo\Account::update_account(array('download_hd' => true)); ?>
字幕
以下方法可用:list_subtitles
、create_subtitle
、get_subtitle
、update_subtitle
、delete_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_ctas
、create_cta
、get_cta
、update_cta
、delete_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。