Загрузите видео с YouTube одним щелчком мыши

Python

Многие люди любят просматривать видео на YouTube, и, естественно, там будут какие-то любимые коллекции или авторы видео.Иногда они хотят загрузить и сохранить их для локального воспроизведения, чтобы им не нужно было каждый раз выполнять FQ. скорость некоторых агентов не очень идеальна (если ваш прокси быстрый, пожалуйста, игнорируйте эту статью).

Если вы хотите загрузить видео с YouTube и чувствуете, что некоторые сайты или инструменты загрузки не могут удовлетворить ваши требования, например, я хочу настроить разрешение загрузки, я хочу загрузить только видео или только аудио, или я хочу загрузить субтитры и т. д. . В настоящее время загрузка инструментов не может вас удовлетворить.Сегодня это мощный инструмент Amway.youtube-dl, Глядя на более чем 3W звезд на github, вы знаете, что этот инструмент очень мощный. Ниже приводится краткое описание того, как его использовать.

Установите YouTube-DL:

youtube-dl is a command-line program to download videos from YouTube.com and other video

Рекомендуется здесьpipУстановка (требуется среда Python):

$ pip install youtube-dl

Проверьте, прошла ли установка успешно:

$ youtube-dl
Usage: youtube-dl [OPTIONS] URL [URL...]

youtube-dl: error: You must provide at least one URL.Type youtube-dl --help to see a list of all options.

установить ffmpeg

ffmpegэто инструмент для синтеза и конвертирования аудио и видео:

A complete, cross-platform solution to record, convert and stream audio and video.

Youtube-dl вызовет этот инструмент для синтеза после загрузки аудио и видео, поэтому вам также необходимо установить ffmpeg:

1. Установка Windows: прямо вОфициальный сайтСкачать почтовый пакет, после декомпрессии, будетpath/to/ffmpeg/binКаталог можно добавить в переменную окружения, тут особо нечего сказать

2.Установка Ubuntu: ffmpeg был заменен на libav в Ubuntu 14.04. Но это решение было отменено, и оно снова доступно в Ubuntu 15.04. Поэтому, если вы используете версию выше ubuntu15.04, вы можете использоватьsudo apt-get install ffmpegКоманда для установки, если у вас Ubuntu 14.04 и ниже, вам необходимо установить из источника mc3man ppa:

  • добавить источник
$ sudo add-apt-repository ppa:mc3man/trusty-media
  • Появится следующее приглашение, пожалуйста, нажмите<Enter>подтверждать
*Please note that if using this ppa I would *not* try upgrading to 14.10/15.04, ect. Do a fresh install instead. The intent here is just for users wishing to stay on 14.04*
If upgrading anyway use ppa-purge first -
sudo ppa-purge  ppa:mc3man/trusty-media

Also note that with apt-get a sudo apt-get dist-upgrade is needed for initial setup & with some package upgrades
 More info: https://launchpad.net/~mc3man/+archive/ubuntu/trusty-media
Press [ENTER] to continue or ctrl-c to cancel adding it
  • Список пакетов обновлений:
$ sudo apt-get update
$ sudo apt-get dist-upgrade
  • Установите ffmpeg:
$ sudo apt-get install ffmpeg
  • Проверьте, прошла ли установка успешно:
$ ffmpeg
ffmpeg version N-89777-g6e80079a28 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-amf --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx
  libavutil      56.  7.100 / 56.  7.100
  libavcodec     58.  9.100 / 58.  9.100
  libavformat    58.  3.100 / 58.  3.100
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7. 11.101 /  7. 11.101
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

использовать ютуб-дл

Использование команды также очень просто:

$ youtube-dl [OPTIONS] URL [URL...]

Его сила заключается в том, что параметры команды очень богаты и поддерживают различные функции.Вот несколько кратких представлений:

1. Просмотр видео Все типы:

$ youtube-dl -F <url>
## 或者:
$ youtube-dl --list-formats <url>

Эта команда выведет список всех форматов, в которых существует видео, и не загрузит его.

$ youtube-dl -F https://www.youtube.com/watch?v=dfnCAmr569k
[youtube] sRVRN2DlDp4: Downloading webpage
[youtube] sRVRN2DlDp4: Downloading video info webpage
[youtube] sRVRN2DlDp4: Extracting video information
[info] Available formats for sRVRN2DlDp4:
format code  extension  resolution note
249          webm       audio only DASH audio   55k , opus @ 50k, 1.83MiB
250          webm       audio only DASH audio   71k , opus @ 70k, 2.37MiB
140          m4a        audio only DASH audio  128k , m4a_dash container, mp4a.40.2@128k, 4.72MiB
171          webm       audio only DASH audio  131k , vorbis@128k, 4.01MiB
251          webm       audio only DASH audio  137k , opus @160k, 4.58MiB
278          webm       256x144    144p   99k , webm container, vp9, 24fps, video only, 3.32MiB
160          mp4        256x144    144p  113k , avc1.4d400c, 24fps, video only, 2.71MiB
242          webm       426x240    240p  228k , vp9, 24fps, video only, 6.75MiB
133          mp4        426x240    240p  248k , avc1.4d4015, 24fps, video only, 5.10MiB
243          webm       640x360    360p  415k , vp9, 24fps, video only, 12.19MiB
134          mp4        640x360    360p  637k , avc1.4d401e, 24fps, video only, 12.23MiB
244          webm       854x480    480p  769k , vp9, 24fps, video only, 20.70MiB
135          mp4        854x480    480p 1187k , avc1.4d401e, 24fps, video only, 22.97MiB
247          webm       1280x720   720p 1539k , vp9, 24fps, video only, 40.88MiB
136          mp4        1280x720   720p 2364k , avc1.4d401f, 24fps, video only, 42.75MiB
248          webm       1920x1080  1080p 2703k , vp9, 24fps, video only, 74.20MiB
137          mp4        1920x1080  1080p 4331k , avc1.640028, 24fps, video only, 78.09MiB
271          webm       2560x1440  1440p 9057k , vp9, 24fps, video only, 197.73MiB
264          mp4        2560x1440  1440p 10409k , avc1.640032, 24fps, video only, 203.63MiB
313          webm       3840x2160  2160p 18092k , vp9, 24fps, video only, 577.79MiB
17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k
36           3gp        320x180    small , mp4v.20.3, mp4a.40.2
43           webm       640x360    medium , vp8.0, vorbis@128k
18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)

