Пробелма с getRecordInfo 5.2

Ras2607

Member
Здравствуйте!
наконец-то нашли время обновиться до 5.2
Но столкнулись с рядом неприятных моментов.
На старой версии мы использовали stream.getRecordInfo() чтобы получить имя файла записи ДО его окончания.
Вызывали при срабатывании STREAM_STATUS.PUBLISHING

Ранее проблем никаких не было. После обновления эта функция, как и ряд других, например просто getInfo() выдают ошибку undefined.
При этом если вызвать функцию при срабатывании STREAM_STATUS.UNPUBLISHED, то имя записи успешно возвращается.

Обновили как серверную часть, так и подключаемый файл flashphoner.js

Мы что-то не учли при обновлении или теперь эта возможность в принципе отсутствует?
 

Max

Administrator
Staff member
Добрый день.
В версии 5.2 существенно переработан механизм записи потоков, добавлены шаблоны {startTime}, {endTime}, {duration}, значения которых точно известны только по факту окончания записи. Поэтому stream.getRecordInfo() теперь возвращает имя файла после получения события STREAM_STATUS.UNPUBLISHED, т.е. после окончания записи. Если имя файла необходимо знать заранее (например, в браузере), шаблон должен быть сформирован таким образом, чтобы в него входили параметры потока, которые могут быть получены при помощи REST API, например
Code:
stream_record_policy_template={streamName}-{mediaSessionId}
При этом идентификатор медиасессии mediaSessionId вы получаете запросом /rest-api/stream/find:
Code:
POST /rest-api/stream/find HTTP/1.1
Host: 192.168.1.101:8081
Content-Length: 40
Content-Type: application/json

{
  "name":"stream1",
  "published":true
}
Code:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8

[
 {
   "custom":{},
   "nodeId":null,
   "appKey":"defaultApp",
   "sessionId":"/192.168.1.102:34500/192.168.1.101:8080",
   "mediaSessionId":"4f112b20-13d0-11e7-b521-59a9cb7eddeb",
    ...
 }
]
 

Ras2607

Member
Уже смогил сами получить имя файла через /rest-api/recorder/find_all
Правда если запись дробится на части автоматически, то цифру приходится добавлять вручную, но в целом задача выполняется.
 

Max

Administrator
Staff member
Да, можно и этот запрос использовать. Ограничение, действительно, одно: элементы, обеспечивающие уникальность при ротации (номер файла), а также элементы шаблона имени {endTime} и {duration} становятся известны только после окончания записи фрагмента, поэтому в имя, возвращаемое в запросе, не подставляются.
Также отметим, что длительность фрагмента {duration} не вычисляется при записи VP8 потока (контейнер webm).
 
Top