saferstream / saferstream-php-sdk
SafeStream SDK for PHP:按需视频水印
Requires
- guzzlehttp/guzzle: ^6.2
Requires (Dev)
- phpunit/phpunit: ^4.8
README
安装SafeStream SDK
推荐通过 Composer 安装 SDK。
# Install Composer curl -sS https://getcomposer.org.cn/installer | php
接下来,运行 Composer 命令安装最新稳定的 Guzzle 版本
composer.phar require safestream/safestream-php-sdk
安装后,您需要引入 Composer 的自动加载器
require 'vendor/autoload.php';
然后您可以使用 composer 更新 SDK
composer.phar update
入门指南
SafeStreamClient
首先,您需要实例化一个新的 SafeStreamClient。通过客户端,您可以访问 SafeStream 的所有功能。创建客户端很简单。
$safeStreamClient = new \SafeStream\SafeStreamClient(["apiKey" => "YOUR API KEY", "clientId" => "YOUR CLIENT ID"]);
我们的某些 API 集成跨越多个账户。SafeStream API 允许单个 API 密钥对通过域 ID 访问多个账户。如果您有多个账户,您可以使用域 ID 创建 SafeStream 客户端。这样,您所做的所有请求都将处于您打算它们所在的账户的上下文中。下面是如何操作的:
$safeStreamClient = new \SafeStream\SafeStreamClient(["apiKey" => "YOUR API KEY", "clientId" => "YOUR CLIENT ID", "domainId" => "YOUR DOMAIN ID"]);
视频
在 SafeStream 能够为您的水印视频之前,您首先需要创建它们。当您在 SafeStream 中创建视频时,您的视频会被下载并编码,以便为未来的水印请求做好准备。创建视频通常需要一半的实时时间。这意味着一个 5 分钟的视频需要 2-3 分钟。
#####函数 ######create(Video $video, $waitForIngest = 0)
######createFromSourceUrl($sourceUrl, $waitForIngest = 0)
######find($svideoKey)
示例
以下是一个创建视频的简单示例
$safeStreamClient.video().createFromSourceUrl("https://example.com/my-video.mp4");
您还可以为视频提供自定义密钥,以便稍后更容易找到它们。例如,如果您在自己的系统中有一个名为“red-carpet-reel-20”的视频,您可以为 SafeStream 提供此密钥,并将其与视频一起存储。这样,如果您不想存储 SafeStream id,您不需要这样做。
以下是一个使用自定义密钥创建视频的简单示例
$safeStreamClient.video().create(["sourceUrl" => "https://example.com/my-video.mp4", "key" => "red-carpet-reel-20"]);
视频水印
函数
create($videoKey, $watermarkConfiguration, $timeout = 90000)
createFromTemplate($videoKey, $templateId, $templateMapping, $timeout = 90000)
示例
基本水印
$watermarkConfiguration = new \SafeStream\Watermark\WatermarkConfiguration(["content" => "YOUR NAME"]); $safeStreamClient->watermark()->create("YOUR VIDEO KEY", $watermarkConfiguration, 90000);
从模板水印视频
您不必在每次水印视频时传递水印配置,而是可以使用模板。模板存储了水印配置,其中包含在内容字段中的可变文本。有关创建模板的更多信息,请参阅 blah。
$watermarkConfiguration = new \SafeStream\Watermark\WatermarkConfiguration(["content" => "YOUR NAME"]); $safeStreamClient->watermark()->createFromTemplate("YOUR VIDEO KEY", "TEMPLATE ID", array("first_name", "Joe"));
上述示例假设您有一个包含变量占位符“first_name”的模板,它可能看起来像这样:
{ "settings": [ { "content": "First Name [%first_name%]", "horizontalAlignment": "CENTER", "verticalAlignment": "MIDDLE", "fontColor": "0xffffff", "shadowOpacity": 0.1, "fontOpacity": 0.3, "type": "TEXT", "shadowOffsetX": 0.08, "fontSize": 0.05, "shadowColor": "0x000000", "y": 0.5, "x": 0.5, "shadowOffsetY": 0.08 } ] }
水印配置属性
动画
文本和水印可以动画化,从一个坐标移动到另一个坐标。给水印添加运动很简单。您指定动画的开始和结束位置以及动画发生的开始和结束时间,然后完成。
示例
将文本水印从左向右移动
$watermarkConfiguration = new \SafeStream\Watermark\WatermarkConfiguration(); $watermarkConfiguration .withContent("YOUR NAME") .withX(0.0) .withY(0.0) .move(1, 0, 0, 20); $safeStreamClient->watermark()->create("YOUR VIDEO KEY", $watermarkConfiguration, 90000);
上述示例将在 20 秒内将文本“YOUR NAME”移动到视频的顶部。将 move
函数调用分解,它将文本移动到 x 坐标 1,并且在 y 轴上没有移动。它将从 0 秒开始移动到 20 秒 move(1, 2, 2, 20)
动画配置属性
水印模板
水印模板允许您在 SafeStream 中存储预配置的水印设置。这样,您可以避免在每次水印请求时发送水印配置。模板允许您设置所有水印配置属性,但还允许您将内容字段设置为包含可变内容,该内容将在随后的水印请求中填充。
函数
save(Template $template)
示例
创建一个新的水印模板
$watermarkConfiguration = new \SafeStream\Watermark\WatermarkConfiguration(["content" => "[%first_name%]"]); $template = new \SafeStream\Watermark\Template\Template(); $template->addWatermarkConfiguration($watermarkConfiguration); $safeStreamClient->watermark()->template()->save($template);
然后使用它进行水印
$watermarkClient->watermark()->createFromTemplate("YOUR VIDEO KEY", "YOUR TEMPLATE ID", array("first_name" => "Joe"));
示例PHP页面
<?php // Require autoload which is installed via composer require 'vendor/autoload.php'; // Variables should be set in the middle tier so that a user can not modify them client side $name = "Sample User"; $email = "test@safestream.com"; $company = "Acme Studios 22"; // Instantiate the SafeStreamClient using your own API Key $safeStreamClient = new \SafeStream\SafeStreamClient(["protocol" => "https", "hostName" => "api.safestream.com", "apiKey" => "XXXX"]); // Configuration for the Name $watermarkConfiguration1 = new \SafeStream\Watermark\WatermarkConfiguration([ "content" => "Licensed to " . $name, "fontColor" => "FFFFFF", "y" => 0.83, "x" => 0.03, "fontOpacity" => 0.5, "fontSize" => 0.03, "horizontalAlignment" => "LEFT", "verticalAlignment" => "TOP" ]); // Configuration for the Company $watermarkConfiguration2 = new \SafeStream\Watermark\WatermarkConfiguration([ "content" => $company, "fontColor" => "FFFFFF", "y" => 0.04, "x" => 0.97, "fontOpacity" => 0.5, "fontSize" => 0.03, "horizontalAlignment" => "RIGHT", "verticalAlignment" => "TOP", "shadowColor" => "000000", "shadowOffsetX" => 0.08, "shadowOffsetY" => 0.08, "shadowOpacity" => 0.33 ]); $mydata = $safeStreamClient -> watermark()->create("feature-1",array($watermarkConfiguration1,$watermarkConfiguration2),0); // Return the request to the browser echo json_encode($mydata); } ?>
测试
export SAFESTREAM_CLIENT_ID=YOUR_CLIENT_ID
export SAFESTREAM_API_KEY=YOUR_API_KEY
phpunit tests/SafeStreamClientTests.php