[aria2c] Fix IV for some AES-128 streams

Authored by: shirt
This commit is contained in:
pukkandan 2021-09-22 00:15:56 +05:30
parent 0d32e124c6
commit 96933fc1b6
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698

View File

@ -11,6 +11,7 @@
from ..compat import ( from ..compat import (
compat_setenv, compat_setenv,
compat_str, compat_str,
compat_struct_pack,
) )
from ..postprocessor.ffmpeg import FFmpegPostProcessor, EXT_TO_OUT_FORMATS from ..postprocessor.ffmpeg import FFmpegPostProcessor, EXT_TO_OUT_FORMATS
from ..utils import ( from ..utils import (
@ -155,7 +156,7 @@ def _call_downloader(self, tmpfilename, info_dict):
decrypt_info = fragment.get('decrypt_info') decrypt_info = fragment.get('decrypt_info')
if decrypt_info: if decrypt_info:
if decrypt_info['METHOD'] == 'AES-128': if decrypt_info['METHOD'] == 'AES-128':
iv = decrypt_info.get('IV') iv = decrypt_info.get('IV') or compat_struct_pack('>8xq', fragment['media_sequence'])
decrypt_info['KEY'] = decrypt_info.get('KEY') or self.ydl.urlopen( decrypt_info['KEY'] = decrypt_info.get('KEY') or self.ydl.urlopen(
self._prepare_url(info_dict, info_dict.get('_decryption_key_url') or decrypt_info['URI'])).read() self._prepare_url(info_dict, info_dict.get('_decryption_key_url') or decrypt_info['URI'])).read()
encrypted_data = src.read() encrypted_data = src.read()