一緒に創造し、成長するために一緒に働きましょう!「ナゲッツデイリー新プラン・8月アップデートチャレンジ」参加30日目ですイベント詳細はこちら
序文
今日のオンライン ビデオは mp4 形式ではなく、すべて ts ファイル形式です.著作権侵害やトラフィックと帯域幅の乱用を防ぐために、ts ファイル形式はビデオ セグメンテーション テクノロジーであり、主にインデックスが必要です.ファイルにはすべてのビデオのセグメント情報、時間の長さ、および ts ファイル名に関するいくつかの情報:
これらのサブセグメント情報は、再生中に非同期にロードされます。また、デュレーションを直接計算することにより、特定のセグメントのロードをジャンプおよびスキップすることも非常に便利です。
ts ファイルだけをダウンロードしても直接再生できないので、この問題を解決するにはどうすればよいでしょうか。多くの方法がありますが、私たちのような技術者にとって最も適した解決策を見つけました。それはffmpeg
、ffmpeg コマンド ラインを直接使用してリモート インデックス ファイルにアクセスし、ダウンロードして 1 つの MP4 ファイルにマージできる有名な方法を使用することです。今日は、その使い方を簡単に紹介しましょう。
ダウンロード
ffmpeg は、オーディオとビデオを処理するための非常に使いやすいソフトウェア ツールキットです. Win10 で ffmpeg を使用するには、ダウンロードして環境変数を追加する必要があります. ダウンロード Web サイト: FFmpeg をダウンロード
ダウンロードが完了したら、解凍し、解凍したファイルを適切な場所に移動します。
環境変数を追加するには、以前の記事「Fiddler は HTTPS リンクをクロールできませんか? 」を参照できます。Move the Fiddler certificate into the system root certificate directory through Root permissions . Opennen SSL の構成と同じですが、ここでは最終構成のみを示します。
この時点で、コマンド ラインをチェックして、環境変数が正しいかどうかを確認します。
ffmpeg -version
复制代码
正常にインストールされました
ダウンロード
ダウンロード ダウンロードする必要がある Web サイトのインデックス ファイルへのリンクを見つけるには、ブラウザの F12 デバッグ コンソールで次のように表示します。
ネイティブ コマンドを使用してダウンロードしたコマンドが次の場合:
ffmpeg -i {m3u8链接} -c copy -bsf:a aac_adtstoasc {文件名}.mp4'
复制代码
ネイティブ コマンドを使用して直接ダウンロードできますが、Win10 システムは Python コマンド ラインで ffmpeg の環境変数を認識できません。したがって、ffmpeg の特定のディレクトリを追加するには、Python を使用して ffmpeg を呼び出して、動画をダウンロードする:
def one_video(urls, file_name):
save_path = 'D:\Download\ts\'+file_name
shell_str = 'D:\MiniTool\ffmpeg\bin\ffmpeg.exe -i '+url+' -c copy -bsf:a aac_adtstoasc '+save_path+'.mp4'
os.system(shell_str)
urls = 'https://*****/videos/augdeduuigdrypzmvseh/index.m3u8?token=eyssddcflgjkmddsds********'
file_name = 'test'
one_video(urls, file_name)
复制代码
効果:
要約する
ffmpeg は非常に強力なツールですが、スクリプト内の単一のスレッドが遅すぎます. ファイルが大きく、多くのファイルがある場合、非常に遅くなります. Scrapy で使用します.
また、この m3u8 インデックス ファイルは非常に重要なファイルであり、通常は暗号化されています. 私の例では、トークン リプレイ保護があり、1 回アクセスすると 2 回目のアクセスは期限切れになります. Web ページで復号化する必要があります.このトークンに問題はありませんが、実際の状況は一般的にもっと複雑です。