스토리

Як завантажити відео з прямого URL відео

Що таке прямий URL відео, як зберегти файл MP4 або WebM у браузері і чому CORS, HLS або DASH можуть заблокувати завантаження файлу.

Мати URL відео — не те саме, що мати відеофайл. Одні адреси вказують на ресурс MP4 або WebM. Інші відкривають HTML-сторінку, яка лише містить програвач. Ще інші завантажують потоковий плейлист із багатьох малих сегментів.

Тому одне посилання зберігається швидко, а інше відмовляється завантажуватися, хоча відео відтворюється. Далі в статті — як розрізняти ці випадки й зберігати файл лише тоді, коли URL справді є відеоресурсом.

Що таке прямий URL відео?

Прямий URL відео — це адреса, HTTP-відповідь якої є медіаресурсом, а не вебсторінкою навколо нього. Найпростіший приклад виглядає так:

https://example.com/video.mp4

Коли браузер запитує цей URL, сервер може повернути байти відеофайлу, часто з Content-Type на кшталт video/mp4 або video/webm. HTML-документа посередині немає. URL і є файлом.

Розширення файлу — підказка, а не правило. Посилання все одно може бути відеоресурсом без .mp4 у шляху:

https://example.com/media?id=123

Якщо сервер відповідає Content-Type: video/mp4 (або іншим відеотипом) і тілом, яке справді є медіаданими, це все одно прямий URL відео. Шлях, що закінчується на .mp4, усе ще може бути перенаправленням або HTML-сторінкою помилки. Джерело істини — HTTP-відповідь, а не літери в кінці адреси.

Прямий URL відео і вебсторінка з відео

Порівняйте ці два:

  • Прямий файл: https://example.com/files/movie.mp4
  • Вебсторінка: https://example.com/watch/movie

Перший може бути одним відеооб’єктом. Другий зазвичай — HTML-документ. Ця сторінка може вбудувати елемент <video>, завантажити скрипт програвача, а потім запитати медіа з іншого URL, який ніколи не з’являється в адресному рядку.

Вставлення адреси сторінки в інструмент завантаження не витягує файл зі сторінки. Браузер запитав би HTML. Інструменту, який працює з прямими загальнодоступними URL відео, потрібна сама адреса медіа.

Завантажувач вебвідео NEXNARA розрахований на цей публічний URL файлу, а не на сторінку перегляду. Він не витягує відео із сайтів, не входить в облікові записи й не збирає потоки з програвача.

Як завантажити відео з прямого URL

Коли у вас уже є кандидатне посилання:

  1. Отримайте прямий URL. Використовуйте URL файлу, об’єкта або медіа — не сторінку перегляду.
  2. Перевірте, що це відеоресурс. Нова вкладка має показати вбудоване відтворення браузера (або запит на завантаження), а не сторінку з програвачем у макеті.
  3. Спочатку спробуйте браузер. Багато браузерів дозволяють зберегти з контекстного меню відео або починають завантаження, якщо сервер надсилає disposition файлу.
  4. Скористайтеся інструментом у браузері, якщо спочатку потрібен попередній перегляд. Вставте той самий URL на сторінку, яка може показати формат, тривалість або розмір перед збереженням.

Завантажувач вебвідео — це останній крок. Ви вставляєте прямий URL відео. Браузер запитує цей хост. Якщо ресурс — відтворюваний файл, з’являється попередній перегляд. Коли відеосервер дозволяє читання з іншого джерела, можна завантажити; коли ні — URL усе ще можна відкрити, якщо попередній перегляд працює. NEXNARA не надсилає файл на власні сервери.

Які формати відео можна завантажити?

У браузері «чи можу я це завантажити?» близько до «чи може цей браузер декодувати цей файл?». Типові контейнери для URL одного файлу:

  • MP4 — часто H.264 або HEVC у контейнері ISO BMFF
  • WebM — зазвичай VP8, VP9 або AV1
  • Ogg Video — рідше; підтримка кодека залежить від браузера

