webm -> mp4

saben

New Member
Приветствую.

В давнем посте было указано что поставлен тикет "feature request WCS-1217" на решение проблемы с декодингом webm в mp4
https://forum.flashphoner.com/threads/Испорченный-webm-файл-в-webrtc-конференции.10941/post-16179

Есть ли какие-то подвижки по данному тикету? Или единственным способом было и остаётся конвертирование посредством on_record_hook.sh?

Заранее спасибо.
 

Max

Administrator
Staff member
Добрый день.

Для транскодирования и записи потока в реальном времени, вы можете использовать REST API функцию
/push/startup

Пример:
Code:
{
"streamName": "3836",
"rtmpUrl": "rtmp://localhost:1935/live",
"options": {}
}
В результате, WebRTC стрим VP8 будет перенаправлен в RTMP H.264 на rtmp://localhost:1935/live/rtmp_3836

Если включить также настройку:
Code:
record_flash_published_streams = true
то стрим будет записан как mp4

Для того, чтобы убедиться, что транскодинг проходит в H.264, можно использовать пример Media Devices. см. аттач.
 

Attachments

Max

Administrator
Staff member
Используя REST API функцию, стрим в webrtc будет или будет только rtmp?
Pushed будет RTMP.
В результате будет два стрима: исходный WebRTC и pushed RTMP.
 

Anton1984

Member
Можно ли при использовании rtmp_transponder_stream_name_prefix, сделать так чтобы префикс вообще не добавлялся ?
 

Max

Administrator
Staff member
Еще не совсем понятно, как проверить работу через Media Devices ?
Допустим, Вы републикуете поток stream1 на тот же сервер по RTMP
Code:
POST /rest-api/push/startup HTTP/1.1
Host: localhost:8081
Content-Type: application/json
 
{
    "streamName": "stream1",
    "rtmpUrl":"rtmp://localhost:1935/live",
}
По умолчанию, поток будет опубликован на том же сервере под именем rtmp_stream1. Это имя нужно указать в разделе Player в примере Media Devices. Тогда в столбце статистики справа от кона плеера будут отображаться параметры RTMP потокаб как показано на скриншоте в этом сообщении.
Можно ли при использовании rtmp_transponder_stream_name_prefix, сделать так чтобы префикс вообще не добавлялся ?
Каждый поток, опубликованный на одном и том же WCS сервере, должен иметь уникальное имя, для этого и добавляется префикс. чтобы можно было републиковать поток локально по RTMP.
Есть еще один способ: отключить префикс и использовать полный RTMP URL при републикации:
Code:
rtmp_transponder_full_url=true
rtmp_transponder_stream_name_prefix=
В таком случае в запросе /push/startup нужно указать полный RTMP URL, включая имя потока:
Code:
POST /rest-api/push/startup HTTP/1.1
Host: localhost:8081
Content-Type: application/json
 
{
    "streamName": "stream1",
    "rtmpUrl":"rtmp://localhost:1935/live/stream1_republished",
}
В данном случае играть ретранслированный поток с сервера можно по имени stream1_republished
 

saben

New Member
Добрый день.

Связка использования rest метода "/rest-api/push/startup" и настройки "record_flash_published_streams" работает достаточно стабильно, за одним исключением.

Имеем два инстанса webcallserver и на обоих настроена одна версия Flashphoner (5.2.737-741c36ca59afca542f9f8312d71743e88bced5ec) и идентичные настройки. Но на одном сервере потоки успешно транскодируются из webm -> mp4 для всех устройств, а на втором сервере этого не происходит для некоторого списка устройств.

Устройства с которого данное поведение воспроизводится:
Lenovo TB-8505F
Lenovo TB-8504X
Huawei Y9 Prime 2019

Подскажите пожалуйста куда нужно\можно посмотреть чтобы идентифицировать проблему?
 

Max

Administrator
Staff member
Добрый день.
Прежде всего, рекомендуем обновить WCS до сборки 5.2.912 или новее, в этой сборке был фикс, касающийся публикации VP8 и его записи. У Вас немного другой случай, но проблема была в синхронизации между аудио и видео, которую отдает браузер, поэтому Ваш случай (републикация с транскодингом в H264) также затрагивает.
Также на стороне браузера необходимо отключить создание microphone gain node
Code:
Flashphoner.init({
    flashMediaProviderSwfLocation: '../../../../media-provider.swf',
    createMicGainNode: false
});
т.к. в некоторых мобильных браузерах на базе Chromium (например, Samsung Internet Browser) и в Firefox это также может быть причиной порчи синхронизации.
Если рекомендации не помогают, и проблема продолжает воспроизводиться, необходимо уточнить тип и версию используемого браузера, версию Android, а также собрать отчет по этой инструкции, включая клиентские дебаговые логи и дамп трафика, снятый на стороне сервера (запись дампа необходимо запустить до начала публикации), и выслать отчет, используя эту форму.
 

saben

New Member
Что-то мне подсказывает что дело не в версии фонера и не в синхронизации звука и видео. Т.к. два инстанса фонера и одно и то-же устройство выдают разные результаты. Причём выдают с 100% вероятностью.

На одной копии фонера транскодинг работает 100%, на второй копии фонера транскодинг не работает 100% с этими устройствами.
 

Max

Administrator
Staff member
На одной копии фонера транскодинг работает 100%, на второй копии фонера транскодинг не работает 100% с этими устройствами.
Уточните, пожалуйста, что означает "не работает транскодинг":
1. Не публикуется поток после /push/startup?
2. Поток публикуется, но не создается запись?
Также уточните следующее:
1. Версия Android на указанных устройствах
2. Тип и версия браузера на указанных устройствах
Далее соберите отчет по этой инструкции, включая клиентские дебаговые логи и дамп трафика, снятый на стороне сервера (запись дампа необходимо запустить до начала публикации), и отправьте, используя эту форму.
 
Top