Situs web resmi https://ffmpeg.org/download.html
dan ditambahkan ke variabel lingkungan
ffmpeg -v ffmpeg versi 6.0 Hak Cipta (c) 2000-2023 pengembang FFmpeg dibuat dengan Apple clang versi 14.0.3 (clang-1403.0.22.14.1)
Menampilkan nomor versi menunjukkan keberhasilan
Di sisi browser, tekan F12 untuk masuk ke antarmuka untuk melihat permintaan jaringan, memfilter informasi m3u8
, mencari konten Pratinjau, klik video, temukan pemutaran siaran langsung, klik, dan seret bilah kemajuan ke belakang konten, segarkan. Permintaan ini Diakses sebelum video dimuat, mungkin tidak direkam.
Langkah pertama adalah melihat ruang komputer tempat header
berasal.
Pada langkah kedua, Ctrl + A memilih semua konten Pratinjau.
Sesuatu seperti ini:
#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:1#EXT-X-TARGETDURATION:35#EXTINF:33.000,xxx/1.ts?auth_key=xxx ...
Simpan sebagai aa.bj.m3u8
, di direktori yang sama dengan skrip python. Perhatikan bahwa bj di tengah mungkin berbeda sz berarti Shenzhen dan bj berarti Beijing.
Kemudian jalankan skrip python3 a.py
Folder cache akan dibuat, yang mendukung pengunduhan yang dilanjutkan dan akan dihapus secara otomatis setelah pengunduhan selesai.
Parameter -mac-crf
tidak dapat digunakan untuk mengompresi video dan instruksi encoder perlu diganti.
Versi demo, berbeda dengan skrip otomatisasi
permintaan impor, os, re, time# sz berarti Shenzhen, bj berarti Beijing, base_url = "https://dtliving-sz.dingtalk.com/live_hp/" def get_url(): url_list = [] dengan open("aa. m3u8", "r") sebagai f: s = f.readlines() untuk i di s: if re.match(r".*?ts.*?", i): url_list.append(base_url + i) return url_listdef unduh(): urls = get_url() untuk i, url dalam enumerate(urls): dengan open(f"{i + 1}.ts", "wb") sebagai f: respon = permintaan.get(url[: -1]) # Hapus karakter baris baru print(i, "ok") # time.sleep(1)# Integrasikan nama file untuk memfasilitasi penggabungan FFmpeg def parse_filename(): base_path = os.getcwd() urls = get_url() dengan open ("file.txt", "w+") sebagai f: untuk i dalam rentang(1, 1 + len(url)): path = f"file '{base_path}/{i}.ts'n" print( path) f.write(path)if __name__ == "__main__": download() print("download selesai...") parse_filename()
Jika berhasil, serangkaian file二进制
akan diunduh, 1.ts, 2.ts, 3.ts, ...
Jika salah, itu adalah file dengan isi format xml
, dan akan muncul pesan kesalahan saat dibuka.
Solusinya lihat apakah base_url
tidak cocok, atau sz dan bj salah.
ffmpeg -f concat -safe 0 -i file.txt -c salin a.mp4
Saya yakin jika file terlalu besar setelah digabungkan, Anda dapat menggunakan ffmpeg
untuk mengompres ulang, atau menggunakan h256/hevc
untuk menyandikan ulang guna mendapatkan ukuran file yang lebih kecil.
Disarankan untuk menggunakan kompresi perangkat lunak permute
Menggunakan format pengkodean video yang lebih efisien adalah metode umum untuk mengurangi ukuran file video dengan menggunakan format pengkodean video dengan tingkat kompresi yang lebih tinggi. Berikut adalah contoh penggunaan FFmpeg untuk mengonversi video ke format pengkodean H.265:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
Perintah di atas mengubah format pengkodean video input.mp4 ke H.265 dan menyimpan hasilnya sebagai file output.mp4. Diantaranya, opsi -c:v menunjukkan encoder video, libx265 menunjukkan penggunaan encoder x265, opsi -crf menunjukkan kualitas video, dan 28 menunjukkan kualitas video target. Semakin kecil nilainya, semakin tinggi kualitas videonya lebih besar ukuran filenya.
Pengujian, video 1,3g dikompresi menjadi ukuran 231m, tetapi kecepatannya terlalu lambat kecepatan=0,8, kompresi video 3 jam membutuhkan waktu 4 jam, cari metode lain
hevc_videotoolbox tidak sebagus libx265, tetapi sangat cepat di m1 MacBook air 13 saya,
Seperti kebanyakan encoder yang dipercepat perangkat keras, hevc_videtoolbox tidak seefisien libx265. Oleh karena itu, Anda mungkin perlu memberikan bitrate yang jauh lebih tinggi dibandingkan dengan libx265 agar sesuai dengan kualitas yang setara. Hal ini mungkin menggagalkan tujuan pengodean ulang dari H.264 ke HEVC/H.265.
Situs web resmi 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.
Aktifkan akselerasi GPU 3 dan tentukan encoder video untuk pengkodean. Perlu dicatat bahwa VideoToolbox tidak mendukung CRF, jadi bitrate harus ditentukan melalui -b:v
.
Codec AVOption crf (Pilih kualitas untuk mode kualitas konstan) belum digunakan untuk streaming apa pun. Alasan yang paling mungkin adalah jenis yang salah (misalnya opsi video tanpa streaming video) atau itu adalah opsi pribadi dari beberapa encoder yang sebelumnya. sebenarnya tidak digunakan untuk aliran apa pun.
Menguji opsi default sekitar 10 kali lebih cepat
ffmpeg video -i input.mp4 -c:v hevc_videotoolbox output.mp4
frame=126360 fps=114 q=-0,0 Lukuran= 413400kB waktu=02:55:29,95 bitrate= 321,6kbits/s dup=663 drop=0 kecepatan=9,51x video:315854kB audio:93814kB subjudul:0kB streaming lainnya:0kB header global:0kB muxing overhead: 0,910847%
Ini sekitar 10 kali lebih cepat dari yang sebelumnya, dan ukuran file telah berubah dari 800m menjadi 400m, tetapi tingkat kompresinya menurun.
Pengkodean yang sesuai dengan h264 di macOS termasuk libx264 dan h264_videotoolbox. Kedua kecepatannya serupa, tetapi libx264 memiliki penggunaan CPU yang tinggi dan ukuran file yang ditranskode juga kecil. Saya mendengar bahwa persyaratan decoding untuk memutar video akan lebih tinggi.
Setelah pengujian saya, saya menemukan bahwa file rekaman dan penyiaran menggunakan pengkodean h264. Pengkodean H265 memiliki keunggulan yang jelas dalam 4k dan banyak adegan olahraga. Pemutaran langsung DingTalk hanya memiliki 12 frame dan kualitas gambar 1080p rekaman dan penyiaran yang saya pelajari Kebanyakan darinya adalah ppt, dan hanya ada sedikit gambar olahraga.
Petunjuk berikut direkomendasikan:
find ./ -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 30 -c:a aac "${0%%.mp4}-hevc.mp4"' {} ;
Sumber kode https://blog.51cto.com/u_15366127/6084937 ↩
Beberapa cara menggunakan ffmpeg untuk memperkecil ukuran video https://juejin.cn/post/7222575963564654648 ↩
Akselerasi perangkat keras FMPEG https://blog.xm.mk/posts/1a3h/ ↩