Объект Media

Методы: bulkinfo | info | create | upload | update | delete

bulkinfo

Получение информации о медиа-файле по его коду для одного или нескольких медиа.

Входные параметры

Обязательные параметры:

  • String apikey (API ключ проекта)
  • Array code[] (Код медиа)
  • Array code[] (Список кодов может быть не менее одного)

Выходные параметры

  • String Code (Код медиа)
  • String Title (Название медиа)
  • Integer Width (Ширина видео)
  • Integer Height (Высота видео)
  • Integer FileSize (Размер оригинального видео)
  • String FileName (Название оригинального видео)
  • String MediaStatus (Статус медиа)
  • Integer Duration (Продолжительность видео в секундах)
  • String CreatedAt (Дата создания медиа)
  • String PlayerLink (Ссылка на плеер)
  • String PlayerCode (HTML код плеера)
  • String Poster - Code (Код скриншота)
  • Integer Poster - Width (Ширина постера)
  • Integer Poster - Height (Высота постера)
  • String Poster - Url (Ссылка на постер)
  • String Timeline - PreviewsVtt (Ссылка на список фреймов таймлайна согласно VTT разметке)

Пример запроса:

https://boomstream.com/api/media/bulkinfo?apikey=[API_KEY]&code[]=[MEDIA_CODE_1]&code[]=[MEDIA_CODE_2]&code[]=[MEDIA_CODE_N]

Пример ответа:

<Response>
    <Items>
        <Item>
            <Code>xxxxxxxx</Code>
            <Title>test - 2024-03-13 16:45:09</Title>
            <Type>video</Type>
            <Width>1280</Width>
            <Height>720</Height>
            <FileSize>10000000</FileSize>
            <FileName>test.mp4</FileName>
            <MediaStatus>Done</MediaStatus>
            <Duration>6</Duration>
            <Description/>
            <CreatedAt>2024-03-13 16:45:09</CreatedAt>
            <PlayerLink>https://play.boomstream.com/xxxxxxxx</PlayerLink>
            <PlayerCode>&lt;iframe width=&quot;{{width}}&quot; height=&quot;{{height}}&quot; src=&quot;https://play.boomstream.com/xxxxxxxx&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;</PlayerCode>
            <Poster>
                <Code>h7sZjLB9-a1</Code>
                <Width>1280</Width>
                <Height>720</Height>
                <Url>https://bs.boomstream.com/adaptive/xxxxxxxx.jpg</Url>
            </Poster>
            <Timeline>
            <PreviewsVtt>https://bs.boomstream.com/adaptive/xxxxxxxx/playlist.vtt</PreviewsVtt>
            </Timeline>
        </Item>
    </Items>    
    <Status>Success</Status>
</Response>

info

Получение дополнительной информации о медиа-файле по его коду.

Входные параметры

Обязательные параметры:

  • String apikey (API ключ проекта)
  • String code (Код медиа)

Выходные параметры

  • String Title (Название медиа)
  • Integer Width (Ширина видео)
  • Integer Height (Высота видео)
  • Integer FileSize (Размер оригинального видео)
  • String FileName (Название оригинального видео)
  • Integer Duration (Продолжительность видео в секундах)
  • String PlayerCode (HTML код плеера)
  • String Poster - Code (Код скриншота)
  • Integer Poster - Width (Ширина постера)
  • Integer Poster - Height (Высота постера)
  • String Poster - Url (Ссылка на постер)
  • String Transcodes - Item - Code (Код транскода)
  • String Transcodes - Item - Title (Название транскода)
  • Integer Transcodes - Item - Width (Ширина видео)
  • Integer Transcodes - Item - Height (Высота видео)
  • String Transcodes - Item - PseudoFLV (Ссылка на PseudoFLV)
  • String Transcodes - Item - PseudoMP4 (Ссылка на PseudoMP4)
  • String Transcodes - Item - AdobeHDS (Ссылка на AdobeHDS)
  • String Transcodes - Item - AppleHLS (Ссылка на AppleHLS)
  • String Screenshots - Item - Code (Код скриншота)
  • Integer Screenshots - Item - Width (Ширина скриншота)
  • Integer Screenshots - Item - Height (Высота скриншота)
  • String Screenshots - Item - Url (Ссылка на скриншот)
  • String Timeline - Sprites - Item - Code (Код частичного спрайта)
  • Integer Timeline - Sprites - Item - Width (Ширина спрайта)
  • Integer Timeline - Sprites - Item - Height (Высота спрайта)
  • Integer Timeline - Sprites - Item - FrameCount (Количество кадров в спрайте)
  • String Timeline - Sprites - Item - Url (Ссылка на частичный спрайт)
  • String Timeline - FullSprite - Code (Код полного спрайта)
  • Integer Timeline - FullSprite - Width (Ширина спрайта)
  • Integer Timeline - FullSprite - Height (Высота спрайта)
  • Integer Timeline - FullSprite - FrameCount (Количество кадров в спрайте)
  • String Timeline - FullSprite - Url (Ссылка на полный спрайт)
  • String Timeline - Previews - Item - Code (Код фрейма)
  • Integer Timeline - Previews - Item - Width (Ширина фрейма)
  • Integer Timeline - Previews - Item - Height (Высота фрейма)
  • Float Timeline - Previews - Item - TimePosition (Время прогресса на месте фрейма)
  • String Timeline - Previews - Item - SpriteURL (Ссылка на частичный спрайт, где расположен фрейм)
  • String Timeline - Previews - Item - SpriteURLxywh (Ссылка на частичный спрайт с указанием координат фрейма внутри спрайта)
  • String(JSON) Timeline - Previews - Item - SpritePosition (Позиция в спрайте)
  • String Timeline - PreviewsVtt (Ссылка на список фреймов таймлайна согласно VTT разметке)

Пример запроса:

https://boomstream.com/api/media/info?apikey=[API_KEY]&code=[MEDIA_CODE]

Пример ответа:

<Response>
   <Title>demovideo.avi</Title>
    <Code>xxxxxx</Code>
    <Type>video</Type>
    <Width>1600</Width>
    <Height>900</Height>
    <FileSize>1000000</FileSize>
    <FileName>test.mp4</FileName>
    <MediaStatus>Done</MediaStatus>
    <Duration>61</Duration>
    <PlayerCode>&amp;lt;iframe width=&amp;quot;{{width}}&amp;quot; 
       height=&amp;quot;{{height}}&amp;quot; 
       src=&amp;quot;https://play.boomstream.com/xxxxxx&amp;quot; 
       frameborder=&amp;quot;0&amp;quot; 
       scrolling=&amp;quot;no&amp;quot; 
       allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
    </PlayerCode>
    <DownloadLink>
       https://bs.boomstream.com/balancer/hash:abd6c666f029e065e4aedb44e5c5f176/xxxxxx.orig
    </DownloadLink>
    <Poster>
        <Code>xxxxxx-a1</Code>
        <Width>1600</Width>
        <Height>900</Height>
        <Url>https://bs.boomstream.com/balancer/xxxxxx-a1.jpg</Url>
    </Poster>
    <Transcodes>
        <Item>
            <Code>o9xO8V9w-fe2qWIAm</Code>
            <Title>1080p</Title>
            <Width>1600</Width>
            <Height>900</Height>
            <PseudoMP4>https://bs.boomstream.com/balancer/xxxxxx-xxxxxx.mp4</PseudoMP4>
            <AppleHLS>https://bs.boomstream.com/balancer/xxxxxx-xxxxxx/playlist.m3u8</AppleHLS>
        </Item>
        .... 
    </Transcodes>
    <Adaptive>
        <AppleHLS>https://cdnv.boomstream.com/adaptive/ххххххх/playlist.m3u8</AppleHLS>
    </Adaptive>
    <Screenshots>
        <Item>
            <Code>xxxxxx-a21</Code>
            <Width>1600</Width>
            <Height>900</Height>
            <Url>https://bs.boomstream.com/balancer/xxxxxx-a21.jpg</Url>
        </Item>
        .... 
    </Screenshots>
    <Timeline>
        <Sprites>
            <Item>
                <Code>xxxxxxxx-s1</Code>
                <Width>800</Width>
                <Height>450</Height>
                <FrameCount>25</FrameCount>
                <Url>https://bs.boomstream.com/balancer/xxxxxxxx-s1.webp</Url>
            </Item>
            .... 
        </Sprites>
        <FullSprite>
            <Code>xxxxxxxx-f</Code>
            <Width>1600</Width>
            <Height>630</Height>
            <FrameCount>61</FrameCount>
            <Url>https://bs.boomstream.com/balancer/xxxxxxxx-f.webp</Url>
        </FullSprite>
        <Previews>
            <Item>
                <Code>xxxxxxxx-t1</Code>
               <Width>160</Width>
               <Height>90</Height>
               <TimePosition>0.00</TimePosition>
               <SpriteURL>https://bs.boomstream.com/balancer/xxxxxxxx-s1.webp</SpriteURL>
               <SpriteURLxywh>https://bs.boomstream.com/balancer/xxxxxxxx-s1.webp#xywh=0,0,160,90</SpriteURLxywh>
               <SpritePosition>[0, 0, 160, 90]</SpritePosition>
            </Item>
            .... 
        </Previews>
        <PreviewsVtt>https://bs.boomstream.com/adaptive/xxxxxxxx/playlist.vtt</PreviewsVtt>
    </Timeline>    
    <Status>Success</Status>
</Response>

create

Добавление нового медиа-файла

Входные параметры

Обязательные параметры:

  • String apikey (API ключ проекта)
  • String title (Название медиа)
  • String link (Ссылка на источник)

Необязательные параметры:

  • String folderCode (Код папки)

Пример запроса:

https://boomstream.com/api/media/create?apikey=[API_KEY]&link=https://example.com/video.mp4&title=temp

Пример ответа:

<Response>
    <Code>dNO6bnZE</Code>
    <Status>Success</Status>
</Response>

upload

Загрузка нового медиа-файла через HTML форму

1. Необходимо получить данные для формы загрузки. Для этого нужно выполнить следующий запрос:

Входные параметры

Обязательные параметры:

  • String apikey (API ключ проекта)
  • String title (Название медиа)

Необязательные параметры:

  • String folderCode (Код папки)

Пример запроса:

https://boomstream.com/api/media/upload?apikey=[API_KEY]&title=temp

Пример ответа:

<Response>
  <UploadUrl>
    https://node.org/upload/hash:8d7cd/f1a05782f77aca5cc78647178110ac8a
  </UploadUrl>
  <ProgressBarUrl>
    https://boomstream.com/api/media/progressbar?[params]
  </ProgressBarUrl>
  <Status>
    Success
  </Status>
</Response>

2. Создайте страницу загрузки видео, например "upload.php". В body добавьте тег iframe и передайте параметр UploadUrl.

Пример кода:

  <body>
    <iframe src="https://localhost/iframe.php?link=<UploadUrl>">
  </body>

3. Создайте страницу для кнопки "Обзор", которая будет отображаться во фрейме - iframe.php.

Пример кода страницы:

  <script type="text/javascript">
    function submitForm() {
        parent.runUpload();
        $('#form1').submit();
    }
  </script>

  <form action="<UploadUrl>" method="POST" enctype="multipart/form-data" id="form1">
    <input type="file" name="file" onchange="submitForm()">
  </form>

4. Необходимо создать proxy скрипт для получения статуса загрузки - progressbar.php.

Пример кода страницы:

  <?php
    $progressBarUrl = (isset($_GET['progressBarUrl'])) ? $_GET['progressBarUrl'] : '';
    echo @file_get_contents($progressBarUrl . '&format=json');
  ?>

5. На странице "upload.php" добавьте код javascript. Он будет делать раз в секунду запросы на progressbar.php. Пример кода страницы:

  <script type="text/javascript">
    var refreshIntervalId;
    var refresh = 1000;
    function runUpload() {
      $('#form1').submit();
        refreshIntervalId = setTimeout('getPercent()', refresh);
      }
            
      function getPercent(){
        $.get('https://localhost/progressbar.php', {progressBarUrl:"<progressBarUrl>"}, function(data){
          if(data.Action=='done') {
            console.log("DONE");
          } else {
             refreshIntervalId = setTimeout('getPercent()', refresh);
          }
        },'json');
      }
   </script>

Обязательные параметры:

  • String progressBarUrl (URL от первого запроса)

Пример ответа:

<Response>
  <Percent>10</Percent>
  <Action>work</Action>
  ...
</Response>

Когда процент дойдет до 100%, то ответ будет следующим: Пример ответа:

<Response>
  <Action>done</Action>
  <Code>dsadas13</Code>
  ... 
</Response>

Этот ответ говорит о том, что медиа файл успешно загружен.

update

Обновление параметров медиа, либо перезакачка оригинального файла

Входные параметры

Обязательные параметры:

  • String apikey (API ключ проекта)
  • String code (Код медиа)

Необязательные параметры:

  • String title (Название медиа)
  • String link (Ссылка на источник)
  • String folderCode (Код папки)

Пример запроса:

https://boomstream.com/api/media/update?apikey=[API_KEY]&code=[MEDIA_CODE]&link=http://example.com/video.mp4&title=test2

Пример ответа:

<Response>
    <Status>Success</Status>
</Response>

delete

Удаление медиа-файла

Входные параметры

Обязательные параметры:

  • String apikey (API ключ проекта)
  • String code (Код медиа)

Пример запроса:

https://boomstream.com/api/media/delete?apikey=[API_KEY]&code=[MEDIA_CODE]

Пример ответа:

<Response>
    <Status>Success</Status>
</Response>