diff options
Diffstat (limited to 'youtube_dl/downloader/external.py')
| -rw-r--r-- | youtube_dl/downloader/external.py | 17 | 
1 files changed, 15 insertions, 2 deletions
| diff --git a/youtube_dl/downloader/external.py b/youtube_dl/downloader/external.py index 8d642fc3e..3a73cee1c 100644 --- a/youtube_dl/downloader/external.py +++ b/youtube_dl/downloader/external.py @@ -6,6 +6,7 @@ import sys  import re  from .common import FileDownloader +from ..compat import compat_setenv  from ..postprocessor.ffmpeg import FFmpegPostProcessor, EXT_TO_OUT_FORMATS  from ..utils import (      cli_option, @@ -198,6 +199,18 @@ class FFmpegFD(ExternalFD):                  '-headers',                  ''.join('%s: %s\r\n' % (key, val) for key, val in headers.items())] +        env = None +        proxy = self.params.get('proxy') +        if proxy: +            if not re.match(r'^[\da-zA-Z]+://', proxy): +                proxy = 'http://%s' % proxy +            # Since December 2015 ffmpeg supports -http_proxy option (see +            # http://git.videolan.org/?p=ffmpeg.git;a=commit;h=b4eb1f29ebddd60c41a2eb39f5af701e38e0d3fd) +            # We could switch to the following code if we are able to detect version properly +            # args += ['-http_proxy', proxy] +            env = os.environ.copy() +            compat_setenv('HTTP_PROXY', proxy, env=env) +          protocol = info_dict.get('protocol')          if protocol == 'rtmp': @@ -224,7 +237,7 @@ class FFmpegFD(ExternalFD):                  args += ['-rtmp_live', 'live']          args += ['-i', url, '-c', 'copy'] -        if protocol == 'm3u8': +        if protocol in ('m3u8', 'm3u8_native'):              if self.params.get('hls_use_mpegts', False) or tmpfilename == '-':                  args += ['-f', 'mpegts']              else: @@ -239,7 +252,7 @@ class FFmpegFD(ExternalFD):          self._debug_cmd(args) -        proc = subprocess.Popen(args, stdin=subprocess.PIPE) +        proc = subprocess.Popen(args, stdin=subprocess.PIPE, env=env)          try:              retval = proc.wait()          except KeyboardInterrupt: | 
