公式サイト https://ffmpeg.org/download.html
そして環境変数に追加されました
ffmpeg -v ffmpeg バージョン 6.0 Copyright (c) 2000-2023 FFmpeg 開発者は Apple Clang バージョン 14.0.3 (clang-1403.0.22.14.1) で構築しました
バージョン番号が表示されると成功したことを示します
ブラウザ側で、F12 キーを押してインターフェイスに入り、ネットワーク リクエストを表示し、 m3u8
情報をフィルターし、プレビュー コンテンツを検索してビデオをクリックし、ライブ ブロードキャストの再生を見つけてクリックし、進行状況バーがない場合は後方にドラッグします。このリクエストはビデオがロードされる前にアクセスされているため、記録されない可能性があります。
最初のステップは、 header
が送信されるコンピューター室を確認することです。
2 番目のステップでは、Ctrl + A を押してプレビューのすべてのコンテンツを選択します。
次のようなもの:
#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:1#EXT-X-TARGETDURATION:35#EXTINF:33.000,xxx/1.ts?auth_key=xxx ...
Python スクリプトと同じディレクトリにaa.bj.m3u8
として保存します。真ん中の bj は深センを意味し、bj は北京を意味します。
次に、スクリプトpython3 a.py
を実行します。キャッシュ フォルダーが作成され、ダウンロードの再開をサポートし、ダウンロードが完了すると自動的に削除されます。
パラメータ-mac-crf
使用してビデオを圧縮することはできないため、エンコーダ命令を置き換える必要があります。
デモ版、自動化スクリプトとは異なります
インポートリクエスト、os、re、time# sz は深センを意味し、bj は北京を意味します、base_url = "https://dtliving-sz.dingtalk.com/live_hp/" def get_url(): url_list = [] with open("aa. m3u8", "r") as f: s = f.readlines() for i in s: if re.match(r".*?ts.*?", i): url_list.append(base_url + i) return url_listdef download(): urls = get_url() for i、url in enumerate(urls): with open(f"{i + 1}.ts", "wb") as f:response =requests.get(url[: -1]) # 改行文字を削除します print(i, "ok") # time.sleep(1)# FFmpeg のマージを容易にするためにファイル名を統合します def parse_filename():base_path = os.getcwd() urls = get_url() with open ("file.txt", "w+") as f: for i in range(1, 1 + len(urls)): path = f"file '{base_path}/{i}.ts'n" print( path) f.write(path)if __name__ == "__main__": download() print("ダウンロードが完了しました...") parse_filename()
成功すると、一連の二进制
ファイル1.ts, 2.ts, 3.ts, ...
間違っている場合は、内容がxml
形式のファイルなので、開くとエラーメッセージが表示されます。
解決策は、 base_url
が一致していないか、sz と bj が間違っているかどうかを確認することです。
ffmpeg -f concat -safe 0 -i file.txt -c a.mp4 をコピー
結合後のファイルが大きすぎる場合は、 ffmpeg
使用して再圧縮するか、 h256/hevc
使用して再エンコードしてファイル サイズを小さくできると思います。
並べ替えソフトウェア圧縮を使用することをお勧めします
より効率的なビデオ エンコード形式を使用することは、圧縮率の高いビデオ エンコード形式を使用してビデオ ファイルのサイズを削減する一般的な方法です。以下は、FFmpeg を使用してビデオを H.265 エンコード形式に変換する例です。
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
上記のコマンドは、入力ビデオ input.mp4 を H.265 エンコード形式に変換し、結果を Output.mp4 ファイルとして保存します。このうち、-c:v オプションはビデオ エンコーダを示し、libx265 は x265 エンコーダを使用することを示し、-crf オプションはビデオ品質を示し、28 はターゲットのビデオ品質を示します。値が小さいほど、ビデオ品質が高くなります。ファイルサイズが大きくなります。
テストすると、1.3g のビデオが 231m のサイズに圧縮されますが、速度が遅すぎます。speed=0.8、3 時間のビデオ圧縮に 4 時間かかり、他の方法を探しました。
hevc_videotoolbox は libx265 ほどではありませんが、私の m1 MacBook air 13 では非常に高速です。
ほとんどのハードウェア アクセラレーション エンコーダと同様、hevc_videtoolbox は libx265 ほど効率的ではありません。したがって、同等の品質に合わせるには、libx265 と比較して大幅に高いビットレートを与える必要がある場合があります。これにより、H.264 から HEVC/H.265 に再コード化する目的が損なわれる可能性があります。
公式ウェブサイト https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox
# VideoToolbox [¶](https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox "链接到这一节") [VideoToolbox](https://developer.apple.com/documentation/videotoolbox) is the macOS framework for video decoding and encoding. The following codecs are supported: - Decoding: H.263, H.264, HEVC, MPEG-1, MPEG-2, MPEG-4 Part 2, ProRes - Encoding: H.264, HEVC, ProRes To use H.264/HEVC hardware encoding in macOS, just use the encoder `-c:v h264_videotoolbox` or `-c:v hevc_videotoolbox` for H.264 or HEVC respectively. Check `ffmpeg -h encoder=...` to see encoder options. VideoToolbox supports two types of rate control: - Bitrate-based using `-b:v` - Constant quality with `-q:v`. Note that the scale is 1-100, with 1 being the lowest and 100 the highest. Constant quality mode is only available for Apple Silicon and from ffmpeg 4.4 and higher.
GPU アクセラレーション3をオンにし、エンコード用のビデオ エンコーダーを指定します。 VideoToolbox は CRF をサポートしていないため、ビットレートは-b:v
で指定する必要があることに注意してください。
コーデック AVOption crf (一定品質モードの品質を選択) がどのストリームにも使用されていないことが考えられます。最も考えられる原因は、タイプが間違っているか (ビデオ ストリームのないビデオ オプション)、または一部のエンコーダのプライベート オプションであることです。実際にはどのストリームにも使用されません。
デフォルトのオプションのテストは約 10 倍高速です
ffmpeg video -i input.mp4 -c:v hevc_videotoolbox output.mp4
フレーム=126360 fps=114 q=-0.0 Lsize= 413400kB time=02:55:29.95 ビットレート= 321.6kbits/s dup=663 ドロップ=0 スピード=9.51x ビデオ:315854kB オーディオ:93814kB 字幕:0kB その他のストリーム:0kB グローバルヘッダー:0kB 多重化オーバーヘッド:0.910847%
以前のものより約 10 倍高速になり、ファイル サイズは 800 m から 400 m になりましたが、圧縮率はさらに低下しました。さらにいくつかのファイルをテストします。
macOS の h264 に対応するエンコードには libx264 と h264_videotoolbox があり、速度は似ていますが、libx264 の方が CPU 使用率が高く、ビデオを再生する際のデコード要件も高くなるそうです。
テストの結果、録画ファイルとブロードキャスト ファイルには h264 エンコードが使用されていることがわかりました。DingTalk のライブ再生では 12 フレームと 1080p の画質しかなく、H265 エンコードは 4K および多くのスポーツ シーンで明らかな利点があります。私が勉強した録画と放送 ほとんどがpptで、スポーツのショットはほとんどありません。
次の手順をお勧めします。
find ./ -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 30 -c:a aac "${0%%.mp4}-hevc.mp4"' {} ;
コードソース https://blog.51cto.com/u_15366127/6084937 ↩
ffmpeg を使用してビデオ サイズを削減するいくつかの方法 https://juejin.cn/post/7222575963564654648 ↩
FMPEG ハードウェア アクセラレーション https://blog.xm.mk/posts/1a3h/ ↩