В приведенном выше примере показано каждое определение, формат и код формата видео трубки.

2. Загрузите видео и аудио указанного качества и объедините их автоматически.

$ youtube-dl -f <format code> <url>

вformat codeэтоyoutube-dl -F <url>Первый столбец результатов, выводимых командой. На самом деле это подразумевает использование ffmpeg, youtube-dl будет искать ffmpeg и использовать его для объединения аудио и видео.

3. Настройте качество видео и звука:

$ youtube-dl -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" <url>

Приведенный выше пример: загрузите формат MP4 самого высокого качества или загрузите другой формат самого высокого качества без формата MP4, см. другие примеры.format-selection-examples:

4. Скачать субтитры Для отечественных студентов возможно нужны субтитры, тогдаyoutube-dlЗагрузка субтитров также поддерживается.

# 下载字幕
$ youtube-dl --write-sub <url> 

# 下载该视频所有可用的字幕
$ youtube-dl --write-sub --all-subs <url>

# 下载自动生成的字幕(仅限youtube)
$ youtube-dl --write-auto-sub <url>

5. Выбор и преобразование субтитров Для большинства отечественных плееров субтитры vtt, загруженные youtube, не могут быть загружены правильно, но если их можно преобразовать в субтитры srt, это будет идеально, youtube-dl, естественно, поддерживает эту функцию, и вы также можете выбрать субтитры на соответствующем языке для загрузки. Шерстяная ткань:

# 选择英文字幕并转换成srt格式,同时下载视频
$ youtube-dl --sub-lang en --convert-subs srt --write-sub <url>

6. Скачать список видео Если вам нужно загрузить список видео, youtube-dl также поддерживает это, использование ничем не отличается:

$ youtube-dl <palylist_url>

youtube-dl распознает, является ли ваш URL-адрес одним видео или списком видео, и загрузит его.

  1. Скачать видео с произвольным именем файла:
# 使用 -o 参数
$ youtube-dl -o "%(upload_date)s-%(title)s.%(ext)s" <url>

Приведенная выше команда указывает, что загруженный видеофайл использует дату загрузки + имя видео + расширение видео в качестве имени файла. Дополнительные параметры см.youtube-dl output-template

Объедините вышеупомянутые команды для указания качества видео, загрузки субтитров, конвертации субтитров и т. д. вместе:

$ youtube-dl -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" --sub-lang en --convert-subs srt -o "%(upload_date)s-[%(title)s].%(ext)s" --write-sub https://www.youtube.com/watch?v=dfnCAmr569k

Загруженное видео можно просматривать напрямую

Кстати, локальная загрузка требует, чтобы ваш агент включил глобальный режим. Если вы не хотите включать глобальный режим, вам нужно добавить настройки прокси после каждой команды:--proxy "https://127.0.0.1:1080"

встроить youtube-dl

YouTube-DL - не только хороший инструмент командной строки, но также поддерживает использование встроенного кода. Давайте посмотрим простой пример:

from __future__ import unicode_literals
import youtube_dl

class MyLogger(object):
    def debug(self, msg):
        print(msg)

    def warning(self, msg):
        print(msg)

    def error(self, msg):
        print(msg)

def my_hook(d):
    if d['status'] == 'finished':
        print('Done downloading, now converting ...')

ydl_opts = {
    'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
    'outtmpl':'%(upload_date)s-[%(title)s].%(ext)s',
    'writeautomaticsub':True,
    'subtitleslangs':'en',
    'logger': MyLogger(),
    'progress_hooks': [my_hook],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['https://www.youtube.com/watch?v=dfnCAmr569k'])

Код очень простой, основное вниманиеydl_optsЭтот словарь, каждый пункт в нем есть командная строкаyoutube-dlПараметр , разве это не удобно?

Пользовательские преобразованные файлы субтитров

Если преобразование субтитров youtube-dl не соответствует требованиям, вы также можете написать код для преобразования самостоятельно.Вот еще одна библиотека для преобразования субтитров.pycaption. Поддерживает различные популярные форматы видео субтитров

демо:

from pycaption import WebVTTReader, SRTWriter

def vtt_to_srt():
    vtt_content = """WEBVTT Kind: captions Language: en   00:00:03.000 --> 00:00:04.766 size:88% position:56% ♪ I WANNA BE YOUR END GAME ♪   00:00:06.000 --> 00:00:08.000 ♪ I WANNA BE YOUR FIRST STRING ♪ """

    caption_set = WebVTTReader().read(vtt_content)
    srt_content = SRTWriter().write(caption_set)
    print(srt_content)

vtt_to_srt()

Как это, очень просто?

Что ж, введение почти закончено, пожалуйста, разблокируйте (экранируйте) для большего количества вариантов использования youtube-dl.


Ссылаться на: