Трудности просмотра трансляции на iPhone

Трансляции ведутся с использованием микшера.
На десктопах и андроид работает нормально. С айфоном какие-то проблемы.
Всё для embed_player

При нажатии плей на плеере в НЕ полноэкранном режиме крутится колёсико загрузки бесконечно долго.
Не дождавшись никаких загрузок нажимаем на fullscreen и там новая кнопка плей интерфейса айфон - жмём - появляется почти сразу изображение наполовину зелёное(возможно связано с тёмностью картинки и пропускной способностью), при этом изображение имеет неверные пропорции, как-то обрезано и т.п. постоянно идут артефакты.

Уходим из fullscreen, попадаем в окошечный режим и там картинка стоячая, замороженная, видно какие-то последние кадры с фулскрина.
Нажимаю стоп, плей и трансляция запускается и идёт аналогично как и на фулскрине с артефактами и т.п, но верной пропорции.

Без перехода в фулскрин(и запуска там) запустить видео в окошке не удаётся совершенно никакими стартостопами и т.п..

Выкладываю записанное стримом видео с походу идущими комментариями ~50МБ (неверный content-type - будет скачиваться на комп, хотя firefox показывает у себя). https://1cloud.store/v1/AUTH_0b511696894e48ae941c128758d6d3e8/test-rocketnet-pro-video-records/rlqxBW9FwQsr/mxst-ts-rlqxBW9FwQsr_1532984636172_88cdef46-aa55-4b00-a33c-08d20465b742.mp4

embed_player использую, встроенный на сайт с ваших примеров последних версий.

Может вот это как-то не работает
flashMediaProviderSwfLocation: 'media-provider.swf',
receiverLocation: 'WSReceiver2.js',
decoderLocation: 'video-worker2.js',

Все файлы уже сложил в ту же папку что и html (
<base href="/js/wcs/player/"> - там же хтмл, и все эти файлы...
)

Подскажите, куда можно копать? Спасибо.
 
Last edited:
Эта ошибка и с микшером и без него воспроизводится.

Сначала нашел что не достаёт файл preloader.mp4, т.к. к нему прописан жестко путь внутри flashphoner.js, Положил файл чтоб доставал.
Однако всё равно те же признаки, что описывал выше.

Так же похоже что относительный путь на preloader.mp4 рассчитан только для html файлов внутри demo папки с глубиной два, к примеру embed_player, но он так же ПОТЕНЦИАЛЬНО МОЖЕТ использоваться при запуске трансляций из других папок (к примеру когда интегрируется sdk куда-то в другую систему, не факт же что они все попадут в вашу папку demo)

Debugger в iOS safari сейчас выдаёт ошибку:

flashphoner.js:10631
(anonymous) @ [native code]:1
rejectPromise
play @ [native code]:1
onloadedmetadata @ flashphoner.js:10631


Это вот здесь происходит в строке remoteVideo.play():
Code:
connection.ontrack = function (event) {
if (remoteVideo) {
    remoteVideo.srcObject = event.streams[0];
    remoteVideo.onloadedmetadata = function (e) {
        if (remoteVideo) {
            remoteVideo.play();
        }
    };
}
};
В чем может быть дело?
 

Max

Administrator
Staff member
Правильно ли мы понимаем, что Вы вносите какие-то изменения в скрипты API ради адаптации к Вашей задаче? Можете ли Вы прислать Ваши скрипты со всеми изменениями для анализа на logs@flashphoner.com?
 

Max

Administrator
Staff member
Мы воспроизвели фриз после выхода из полноэкранного режима. Создана внутренняя задача WCS-1415 для исправления. Мы сообщим Вам, как только проблема будет устранена.
 
В письме написал. Но после этого я ещё раз всё перепроверил. Скачал новый js sdk.

При использовании embed player напрямую с сервера :)8888/embed_player?....) трансляция работает.

При использовании исходников из examples/demo/streaming/embed_player на моём собственном сервере - происходит всё что я описал в первом посте.
Эти исходники полностью ваши, единственное что изменено - это base url в player.html на мой -
/js/wcs/examples/demo/streaming/embed_player/

Все файлы лежат как в высланном архиве на почту, т.е. относительные пути сохранены и flashphoner.js находится в /js/wcs/

Мне бы не надо было может и что-то копать и можно было бы использовать стандартный embed с вашего сервера, но мне нужно чтобы при обрыве потока плеер опят пытался восстановить связь и показ стрима, что я и реализовал, доработав ваш пример.
 
Последние данные.

Локализовал проблему в ваших исходниках. Это как выяснило касается любого варианта использования embed player(хоть напрямую с wcs, хоть с собственного вебсервера)

Оказалось всё на самом деле связано с
Code:
&autoplay=true
в url к плееру.

Если его убирать, то видео на айфон стартует нормально, как и ожидается.
Предполагаю что это связано с вероятными ограничениями к возможности инициировать click() событие внутри iframe в iOS(это делается в файле player.js)
Code:
if (autoplay ) {
        $(".play-pause").click();
    }
Вероятно следует это переделать на явный вызов функций, а не через генерацию события и есть шанс что проблема отсутствия старта проигрывания стрима пропадёт. Хотя сам это не проверял. Пришлось отключить autoplay на iOS и safari.

Это первое что нашел.

Так же есть проблема с относительным путём к preloader.mp4 в коде flashphoner.js, он его у меня ищет совершенно не в ктом месте, если запускаю пример player.html на своём сервер. Об этом писал выше.
 

Max

Administrator
Staff member
Большое спасибо за проделанную работу. Будем разбираться.
 

Max

Administrator
Staff member
Мы попытались воспроизвести описанные проблемы на версии 5.1.3472 (на данный момент есть и более свежие версии, см Release Notes) на предоставленных Вами скриптах, как со статической страницей, содержащей iframe плеера, так и с формированием страницы при помощи AngularJS. В итоге:
1. Проблема с autoplay на iOS Safari воспроизводится. Необходимо отключать autoplay, например, так
Code:
    if (autoplay  && !(Browser.isSafariWebRTC() && Browser.isiOS())) {
        $(".play-pause").click();
    }
2. Проблема с остановкой воспроизведения после выхода из полноэкранного режима воспроизводится не только на iOS Safari, но и в Chrome на ПК. Над этим мы работаем.
3. Проблема с относительными путями к preloader.mp4 не воспроизвелась как при статическом, так и при динамическом формировании страницы с iframe. Относительный путь указывался в Ваших скриптах. Возможно, есть какие-то проблемы с Вашим скриптом на AngularJS, который формирует страницу.
4. Проблема с артефактами при проигрывании не воспроизвелась. Возможно, артефакты вообще не были связаны с autoplay, т.к. аналогичное поведение наблюдается при недостаточной пропускной способности канала от паблишера, когда битрейт начинает прыгать. Посмотрите рекомендации по настройке сервера здесь.
 

Max

Administrator
Staff member
Мы исправили проблему с остановкой воспроизведения в iOS Safari при выходе из полноэкранного режима. Обновленную версию WebSDK можно скачать здесь, обновленную версию WCS, включающую WebSDK - здесь.
 
Top