Мне нужно скачать видео с сервера (API). Сейчас у меня есть что-то вроде этого:
def download_video(url, where_to_store):
response = requests.get(url, stream=True)
if response.status_code == 200:
with open(f"{local_video_path}", "wb") as file:
for chunk in response.iter_content(chunk_size=1024*1024):
file.write(chunk)
else:
return response.status_code
Этот код хорошо загружает видео, но не включает звук. Я пробовал это с разными видео, но результат тот же. Звук отдельно скачивать?
Большое спасибо!
Аудио встроено в файл mp4, как и другие видеоформаты. Скорее всего, проблема в вашем воспроизводящем устройстве. Может быть, просто забыть, что к аудиоразъему подключены наушники.





«Нужно ли мне загружать звук отдельно?»
Скорее всего да. Некоторые серверы предлагают разные разрешения видео (выбор качества), и такие серверы обычно хранят отдельные файлы для аудио и видео. Это позволяет использовать файлы меньшего размера, поскольку они не повторяют одни и те же аудиоданные для каждого отдельного видеофайла.
Например: Youtube не сохраняет звук в видео 1080p. Вы можете «попробовать это с разными видео», но ни один файл 1080p по-прежнему не будет содержать звука. Возможно, ваш сервер/API делает то же самое.
Самый простой способ, который вы, возможно, заметили, — это использовать интернет-браузер для загрузки и воспроизведения видео и программу записи экрана, способную записывать экран и звук не только с микрофона, но и с любого другого источника звука, например, используемого видео.
Другими словами, для достижения желаемого эффекта нет необходимости пытаться написать собственную программу на любом языке программирования, и преимущество этого подхода заключается в том, что любое видео, которое вы можете запустить в своем интернет-браузере (что обычно превосходит возможности отдельных библиотек, поскольку он объединяет все доступные, чтобы предоставить вам наилучшие возможности работы в Интернете) становится доступным для загрузки в виде файла.
И если вы действительно нуждаетесь в автоматизации... почему бы не использовать программное обеспечение для автоматизации пользовательского ввода, чтобы обеспечить нажатие клавиш и щелчки мыши, необходимые для того, чтобы это произошло так, как вы сами проверили свою успешность, делая это вручную?
Мне нужно это автоматизировать, потому что я создаю программу pyqt, которая будет просматривать список URL-адресов, загружать каждое видео, а затем воспроизводить каждое из них.
@JohnCarter: В какой системе ты работаешь? Могу помочь только с Linux (MS Windows не поддерживаю). Проблема со скачиванием часто заключается в том, что серверы отказываются скачивать, когда запрос не поступает от интернет-браузера. Без URL-адреса трудно догадаться, в чем заключается реальная проблема... отсюда и такой общий ответ. Есть верные способы обмануть сервер, и я хочу помнить, что в stackoverflow есть ответы, как это сделать, отправив соответствующие данные вместе с запросом, а затем загрузив фрагмент за фрагментом, как это делает интернет-браузер во время воспроизведения видео.
URL: api.olhar.media/videos/sample720_2.mp4
Используя ваш код и URL-адрес, я получаю видео, которое воспроизводится со звуком... Предлагаю вам попробовать другой видеоплеер. Видеосервер поддерживает загрузку в интерфейсе видеоплеера в браузере, поэтому нет необходимости обманывать сервер, и загрузка происходит со звуком, встроенным в видеофайл.
ТЫ ГЕНИЙ! Я попробовал воспроизвести видео в другом плеере и знаете что? Работает! Глупо с моей стороны, но я вам очень благодарен за помощь!
Я не вижу ничего плохого в вашем коде.
requestsне имеет логики, позволяющей отделить видео от звука. Используйте, например. эту ссылку, чтобы убедиться, что ваш код работает: sample-videos.com/video321/mp4/720/big_buck_bunny_720p_2mb.mp4 Если вы поделитесь реальным URL-адресом, с которым у вас возникли проблемы, это может помочь нам решить эту проблему. Или кричать, если файл по указанному мною URL приходит без звука.