Контейнер і кодек — не одне й те саме. Файл .mp4 не гарантовано відтворюється в кожному браузері на кожному пристрої. Підтримка HEVC і AV1 залежить від ОС, обладнання й збірки браузера. Інструмент, який використовує елемент HTML5 video, показує попередній перегляд того, що цей браузер може декодувати. Він не конвертує й не робить remux файлу.

Якщо браузер повідомляє про непідтримуваний формат, файл усе ще може відтворюватися в іншому місці — або це неправильно позначений об’єкт чи плейлист, а не один файл.

Чому відео відтворюється, але його не можна завантажити?

Відтворення й збереження використовують різні API браузера.

Елемент <video> може запитати ресурс (часто з HTTP range-запитами) і відмалювати кадри. Це може вдатися, навіть коли JavaScript на іншому джерелі не може прочитати байти й перетворити їх на файл, який користувач збереже.

Типові причини, чому попередній перегляд працює, а Завантажити не вдається:

  • CORS. Відеохост не дав цьому сайту дозвіл читати відповідь зі скрипту. Див. наступний розділ.
  • Облікові дані між джерелами. Файли cookie, які працюють на початковому сайті, не надсилаються в простому міжсайтовому fetch, якщо обидві сторони явно не погодяться.
  • Content-Disposition. attachment або ім’я файлу впливають на те, як зберігає навігація верхнього рівня, а не на те, чи може скрипт іншого джерела прочитати тіло.
  • Конфігурація сервера. Відсутні заголовки CORS або заблоковані комбінації HEAD/GET можуть зупинити інструмент, який спочатку перевіряє ресурс.
  • Автентифікація. URL, який працює, поки ви ввійшли на хості, може повернути 401/403 з іншого сайту.
  • URL, що закінчуються або підписані. Об’єктне сховище часто видає рядок запиту з обмеженням за часом. Після закінчення те саме посилання не працює.

Ніщо з цього не означає, що файл «не відео». Це означає, що цей контекст браузера не має права його скопіювати.

Що таке CORS?

CORS (Cross-Origin Resource Sharing) — правило браузера про те, коли JavaScript на одному джерелі може читати відповідь з іншого джерела. Це не спеціальний продукт «проти завантаження». Воно існує, щоб https://a.example не міг непомітно читати вашу пошту чи файли з https://b.example, поки b.example цього не дозволить.

Тег video усе ще може показувати файл з іншого джерела. Те, що CORS часто блокує, — це fetch() з іншого сайту, якому потрібні сирі байти як Blob для діалогу збереження. Якщо відеосервер не надсилає значення Access-Control-Allow-Origin, що включає джерело інструмента (або * для простого публічного файлу), це читання відхиляється.

Відтворення — не дозвіл скрипту іншого сайту зберегти копію. NEXNARA не проксує файл, щоб обійти цю перевірку. Якщо завантаження заблоковано, запасний варіант — відкрити URL на відеохості, і лише якщо ви маєте право зберегти його.

А HLS і DASH?

Багато програвачів не завантажують один MP4. Вони завантажують маніфест, потім багато сегментів.

  • HLS часто використовує URL, що закінчується на .m3u8. Цей файл — плейлист (текст), а не повний фільм в одному об’єкті.
  • DASH часто використовує .mpd, XML-маніфест, який вказує на представлення й сегменти.

Прямий URL MP4/WebM і плейлист HLS/DASH — різні ресурси. Збереження «того .m3u8» дає невеликий текстовий файл, а не фільм. Зібрати один файл із сегментів потрібно розбором плейлиста, завантаженням сегментів і зазвичай remux. Завантажувач вебвідео не збирає потоки HLS або DASH. Якщо інструмент повідомляє про потоковий плейлист, це очікувано.

Відео із захистом DRM

Комерційні програвачі можуть обгортати медіа в DRM, наприклад Widevine, FairPlay або PlayReady. Ці системи шифрують семпли й вимагають ліцензію. Це не публічний об’єкт video/mp4, який можна запитати й зберегти. NEXNARA не розшифровує й не обходить DRM.

Як розпізнати прямий URL відео

