J'essaie de télécharger et de convertir un flux m3u8 en mp4 en utilisant ffmpeg. La commande que j'ai essayée pour la première fois était
ffmpeg -i MIE.m3u8 -c copy -bsf:a aac_adtstoasc -safe 0 -protocol_whitelist file,http,https,tcp,tls,crypto MIE.mp4
(voir ci-dessous pour le contenu de MIE.m3u8
)
Cela a échoué immédiatement avec une erreur
[https @ 0x7fb419607d40] Protocol 'https' not on whitelist 'file,crypto'!
MIE.m3u8: Invalid argument
(Notez que l'adresse mémoire change à chaque fois.)
J'ai découvert le -protocol_whitelist
drapeau et ajouté -protocol_whitelist file,http,https,tcp,tls,crypto
à ma commande
ffmpeg -i MIE.m3u8 -c copy -bsf:a aac_adtstoasc -safe 0 -protocol_whitelist file,http,https,tcp,tls,crypto MIE.mp4
mais cela a toujours entraîné la même erreur.
Pourquoi ffmpeg
semble ignorer le protocol_whitelist
drapeau et paramètres?
MIE.m3u8
(que j'ai réussi à récupérer sur le site Web j'essaie de gratter la vidéo) ressemble à ceci:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=508000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2"
https://nhk-vh.akamaihd.net/i/das/D0005140/D0005140255_00000_V_000.f4v/index_0_av.m3u8?null=0&id=AgBdrl8GX2UAVyUXA1tF7MYlFTbSF88WtA7oAMDksTsiVdAKPuuREVfi8iXMsOWFp6eQU2sk6dnE9g%3d%3d
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=47000,CODECS="mp4a.40.2"
https://nhk-vh.akamaihd.net/i/das/D0005140/D0005140255_00000_V_000.f4v/index_0_a.m3u8?null=0&id=AgBdrl8GX2UAVyUXA1tF7MYlFTbSF88WtA7oAMDksTsiVdAKPuuREVfi8iXMsOWFp6eQU2sk6dnE9g%3d%3d
Faire -protocol_whitelist file,http,https,tcp,tls
le premier paramètre.
ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i MIE.m3u8 -c copy -bsf:a aac_adtstoasc MIE.mp4
Je ne trouve aucune documentation officielle¹ à ce sujet, mais cela fonctionne lorsque protocol_whitelist
est spécifié avant l'entrée.
¹ Mais j'ai eu l'idée d'Alexander Strasse sur un forum de discussion Debian Bugs .