mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:30:46 +00:00 
			
		
		
		
	[downloader/ffmpeg] Specify headers for each URL (#3553)
Closes #2696 Authored by: elyse0
This commit is contained in:
		@@ -382,13 +382,15 @@ class FFmpegFD(ExternalFD):
 | 
			
		||||
        # if end_time:
 | 
			
		||||
        #     args += ['-t', compat_str(end_time - start_time)]
 | 
			
		||||
 | 
			
		||||
        if info_dict.get('http_headers') is not None and re.match(r'^https?://', urls[0]):
 | 
			
		||||
            # Trailing \r\n after each HTTP header is important to prevent warning from ffmpeg/avconv:
 | 
			
		||||
            # [http @ 00000000003d2fa0] No trailing CRLF found in HTTP header.
 | 
			
		||||
            headers = handle_youtubedl_headers(info_dict['http_headers'])
 | 
			
		||||
            args += [
 | 
			
		||||
        http_headers = None
 | 
			
		||||
        if info_dict.get('http_headers'):
 | 
			
		||||
            youtubedl_headers = handle_youtubedl_headers(info_dict['http_headers'])
 | 
			
		||||
            http_headers = [
 | 
			
		||||
                # Trailing \r\n after each HTTP header is important to prevent warning from ffmpeg/avconv:
 | 
			
		||||
                # [http @ 00000000003d2fa0] No trailing CRLF found in HTTP header.
 | 
			
		||||
                '-headers',
 | 
			
		||||
                ''.join(f'{key}: {val}\r\n' for key, val in headers.items())]
 | 
			
		||||
                ''.join(f'{key}: {val}\r\n' for key, val in youtubedl_headers.items())
 | 
			
		||||
            ]
 | 
			
		||||
 | 
			
		||||
        env = None
 | 
			
		||||
        proxy = self.params.get('proxy')
 | 
			
		||||
@@ -441,6 +443,11 @@ class FFmpegFD(ExternalFD):
 | 
			
		||||
                args += ['-rtmp_conn', conn]
 | 
			
		||||
 | 
			
		||||
        for i, url in enumerate(urls):
 | 
			
		||||
            # We need to specify headers for each http input stream
 | 
			
		||||
            # otherwise, it will only be applied to the first.
 | 
			
		||||
            # https://github.com/yt-dlp/yt-dlp/issues/2696
 | 
			
		||||
            if http_headers is not None and re.match(r'^https?://', url):
 | 
			
		||||
                args += http_headers
 | 
			
		||||
            args += self._configuration_args((f'_i{i + 1}', '_i')) + ['-i', url]
 | 
			
		||||
 | 
			
		||||
        args += ['-c', 'copy']
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user