LINUX.ORG.RU

Можно ли изнутри браузера узнать, что проигрываемое видео «тормозит»?

 ,


0

1

ВНИМАНИЕ!

Автор треда - дебил. Да. Забыл поставить ТЗ. Речь про VR видео. А там 6-8К - это минимум вообще. Ибо поделить на 8к на 360…

ВНИМАНИЕ!

В моих турах бывают видео. Им нужно большое разрешение. На десктопе «4К» - это прям минимум и мыло, а не «вау». 4К тормозит только на реально древних и старых компах.

6К-8К нормально играют на большинстве более менее современных компов (ну 5 лет, скажем). Но если это ноут и встройка, то даже на относительно новых все очень грустно. А если в ноуте есть еще и дискретка, то по дефолту браузер все равно на встройке крутится.

И вот я страдаю. С одной стороны, хочется показывать по умолчанию хотя бы 6К. С другой же, нельзя допустить тормозов (*).

Как бы из браузера, JS скриптом узнать лагает или нет? Есть даже бредовая мысль использую некую библиотеку, которая через браузер узнает есть на устройстве аккумулятор или нет (аккумулятор = ноут).

И важно разделять фпс браузера вообще, и лагание видео. Сам интерфейс тура может летать, но видео в нем лагать.

Куда посоветуете копать и гуглить?

(*) Забавное: Фаирфокс умудрятся лагать на 4к до 15фпс даже на 3090. Тогда как хром и на древних-древних (10 лет) компах играет 4к без лагов.

ВНИМАНИЕ!

Автор треда - дебил. Да. Забыл поставить ТЗ. Речь про VR видео. А там 6-8К - это минимум вообще. Ибо поделить на 8к на 360…

ВНИМАНИЕ!



Последнее исправление: dk__ (всего исправлений: 1)

просто в порядке «мозгового штурма»

по идее если взять изменение этой величины

https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/currentTime

и потом помножить на https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/playbackRate

и сравнить с изменением реального времени, то должно получиться одно и то же значение (в пределах погрешности), если играется нормально. если же тормозит, то будет разница.

ну и надо будет отлавливать как то перемотку/паузу. но в целом должно кажется работать, хоть и геморойно.

но это конечно если у тебя видео сделано через htmlMedia, на сколько я понимаю.

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 2)
Ответ на: комментарий от dk__

Разрешение экрана может быть при том, что ты неоптимально решаешь задачу «передать качественное видео» (задираешь разрешение вместо возни с параметрами кодека, например) и в итоге перенагружаешь клиентские машины.

Возможно, более взвешенный подход к передаче видео снимет самый корень твоей проблемы и даст возможность вообще забить на ситуацию.

Кодек, кстати, какой?

Scondo
()
Ответ на: комментарий от Scondo

более взвешенный подход к передаче видео

Взвешенный подход при наличии свободного места на сервере - иметь несколько копий видео с разным качеством, смотреть на число дропнутых фреймов (причина не важна, низкая производительность или скорость сети) и подстраивать качество, чтобы не было дропов.

devl547 ★★★★★
()

Можно ли изнутри браузера узнать, что проигрываемое видео «тормозит»?

Ну вот mplayer при проигрывании, быстро лаги выкупает:

$ mplayer ШКОЛА\ PDR.\ 1\ УРОК.\ ИНСТРУМЕНТ.\ ЭЛЕМЕНТАРНЫЕ\ ВМЯТИНЫ.\ \[lzYmW4DB6qE\].webm 
MPlayer SVN-r37391-4.8.3 (C) 2000-2015 MPlayer Team
do_connect: could not connect to socket
connect: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing ШКОЛА PDR. 1 УРОК. ИНСТРУМЕНТ. ЭЛЕМЕНТАРНЫЕ ВМЯТИНЫ. [lzYmW4DB6qE].webm.
libavformat version 56.40.101 (external)
Mismatching header version 56.25.101
libavformat file format detected.
[lavf] stream 0: video (vp9), -vid 0
[lavf] stream 1: audio (opus), -aid 0, -alang eng
VIDEO:  [VP90]  1280x720  0bpp  30.000 fps    0.0 kbps ( 0.0 kbyte/s)
Clip info:
 encoder: Lavf56.40.101
Load subtitles in ./
Failed to open VDPAU backend libvdpau_va_gl.so: cannot open shared object file: No such file or directory
[vdpau] Error when calling vdp_device_create_x11: 1
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 56.60.100 (external)
Mismatching header version 56.26.100
Selected video codec: [ffvp9] vfm: ffmpeg (FFmpeg VP9)
==========================================================================
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 48000 Hz, 2 ch, floatle, 0.0 kbit/0.00% (ratio: 0->384000)
Selected audio codec: [ffopus] afm: ffmpeg (FFmpeg opus)
==========================================================================
AO: [pulse] 48000Hz 2ch floatle (4 bytes per sample)
Starting playback...
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [xv] 1280x720 => 1280x720 Planar YV12 
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [xv] 1280x720 => 1280x720 Planar YV12 
A:   0.2 V:   0.0 A-V:  0.210 ct:  0.003   0/  0 ??% ??% ??,?% 1 0                                                                                                                                                      
[VD_FFMPEG] DRI failure.
A:  19.2 V:  18.7 A-V:  0.499 ct:  0.027   0/  0 68%  5%  3.6% 200 0                                                                                                                                                    


           ************************************************
           **** Your system is too SLOW to play this!  ****
           ************************************************

Possible reasons, problems, workarounds:
- Most common: broken/buggy _audio_ driver
  - Try -ao sdl or use the OSS emulation of ALSA.
  - Experiment with different values for -autosync, 30 is a good start.
- Slow video output
  - Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU
  - Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,
    e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
- Broken file
  - Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)
  - Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?
  - Try -nocache.
Read DOCS/HTML/en/video.html for tuning/speedup tips.
If none of this helps you, read DOCS/HTML/en/bugreports.html.

A:  31.0 V:  29.2 A-V:  1.856 ct:  0.027   0/  0 79%  4%  3.9% 524 0                                                                                                                                                    
NDfan
()
Ответ на: комментарий от Scondo

Я просто идиот и не договорил.

8К подели на 360 градусов, и в стандартное 90 градусное окно получишь… внезапно - фуллхд с натягом!

Так что да, какое бы ни было разрешение экрана десктопа - в идеале надо показывать 8К.

Подход взвешеннее некуда - HLS.

dk__
() автор топика
Ответ на: комментарий от dk__

А как считать

Так вон, я выше ссылку дал - это стандартное API браузера.

https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement/getVideoPla...

The read-only droppedVideoFrames property of the VideoPlaybackQuality interface returns the number of video frames which have been dropped rather than being displayed since the last time the media was loaded into the HTMLVideoElement.

devl547 ★★★★★
()
Последнее исправление: devl547 (всего исправлений: 1)
Ответ на: комментарий от devl547

Правильно ли я понимаю, что если 30фпс видео играет на скорости ниже 30, то это 100% дропнутые фреймы? А если выше 30, то не дропнутые?

Вообще на моем (не «моем», «используемом») решении кажутся ощутимые лаги, если в плеере уже 40+ фпс (а не 60 стандартные для монитора), при 30фпс видео.

dk__
() автор топика