web-dev-qa-db-ja.com

時間位置を変更するとFacebookビデオがフリーズする

Facebookのビデオに奇妙な問題があります。ビデオは完全に正常に開始できますが、たとえば0.10から0.30にスキップすると、ビデオがフリーズし、再生が続行されなくなります。 YouTubeなどの他のビデオプラットフォームでこの問題が発生したことはありません。

私はこの問題をグーグルで検索しましたが、わずかに関連する問題しか見つかりませんでした。私は以下を試しました:

  • 他のブラウザを試しましたが、すべてにこの問題があります。 (Chrome、Edge、Firefox)。
  • ブラウザのすべてのプラグインを無効にしました
  • ブラウザのハードウェアアクセラレーションを無効にする
  • ブラウザを再インストールしました
  • OSの再インストール(Windows 10 Pro、64ビット):クリーンインストール、アップグレードなし

ご覧のとおり、私はこれに非常に悩まされています。完全なセットアップをフォーマットしただけで、それでも機能しませんでした。ブラウザ間で発生するため、Windowsの問題なのか、Windows Updateの問題なのか、Facebookの問題なのか疑問に思います。まったく同じ問題を抱えている人は誰もいないので、迷子になっています。何か助けはありますか?

更新:本日、2017年6月25日の時点で、問題は解消されました。

3
Bram Vanroy

数時間のデバッグの後、私は犯人を見つけました。確かにFacebookからの部分的なロールアウト/ ABテストだったようです。

より正確には、VideoPlayerExperimentsからdisableDuplicatePlayingRequestと呼ばれるフラグが読み込まれます。プロファイルのページソース。 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をバイパスするためのいくつかのヘッダールールが必要です。

P.S。Facebookからいくつかの回答を得るために ここにコミュニティの質問 を作成しました。誰でも質問に投票する(またはモバイルの好みで)ことで助けることができます。

PS2:わかりました。この問題を実際に修正するには、Chromeを使用して、次の手順に従う必要があります。 :

  1. FBに移動してログインします。すべてのjsソースでフラグdisableDuplicatePlayingRequestを検索します。その方法がわからない場合は、 このチュートリアル を使用できます。

  2. それを含むファイルを見つけたら、_{}_ボタン(プリティプリント)を使用して、ファイルからテキストエディタにコンテンツ全体をコピーします。 if (c('VideoPlayerExperiments').disableDuplicatePlayingRequest && this.isState('playing')) return;のような行に移動し、削除またはコメントします。次に、このファイルを保存してサーバーにアップロードする必要があります。 FBが条件違反と見なす可能性があるため、ファイルを共有できません。そのため、これは自分で行う必要があります。ファイルのパブリックアクセスURLを覚えておいてください。

  3. chromeストアから Resource Override 拡張機能をインストールします

  4. 拡張機能のオプションを開きます。タブのURLに_*facebook.com*_と入力します

  5. ヘッダー変更ルールを追加します。 _For:_に_https://www.facebook.com*_と入力します。次に、_Edit headers_に移動します。応答ヘッダーのみを処理するため、必ず2番目のセクションのみを使用してください。 _Content-Security-Policy_と_X-Content-Security-Policy_の2つのセットヘッダールールを追加します。次に、FBが使用する既存のポリシーにサーバーを追加する必要があります。これを行うには、Facebookページに戻り、[開発コンソール]> [ネットワーク]タブに移動します。 .jsファイルリクエストの1つを選択します。応答ヘッダーには、_content-security-policy_が表示されます。 _:_の後のすべてをテキストエディタにコピーします。 _default-src..._で始まる必要があります。ここで_blob:;script-src_を見つけ、その後、jsファイルのホストに使用するドメインを追加します。たとえば、_xyz.com_または_*.xyz.com_(サブドメインを使用する場合)。既存の一連のポリシーに影響を与えないように、前後にスペースを必ず残してください。次に、この新しい行を使用して、拡張機能のsetヘッダーフィールドの2つの値フィールドに入力します。それらは両方とも同一である必要があります。ここで、値が_Access-Control-Allow-Origin_の_*_のヘッダールールをもう1つ設定する必要があります。 [閉じる]をクリックして、メインメニューに戻ります。

  6. ヘッダー変更ルールをもう1つ追加します。今回はそれをドメインに使用して、そこにも適切なヘッダーがあることを確認します。 _For:_フィールドに、変更したファイルがネット上でアクセスできる正確なリンクを入力します。望ましいhttps。 httpまたはローカルファイルを使用すると、問題が発生する可能性があります。次に、ルールの変更ヘッダーセクションに移動します。ここでは、応答セクションも使用します。プリセットで、必ず_Allow outside content_オプションを選択して、2つのルールを自動的に追加してください。これら2の後に、値が_Access-Control-Allow-Origin_の_https://www.facebook.com_のヘッダールールをもう1つ設定する必要があります。 [閉じる]をクリックせずに、メインメニューに戻ります。

  7. 最後のステップは、実際にFBjsファイルを変更したファイルに置き換えることです。これを行うには、URL-> URLのルールを追加します。 _From:_で、手順(1)のファイルを追加します。補足として、Facebookは1〜3日ごとに更新する傾向があるため、このリンクは定期的に変更されます。ビデオが再びフリーズし始めることに気付いたときも、それを変更する必要があります。手順(1)に従って、新しいリンクを取得できます。次に、_To:_フィールドに、変更したファイルへのリンクを入力する必要があります。最後に、これら3つのルールすべてがONに設定されていることを確認します。それだけです、ビデオはかつてのように再び機能するはずです。

P.S.3:ここに保存された拡張ルール を見つけることができます。 _xyz.co_および_https://xyz.co/modified.js_の名前を独自の名前に置き換える必要があります。それぞれ2回出現します。その後、disableDuplicatePlayingRequestを含むファイルリンクが正しいことを確認します。

5
Marius P.

私はあなたと同じ問題を抱えていましたが、私にとっては、YouTubeビデオでさえ途中で再生を停止しました。
これを解決するために、最初にインストールしましたVirtualBox、次にUbuntu16.04。インストールして設定した後、tcpdump(YouTubeでビデオを見ている間)を実行し、WireSharkで.pcapファイルを開きました。
パケットを調べたところ、NICのドライバーが起動していても、奇妙な理由でNICが途中であることがわかりましたパケットのドロップ現在まで。
しかし、試してみるために、ドライバーを再インストールして、ネットワークインターフェイスを再設定しました。
それ以来、その問題が発生していないので、どういうわけかうまくいったと思います。
試してみたいかもしれません!

1
Sam

これをさらに分離しようとして、十分な問題を考慮に入れていないと思います。私は過去に同様のことを見てきました。注目すべきその他の事項:

  • アップストリームのプロキシサーバーがこれを引き起こしている可能性があります。今日では、予想よりもはるかに多くのキャッシュがあります。 memcache、nginx、squidなどを使用している中小企業の山を知っています。 BlueCoatやRiverbedなどのより高価で統合されたプロキシ/ WANアクセラレーションソリューションを使用している他の企業。アカマイなどのWANベースのキャッシングソリューションを使用している主要なIT企業。これは氷山の一角にすぎません...構成して適切に機能している場合、完全に透過的であり、ネットワークパフォーマンスを大幅に向上させることができます。 、それらがあまりうまく機能していない場合、このような診断が非常に難しい本当に奇妙なものを見ることになります。それがプロキシサーバーに帰着するかどうかを判断する唯一の方法は、プロキシサーバーを変更してみることです。再構成するか、まったく使用しないようにします。これがローカルネットワーク内にある場合、これは簡単に修正できます。ネットワーク外にある場合は、まったく別の問題です。以前は、大規模なプッシュを行っていた企業と協力していました。国際ネットワーク全体を追跡しますが、このような問題を克服することは言うまでもなく、診断の助けを得るのにまだ苦労しました
  • また、どこかのネットワーク構成またはパフォーマンスの問題である可能性もあります。私は時々ネットワークを切り替えます。つまり、あなたが何を扱っているかを直接知っています。特定のネットワークでは、ビデオはバッファリングすらしませんが、他のネットワークでは、タイムマーカーだけを移動することはできません...私が対処できる唯一の方法は、VLCで再生する前にビデオを事前にダウンロードすることです(たくさんブラウザ拡張機能やyoutube-dlなどのコマンドラインユーティリティなどのツールがあります。これが私の次のポイントにつながります。理想的には、このような問題に対処する必要がある場合に備えて、組織には複数のバックアップ接続または代替ISP(個別のバックボーン)が必要ですが、テストしたいだけの場合は、3G/4G接続でテストするだけで解決できると思います。両方の接続で動作が一貫しているかどうかを確認します(または、システムをホームに戻して、問題がまだ存在するかどうかを確認します)。私はまた、それがおそらくFacebook自体にリンクされているかどうかを理解しようとしています。たとえば、大きなビデオ、小さなビデオ、低品質のビデオ、高品質のビデオ、特定のデータセンターに保存される可能性のあるビデオなどに限定されていますか?これを診断するには、パケットトレーサーを実行してからtracerouteを実行しますパスを把握するためにIPアドレスで。 whois情報を使用して、地理的領域に関する情報を取得し、特定のデータセンターに絞り込みます。それが難しすぎる場合は、ビデオをダウンロードしてホストのURLを取得してから、whoisを実行して、地理的な場所とデータセンターを絞り込みます。ネットワークに関連しているかどうかを確認するもう1つの方法は、TorネットワークなどのVPNを介して試すことです(Torブラウザーパックを試してください)。

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

  • このような問題を診断する必要があった場合、通常のサポートラインを介してFacebookなどの会社の誰かと連絡を取るのは難しい場合があることに注意する必要があります。誰かを知っている人などを知っていると簡単になります...そうすれば、彼らが言われていることをあまり知らず、実際にはすべてを行うことができない請負業者になることがある最前線のサポートをバイパスできますそれは彼らの仕事ではないのでそれだけ
  • それは部分的にキャッシングにかかっている可能性がありますが、実際には、ある種のバンドル自体が問題のパフォーマンス面全体の性質に含まれていると思います
  • また、標準以下のハードウェアを扱うときに、このタイプの問題が発生するのを見てきました。たとえば、LinkedInでAtomベースのネットブックを使用することは、クライアント側で実行されるJavaScriptコードに大きく依存しているため、事実上実行不可能であることを私は知っています。同じパフォーマンスの問題がビデオサイトにも存在します。 (バッファリングしたり、タイムマーカーを移動したりすることはできません)この問題は、Core I3ベースのプロセッサより上のものには存在しません...とはいえ、Windows 10を使用しているようです。つまり、ITユーザーである可能性は低いと言えます。予算が過度に制約されている
  • 生のパフォーマンスに低下する可能性があることは明らかなので、ソフトウェアドライバー、オペレーティングシステム、コーデック、およびソフトウェア構成に関する問題も除外しません。私はあなたが試したのを見た(ソフトウェアとハ​​ードウェアの面で)できるだけ近くでそれを実行しようとしますが、他のより良い最適化または更新されたドライバーがあるかどうかも調べています、オペレーティングシステムのパフォーマンスを向上させる方法など...ハードウェアをいじったり、ネットワーク内の他の場所からパーツを共食いして、それが状況を変えるかどうかを確認したりします。
  • パブリックプロファイルとプライベートプロファイルを比較する場合は、少し早すぎて除外している可能性があります。私の推測では、プライベートページとパブリックページをロードするコードは異なります(パーソナライズの理由から)。これにより、わずかなパフォーマンスの不一致が発生する可能性があります。コードとウェブサイトを確認してください。その多くがJavaScriptに依存していることに注目してください。 LinkedInの問題と多少似ている可能性があります。私の推測では、これは上記の点を含む問題の組み合わせだと思います(さらにデバッグしたい場合は、ブラウザー開発者のデバッグツールを開きます(Dragonfly in Operaが良い例です)。すべての要素のロード時間、相対サイズ、実際にロードされているコードも)
0
dtbnguyen