Многие люди любят просматривать видео на 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-адрес одним видео или списком видео, и загрузит его.
- Скачать видео с произвольным именем файла:
# 使用 -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.
Ссылаться на: