Site officiel https://ffmpeg.org/download.html
et ajouté aux variables d'environnement
ffmpeg -v ffmpeg version 6.0 Copyright (c) 2000-2023 les développeurs FFmpeg construits avec Apple clang version 14.0.3 (clang-1403.0.22.14.1)
L'affichage du numéro de version indique le succès
Du côté du navigateur, appuyez sur F12 pour accéder à l'interface pour afficher les demandes réseau, filtrer les informations m3u8
, rechercher le contenu d'aperçu, cliquer sur la vidéo, rechercher la lecture de la diffusion en direct, cliquer dessus et faire glisser la barre de progression vers l'arrière. contenu, actualisez-le. Cette demande est en Accès avant que la vidéo ne soit chargée, elle peut ne pas être enregistrée.
La première étape consiste à jeter un œil à la salle informatique d’où provient header
.
Dans la deuxième étape, Ctrl + A sélectionne tout le contenu de l'aperçu.
Quelque chose comme ça :
#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:1#EXT-X-TARGETDURATION:35#EXTINF:33.000,xxx/1.ts?auth_key=xxx ...
Enregistrez-le sous aa.bj.m3u8
, dans le même répertoire que le script python. Notez que le bj au milieu peut être différent sz signifie Shenzhen et bj signifie Pékin.
Exécutez ensuite le script python3 a.py
Un dossier cache sera créé, qui prend en charge la reprise du téléchargement et sera automatiquement supprimé une fois le téléchargement terminé.
Le paramètre -mac-crf
ne peut pas être utilisé pour compresser la vidéo et les instructions de l'encodeur doivent être remplacées.
Version démo, différente du script d'automatisation
requêtes d'importation, os, re, time# sz signifie Shenzhen, bj signifie Pékin, base_url = "https://dtliving-sz.dingtalk.com/live_hp/" def get_url() : url_list = [] with open("aa. m3u8", "r") comme f : s = f.readlines() pour i in s : if re.match(r".*?ts.*?", i): url_list.append(base_url + i) return url_listdef download() : urls = get_url() pour i, url in enumerate(urls) : avec open(f"{i + 1}.ts", "wb") comme f : réponse = requêtes.get(url[:-1]) # Supprimer les caractères de nouvelle ligne print(i, "ok") # time.sleep(1)# Intégrer les noms de fichiers, Fusion FFmpeg pratique def parse_filename() : base_path = os.getcwd() urls = get_url() avec 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("téléchargement terminé...") parse_filename()
En cas de succès, une série de fichiers二进制
sera téléchargée, 1.ts, 2.ts, 3.ts, ...
Si c'est faux, il s'agit d'un fichier avec un contenu au format xml
et un message d'erreur s'affichera à l'ouverture.
La solution est de voir si base_url
ne correspond pas ou si sz et bj sont faux.
ffmpeg -f concat -safe 0 -i fichier.txt -c copier a.mp4
Je pense que si le fichier est trop gros après la fusion, vous pouvez utiliser ffmpeg
pour recompresser, ou utiliser h256/hevc
pour ré-encoder afin d'obtenir une taille de fichier plus petite.
Il est recommandé d'utiliser la compression logicielle permutée
L'utilisation d'un format d'encodage vidéo plus efficace est une méthode courante pour réduire la taille des fichiers vidéo en utilisant un format d'encodage vidéo avec un taux de compression plus élevé. Voici un exemple d'utilisation de FFmpeg pour convertir une vidéo au format d'encodage H.265 :
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
La commande ci-dessus convertit la vidéo d'entrée input.mp4 au format d'encodage H.265 et enregistre le résultat sous forme de fichier output.mp4. Parmi eux, l'option -c:v indique l'encodeur vidéo, libx265 indique l'utilisation de l'encodeur x265, l'option -crf indique la qualité vidéo et 28 indique la qualité vidéo cible. Plus la valeur est petite, plus la qualité vidéo est élevée. plus grande la taille du fichier.
Test, la vidéo 1,3 g est compressée à une taille de 231 m, mais la vitesse est trop lente vitesse = 0,8, 3 heures de compression vidéo m'ont pris 4 heures, à la recherche d'autres méthodes
hevc_videotoolbox n'est pas aussi bon que libx265, mais il est très rapide sur mon MacBook air 13 m1,
Comme la plupart des encodeurs à accélération matérielle, hevc_videtoolbox n'est pas aussi efficace que libx265. Par conséquent, vous devrez peut-être lui donner un débit binaire nettement plus élevé que celui de libx265 pour obtenir une qualité équivalente. Cela pourrait aller à l’encontre de l’objectif du recodage de H.264 vers HEVC/H.265.
Site officiel 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.
Activez l'accélération GPU 3 et spécifiez l'encodeur vidéo pour l'encodage. Il convient de noter que VideoToolbox ne prend pas en charge CRF, le débit doit donc être spécifié via -b:v
.
Le codec AVOption crf (Sélectionnez la qualité pour le mode de qualité constante) n'a été utilisé pour aucun flux. La raison la plus probable est soit un type incorrect (par exemple, une option vidéo sans flux vidéo), soit une option privée d'un encodeur. pas réellement utilisé pour aucun flux.
Tester les options par défaut est environ 10 fois plus rapide
ffmpeg video -i input.mp4 -c:v hevc_videotoolbox output.mp4
frame = 126 360 fps = 114 q = -0,0 Lsize = 413 400 Ko temps = 02:55:29,95 débit binaire = 321,6 kbits/s dup = 663 drop = 0 vitesse = 9,51x vidéo : 315854 Ko audio : 93814 Ko sous-titre : 0 Ko autres flux : 0 Ko en-têtes globaux : 0 Ko surcharge de multiplexage : 0,910847 %
C'est environ 10 fois plus rapide que le précédent, et la taille du fichier est passée de 800 m à 400 m, mais le taux de compression a baissé. Je vais tester quelques fichiers supplémentaires.
Les encodages correspondant à h264 dans macOS incluent libx264 et h264_videotoolbox. Les deux vitesses sont similaires, mais libx264 utilise beaucoup le processeur et la taille du fichier transcodé est également petite. J'ai entendu dire que les exigences de décodage pour la lecture de vidéos seraient plus élevées.
Après mon test, j'ai découvert que les fichiers d'enregistrement et de diffusion utilisent le codage h264. Le codage H265 présente des avantages évidents en 4K et de nombreuses scènes sportives n'ont que 12 images et une qualité d'image 1080p. l'enregistrement et la diffusion que j'ai étudiés. La plupart d'entre eux sont des ppt, et il y a très peu de plans sportifs.
Les instructions suivantes sont recommandées :
find ./ -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 30 -c:a aac "${0%%.mp4}-hevc.mp4"' {} ;
Source du code https://blog.51cto.com/u_15366127/6084937 ↩
Plusieurs façons d'utiliser ffmpeg pour réduire la taille de la vidéo https://juejin.cn/post/7222575963564654648 ↩
Accélération matérielle FMPEG https://blog.xm.mk/posts/1a3h/ ↩