LINUX.ORG.RU

firefox, gentoo - постоянно отваливается html5

 , , , ,


2

2

Здравствуй, дорогой LOR.

Проблема такая: есть gentoo, alsa, firefox 47.0.1 (до этого - 38.8.0 с той же проблемой). После сна, возможно каких-то еще других событий firefox не может воспроизводить медиа-файлы (аудио, видео) через html5 - файл загружается, но воспроизведение не идет. Перезагрузка браузера не помогает. После какого-то времени (или какого-то количества перезапусков) все начинает работать снова. В chromium или других приложениях ничего такого нет, все всегда работает.

Есть предположения, куда копать? Если запускать firefox из консоли, там никаких ошибок нет.


С какими флагами собран firefox? Всегда ли воспроизводится проблема после спящего режима?

equeim ★★
()
Ответ на: комментарий от ch1p

Вот сейчас прошло где-то минут 40-50 после сна, я не перезапускал firefox, и youtube заработал. До этого воспроизведение не шло (на первой секунде висело).

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

gstreamer пропал из use-флагов в 47, но когда у меня был стабильный 38, он был включен и проблема была точно такая же. Просто теперь видимо он по умолчанию, и нельзя выбрать версию.

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

Флаг bindist должен быть выключен глобально. Он отключает фичи, спорные с лицензионной точки зрения и может вызвать проблемы с некоторыми пакетами (месой, например). Но не знаю, связано ли это с твоей проблемой.

Проблема проявляется, только если firefox запущен во время входа в спящий режим, или если он запущен после выхода из сна?

equeim ★★
()
Ответ на: комментарий от Pinkbyte

Gstreamer недавно выпилили из фаерфокса, теперь он использует ffmpeg.

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

Когда запущен во время входа в спящий режим, проявляется точно, а второй вариант не знаю, т.к. не пробовал. Сейчас попробую.

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

Проверил. Убил firefox, вошел в спящий режим, вышел, запустил firefox - youtube снова не играет (картинка первого кадра есть, но не идет - стоит на нуле).

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

Тогда возможно, что проблема не в фаерфоксе. Но я с таким не сталкивался (впрочем, я и спящим режимом не пользуюсь). Зарепорть баг в багзиллу генты и мозиллы.

equeim ★★
()

У тебя проблема в выводе звука, скорее всего. Синхронизация видео делается по звуковой дорожке, поэтому если не получается воспроизвести звук, видео тоже замирает.

Попробуй запустить отдельный аудиоплеер и посередине воспроизведения отправить машину в сон, а потом разбудить. Если не воспроизводится, дело в коде вывода звука через ALSA в Firefox. Копать нужно туда.

i-rinat ★★★★★
()
Ответ на: комментарий от equeim

Не работает любое html5 аудио или видео, будь то youtube, аудио в vk или что угодно еще. Загадочно, что начинает работать где-то через полчаса, вне зависимости от перезапуска firefox. Может, проблема с gstreamer, хотя выше писали, что теперь используется ffmpeg, так не знаю.

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

У меня тоже баг воспроизводится, оказывается. На ALSA. На PulseAudio не воспроизводилось. Похоже, действительно баг в ALSA-коде Firefox'а.

Перезапуск Firefox помогает (что ожидаемо, в общем-то.)

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

У меня тоже баг воспроизводится, оказывается. На ALSA. На PulseAudio не воспроизводилось

Это переломный момент в истории линуксов

Я несколько лет специально выпиливал Пульсу, по тому что при работе браузера были баги. Правда браузер был Chromium.

fornlr ★★★★★
()
Ответ на: комментарий от ch1p

В общем, вот тебе патч на Firefox 47:

diff --git a/media/libcubeb/src/cubeb_alsa.c b/media/libcubeb/src/cubeb_alsa.c
index 79a51dd..8d926b4 100644
--- a/media/libcubeb/src/cubeb_alsa.c
+++ b/media/libcubeb/src/cubeb_alsa.c
@@ -263,7 +263,7 @@ alsa_refill_stream(cubeb_stream * stm)
   pthread_mutex_lock(&stm->mutex);
 
   r = snd_pcm_poll_descriptors_revents(stm->pcm, stm->fds, stm->nfds, &revents);
-  if (r < 0 || revents != POLLOUT) {
+  if (r < 0) {
     /* This should be a stream error; it makes no sense for poll(2) to wake
        for this stream and then have the stream report that it's not ready.
        Unfortunately, this does happen, so just bail out and try again. */
@@ -271,6 +271,26 @@ alsa_refill_stream(cubeb_stream * stm)
     return RUNNING;
   }
 
+  if (revents & POLLERR) {
+    switch (snd_pcm_state(stm->pcm)) {
+    case SND_PCM_STATE_XRUN:
+      snd_pcm_recover(stm->pcm, -EPIPE, 1);
+      break;
+
+    case SND_PCM_STATE_SUSPENDED:
+      snd_pcm_recover(stm->pcm, -ESTRPIPE, 1);
+      break;
+
+    default:
+      snd_pcm_drop(stm->pcm);
+      break;
+    }
+
+    snd_pcm_prepare(stm->pcm);
+    pthread_mutex_unlock(&stm->mutex);
+    return RUNNING;
+  }
+
   avail = snd_pcm_avail_update(stm->pcm);
   if (avail == -EPIPE) {
     snd_pcm_recover(stm->pcm, avail, 1);
@@ -332,7 +352,6 @@ alsa_refill_stream(cubeb_stream * stm)
       snd_pcm_recover(stm->pcm, wrote, 1);
       wrote = snd_pcm_writei(stm->pcm, p, got);
     }
-    assert(wrote >= 0 && wrote == got);
     stm->write_position += wrote;
     gettimeofday(&stm->last_activity, NULL);
   }
i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Попробую чуть позже, спасибо. Сам написал или нашел? :)

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

Похожая ситуация. Со спячкой ноута не пробовал, но вот после отключения-подключения БТ наушников, к примеру, Ютуб плагин ХТМЛ5, крутит «кругляки», типа проблема со скоростью инета, и говорит что если воспроизведение не началось - перегрузите устройтво. Лечится закрытием ФФ, и отключение подключением БТ наушников. Сктате в ряде случаев нужно повторно в профиле БТ наушников включять а2ДП профиль. ФФ47, Минт18Синамон.

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

В следующих версиях тебя ждёт ещё неприятный сюрприз. Попробуй в текущем Nightly проверить HTML5 видео, оно с нормальной скоростью проигрывается?

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.