Яндекс включает транскодинг на vp8 с h264

Пример повторяем только на нашем сервере.

На вашем https://wcs5-eu.flashphoner.com:8888 не понять какой кодек используется, т.к. почему-то ничего на странице с streaming->real-time->details не отображается и не поймёшь используется кодек или нет...

На нашем сервере:
codecs =opus,h264,vp8,g722,mpeg4-generic
codecs_exclude_sip =mpeg4-generic,flv,mpv
codecs_exclude_streaming =flv,telephone-event


через страницу :8888 -> Streamer Включаю Трансляцию с Mozilla

WebRTCopusH264

Через embed player на Яндекс подключаются и видят трансляцию со звуком:
WebRTCopusVP8
Всё работает. Но почему-то активировался vp8 транскодинг.


Но, если:
codecs =opus,h264,g722,mpeg4-generic
Т.е. убираем vp8 из списка кодеков

Повторяем трансляцию и яндекс браузер показывает черный экран, но звук ЕСТЬ.

В чем может причина? Почему он только с транскодингом работает...
Как заставить яндекс использовать h264...

Спасибо.
 

Max

Administrator
Staff member
Добрый день.
На демо-сервере отключена функция сбора статистики и мониторинга. Настройки кодеков там выставлены по умолчанию, т.е. приоритет у H264.
Мы проверим поведение Яндекс.Браузера. Транскодинг на сервере включается, если браузер запрашивает кодек, отличный от того, в котором поток транслируется. По-видимому, Яндекс.браузер хочет именно VP8.
 
Спасибо. Яндекс достаточно распространён среди нашей публики. Получается, сейчас, что из-за него нужно использовать транскодинг.
Получается яндекс отказывается поддерживать h264?

Что-то с этим можно сделать?
 

Max

Administrator
Staff member
Добрый день.
Поддержка H264 зависит от версии ОС и Яндекс.Браузера. В наших тестах результаты следующие:
1. Windows 10, Яндекс.Браузер 19.1.0.2644 - H264 поддерживается при публикации и воспроизведении
2. MacOS, Яндекс.Браузер 18.11.1.716 - H264 не поддерживается
3. Ubuntu 18.04.1 LTS, Яндекс.Браузер 19.1.0.2494 beta: H264 поддерживается при публикации, для воспроизведения необходима замена библиотеки libffmpeg.so:
Code:
sudo apt-get install chromium-codecs-ffmpeg-extra
sudo cp /usr/lib/chromium-browser/libffmpeg.so /opt/yandex/browser-beta/lib/
Тесты проводились с последними сборками WCS с этой страницы
Итого, Вашим клиентам можно рекомендовать:
- на Windows обновить версию браузера
- на MacOS использовать другой браузер (например, Chrome)
- на Ubuntu обновить версию браузера и заменить библиотеку libffmpeg.so
 

Max

Administrator
Staff member
В общем случае для Яндекс.браузера, Opera и других Cromium-based браузеров, у которых есть проблемы с поддержкой H264, желательно использовать VP8 и включать транскодинг. Если Вы используете CDN, начиная со сборки 5.1.3740 можно использовать выделенные узлы в CDN под задачи транскодинга. Подробная документация по CDN 2.1 здесь.
 
Спасибо за cdn 2.1
Правильно я понимаю, что яндекс браузер не поддерживает h264? И без транскодинга никак не обойтись? Или же всё такие есть способ, сказать ему(из javascript), чтобы он использовал h264? Не пытаясь требовать vp8...
 

Max

Administrator
Staff member
Да, Яндекс браузер не поддерживает h.264 кодек одинаково и стабильно на разных OS.
Например, если взять Windows, Mac OS, и Ubuntu, то ЯБ будет вести себя по разному вместо того чтобы стабильно воспроизвести H.264 поток.
Тоже самое относится и к браузеру Opera.
Поэтому основное решение для стабильной поддержки этих браузеров - это использование транскодинга.
 
1. Windows 10, Яндекс.Браузер 19.1.0.2644 - H264 поддерживается при публикации и воспроизведении
К сожалению на win 10 не удалось потестировать, но сделали это на win 7 с вашего сервера wcs5-eu. Удалось отловить используемый кодек в сообщениях websocket.

Итог:
Трансляцию h264 яндекс браузер последней версии на win 7 отображает в VP8.
Завтра постараюсь на win 10 протестировать для чистоты эксперимента.
Однако я перестаю понимать идею: если яндекс.браузер на win таки поддерживает h264 - зачем с вашего wcs5-eu раздавать транскодированный поток? Почему этот яндекс не тянет h264 напрямую, а требует транскодирования... Может в этом win 7 виноват конечно... И если он поддерживает таки его, как его заставить воспроизводить h264, а не нагружать транскодингом сервер...

Скриншоты прилагаю:
vp8.JPG
image.png
image2.png


