[postprocessor/ffmpeg] Always use the 'file:' protocol for filenames (fixes #6874)
If the filename contains ':' it is interpreted as a protocol. It also handles filenames starting with '-'.
This commit is contained in:
		
							parent
							
								
									131d05033b
								
							
						
					
					
						commit
						8a7bbd1606
					
				
					 2 changed files with 9 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -31,7 +31,7 @@ class HlsFD(FileDownloader):
 | 
			
		|||
        args = [
 | 
			
		||||
            encodeArgument(opt)
 | 
			
		||||
            for opt in (ffpp.executable, '-y', '-i', url, '-f', 'mp4', '-c', 'copy', '-bsf:a', 'aac_adtstoasc')]
 | 
			
		||||
        args.append(encodeFilename(tmpfilename, True))
 | 
			
		||||
        args.append(encodeFilename(ffpp._ffmpeg_filename_argument(tmpfilename), True))
 | 
			
		||||
 | 
			
		||||
        self._debug_cmd(args)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -135,7 +135,10 @@ class FFmpegPostProcessor(PostProcessor):
 | 
			
		|||
 | 
			
		||||
        files_cmd = []
 | 
			
		||||
        for path in input_paths:
 | 
			
		||||
            files_cmd.extend([encodeArgument('-i'), encodeFilename(path, True)])
 | 
			
		||||
            files_cmd.extend([
 | 
			
		||||
                encodeArgument('-i'),
 | 
			
		||||
                encodeFilename(self._ffmpeg_filename_argument(path), True)
 | 
			
		||||
            ])
 | 
			
		||||
        cmd = ([encodeFilename(self.executable, True), encodeArgument('-y')] +
 | 
			
		||||
               files_cmd +
 | 
			
		||||
               [encodeArgument(o) for o in opts] +
 | 
			
		||||
| 
						 | 
				
			
			@ -155,10 +158,10 @@ class FFmpegPostProcessor(PostProcessor):
 | 
			
		|||
        self.run_ffmpeg_multiple_files([path], out_path, opts)
 | 
			
		||||
 | 
			
		||||
    def _ffmpeg_filename_argument(self, fn):
 | 
			
		||||
        # ffmpeg broke --, see https://ffmpeg.org/trac/ffmpeg/ticket/2127 for details
 | 
			
		||||
        if fn.startswith('-'):
 | 
			
		||||
            return './' + fn
 | 
			
		||||
        return fn
 | 
			
		||||
        # Always use 'file:' because the filename may contain ':' (ffmpeg
 | 
			
		||||
        # interprets that as a protocol) or can start with '-' (-- is broken in
 | 
			
		||||
        # ffmpeg, see https://ffmpeg.org/trac/ffmpeg/ticket/2127 for details)
 | 
			
		||||
        return 'file:' + fn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FFmpegExtractAudioPP(FFmpegPostProcessor):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue