dstftw,
Солнышко '%(title)s' фиксированное названия файла, которое просто подставляется. даже если ты разрешения не укаешь оно так и сохраниться без разрежения .mp4.webm не будет такой уж параметр -o . Вообще если тебе нужно скачать сам файл. То можно это сделать без разрешения -o. Тогда он скачает все по дефолту.
PS... Может я тебя не правильно понимаю? Лап расскажи пожалуйста, что ты хочешь сделать?
%(title)s - это не название файла, а название видео, без расширения. Я прекрасно знаю что, как и куда подставляется и работает (я один из разработчиков youtube-dl если кто-то еще не догадался).
Без расширения youtube-dl сохранит файл только если скачивается формат, представленный единым файлом (с аудио и видео на борту), это был дефолт в старых версиях youtube-dl до 2015.04.26 (что говорит ваш
youtube-dl --version кстати?). Однако, самое лучшее качество можно получить только, скачав отдельно DASH аудио и DASH видео и объединив (muxing) их при помощи ffmpeg (это дефолт в новых версиях (2015.04.26 и позже) и это делается автоматически), однако в данном случае выходной файл должен содержать расширение контейнера в который муксится аудио+видео, иначе ffmpeg просто не смуксит их. Поэтому, в этом случае, расширение будет всегда, вне зависимости от того указано оно в шаблоне или нет.
В приведенном примере как раз показывается случай когда муксятся webm video + webm audio, где четко видно что финальное расширение файла
.webm, а из-за того что в output template задано
.mp4, то и получается
.mp4.webm.
И это только постпроцессинг муксинга аудио и видео, помимо которого есть еще целый ворох постпроцессоров (к примеру, эмбеддинг субтитров, обложек, извлечение аудио из видео и тд.), в которых возможны свои проблемы, в случае когда расширение хардкодится в шаблоне. Поэтому всегда стоит указывать его шаблоном
%(ext)s, чтобы избежать потенциальных проблем и непредвиденного поведения.
В конце концов, новички, ведь, будут просто копи-пейстить вашу команду не задумываясь о том, что же на самом деле там происходит и потенциально натыкаться на "странное" поведение, а потом разрывать наш багтрекер невалидными тикетами. Раз уж можно сделать пример, который будет определенно работать во всех случаях, то почему бы и не сделать его таким?
Надеюсь понятно объяснил. Спасибо.
Пользователь решил продолжить мысль [time]15 Февраль 2016, 03:11:29[/time]:
Последняя это какая? Если "последняя" из репозиториев убунты, то значит не последняя. Последняя версия на момент написания этого поста - 2016.02.13. В любом случае лог с --verbose в студию.
в подробном логе написано что версия avconv устаревшая по-этому не может качнуть раздельные файлы и склеить. при этом если указать вручную -f x+y то скачивает и склеивает
[debug] youtube-dl version 2016.02.13
[debug] Python version 2.7.3 - Linux-3.2.0-4-amd64-x86_64-with-debian-7.9
[debug] exe versions: avconv 0.8.17-6, avprobe 0.8.17-6, ffmpeg 0.8.17-6, ffprobe 0.8.17-6
WARNING: Your copy of avconv is outdated and unable to properly mux separate video and audio files, youtube-dl will download single file media. Update avconv to version 10-0 or newer to fix this.
У вас очень древний avconv, советую обновиться. Некоторые видео+аудио, смуксенные этой версией avconv, получаются с рассинхроном, некоторые avconv этой версии не может смуксить вообще, именно поэтому для старых версий avconv/ffmpeg это отключено по умолчанию, но работает если вручную указать
-f video+audio.