Стремлюсь повторить опыт воспроизведения яндексом на win h264 потока, пока тщетно....
 
Проверил на ДВУХ машинах с win 10 и последним яндекс.браузер. Всё с вашего wcs5-eu.
Итог - в плеере черный экран с крутящимся колесом. В сообщениях websocket h264.

На обоих яндексах поотключал все безопасности что нашел и все турбо режимы...
Как быть - не работает на win 10(все обновления) под последним яндекс.браузер с вашего сервера.

Куда копать?

Оч. важно, чтоб яндекс таки заработал без транскодинга... Судя по вашему сообщению с разбора работоспособности потенциал такие есть у него заработать на win 10 точно.
Скриншоты:
TeamViewer_2019-02-01_22-16-33.png 2019-02-01_22-16-58.png
 

Max

Administrator
Staff member
Добрый день.
Куда копать?
Только в сторону исключения H264. Яндекс присылает в SDP этот кодек, но его не поддерживает.
Исключите кодек при создании потока для воспроизведения (это можно сделать в зависимости от браузера)
Code:
playStream = session.createStream({
    ...
    stripCodecs: "h264,H264"
}).on(STREAM_STATUS.PENDING, function (playStream) {
    ...
});
playStream.play();
и установите в настройках WCS
Code:
allow_outside_codecs=false
Скорее всего, этот браузер, как и Opera, пытается использовать для декодирования H264 библиотеки, установленные в системе, из-за лицензионных ограничений. Если у клиента стоит кодек-пак, например, то Яндекс будет показывать H264. Поэтому наиболее универсальным вариантом, который не потребует индивидуального подхода к каждому клиенту, остается использование VP8. Если Вы хотите избежать транскодинга, тогда и трансляции должны вестись в VP8.
 
Всё наладилось было с яндексом, настроил vp8 для его работы.
Но. Опять появились проблемы.
Используем модифицированные embed плеер, где исключаем h264(stripcodecs), всё остальное без изменений.
При попытке просмотра через яндекс при первичной загрузке плеер "крутит колесо"(как на скриншотах с этого поста - крутящееся колесо). Причём он его крутит бесконечно долго.

Нажимаем стоп-плей, начинается нормальный показ изображения и звука. В чем может быть проблема?
 

Max

Administrator
Staff member
Проблема, скорее всего, в новых политиках autoplay. В общем случае, для запуска воспроизведения чего-либо на странице в Chromium-based браузерах теперь могут потребоваться действия пользователя. Мы посмотрим, что можно сделать (внутренний тикет WCS-1799).
Пока в качестве обхода можно отключить автозапуск видео: autoplay=false
 
Спасибо! С autoplay попробую покрутить.

Начал тестировать, находясь в другой квартире Яндекс(windows 10) всё со своего же ноутбука(всё ровно тоже самое делаю) - интернет хороший, но яндекс постоянно "крутит колесо" и выдаёт сообщения websocket NOT_ENOUGH_BANDWIDTH на VP8:
Code:
message: "notifyStreamStatusEvent", data: [{,…}]}
data: [{,…}]
0: {,…}
audioBitrate: 0
audioCodec: "opus"
bitrate: 0
codecImpl: ""
createDate: 1550594063447
fps: 0
gop: 0
hasAudio: true
hasVideo: true
height: 480
history: false
info: "1060304/101112"
logger: {name: "Stream", debugEnabled: false, infoEnabled: true, warnEnabled: true, errorEnabled: true,…}
maxBitrate: 0
mediaProvider: "WebRTC"
mediaSessionId: "351344e0-3464-11e9-8f10-01ae15427f2c"
minBitrate: 0
name: "st-ot-7CNQ8R6P1pgq"
published: false
quality: 0
record: false
status: "NOT_ENOUGH_BANDWIDTH"
streamInfo: {nodeId: null, appKey: null, sessionId: null, mediaSessionId: "351344e0-3464-11e9-8f10-01ae15427f2c",…}
videoCodec: "VP8"
width: 640
message: "notifyStreamStatusEvent"
Звук есть, а видео "крутит колесо". Стар-стоп не помогают. Это именно из другой квартиры так получается. Всё остальное такое же как в предыдущем посте.

В то же время на chrome(win 10) всё отображается h264 и никаких NOT_ENOUGH_BANDWIDTH не наблюдается:
Code:
{message: "notifyStreamStatusEvent", data: [{,…}]}
data: [{,…}]
0: {,…}
audioBitrate: 0
audioCodec: "opus"
bitrate: 0
codecImpl: ""
createDate: 1550594288281
fps: 0
gop: 0
hasAudio: true
hasVideo: true
height: 0
history: false
logger: {name: "Stream", debugEnabled: false, infoEnabled: true, warnEnabled: true, errorEnabled: true,…}
debugEnabled: false
errorEnabled: true
infoEnabled: true
name: "Stream"
traceEnabled: false
warnEnabled: true
maxBitrate: 0
mediaProvider: "WebRTC"
mediaSessionId: "bc3da000-3464-11e9-ae9e-e118c8ce31a1"
minBitrate: 0
name: "st-ot-7CNQ8R6P1pgq"
published: false
quality: 0
record: false
status: "PLAYING"
streamInfo: {nodeId: null, appKey: null, sessionId: null, mediaSessionId: "bc3da000-3464-11e9-ae9e-e118c8ce31a1",…}
appKey: null
mediaSessionId: "bc3da000-3464-11e9-ae9e-e118c8ce31a1"
name: "st-ot-7CNQ8R6P1pgq"
nodeId: null
recordStarted: false
recordTimestamp: null
samplingTime: null
sessionId: null
videoCodec: "H264"
width: 0
message: "notifyStreamStatusEvent"
Т.е. с яндексом продолжается проблема(все защитники, proxy и т.п. в яндексе поотключал уже был). С хром всё ок.

Подскажите, в чём может быть дело? Роутер, провайдер? Как можно понять причину такого поведения. Благодарю.
 

Max

Administrator
Staff member
Мы исправили проблему с autoplay в альтернативных браузерах (Яндекс, Opera) в сборке WebSDK 0.5.28.2753.64. Пожалуйста, обновите WebSDK и проверьте поведение Яндекс.Браузера.
Обратите внимание, что автовоспроизведение видео теперь начинается без звука. Для того, чтобы услышать звук, пользователь должен нажать на кнопку Unmute (перечеркнутый громкоговоритель) или подвигать ползунок регулятора громкости.
 
Мы исправили проблему с autoplay в альтернативных браузерах (Яндекс, Opera) в сборке WebSDK 0.5.28.2753.64. Пожалуйста, обновите WebSDK и проверьте поведение Яндекс.Браузера.
Обратите внимание, что автовоспроизведение видео теперь начинается без звука. Для того, чтобы услышать звук, пользователь должен нажать на кнопку Unmute (перечеркнутый громкоговоритель) или подвигать ползунок регулятора громкости.
Спасибо.

Есть какие-то подсказки касательно поста #13?
 

Max

Administrator
Staff member
Есть какие-то подсказки касательно поста #13?
Во всех случаях, чтобы проверить/снять подозрения на сетевые проблемы, рекомендуем проверять канал между сервером и клиентом при помощи iperf по этой инструкции.
 
Во всех случаях, чтобы проверить/снять подозрения на сетевые проблемы, рекомендуем проверять канал между сервером и клиентом при помощи iperf по этой инструкции.
А что в описанном случае моём - когда chrome показывает и воспроизводит видео h264, а яндекс браузер vp8 "нет" - так как я описывал в #13. Причём в одной квартире - оба показывают, а в другой яндекс отказывается, всё это на одном и том же ноутбуке делается.

Порт какой-то другой просит vp8, протокол какой-то другой
?

Что протестировать-то в данном случае. Видно, что связь есть с сервером на примере chrome. Яндекс почему-то не получает видео и "крутит колесо" и всё тут...
 

Max

Administrator
Staff member
Видно, что связь есть с сервером на примере chrome. Яндекс почему-то не получает видео и "крутит колесо" и всё тут...
Похожим образом может проявляться проблема с autoplay. В этом случае в консоли должен быть DOMException. Последняя сборки WebSDK, о которой мы писали здесь, это исправляет. Пожалуйста, обновите WebSDK и повторите опыт.
 
Похожим образом может проявляться проблема с autoplay. В этом случае в консоли должен быть DOMException. Последняя сборки WebSDK, о которой мы писали здесь, это исправляет. Пожалуйста, обновите WebSDK и повторите опыт.
Уже был обновил на последнюю сборку WebSDK, когда писал пост.

Исходные данные ещё раз:

1. Моя квартира, мой ноутбук(win 10), мой интернет, наш wcs сервер - яндекс работает и всё показывает, и хром работает и всё показывает.
2. Другая квартира, всё мой же ноутбук, интернет другой квартиры, наш wcs сервер - яндекс крутит колесо, а хром работает и всё показывает.

Между пунктом 1 и 2 одна лишь разница - другая квартира с другим интернетом. Хром работает в обоих случаях. Яндекс только у меня дома. ХРОМ работает в обоих случаях.
Что может меняться, что яндекс отказывается работать, а хром стабильно показывает? В яндексе все прокси, сжатия, защиты поотключены. Воспроизводится стабильно.
 

Max

Administrator
Staff member
Добрый день.
Соберите дамп трафика с публикующей стороны, а также сообщения в консоли браузера, и вышлите на support@flashphoner.com
Другой вариант - дайте доступ через TeamViewer в режиме 24/7 к проблемному ПК, чтобы наши специалисты могли проверить и разобраться.
 
Top