ytdl-org / youtube-dl

Command-line program to download videos from YouTube.com and other video sites
http://ytdl-org.github.io/youtube-dl/
The Unlicense
131.94k stars 10.01k forks source link

ffmpeg merge fails when filename contains colon #6286

Closed cemysce closed 9 years ago

cemysce commented 9 years ago

Example: $ youtube-dl --output 'foo:bar' --no-mtime -- q7yCLn-O-Y0 ... ERROR: foo:bar.f137: Protocol not found

Complete output when run with --verbose:

[debug] System config: [] [debug] User config: [] [debug] Command-line args: [u'--output', u'foo:bar', u'--no-mtime', u'--verbose', u'--', u'q7yCLn-O-Y0'] [debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8 [debug] youtube-dl version 2015.07.07 [debug] Python version 2.7.9 - Linux-3.12.13-gentoo-x86_64-Intel-R-_Core-TM-_i7_CPU920@_2.67GHz-with-gentoo-2.2 [debug] exe versions: ffmpeg 2.6.3, ffprobe 2.6.3, rtmpdump 2.4 [debug] Proxy map: {} [youtube] q7yCLn-O-Y0: Downloading webpage [youtube] q7yCLn-O-Y0: Downloading video info webpage [youtube] q7yCLn-O-Y0: Extracting video information [youtube] {22} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {43} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {18} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {5} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {36} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {17} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {137} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {248} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {136} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {247} signature length 41.42, html5 player en_US-vflp6cSzi [youtube] {135} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {244} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {134} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {243} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {133} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {242} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {160} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {278} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {140} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {171} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {249} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {250} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] {251} signature length 43.42, html5 player en_US-vflp6cSzi [youtube] q7yCLn-O-Y0: Downloading DASH manifest [youtube] q7yCLn-O-Y0: Downloading DASH manifest WARNING: [youtube] q7yCLn-O-Y0: Skipping DASH manifest: ExtractorError(u'Could not download DASH manifest: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.',) [debug] Invoking downloader on 'https://r4---sn-8xgp1vo-xfge7.googlevideo.com/videoplayback?id=abbc822e7f8ef98d&itag=137&source=youtube&requiressl=yes&ms=au&mv=m&pl=24&mn=sn-8xgp1vo-xfge7&gcr=us&mm=31&ratebypass=yes&mime=video/mp4&gir=yes&clen=101812244&lmt=1427913271883219&dur=344.385&upn=Dns1GgMGAsE&mt=1437281608&sver=3&key=dg_yt0&signature=2836F9286EB90D602D64715B7233E93619E2CF9E.2562FD0574C229D3346C956F13E908DFDA3FE72A&fexp=901816,936102,9405436,9407146,9407157,9408142,9408210,9408420,9408710,9412505,9415531,9415664,9416126,9416288,9416334,9416358,9417137,9417200,945049&ip=72.69.234.111&ipbits=0&expire=1437303297&sparams=ip,ipbits,expire,id,itag,source,requiressl,ms,mv,pl,mn,gcr,mm,ratebypass,mime,gir,clen,lmt,dur' [download] Destination: foo:bar.f137 [download] 100% of 97.10MiB in 00:13 [debug] Invoking downloader on 'https://r4---sn-8xgp1vo-xfge7.googlevideo.com/videoplayback?id=abbc822e7f8ef98d&itag=141&source=youtube&requiressl=yes&ms=au&mv=m&pl=24&mn=sn-8xgp1vo-xfge7&gcr=us&mm=31&ratebypass=yes&mime=audio/mp4&gir=yes&clen=10982275&lmt=1427912633005548&dur=344.444&upn=Dns1GgMGAsE&mt=1437281608&sver=3&key=dg_yt0&signature=4590F857DF4508EC7E20BB42EE92BBEA2D50C0F3.97AD3F6B8D2CD424BF441BD380F9765B4A96A175&fexp=901816,936102,9405436,9407146,9407157,9408142,9408210,9408420,9408710,9412505,9415531,9415664,9416126,9416288,9416334,9416358,9417137,9417200,945049&ip=72.69.234.111&ipbits=0&expire=1437303297&sparams=ip,ipbits,expire,id,itag,source,requiressl,ms,mv,pl,mn,gcr,mm,ratebypass,mime,gir,clen,lmt,dur' [download] Destination: foo:bar.f141 [download] 100% of 10.47MiB in 00:01 [ffmpeg] Merging formats into "foo:bar.mp4" [debug] ffmpeg command line: ffmpeg -y -i foo:bar.f137 -i foo:bar.f141 -c copy -map 0:v:0 -map 1:a:0 foo:bar.temp.mp4 ERROR: foo:bar.f137: Protocol not found Traceback (most recent call last): File "/usr/lib64/python2.7/site-packages/youtube_dl/YoutubeDL.py", line 1547, in post_process files_to_delete, info = pp.run(info) File "/usr/lib64/python2.7/site-packages/youtube_dl/postprocessor/ffmpeg.py", line 398, in run self.run_ffmpeg_multiple_files(info['__files_to_merge'], temp_filename, args) File "/usr/lib64/python2.7/site-packages/youtube_dl/postprocessor/ffmpeg.py", line 149, in run_ffmpeg_multiple_files raise FFmpegPostProcessorError(msg) FFmpegPostProcessorError

yan12125 commented 9 years ago

It's a FFMpeg limitation, and the following command solves the problem:

youtube-dl --output './foo:bar' --no-mtime -- q7yCLn-O-Y0