Methods 1.1:startConversion/ru
From Aviberry API
К содержанию
Другие методы
Возникли вопросы?
startConversion - Метод создает и запускает задачу с указанными параметрами.
Contents |
Сигнатура
string startConversion( mixed source_url, mixed target_url, mixed preset, object transform = {}, object preview = {}, object callback = {}, object params = {}, object data = {} )
Параметры
source_url
source_url - Ссылка на исходный видеофайл или массив таких ссылок.
Тип: mixed.
Принимаются ссылки вида:
http|https://[user[:password]@]hostname[:port]/[path]/[filename]
ftp://[user[:password]@]hostname[:port]/[path]/[filename]
http|https://[user:password@]bucket.s3.amazonaws.com/[path]/[filename]
Ссылка должна быть оформлена соответственно стандарту, т.е. все спецсимволы должны быть "percent-encoded".
Возможные сочетания типов параметров source_url, target_url и preset
target_url
target_url - Ссылка, куда необходимо поместить файл, полученный в результате конвертации, или массив таких ссылок.
Тип: mixed.
Ссылка обязательно должна включать имя файла-результата. Если имя не указано, это считается ошибкой. Именем файла считается все, что указано после последнего слеша /. Принимаются ссылки вида:
ftp://[user[:password]@]hostname[:port]/[path]/filename[.ext]
http://user:password@bucket.s3.amazonaws.com/[path]/filename[.ext]
mailto:email
Ссылка должна быть оформлена соответственно стандарту, т.е. все спецсимволы должны быть "percent-encoded".
При использовании ссылки вида mailto: на указанный email будет отправлено письмо с сообщением о результате конвертации и ссылкой на скачивание файла. Имя файла-результата в данном случае не указывается и будет сформировано автоматически. С момента окончания конвертации сервис aviberry.com в течение 1 суток предоставляет хостинг для файла-результата, в течение которых файл должен быть скачан. По истечении указанного периода ссылка на скачивание станет недействительной.
Ссылка вида mailto: не может быть указана в случае, когда target_url является массивом ссылок. Т.е. отправка уведомления на email может быть задана только для всей конвертации, но не для какого-либо отдельного файла.
Возможные сочетания типов параметров source_url, target_url и preset
preset
preset - Обязательный объект с настройками профиля или массив таких объектов.
Тип: mixed.
| Свойство | Тип | Описание |
|---|---|---|
| format_id | integer | Цифровой идентификатор формата. Обязательное свойство. |
| preset_id | integer | Идентификатор профиля, который следует использовать для формата. Профиль может быть или предустановленным, или созданным самим пользователем. |
| preset_data | string | Строка JSON, содержащая пользовательские настройки профиля. |
Подробный список форматов, стандартных профилей и возможных пользовательских настроек профилей см. в разделе Форматы и профили.
В зависимости от того, какие свойства параметра preset заданы, а какие опущены, задача будет обрабатываться по-разному.
- Задан только format_id - Используется указанный формат; в качестве профиля будет использован профиль по умолчанию для данного формата.
- Заданы только format_id и preset_id - Используются указанный формат и профиль.
- Заданы все свойства - format_id, preset_id и preset_data - Используется указанный формат и пользовательские настройки профиля из preset_data; настройки, значения которых пользователь не указал в preset_data, будут по возможности взяты из указанного в preset_id профиля.
- Заданы только format_id и preset_data - Используется указанный формат и пользовательские настройки профиля из preset_data; настройки, значения которых пользователь не указал, принимают по возможности значения по умолчанию.
Если в качестве значения параметра preset задан единственный объект с настройками профиля, то каждый исходный файл будет сконвертирован единожды, используя только этот единственный профиль, а результат в выдаче метода getConversion будет содержать набор результирующих файлов для этого единственного профиля.
Если в качестве значения параметра preset задан массив объектов с настройками профилей, то каждый исходный файл будет сконвертирован столько раз, сколько задано профилей в массиве, а результат в выдаче метода getConversion будет содержать набор результирующих файлов для каждого заданного профиля.
Такая задача называется "суперзадачей" или "суперконвертацией". Каждая её подзадача имеет свой уникальный идентификатор.
При задании множественных профилей свойство target_filename_policy параметра params не может быть установлено в PRESERVE_FILENAME и по умолчанию в этом случае будет иметь значение OVERWRITE_EXTENSION.
Возможные сочетания типов параметров source_url, target_url и preset
Возможны следующие сочетания типов параметров source_url, target_url и preset:
- source_url - string; target_url - string; preset - object.
Единственный исходный файл будет конвертирован в единственный файл назначения с выбранным профилем. - source_url - string; target_url - string; preset - array.
Единственный исходный файл будет конвертирован во все заданные профили. На основе заданного target_url будет сформировано несколько результирующих файлов, различающихся только расширением. Если в результате получаются файлы с полностью одинаковым именем, то к имени добавляется индекс. - source_url - string; target_url - array; preset - object.
Единственный исходный файл будет сконвертирован один раз с выбранным профилем и помещен во все файлы назначения. Т.е. во всех элементах массива target_url будет содержаться один и тот же файл. - source_url - string; target_url - array; preset - array.
Результат аналогичен случаю (2), но полученные файлы будут помещены во все заданные target_url. Таким образом, можно, например, сохранить результат сразу и на S3, и на FTP. - source_url - array; target_url - string; preset - object.
Все исходные файл будут объединены в единственный файл результата и сконвертированы один раз с выбранным профилем. В этом случае значение свойства join_source_files параметра params автоматически устанавливается в 1, т.е. происходит автоматический join. - source_url - array; target_url - string; preset - array.
Все исходные файл будут объединены (автоматический join) в один файл и сконвертированы во все заданные профили. На основе заданного target_url будет сформировано несколько результирующих файлов, различающихся только расширением. Если в результате получаются файлы с полностью одинаковым именем, то к имени добавляется индекс.
transform
transform - Необязательный объект с настройками трансформаций, которые будут применены к каждому исходному файлу при конвертации в каждый профиль. Свойствами объекта являются конкретно применяемые действия.
Тип: object.
| Свойство | Тип | Описание |
|---|---|---|
| cut | string | Вырезает из видео указанный фрагмент. |
| split | string | Разделяет видео на фрагменты равной продолжительности или равного размера. |
| сrop | string | Обрезает кадр на указанные отступы. |
| rotate | string | Осуществляет поворот видео. |
| watermark | object | Накладывает на видео "водяной знак". |
| adjust | object | Осуществляет общую корректировку изображения. |
| 3d | object | Преобразовывает обычное видео в 3D-видео. |
Любое из действий в настройках трансформации может быть опущено. В этом случае оно не будет применено.
Более подробно о параметрах действий смотрите в разделе Трансформации.
preview
preview - Необязательный объект с настройками стоп-кадра.
Тип: object.
| Свойство | Тип | Описание | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| width | integer | Желаемая ширина картинки preview в пикселях. По умолчанию 160 пикселей. | ||||||||
| height | integer | Желаемая высота картинки preview в пикселях. По умолчанию 120 пикселей. | ||||||||
| resize_method | integer | Метод, используемый для изменения ширины и высоты кадра. Значение по умолчанию - 1.
| ||||||||
| resize_quality | integer | Качество преобразования к новым значениям ширины и высоты. Значение по умолчанию - 1.
|
Любой из параметров может быть опущен. В этом случае будут использованы указанные значения по умолчанию.
Ссылка на стоп-кадр становится доступной при статусе конвертации finished и формируется следующим образом: preview_url = target_url + '.jpg'.
callback
callback - Необязательный объект с настройками функции обратного вызова, которая будет вызвана после завершения конвертации.
Тип: object.
| Свойство | Тип | Описание | ||||||
|---|---|---|---|---|---|---|---|---|
| url | string | Адрес API c функцией обратного вызова. | ||||||
| method | string | Собственно имя функции обратного вызова, которую необходимо вызвать. | ||||||
| protocol | string | Протокол, по которому необходимо сделать вызов. Значением должна быть строка "json" для вызова по протоколу | ||||||
| associate_with | string | Только для версии API v1.1.1. Используется для мультизадач. Параметр, отвечающий за то, в каком случае вызывается callback. Значение по умолчанию - PARENT. Может принимать значения:
|
После завершения конвертации будет сделан RPC-вызов метода callback[method] с помощью POST-запроса на адрес callback[url] согласно RPС-протоколу, указанному в параметре callback[protocol].
При вызове методу будет передан параметр conversion - информация о конвертации, аналогичная возвращаемой методом getConversion.
Пример запроса, отправляемого по протоколу JSON-RPC:
POST <URI, полученный из callback[url]> HTTP/1.1
User-Agent: api.aviberry.com
Host: <Имя хоста, полученное из callback[url]>
Content-Type: application/json
Content-Length: ...
{
"version" : "1.1",
"method" : "callback[method]",
"params" :
{
"conversion" : {...}
}
}
См. также: Пример JSON-RPC сервера
params
params - Необязательный объект с дополнительными параметрами выполнения метода. Каждое свойство объекта соответствует какому-либо параметру.
Тип: object.
Определены следующие свойства:
| Свойство | Тип | Описание | ||||||
|---|---|---|---|---|---|---|---|---|
| overwrite_target_file | boolean | Перезаписывать ли файл или файлы, "скрывающиеся" за target_url, если они уже существуют. 1 - перезаписывать, 0 - не перезаписывать. По умолчанию 0. | ||||||
| join_source_files | boolean | Следует ли все исходные файлы после конвертации объединить в один файл. 1 - объединять, 0 - не объединять. По умолчанию 0. | ||||||
| source_url_encoding | string | Кодировка переданного имени файла-источника. По умолчанию UTF-8. Более подробно о параметре смотрите в разделе О кодировках. | ||||||
| source_url_check_file_exists | boolean | 1 - Проверять существование исходного файла при постановке задачи. Если такой файл не существует, то задача не ставится. 0 - Задача ставится в любом случае. Проверка осуществляется непосредственно перед началом обработки.
| ||||||
| source_filename_encoding | string | Актуальная кодировка имени файла-источника, требуемая для доступа к файлу в его файловой системе. По умолчанию UTF-8. Более подробно о параметре смотрите в разделе О кодировках. | ||||||
| target_url_encoding | string | Аналогично source_url_encoding, но для target_url. По умолчанию UTF-8. | ||||||
| target_url_check_file_exists | boolean | 1 - Проверять существование пути до конечного файла при постановке задачи. Если такой путь не существует, то задача не ставится. 0 - Задача ставится в любом случае. Проверка осуществляется непосредственно перед началом обработки.
| ||||||
| target_filename_encoding | string | Аналогично source_filename_encoding, но для target_url. По умолчанию UTF-8. | ||||||
| s3_storage_class | string | Класс хранилища для файлов, помещаемых на Amazon S3. Возможными значениями являются STANDARD или REDUCED_REDUNDANCY. По умолчанию standard. | ||||||
| target_filename_policy | string | Политика формирования имен файлов назначения target_url. Возможные значения:
Расширения форматов перечислены в разделе Форматы и профили. | ||||||
| priority | string | Приоритет задачи. Чем больше значение, тем выше приоритет, тем раньше начнет выполняться задача. Может задаваться относительное или абсолютное значение.
|
Любой из параметров может быть опущен. В этом случае будут использованы указанные значения по умолчанию.
data
data - Необязательный объект с пользовательскими данными, который будет ассоциирован с создаваемой конвертацией.
Тип: object.
Данный объект будет возвращаться в дальнейшем для конвертации при ее получении различными методами, например getConversion или getConversions. Фактически объект содержит пользовательские данные в виде пар ключ=значение.
Возвращаемое значение
Результат вызова метода зависит от используемой версии API.
API v1.1
Тип: string.
Результат вызова метода - идентификатор созданной конвертации (conversion_id), который нужно использовать при вызове других методов.
API v1.1.1
Тип: object.
Результат вызова метода - объект, со следующими свойствами:
conversion_id
conversion_id - Идентификатор задачи.
Тип: string.
child_conversion_id
child_conversion_id - Массив идентификаторов подзадач. Используется только в случае суперзадач, если в качестве значения параметра preset задан не один объект, а массив таких объектов.
Тип: array.
queue
Тип: object.
queue - объект, позволяющий определить, как скоро задача будет отправлена на обработку. Используется только при постановке обычных (не супер) задач. Содержит следующие свойства:
| Свойство | Тип | Описание |
|---|---|---|
| tasks_before | integer | Количество задач в очереди перед текущей задачей. |
| time_to_shift | integer | Оценочное время (в секундах), оставшееся до продвижения задачи вперед в очереди. |
Нужно учитывать, что позиция задачи в очереди может не только уменьшаться, но и увеличиваться, в случае если приходит задача с более высоким приоритетом, см Сравнение тарифных планов.
Примеры
XML-RPC
Пользовательские настройки параметра preset
<?xml version='1.0'?>
<methodCall>
<methodName>startConversion</methodName>
<params>
<param><value><string>ftp://login:pass@server.com/path/test.avi</string></value></param>
<param><value><string>mailto:user@mail.ru</string></value></param>
<param>
<value>
<struct>
<member>
<name>format_id</name>
<value><int>16505</int></value>
</member>
<member>
<name>preset_data</name>
<value><string>
{
"VideoCodec":"avc1",
"AudioCodec":"mp4a",
"Width":"320",
"Height":"240",
"FrameRate":"25",
"VideoSAsInput":false,
"PSPMode":false,
"ProgressiveDownload":true,
"ResizeMethod":"1",
"ResizeQuality":"1",
"Frequency":"44100","Channels":"2",
"VParams":
{
"H264":
{
"Profile":4,
"Quality":2,
"MaxIFrameInterval":25,
"MaxBFrameSequence":0,
"VBR":true,
"AspectRatio":0
}
},
"AParams":
{
"AAC":
{
"Profile":"2",
"Bitrate":128000,
"Quality":"100"
}
}
}
</string></value>
</member>
<member>
<name>preset_id</name>
<value><int>-2</int></value>
</member>
</struct>
</value>
</param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value> <struct></struct></value></param>
</params>
</methodCall>
Задан массив значений preset
<?xml version='1.0'?>
<methodCall>
<methodName>startConversion</methodName>
<params>
<param><value><string>ftp://login:pass@server.com/path/test.avi</string></value></param>
<param><value><string>mailto:user@mail.ru</string></value></param>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>format_id</name>
<value><int>16505</int></value>
</member>
<member>
<name>preset_id</name>
<value><int>1480</int></value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>format_id</name>
<value><int>16505</int></value>
</member>
<member>
<name>preset_id</name>
<value><int>2744</int></value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value> <struct></struct></value></param>
</params>
</methodCall>
Задан массив source_url
<?xml version='1.0'?>
<methodCall>
<methodName>startConversion</methodName>
<params>
<param>
<value>
<array>
<data>
<value><string>ftp://login:pass@server.com/path/input/test.avi</string></value>
<value><string>ftp://login:pass@server.com/path/input/test2.avi</string></value>
</data>
</array>
</value>
</param>
<param><value><string>mailto:user@mail.ru</string></value></param>
<param>
<value>
<struct>
<member>
<name>format_id</name>
<value><int>16505</int></value>
</member>
<member>
<name>preset_id</name>
<value><int>1480</int></value>
</member>
</struct>
</value>
</param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value> <struct></struct></value></param>
</params>
</methodCall>
Задан массив target_url
<?xml version='1.0'?>
<methodCall>
<methodName>startConversion</methodName>
<params>
<param><value><string>ftp://login:pass@server.com/path/test.avi</string></value></param>
<param>
<value>
<array>
<data>
<value><string>ftp://login:pass@server1.com/path/output/1/test.avi</string></value>
<value><string>ftp://login:pass@server1.com/path/output/1/test.avi</string></value>
<value><string>ftp://login:pass@server2.com/path/output/test.avi</string></value>
</data>
</array>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>format_id</name>
<value><int>16505</int></value>
</member>
<member>
<name>preset_id</name>
<value><int>1480</int></value>
</member>
</struct>
</value>
</param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value> <struct></struct></value></param>
</params>
</methodCall>
Заданы настройки объекта preview
<?xml version='1.0'?>
<methodCall>
<methodName>startConversion</methodName>
<params>
<param><value><string>ftp://login:pass@server.com/path/test.avi</string></value></param>
<param><value><string>mailto:user@mail.ru</string></value></param>
<param>
<value>
<struct>
<member>
<name>format_id</name>
<value><int>16505</int></value>
</member>
<member>
<name>preset_id</name>
<value><int>1480</int></value>
</member>
</struct>
</value>
</param>
<param><value><boolean>0</boolean></value></param>
<param>
<value>
<struct>
<member>
<name>width</name>
<value><int>300</int></value>
</member>
<member>
<name>height</name>
<value><int>300</int></value>
</member>
<member>
<name>resize_method</name>
<value><int>1</int></value>
</member>
<member>
<name>resize_quality</name>
<value><int>1</int></value>
</member>
</struct>
</value>
</param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value> <struct></struct></value></param>
</params>
</methodCall>
Заданы настройки объекта transform
<?xml version='1.0'?>
<methodCall>
<methodName>startConversion</methodName>
<params>
<param><value><string>ftp://login:pass@server.com/path/test.avi</string></value></param>
<param><value><string>mailto:user@mail.ru</string></value></param>
<param>
<value>
<struct>
<member>
<name>format_id</name>
<value><int>16505</int></value>
</member>
<member>
<name>preset_id</name>
<value><int>1480</int></value>
</member>
</struct>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>split</name>
<value><string>10mb</string></value>
</member>
<member>
<name>3d</name>
<value>
<struct>
<member>
<name>Mode</name>
<value><string>Anaglyph</string></value>
</member>
<member>
<name>Depth</name>
<value><int>-20</int></value>
</member>
<member>
<name>Shift</name>
<value><int>10</int></value>
</member>
<member>
<name>Perspective</name>
<value><int>40</int></value>
</member>
</struct>
</value>
</member>
</struct>
</value>
</param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value><boolean>0</boolean></value></param>
<param><value> <struct></struct></value></param>
</params>
</methodCall>
JSON-RPC
Заданы свойства объекта params
{ "version":"1.1", "method":"startConversion", "id":1, "params": { "source_url":"ftp:\/\/server.com\/path\/test.avi", "target_url":"ftp:\/\/login:pass@server.com\/path\/test_output.mp4", "preset": { "format_id":"16505", "preset_id":"86" }, "callback":[], "params": { "overwrite_target_file":"true", "priority":"20", "target_filename_policy":"OVERWRITE_EXTENSION" } } }
Заданы массивы значений source_url и preset
{ "version":"1.1", "method":"startConversion", "id":1, "params": { "source_url":["ftp:\/\/server.com\/path\/test1.avi","ftp:\/\/server.com\/path\/test2.avi"], "target_url":"ftp:\/\/login:pass@server.com\/path\/test_output.mp4", "preset":[ { "format_id":"16505", "preset_id":"86" }, { "format_id":"16505", "preset_id":"2744" }], "callback":[], "params": { "overwrite_target_file":"true", "target_filename_policy":"OVERWRITE_EXTENSION" } } }
