Merge branch 'best-fallback-on-outdated-avconv' of https://github.com/dstftw/youtube...
authorSergey M․ <dstftw@gmail.com>
Thu, 14 May 2015 09:18:58 +0000 (15:18 +0600)
committerSergey M․ <dstftw@gmail.com>
Thu, 14 May 2015 09:18:58 +0000 (15:18 +0600)
Conflicts:
youtube_dl/YoutubeDL.py

youtube_dl/YoutubeDL.py
youtube_dl/postprocessor/ffmpeg.py

index 0fbfe9642337ff2e08acd6c519f3aa0dce7fbe24..4c8196d082fa9cfffbb45a1c5f5684664ecc1a80 100755 (executable)
@@ -1086,9 +1086,10 @@ class YoutubeDL(object):
         if req_format is None:
             req_format_list = []
             if (self.params.get('outtmpl', DEFAULT_OUTTMPL) != '-' and
-                    info_dict['extractor'] in ['youtube', 'ted'] and
-                    FFmpegMergerPP(self).available):
-                req_format_list.append('bestvideo+bestaudio')
+                    info_dict['extractor'] in ['youtube', 'ted']):
+                merger = FFmpegMergerPP(self)
+                if merger.available and merger.can_merge():
+                    req_format_list.append('bestvideo+bestaudio')
             req_format_list.append('best')
             req_format = '/'.join(req_format_list)
         formats_to_download = []
@@ -1848,7 +1849,7 @@ class YoutubeDL(object):
             thumb_ext = determine_ext(t['url'], 'jpg')
             suffix = '_%s' % t['id'] if len(thumbnails) > 1 else ''
             thumb_display_id = '%s ' % t['id'] if len(thumbnails) > 1 else ''
-            t['filename'] = thumb_filename = os.path.splitext(filename)[0] + suffix + '.' + thumb_ext
+            thumb_filename = os.path.splitext(filename)[0] + suffix + '.' + thumb_ext
 
             if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(thumb_filename)):
                 self.to_screen('[%s] %s: Thumbnail %sis already present' %
index 214de39f9aa80e6f042b63e2069ded1ab6d123bd..cc65b34e71a28cfb0947b9441d5dcc006baf47ba 100644 (file)
@@ -591,6 +591,23 @@ class FFmpegMergerPP(FFmpegPostProcessor):
         os.rename(encodeFilename(temp_filename), encodeFilename(filename))
         return info['__files_to_merge'], info
 
+    def can_merge(self):
+        # TODO: figure out merge-capable ffmpeg version
+        if self.basename != 'avconv':
+            return True
+
+        required_version = '10-0'
+        if is_outdated_version(
+                self._versions[self.basename], required_version):
+            warning = ('Your copy of %s is outdated and unable to properly mux separate video and audio files, '
+                       'youtube-dl will download single file media. '
+                       'Update %s to version %s or newer to fix this.') % (
+                           self.basename, self.basename, required_version)
+            if self._downloader:
+                self._downloader.report_warning(warning)
+            return False
+        return True
+
 
 class FFmpegFixupStretchedPP(FFmpegPostProcessor):
     def run(self, info):