mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	Add ability to embed subtitles in mkv files (closes #5434)
This commit is contained in:
		 Nikoli
					Nikoli
				
			
				
					committed by
					
						 Jaime Marquínez Ferrándiz
						Jaime Marquínez Ferrándiz
					
				
			
			
				
	
			
			
			 Jaime Marquínez Ferrándiz
						Jaime Marquínez Ferrándiz
					
				
			
						parent
						
							861e65eb05
						
					
				
				
					commit
					083c1bb960
				
			| @@ -216,7 +216,7 @@ which means you can modify it, redistribute it or use it however you like. | |||||||
|     --recode-video FORMAT            Encode the video to another format if necessary (currently supported: mp4|flv|ogg|webm|mkv) |     --recode-video FORMAT            Encode the video to another format if necessary (currently supported: mp4|flv|ogg|webm|mkv) | ||||||
|     -k, --keep-video                 Keep the video file on disk after the post-processing; the video is erased by default |     -k, --keep-video                 Keep the video file on disk after the post-processing; the video is erased by default | ||||||
|     --no-post-overwrites             Do not overwrite post-processed files; the post-processed files are overwritten by default |     --no-post-overwrites             Do not overwrite post-processed files; the post-processed files are overwritten by default | ||||||
|     --embed-subs                     Embed subtitles in the video (only for mp4 videos) |     --embed-subs                     Embed subtitles in the video (only for mkv and mp4 videos) | ||||||
|     --embed-thumbnail                Embed thumbnail in the audio as cover art |     --embed-thumbnail                Embed thumbnail in the audio as cover art | ||||||
|     --add-metadata                   Write metadata to the video file |     --add-metadata                   Write metadata to the video file | ||||||
|     --metadata-from-title FORMAT     Parse additional metadata like song title / artist from the video title. The format syntax is the same as --output, the parsed |     --metadata-from-title FORMAT     Parse additional metadata like song title / artist from the video title. The format syntax is the same as --output, the parsed | ||||||
|   | |||||||
| @@ -698,7 +698,7 @@ def parseOpts(overrideArguments=None): | |||||||
|     postproc.add_option( |     postproc.add_option( | ||||||
|         '--embed-subs', |         '--embed-subs', | ||||||
|         action='store_true', dest='embedsubtitles', default=False, |         action='store_true', dest='embedsubtitles', default=False, | ||||||
|         help='Embed subtitles in the video (only for mp4 videos)') |         help='Embed subtitles in the video (only for mkv and mp4 videos)') | ||||||
|     postproc.add_option( |     postproc.add_option( | ||||||
|         '--embed-thumbnail', |         '--embed-thumbnail', | ||||||
|         action='store_true', dest='embedthumbnail', default=False, |         action='store_true', dest='embedthumbnail', default=False, | ||||||
|   | |||||||
| @@ -501,8 +501,8 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor): | |||||||
|         return cls._lang_map.get(code[:2]) |         return cls._lang_map.get(code[:2]) | ||||||
|  |  | ||||||
|     def run(self, information): |     def run(self, information): | ||||||
|         if information['ext'] != 'mp4': |         if information['ext'] not in ['mp4', 'mkv']: | ||||||
|             self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4 files') |             self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4 or mkv files') | ||||||
|             return [], information |             return [], information | ||||||
|         subtitles = information.get('requested_subtitles') |         subtitles = information.get('requested_subtitles') | ||||||
|         if not subtitles: |         if not subtitles: | ||||||
| @@ -520,8 +520,9 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor): | |||||||
|             # Don't copy the existing subtitles, we may be running the |             # Don't copy the existing subtitles, we may be running the | ||||||
|             # postprocessor a second time |             # postprocessor a second time | ||||||
|             '-map', '-0:s', |             '-map', '-0:s', | ||||||
|             '-c:s', 'mov_text', |  | ||||||
|         ] |         ] | ||||||
|  |         if information['ext'] == 'mp4': | ||||||
|  |             opts += ['-c:s', 'mov_text'] | ||||||
|         for (i, lang) in enumerate(sub_langs): |         for (i, lang) in enumerate(sub_langs): | ||||||
|             opts.extend(['-map', '%d:0' % (i + 1)]) |             opts.extend(['-map', '%d:0' % (i + 1)]) | ||||||
|             lang_code = self._conver_lang_code(lang) |             lang_code = self._conver_lang_code(lang) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user