Browse Source

[downloader/external] Call ffmpeg with with HTTP_PROXY env variable set (#9437)

totalwebcasting
Sergey M․ 9 years ago
parent
commit
e62d9c5caa
No known key found for this signature in database GPG Key ID: 2C393E0F18A9236D
1 changed files with 14 additions and 1 deletions
  1. +14
    -1
      youtube_dl/downloader/external.py

+ 14
- 1
youtube_dl/downloader/external.py View File

@ -6,6 +6,7 @@ import sys
import re import re
from .common import FileDownloader from .common import FileDownloader
from ..compat import compat_setenv
from ..postprocessor.ffmpeg import FFmpegPostProcessor, EXT_TO_OUT_FORMATS from ..postprocessor.ffmpeg import FFmpegPostProcessor, EXT_TO_OUT_FORMATS
from ..utils import ( from ..utils import (
cli_option, cli_option,
@ -198,6 +199,18 @@ class FFmpegFD(ExternalFD):
'-headers', '-headers',
''.join('%s: %s\r\n' % (key, val) for key, val in headers.items())] ''.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') protocol = info_dict.get('protocol')
if protocol == 'rtmp': if protocol == 'rtmp':
@ -239,7 +252,7 @@ class FFmpegFD(ExternalFD):
self._debug_cmd(args) self._debug_cmd(args)
proc = subprocess.Popen(args, stdin=subprocess.PIPE)
proc = subprocess.Popen(args, stdin=subprocess.PIPE, env=env)
try: try:
retval = proc.wait() retval = proc.wait()
except KeyboardInterrupt: except KeyboardInterrupt:


Loading…
Cancel
Save