Спасибо, пригодится для одного из моих проектов!
Вообще ffmpeg довольно мощная штука

Хочется добавить, что если вдруг нужно провести любые манипуляции в автоматическом режиме(скриптом, например) с видео и/или аудио файлом стоит посмотреть что там умеет ffmpeg.
Ускорение/замедление/оверлей/объединение/разъединение/переконвертация, список возможностей очень обширный.
ага — я прямо прифигел что он умеет делать) до этого приходилось качать файл и на сервере уже с ними работать, а оказывается можно все делать одним инструментом, одной командой, при этом алгоритмы оптимизированные. Единственная сложность — скомпилировать ffmpeg может быть)
И даже для компиляции есть простой скрипт который умеет инклудить много проприетарных либ внутрь себя (раньше было особенно актуально для nvenc, ибо его не было ещё в коде родного ffmpeg'а). Разве что кофе на варит) Разработан кажется хабравчанином, только ник запамятовал. Вот ссылка (https://github.com/rdp/ffmpeg-windows-build-helpers), надеюсь не сочтут за рекламу.
Это (и многое другое) умеет youtube-dl. Но самому написать, конечно, интереснее :)
Это просто прекрасно! Не могли бы вы зайти в ишью #622 (открыт с 2013 года) и рассказать там всем как именно youtube-dl всё сам умет, а то там всё тоже сводится к ffmpeg.
Обрезать видеофайл в произвольном формате — не задача youtube-dl. В этом же тикете приведён пример:

ffmpeg -ss 3:59:10 -i $(youtube-dl -f 22 -g 'https://www.youtube.com/watch?v=mMZriSvaVP8') -t 3:06:40 -c copy react-spot.mp4

То же самое делает автор статьи, только вместо youtube-dl пользуется какой-то питоновской библиотекой. Библиотека оказалась не очень очевидна из консоли, в отличие от youtube-dl, поэтому появилась целая статья на хабре с предложением читать xml и вызывать ffmpeg изнутри питоновского скрипта.
Статья называется «FFMPEG. Загружаем часть видео с YouTube». Она, в первую очередь, про ffmpeg, а не про как именно получить прямую ссылку на видео/аудио. Соответственно писать «Это (и многое другое) умеет youtube-dl.» не уточняя о чём речь — крайне некорректно.
Да, про то что по ссылке всё сводится к ffmpeg я сразу написал, зачем было это повторять?
Если бы в подводке к кату было написано не «как загружать часть видео YouTube при помощи ffmpeg», а «как загружать видео с ютуба и как обрезать его при помощи ffmpeg», вопросов бы не было. Я прочитал статью только потому что подумал: «ого, ffmpeg уже и этому научился?»
ну не претендую на «целую статью на хабре»(который скатился и вынуждает уже не тратить время на «целые статьи»), но совет как я считаю довольно полезный будет тем, кто занимается проектами с видео/аудио.
Youtube-dl штука полезная, но очень медленная в большинстве случаев и недостаточно гибкая — использовать в реальном проекте можно разве что для получения метаданных. Я в своем изначально пользовался pytube — она умеет и качать видео и on_progress callback есть и age_restricted обходит, ну и много чего для работы с youtube из кода — лично мне использовать вызовы консольных приложений без обертки не очень удобно
Не-не-не, статья хорошая и полезная. Я, вот, узнал про библиотеку для питона. Она для немного другого — как вы пишете, всякие колбэки и метаданные, но почему бы и нет.
А возможно с помощью этого инструмента извлечь аудиопоток из стрима? Сейчас довольно много годных трансляций музыкальных идет на ютубе не прерывных.
да — можно, более того — можно задерживать аудио относительно видео, прокидывать из потока в поток и тд
Пока к сожалению, не получается создать экземпляр с подобным стримом
>>> yt = YouTube('https://www.youtube.com/watch?v=pJvDIO5P4p0') 

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\pytube\__main__.py", line 84, in __init__
    self.prefetch_init()
  File "C:\Python27\lib\site-packages\pytube\__main__.py", line 93, in prefetch_
init
    self.init()
  File "C:\Python27\lib\site-packages\pytube\__main__.py", line 128, in init
    mixins.apply_signature(self.player_config_args, fmt, self.js)
  File "C:\Python27\lib\site-packages\pytube\mixins.py", line 31, in apply_signa
ture
    url = stream['url']
youtube-dl --extract-audio --audio-quality 0 --audio-format mp3 "https://www.youtube.com/watch?v=pJvDIO5P4p0"

(опять же должен быть установлен ffmpeg т.к. youtube отдаёт webm или m4a, который конвертируется в mp3)
спасибо, жаль кармы, нет плюс не поставить.
Это все хорошо, но мы говорим про live stream на ютубе так? Что потом с ним делать?
Озадачился таким-же вопросом, в идеале хотелось бы реализовать ретрансляцию:
YouTube LIVE -> свой сервер -> что-то удобоваримое для chrome или плееров
я пока так выхожу из положения
youtube-dl -f 95 -g "https://www.youtube.com/watch?v=_4BE2wBVCv8" 

Это отдает нам плейлист который понимает уже аимп например. Но не понимает MPD (
А для видео наверно так, перевод в ts
ffmpeg -i $(youtube-dl -f -g ) -copy <file_name>.ts
А там видимо веб серверу его скармливать этот файл. Могу ошибаться
Только полноправные пользователи могут оставлять комментарии.
Войдите, пожалуйста.