Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

REST-метод

Пример тела REST-запроса

Пример тела REST-ответа

Статусы ответа

Описание

/vod/startup

Code Block
languagejs
themeRDark
{
 "uri":"vod-live://sample.mp4",
 "localStreamName": "test"
}

409 - Conflict

500 - Internal error


Захватить поток из указанного файла


/vod/find
Code Block
languagejs
themeRDark
{
 "localStreamName": "test"

}
Code Block
languagejs
themeRDark
[
    {
        "localMediaSessionId": "29ec3236-1093-42bb-88d6-d4ac37af3ac0",
        "localStreamName": "test",
        "uri": "vod-live://sample.mp4",
        "status": "PROCESSED_LOCAL",
        "hasAudio": true,
        "hasVideo": true,
        "record": false
    }
]

200 – потоки найдены

404 – потоки не найдены

Найти VOD-потоки по указанному критерию

/vod/find_all


Code Block
languagejs
themeRDark
[
    {
        "localMediaSessionId": "29ec3236-1093-42bb-88d6-d4ac37af3ac0",
        "localStreamName": "test",
        "uri": "vod-live://sample.mp4",
        "status": "PROCESSED_LOCAL",
        "hasAudio": true,
        "hasVideo": true,
        "record": false
    }
]

200 – потоки найдены

404 – потоки не найдены

Найти все VOD-потоки

/vod/terminate

Code Block
languagejs
themeRDark
{
 "uri":"vod://sample.mp4",
 "localStreamName": "test"
}

200 - поток завершен

404 - поток не найден

Завершить VOD-поток

...

Запрос /rest-api/vod/startup может применяться только для создания VOD live трансляций. При этом, запросы find, find_all и terminate могут быть применены как к VOD, так и к VOD live трансляциям.

Известные проблемы

1) AAC фреймы типа 0 не поддерживаются декодером и будут игнорироваться при воспроизведении захваченного потока

При этом в клиентском логе будут выведены предупреждения:

...

languagebash
themeRDark

...

Настройка продолжительности публикации VOD потока после отключения подписчиков

По умолчанию, VOD поток остается опубликованным на сервере в течение 30 секунд после отключения последнего подписчика, при условии, что продолжительность файла превышает этот интервал. Данное время может быть изменено при помощи настройки

Code Block
themeRDark
vod_stream_timeout=60000

В этом случае, VOD поток останется опубликованным в течение 60 секунд.

Известные проблемы

1. AAC фреймы типа 0 не поддерживаются декодером на базе ffmpeg и будут игнорироваться при воспроизведении захваченного потока

Симптомы: предупреждения в клиентском логе:

Code Block
languagebash
themeRDark
10:13:06,815 WARN AAC - AudioProcessor-c6c22de8-a129-43b2-bf67-1f433a814ba9 Dropping AAC frame that starts with 0, 119056e500

Решение: переключиться на использование FDK AAC декодера

Code Block
themeRDark
use_fdk_aac=true

2. Файлы, содержащие B-фреймы, могут проигрываться неплавно, с фризами или артефактами

Симптомы: периодические фризы, артефакты при проигрывании файла через VOD, предупреждения в клиентском логе

Code Block
themeRDark
09:32:31,238 WARN 4BitstreamNormalizer - RTMP-pool-10-thread-5 It is B-frame!

Решение:  перекодировать файл таким образом, чтобы исключить B-фреймы, например

Code Block
languagebash
themeRDark
ffmpeg -i bad.mp4 -preset ultrafast -acodec copy -vcodec h264 -g 24 -bf 0 good.mp4

3. При захвате VOD из продолжительного файла процесс сервера может завершиться с Out of memory при превышении максимального числа областей виртуальной памяти (vm.max_map_count)

Симптомы: процесс сервера завершается; "Map failed" в серверном логе и в error*.log

Code Block
themeRDark
19:30:53,277 ERROR DefaultMp4SampleList - Thread-34 java.io.IOException: Map failed
    at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:940)
    at com.googlecode.mp4parser.FileDataSourceImpl.map(FileDataSourceImpl.java:62)
    at com.googlecode.mp4parser.BasicContainer.getByteBuffer(BasicContainer.java:223)
    at com.googlecode.mp4parser.authoring.samples.DefaultMp4SampleList$SampleImpl.asByteBuffer(DefaultMp4SampleList.java:204)
    at com.flashphoner.media.F.A.A.A$1.A(Unknown Source)
    at com.flashphoner.media.M.B.C.D(Unknown Source)
    at com.flashphoner.server.C.A.B.A(Unknown Source)
    at com.flashphoner.server.C.A.B.C(Unknown Source)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.OutOfMemoryError: Map failed
    at sun.nio.ch.FileChannelImpl.map0(Native Method)
    at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:937)
    ... 8 more


Code Block
themeRDark
Event: 1743.157 Thread 0x00007fc480375000 Exception <a 'java/lang/OutOfMemoryError': Map failed> (0x00000000a1d750b0) thrown at [/HUDSON/workspace/8-2-build-linux-amd64/jdk8u161/10277/hotspot/src/share/vm/prims/jni.cpp, line 735]

Решение: увеличить максимальное число областей виртуальной памяти

Code Block
languagebash
themeRDark
sysctl -w vm.max_map_count=262144