Как лучше скачать видео из MAX с параметрами C# GET?

Ссылка скопирована
C#
1 ответ

,
По вводным: получаю от MAX такую ссылку на видео
"https://vd431.okcdn.ru/?expires=1772984580078&pr=9..."

Сейчас ситуация такая: не понимаю как называется этот формат видео и как его скачать через GET запрос.
По вводным: можно просто хотя бы уточняющие ответы с правильными названиями, что это за видео-фрукт такой, а остальное я уже нагуглю.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Андрей PHP Ответ

Ссылка вида https://vd431.okcdn.ru/?expires=...&... похожа не на “формат видео”, а на временную подписанную ссылку CDN. У OK/MAX видео может отдаваться как цельный MP4/WebM-файл или как поток HLS/DASH, но по одному фрагменту URL это точно не определить. Нужно смотреть HTTP-заголовки и ответ сервера.

Сначала сделайте HEAD/GET и посмотрите Content-Type:

curl -I "https://vd431.okcdn.ru/?expires=..."

curl -I "https://vd431.okcdn.ru/?expires=..."

Если увидите video/mp4, можно скачать обычным GET-запросом. Если application/vnd.apple.mpegurl или файл .m3u8 — это HLS. Если mpd — это MPEG-DASH. Если сервер отдаёт 403, ссылка истекла или нужны cookies/headers.

Для C# обычное скачивание файла:

using var http = new HttpClient();
http.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0");
 
var bytes = await http.GetByteArrayAsync(url);
await File.WriteAllBytesAsync("video.mp4", bytes);

using var http = new HttpClient(); http.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0"); var bytes = await http.GetByteArrayAsync(url); await File.WriteAllBytesAsync("video.mp4", bytes);

Если это HLS, одним GET-запросом видео не скачать как цельный файл. Нужно скачать playlist m3u8, затем сегменты .ts/.m4s и собрать. На практике проще использовать ffmpeg:

ffmpeg -i "https://.../playlist.m3u8" -c copy output.mp4

ffmpeg -i "https://.../playlist.m3u8" -c copy output.mp4

Если ссылка подписанная, у неё есть срок жизни expires. Через некоторое время она перестанет работать. Для скачивания нужно получать актуальную ссылку заново тем же способом, которым её получает браузер/приложение.

Проверьте также Referer, User-Agent и cookies. CDN может отдавать видео только при наличии правильных заголовков. В C# их можно добавить:

http.DefaultRequestHeaders.Referrer = new Uri("https://max.ru/");
http.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0");

http.DefaultRequestHeaders.Referrer = new Uri("https://max.ru/"); http.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0");

Итог: сначала определите тип ответа через Content-Type. MP4 качается обычным GET, HLS/DASH нужно собирать через playlist, а подписанную ссылку нужно использовать до истечения срока.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно