Можно ли загрузить только один кадр из видео на YouTube?

Позвольте мне объяснить, что я настроил. Я использовал Pytube (модуль Python) для загрузки видео с YouTube. Затем я бы извлек несколько случайных кадров из видео и сохранил их в формате JPEG. Мне не нужно ни аудио, ни видео.

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

Я думаю, что-то вроде youtube-dl в сочетании с ffmpeg поможет, но я не могу найти пример, чтобы сделать это онлайн тот. Существует решение для загрузки случайной выборки видео, которая значительно снизит потребление пропускной способности сети, но я хочу что-то более эффективное и менее трудоемкое. Любая помощь будет оценена.

2
задан 2 July 2019 в 14:01

2 ответа

Используя комбинацию этого ответа и этого ответа , следующие люди смогут делать то, что вы хотите:

ffmpeg -ss "$screenshot_time" -i $(youtube-dl -f 22 --get-url "$youtube_url") -vframes 1 -q:v 2 "$output_file"
  • ffmpeg Параметр -ss используется здесь как параметр ввода, который является самым быстрым из доступных методов. Его можно использовать в качестве параметра вывода, который займет намного больше времени, но позволяет избежать случайного создания артефакта, который иногда генерирует входная версия.

-ss position (input / output)

При использовании в качестве параметра ввода (перед -i) ищет в этом файле ввода позицию. Обратите внимание, что в большинстве форматов поиск невозможно, поэтому ffmpeg будет искать ближайшую точку поиска перед позицией. Когда transcoding и -accurate_seek включены (по умолчанию), этот дополнительный сегмент между точкой поиска и позицией будет декодирован и отброшен. Когда выполняется потоковое копирование или когда используется -noaccurate_seek, оно будет сохранено.

При использовании в качестве параметра вывода (перед именем выходного файла) декодирует, но отбрасывает ввод, пока отметки времени не достигнут позиции.

позиция может быть в секундах или в формате чч: мм: сс [.xxx].

  • Опция -i означает использование следующего в качестве входных данных для ffmpeg, здесь мы используем подстановку команд Баша , чтобы использовать выходные данные youtube-dl.
  • -vframes 1 устанавливает количество выходных кадров равным 1.
  • -q:v 2 контролирует качество продукции. Полный диапазон представляет собой линейную шкалу от 1 до 31, где более низкое значение приводит к повышению качества. 2-5 - это диапазон, рекомендуемый в ответе источника, который используется для части ffmpeg этого ответа.
  • "$screenshot_time" следует заменить на метку времени клипа, который вы хотите записать в показанном выше.
  • "$output_file" следует заменить на путь к вашему выходному файлу, возможно screenshot.jpeg или подобному.

С точки зрения команды youtube-dl, -f 22 загружает в формате mp4 наилучшего возможного качества, а "$youtube_url" следует заменить URL-адресом видео.

1
ответ дан 2 July 2019 в 14:01

ВНИМАНИЕ: Не удалось отправить запрос HEAD на https://www.youtube.com/watch \? V \ = oHg5SJYRHA0: Ошибка HTTP 404: Не найдено ОШИБКА: Невозможно загрузить веб-страницу: Ошибка HTTP 404: не найден (вызвано HTTPError ()); пожалуйста, сообщите об этой проблеме на https://yt-dl.org/bug . Убедитесь, что вы используете последнюю версию; см. https://yt-dl.org/update о том, как обновить. Обязательно вызовите youtube-dl с флагом --verbose и включите его полный вывод. ffmpeg версия 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 разработчики FFmpeg, созданные с конфигурацией gcc 7 (Ubuntu 7.3.0-16ubuntu3): --prefix = / usr --extra-version = 0ubuntu0.18.04 .1 --toolchain = усиленный --libdir = / usr / lib / x86_64-linux-gnu --incdir = / usr / include / x86_64-linux-gnu --enable-gpl --disable-striping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable- libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable- frei0r --enable-libopencv --enable-libx264 --enable-shared ВНИМАНИЕ: несоответствие конфигурации библиотеки конфигурации avcodec: --prefix = / usr --extra-version = 0ubuntu0.18.04.1 --toolchain = усиленный --libdir = / usr / lib / x86_64-linux-gnu --incdir = / usr / include / x86_64-linux-gnu --enable-gpl --disable-striping --enable-avresample --enable-avisynth --enable-gnutls - -enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi - -enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg - -enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora - enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi - enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv - enable-libx264 --enable-shared --enable-version3 --disable-doc --isable-Programs 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 -vframes: нет такого файла или каталога

0
ответ дан 2 July 2019 в 14:01

Другие вопросы по тегам:

Похожие вопросы: