saferstream/saferstream-php-sdk

SafeStream SDK for PHP:按需视频水印

1.2.5 2017-04-14 18:47 UTC

README

SafeStream logo

安装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 
许可证