Исправлена ошибка «Невозможно загрузить видеоданные: Ошибка HTTP 403: Запрещено».
Youtube-dl — мой любимый и любимый менеджер загрузок из командной строки. Я часто использую его для загрузки аудио, видео и фильмов из Интернета. Сегодня я попытался загрузить видео с YouTube с помощью youdtube-dl со своего рабочего стола Linux и получил следующее сообщение об ошибке: Невозможно загрузить видеоданные: Ошибка HTTP 403: Запрещено. Обычно большинство ошибок youtube-dl исправляются после обновления youtube-dl. Поэтому я обновил youtube-dl с помощью команды:
sudo youtube-dl -U
Он уже обновлен! У меня самая последняя версия.
А затем я снова попытался загрузить видео командой:
youtube-dl https://www.youtube.com/watch?v=4jTy5jnMkYc
Но я получаю ту же ошибку:
[youtube] 4jTy5jnMkYc: Downloading webpage
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
ERROR: unable to download video data: HTTP Error 403: Forbidden
Если вы когда-либо сталкивались с этой ошибкой, следуйте инструкциям ниже, чтобы исправить ее.
Исправить ошибку «Невозможно загрузить видеоданные: ошибка HTTP 403: запрещено» при загрузке медиафайлов с помощью Youtube-dl в Linux.
Эта ошибка, вероятно, произойдет из-за кеша Youtube-dl. Чтобы это исправить, просто удалите кеш youtube-dl с помощью команды:
youtube-dl --rm-cache-dir
Эта команда удалит локальный каталог кэширования для youtube-dl. В моем случае он удалил следующий каталог:
Removing cache dir /home/sk/.cache/youtube-dl ...
Если вы используете Youtube-dl в коде Python, следующее поможет исправить эту ошибку.
# 'cachedir': False -> don't use a local caching dir (~/.cache/youtube-dl)
ydl_opts = {...,
'cachedir': False
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
result = ydl.extract_info(url)
Теперь я могу без проблем загружать видео с YouTube.
youtube-dl https://www.youtube.com/watch?v=4jTy5jnMkYc
[youtube] 4jTy5jnMkYc: Downloading webpage
[youtube] 4jTy5jnMkYc: Downloading js player vflset
[youtube] 4jTy5jnMkYc: Downloading js player vflset
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.f137.mp4
[download] 100% of 29.87MiB in 00:24
[download] Destination: Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.f251.webm
[download] 100% of 5.10MiB in 00:04
[ffmpeg] Merging formats into "Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.mkv"
Deleting original file Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.f137.mp4 (pass -k to keep)
Deleting original file Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.f251.webm (pass -k to keep)
Как вы, возможно, заметили, в приведенной выше команде есть предупреждающее сообщение:
[...]
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[...]
На самом деле это не проблема, а ожидаемое поведение команды youtube-dl. По умолчанию youtube-dl загружает доступные аудио- и видеопотоки самого высокого качества, а затем объединяет их в совместимый контейнер, например mkv, mp4 и т. д. Если эти аудио- и видеопотоки не помещаются в контейнер mp4, YouTube-dl не помещается в контейнер mp4. -dl затем упакует их в контейнер MKV и отобразит приведенное выше предупреждающее сообщение. В таких случаях вы можете игнорировать предупреждение MKV и загрузить видео и аудио наилучшего качества но только в контейнере mp4, явно указав желаемые форматы аудио и видео наилучшего качества, как показано ниже:
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' https://www.youtube.com/watch?v=4jTy5jnMkYc
Дополнительные примеры команд Youtube-dl см. в следующем руководстве.
- Руководство по YouTube-dl с примерами для начинающих
Надеюсь это поможет.