3

У меня странная проблема с видео в Facebook. Я могу запускать видео совершенно нормально, но если я пропущу, скажем, с 0.10 до 0.30, видео остановится: оно просто не продолжит воспроизведение. Я не сталкивался с проблемой на других видео платформах, таких как YouTube, и мой

Я погуглил проблему, но нашел только незначительно связанные проблемы. Я попробовал следующее:

  • Пробовал другие браузеры, но у всех есть эта проблема. (Chrome, Edge, Firefox.)
  • Отключены все плагины для браузера
  • Отключено аппаратное ускорение для браузера
  • Переустановил браузер
  • Переустановил ОС (Windows 10 Pro, 64 бит): чистая установка, без обновления

Как видите, меня это очень раздражает, даже настолько, что я отформатировал свою полную настройку, и даже это не сработало. Интересно, это проблема Windows, обновления Windows или Facebook. Я не нашел никого с такой же проблемой, поэтому я заблудился. Любая помощь?

Обновление: на сегодня, 25 июня 17 года, проблема исчезла для меня.

3 ответа3

5

После нескольких часов отладки я нашел виновника. Похоже, что это был действительно частичный тест на развертывание /AB с Facebook.

Точнее, это был флаг с именем disableDuplicatePlayingRequest от VideoPlayerExperiment, который загружается в исходный код страницы вашего профиля. Если для этого параметра установлено значение true необходимо приостановить воспроизведение видео перед сменой времени, иначе оно будет зависать / зависать.

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

Единственный способ, которым я смог обойти это, был заменить https://www.facebook.com/rsrc.php/v3iTQQ4/yd/l/fb_LT/JTeC8QI2Wlf.js (позднее редактирование: имя / местоположение скрипта часто меняется, я Мы добавили учебник, чтобы найти правильный) скрипт из Facebook и загрузить настроенную версию скрипта с помощью расширения, которое обходит проверку из файла: if (c('VideoPlayerExperiments').disableDuplicatePlayingRequest && this.isState('playing')) return;

Если кто-то заинтересован в расширении, оно называется Resource Override, но его не так просто использовать. Вам нужен сервер для размещения измененного файла js и несколько правил заголовка для обхода CORS и CSP.

PS Я создал вопрос сообщества здесь , чтобы получить ответы от Facebook. Любой может помочь, проголосовав (или на мобильный телефон) вопрос.

PS2: Хорошо, поэтому, чтобы действительно решить эту проблему, вам нужно использовать Chrome и выполнить следующие шаги:

  1. Зайдите на FB и войдите. Найдите во всех источниках js флаг disableDuplicatePlayingRequest. Если вы не знаете, как это сделать, вы можете использовать этот учебник

  2. После того, как вы нашли файл, который в нем содержится, используйте кнопку {} (Pretty Print), а затем скопируйте все содержимое из файла в текстовый редактор. Перейти к строке, в которой есть что-то вроде if (c('VideoPlayerExperiments').disableDuplicatePlayingRequest && this.isState('playing')) return; и удалите или прокомментируйте это. Теперь вам нужно сохранить этот файл и загрузить его на сервер. Я не могу поделиться своим файлом, так как FB может посчитать это нарушением условий, поэтому вам придется сделать это самостоятельно. Запомните публичный доступ к файлу.

  3. Установите расширение переопределения ресурсов из хранилища Chrome

  4. Откройте параметры расширения. Во вкладке URL введите *facebook.com*

  5. Добавьте правило изменения заголовков. В поле For: введите https://www.facebook.com* . Теперь перейдите в Edit headers . Мы будем работать только с заголовками ответов, поэтому обязательно используйте только второй раздел. Добавьте 2 установленных правила заголовка для Content-Security-Policy и X-Content-Security-Policy . Теперь нам нужно добавить ваш сервер в существующую политику, которую использует FB. Для этого вернитесь на страницу facebook и перейдите на вкладку Dev Console> Network. Выберите один из запросов файла .js. В заголовках ответов вы увидите content-security-policy . Скопируйте все это после : в текстовый редактор. Он должен начинаться с default-src... Теперь найдите blob:;script-src и после него добавьте домен, который вы используете для размещения вашего файла js. Например, xyz.com или *.xyz.com (если вы используете поддомен). Обязательно оставляйте пробелы до и после него, чтобы он не влиял на существующую строку политик. Теперь используйте эту новую строку и поместите ее в 2 поля значения из набора полей заголовка из расширения. Они оба должны быть идентичны. Теперь нам нужно еще одно заданное правило заголовка для Access-Control-Allow-Origin со значением * . Нажмите на близко, чтобы вернуться в главное меню.

  6. Добавьте еще одно правило изменения заголовков. На этот раз мы будем использовать его для вашего домена, чтобы убедиться, что у вас там тоже есть нужные заголовки. В поле For: введите точную ссылку, чтобы ваш измененный файл был доступен в сети. Предпочтительный https. Использование http или локального файла может вызвать проблемы. Теперь перейдите в раздел изменения заголовков правила. Мы также будем использовать здесь раздел ответов. В настройках обязательно выберите опцию « Allow outside content , чтобы автоматически добавить 2 правила. После этих 2 нам нужно еще одно правило заголовка set для Access-Control-Allow-Origin со значением https://www.facebook.com . Не нажимайте кнопку «Закрыть» и возвращайтесь в главное меню.

  7. Последний шаг - фактически заменить файл FB js вашим измененным файлом. Для этого добавьте правило для URL -> URL. В поле From: добавьте файл с шага (1). В качестве дополнительного примечания, эта ссылка будет периодически меняться, потому что Facebook имеет тенденцию обновлять ее каждые 1-3 дня. Вам также необходимо изменить его, когда вы заметите, что видео снова начнет зависать. Вы можете следовать шагу (1), чтобы получить новую ссылку для него. Теперь в поле « To: необходимо поместить ссылку на измененный файл. Одна последняя вещь, чтобы проверить , что все эти 3 правила установлены в положение ON Вот и все, видео должно работать снова, как раньше.

PS3: Вы можете найти сохраненные правила расширения здесь. Вам необходимо заменить xyz.co и https://xyz.co/modified.js своими собственными. Каждый из них появляется 2 раза. После этого убедитесь, что ссылка на файл, содержащая disableDuplicatePlayingRequest , верна.

1

У меня была такая же проблема, как и у вас, но для меня даже видео на YouTube перестали воспроизводиться на полпути.
Чтобы решить эту проблему, я сначала установил VirtualBox, а затем Ubuntu 16.04. После установки и настройки я запустил tcpdump (во время просмотра видео на YouTube) и открыл файл .pcap в WireShark.
Осматривая пакеты, я обнаружил, что мой сетевой адаптер по каким-то странным причинам сбрасывал пакеты на полпути, хотя драйвер для сетевого адаптера был обновлен.
Но просто чтобы попробовать, я переустановил драйвер и снова настроил сетевой интерфейс.
Я думаю, как-то это сработало, потому что у меня не было этой проблемы с тех пор.
Могу попробовать это!

0

Я не думаю, что вы учли достаточно проблем, пытаясь изолировать это дальше. Я видел подобные вещи в прошлом. Некоторые другие вещи, чтобы смотреть на:

  • возможно, что прокси-сервер вверх по течению может быть причиной этого. В настоящее время кеширования намного больше, чем вы ожидаете. Я знаю кучу небольших компаний, использующих такие вещи, как memcache, nginx и squid; другие компании, использующие более дорогие и интегрированные решения Proxy/WAN Acceleration, такие как BlueCoat и Riverbed; крупные ИТ-компании, использующие решения для кэширования на основе WAN, такие как Akamai. Это действительно только верхушка айсберга ... Когда они настроены и работают хорошо, они полностью прозрачны и могут существенно повысить производительность сети. Однако, когда они работают не так хорошо, вы можете увидеть действительно странные вещи, которые чрезвычайно сложно диагностировать, такие как эта. Единственный способ выяснить, идет ли речь о прокси-сервере, состоит в том, чтобы попытаться изменить свой прокси-сервер, перенастроить его или попытаться вообще не использовать его. Если это в вашей локальной сети, это легко исправить. Если это за пределами вашей сети, это совсем другая проблема. Раньше я работал с фирмами, где мы продвигали огромную колею через международные сети, но мы все еще изо всех сил пытались получить помощь в диагностике, не говоря уже о преодолении таких проблем, как этот
  • это также может быть проблема с конфигурацией сети или производительностью. Я часто переключаю сети время от времени, что означает, что я знаю из первых рук, с чем ты имеешь дело. В некоторых сетях видео даже не буферизуется, в то время как другие не позволяют мне перемещать маркер времени в одиночку и т.д. Единственный способ, которым я могу справиться с этим, - это предварительно загрузить видео перед его воспроизведением через VLC (множество инструментов, таких как расширения браузера и утилиты командной строки, такие как youtube-dl). Это подводит меня к следующему пункту. В идеале организация должна иметь несколько резервных подключений или альтернативных интернет-провайдеров (с отдельными магистралями) на случай, если вам придется иметь дело с чем-то вроде этого, но если вы просто хотите проверить, я думаю, что вы могли бы просто обойтись тестированием с подключением 3G/4G к посмотрите, одинаково ли это поведение в обоих соединениях (или попробуйте привести систему в исходное состояние, чтобы проверить, сохраняется ли проблема). Я также попытался бы выяснить, было ли это возможно связано с самим Facebook. Например, ограничено ли оно большими видео, меньшими видео, видео низкого качества, видео более высокого качества, видео, которые могут храниться в определенном центре обработки данных, и т.д. Для диагностики запустите трассировщик пакетов, а затем выполните трассировку маршрута по IP-адресу, чтобы выяснить путь. Используйте информацию whois, чтобы получить информацию о географической области и сузить ее до определенного центра обработки данных. Если это слишком сложно, загрузите видео, чтобы получить URL-адрес хоста, а затем запустите whois, чтобы сузить географическое положение и центр обработки данных. Другой способ проверить, связано ли это с сетью, - попробовать через VPN, например, сеть Tor (попробуйте пакет браузера Tor).

https://www.torproject.org/download/download-easy.html.en

  • Одна вещь, которую вам нужно отметить, это то, что если вам когда-либо понадобилось диагностировать такую проблему, как это, может быть трудно связаться с кем-то в фирме, такой как Facebook, через обычные линии поддержки. Будет проще, если вы знаете кого-то, кто знает кого-то и т.д. Таким образом, вы можете обойтись без поддержки, которые могут быть подрядчиками, которые не знают намного больше, чем то, что им говорят, и не могут делать все это слишком много, потому что это не их работа.
  • отчасти это может быть связано с кэшированием, но на самом деле я думаю, что этот вид связывает себя с целым аспектом проблемы, связанным с производительностью.
  • Я также видел этот тип проблемы, возникающей при работе с оборудованием ниже среднего. Например, я знаю, что использовать один нетбук на базе Atom с LinkedIn практически невозможно, потому что он так сильно зависит от кода JavaScript, который выполняется на стороне клиента. Та же проблема с производительностью существует и на видео сайтах (нельзя буферизовать или перемещать маркер времени). Эта проблема не существует ни на чем выше процессора на базе Core I3, хотя ... Тем не менее, я вижу, что вы используете Windows 10, что означает, что маловероятно, что ваш ИТ-бюджет слишком ограничен
  • поскольку вполне возможно, что это может быть связано с необработанной производительностью, я бы не стал регулировать вопросы, касающиеся драйверов программного обеспечения, операционной системы, кодеков и конфигурации программного обеспечения. Я бы попытался запустить его настолько близко, насколько смогу (с точки зрения программного и аппаратного обеспечения), которое, как я видел, вы пробовали, но я бы также посмотрел, есть ли другие более оптимизированные или обновленные драйверы там. , способы повысить производительность операционной системы и так далее ... Я также попытался бы поиграться с аппаратным обеспечением, а также попытаться каннибализировать части из других мест в сети, чтобы посмотреть, меняет ли это что-то.
  • если дело доходит до публичного или частного профиля, я думаю, вы слишком рано исключаете это. Я предполагаю, что код для загрузки личной страницы по сравнению с общедоступной страницей отличается (по причинам персонализации). Это может привести к небольшому расхождению в производительности. Посмотрите код и сайт. Обратите внимание, насколько это зависит от JavaScript. Может быть несколько похоже на мою проблему LinkedIn. Я предполагаю, что это комбинация проблем, включая вышеупомянутые пункты (если вы хотите отлаживать вещи дальше, откройте инструмент отладки для разработчика браузера (хороший пример - Dragonfly in Opera). Это даст вам время загрузки для всех элементов, а также относительный размер и какой код на самом деле загружается)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .