Facebookのビデオに奇妙な問題があります。ビデオは完全に正常に開始できますが、たとえば0.10から0.30にスキップすると、ビデオがフリーズし、再生が続行されなくなります。 YouTubeなどの他のビデオプラットフォームでこの問題が発生したことはありません。
私はこの問題をグーグルで検索しましたが、わずかに関連する問題しか見つかりませんでした。私は以下を試しました:
ご覧のとおり、私はこれに非常に悩まされています。完全なセットアップをフォーマットしただけで、それでも機能しませんでした。ブラウザ間で発生するため、Windowsの問題なのか、Windows Updateの問題なのか、Facebookの問題なのか疑問に思います。まったく同じ問題を抱えている人は誰もいないので、迷子になっています。何か助けはありますか?
更新:本日、2017年6月25日の時点で、問題は解消されました。
数時間のデバッグの後、私は犯人を見つけました。確かに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を使用して、次の手順に従う必要があります。 :
FBに移動してログインします。すべてのjsソースでフラグdisableDuplicatePlayingRequestを検索します。その方法がわからない場合は、 このチュートリアル を使用できます。
それを含むファイルを見つけたら、_{}
_ボタン(プリティプリント)を使用して、ファイルからテキストエディタにコンテンツ全体をコピーします。 if (c('VideoPlayerExperiments').disableDuplicatePlayingRequest && this.isState('playing')) return;
のような行に移動し、削除またはコメントします。次に、このファイルを保存してサーバーにアップロードする必要があります。 FBが条件違反と見なす可能性があるため、ファイルを共有できません。そのため、これは自分で行う必要があります。ファイルのパブリックアクセスURLを覚えておいてください。
chromeストアから Resource Override 拡張機能をインストールします
拡張機能のオプションを開きます。タブのURLに_*facebook.com*
_と入力します
ヘッダー変更ルールを追加します。 _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つ設定する必要があります。 [閉じる]をクリックして、メインメニューに戻ります。
ヘッダー変更ルールをもう1つ追加します。今回はそれをドメインに使用して、そこにも適切なヘッダーがあることを確認します。 _For:
_フィールドに、変更したファイルがネット上でアクセスできる正確なリンクを入力します。望ましいhttps。 httpまたはローカルファイルを使用すると、問題が発生する可能性があります。次に、ルールの変更ヘッダーセクションに移動します。ここでは、応答セクションも使用します。プリセットで、必ず_Allow outside content
_オプションを選択して、2つのルールを自動的に追加してください。これら2の後に、値が_Access-Control-Allow-Origin
_の_https://www.facebook.com
_のヘッダールールをもう1つ設定する必要があります。 [閉じる]をクリックせずに、メインメニューに戻ります。
最後のステップは、実際にFBjsファイルを変更したファイルに置き換えることです。これを行うには、URL-> URLのルールを追加します。 _From:
_で、手順(1)のファイルを追加します。補足として、Facebookは1〜3日ごとに更新する傾向があるため、このリンクは定期的に変更されます。ビデオが再びフリーズし始めることに気付いたときも、それを変更する必要があります。手順(1)に従って、新しいリンクを取得できます。次に、_To:
_フィールドに、変更したファイルへのリンクを入力する必要があります。最後に、これら3つのルールすべてがON
に設定されていることを確認します。それだけです、ビデオはかつてのように再び機能するはずです。
P.S.3:ここに保存された拡張ルール を見つけることができます。 _xyz.co
_および_https://xyz.co/modified.js
_の名前を独自の名前に置き換える必要があります。それぞれ2回出現します。その後、disableDuplicatePlayingRequest
を含むファイルリンクが正しいことを確認します。
私はあなたと同じ問題を抱えていましたが、私にとっては、YouTubeビデオでさえ途中で再生を停止しました。
これを解決するために、最初にインストールしましたVirtualBox、次にUbuntu16.04。インストールして設定した後、tcpdump(YouTubeでビデオを見ている間)を実行し、WireSharkで.pcapファイルを開きました。
パケットを調べたところ、NICのドライバーが起動していても、奇妙な理由でNICが途中であることがわかりましたパケットのドロップ現在まで。
しかし、試してみるために、ドライバーを再インストールして、ネットワークインターフェイスを再設定しました。
それ以来、その問題が発生していないので、どういうわけかうまくいったと思います。
試してみたいかもしれません!
これをさらに分離しようとして、十分な問題を考慮に入れていないと思います。私は過去に同様のことを見てきました。注目すべきその他の事項:
https://www.torproject.org/download/download-easy.html.en