Практичні перевірки, у порядку того, скільки вони доводять:

  • Шлях закінчується на .mp4, .webm, .ogv або подібне медіарозширення. Корисно, не остаточно.
  • Відкриття URL у новій вкладці показує саме відео (або завантаження), а не весь інтерфейс сайту.
  • Видавець задокументував це як посилання на файл або об’єкт (CDN, бакет сховища, «пряме завантаження»).
  • Заголовки відповіді містять Content-Type: video/* (наприклад video/mp4).

Інструменти розробника браузера можуть показати в панелі Мережа тип і Content-Type запиту, який ви вже зробили як звичайний користувач сторінки. Це допомагає зрозуміти, що було запитано. Це не посібник із витягування прихованих потоків чи обходу входу. Якщо сайт не дає публічний URL файлу, цей сценарій не застосовується.

Розширення й тип вмісту можуть брехати. URL .mp4 може перенаправити на HTML. Тип video/mp4 усе ще може бути крихітним тілом помилки. Відтворення у вкладці — практичне підтвердження.

Поширені проблеми

URL відкриває вебсторінку.
Це не прямий URL відео. Потрібна адреса медіаресурсу, а не сторінка перегляду.

Відео відтворюється, але Завантажити нічого корисного не робить.
Хост, найімовірніше, забороняє читання з іншого джерела (CORS) або файл завеликий для збереження в браузері. Використовуйте Відкрити, якщо попередній перегляд працює, або збережіть із відеохоста у вкладці верхнього рівня, коли маєте дозвіл.

Посилання працювало, а тепер ні.
Підписані або з терміном дії URL помирають за таймером. Запитайте нове посилання там само, звідки отримали перше.

URL закінчується на .m3u8 або .mpd.
Це потоковий плейлист, а не один файл MP4/WebM. Цей завантажувач не зшиває ці сегменти.

Браузер повідомляє, що формат не підтримується.
Контейнер або кодек може бути недоступний у цьому браузері/ОС. Спробуйте інший браузер або підтвердіть, що файл справді є відеооб’єктом.

Браузер не може відкрити URL.
Перевірте https://, з’єднання і те, що хост дозволяє публічний доступ. HTTP-файл на HTTPS-сторінці інструмента також може не спрацювати як змішаний вміст.

Приватність

NEXNARA не надсилає відеофайл на сервери NEXNARA для цього інструмента. Це не те саме, що твердження «URL ніколи не покидає ваш браузер».

Коли ви вставляєте адресу, ваш браузер безпосередньо запитує цей зовнішній відеохост. Хост може бачити звичайний медіазапит від вас. NEXNARA не зберігає файл посередині. Оператор відео й надалі отримує трафік, бо байти надходять з його URL.

Відповідальне використання

Завантажуйте лише відео, якими ви володієте або на завантаження яких маєте дозвіл. Публічний URL — не ліцензія на копіювання.

FAQ

Що таке прямий URL відео?

Посилання, відповідь якого — сам відеоресурс (наприклад об’єкт MP4 або WebM), а не HTML-сторінка перегляду з вбудованим програвачем.

Чи можна завантажити MP4 за URL?

Так, коли URL — публічний файл MP4 (або подібний) і браузер може його декодувати. Якщо адреса — вебсторінка або плейлист, збереження цієї адреси не дасть файл фільму.

Чому відео відтворюється, але його не можна завантажити?

Програвач може показати медіа, не дозволяючи JavaScript іншого сайту читати байти. CORS, автентифікація й політика сервера — звичайні причини.

Чи можна завантажити URL m3u8?

Не як одне готове відео цим інструментом. Файл .m3u8 — плейлист HLS. NEXNARA не збирає потоки HLS або DASH.

Чи надсилає NEXNARA моє відео?

Ні. Файл не надсилається на NEXNARA. Браузер звертається до введеного вами URL відео, тому зовнішній хост усе одно бачить цей запит.

Чому закінчився термін посилання на відео?

Багато хостів прикріплюють підпис і час закінчення до URL об’єктів. Після цього моменту той самий рядок більше не авторизований. Запитайте свіже посилання; редагування старого його не поновить.