Содержание
  1. Три способа создать видеохостинг: что выбрать под свою задачу
  2. Сколько стоит свой видеохостинг: считаем по прайсу
  3. Как создать видеохостинг на готовом открытом движке
  4. Как создать видеохостинг с нуля: технологический стек
  5. Практика: собираем минимальный видеохостинг на Node.js и React
  6. Транскодинг и раздача: чем настоящий видеохостинг отличается от папки с файлами
  7. Что требует закон от видеохостинга в России
  8. Чек-лист запуска видеохостинга
  9. Частые вопросы о создании видеохостинга
  10. Итог
Подборки и сравненияОбновлено · 08.2026

Видеохостинг своими силами: создание аналога YouTube

30 августа 2023 · 21 минута чтения

Создать видеохостинг можно тремя способами: развернуть открытый движок вроде PeerTube или MediaCMS на своём сервере, подключить готовую видеоплатформу с плеером и CDN по подписке или написать сервис с нуля на связке «бэкенд + объектное хранилище + транскодер FFmpeg + HLS-плеер». Выбор упирается в два числа: сколько часов видео вы храните и сколько гигабайт раздаёте зрителям в месяц.

Коротко о том, что разобрано ниже:

  • чем различаются три пути и кому какой подходит по деньгам и срокам;
  • из чего складывается счёт: хранение, транскодинг, исходящий трафик — с расчётом на 1000 просмотров;
  • минимальные требования к серверу под самостоятельный хостинг видео;
  • рабочий пример на Node.js и React — от загрузки файла до воспроизведения;
  • как устроена нарезка в HLS и почему без адаптивного битрейта платформа «тормозит»;
  • когда сервис попадает в реестр аудиовизуальных сервисов Роскомнадзора.

Обновлено в августе 2026 года. Цены и требования сверены с текущими страницами разработчиков — источники названы в тексте.

Три способа создать видеохостинг: что выбрать под свою задачу

Развилка выбора: от объёма трафика к технологии
Развилка выбора: от объёма трафика к технологии

Под словом «видеохостинг» люди понимают разное: кому-то нужен закрытый плеер для уроков на своём сайте, кому-то — публичная площадка с каналами, подписками и комментариями, то есть своя версия YouTube с монетизацией авторов. От этого зависит и путь.

Путь Что получаете Срок до первого видео Кому подходит
Готовая платформа по подписке Плеер, транскодинг, CDN, статистика, защита ссылок — из коробки Часы Онлайн-школа, медиа, интернет-магазин: нужно показать видео без собственной разработки
Открытый движок на своём сервере Полноценная площадка с каналами, подписками, модерацией; данные у вас Дни Сообщество, корпоративный портал, нишевая площадка
Разработка с нуля Любая логика и монетизация, но всё пишется руками Недели и месяцы Продукт с нестандартной механикой, где чужая коробка мешает

Разработка с нуля выглядит самым «взрослым» вариантом, но именно она чаще всего останавливается на этапе транскодинга: конвертация в несколько качеств и раздача сегментов — это отдельная инженерная система из очереди задач, кодеков и доставки. Поэтому дальше разобраны все три пути, начиная с денег, потому что бюджет отсекает варианты быстрее любых технических аргументов.

Видео — не единственный тяжёлый тип данных, с которым сталкивается такой проект; общий подход к раскладке файлов по узлам разобран в материале о распределённом хранении данных.

Сколько стоит свой видеохостинг: считаем по прайсу

Счёт за видео складывается из трёх статей: хранение файлов, транскодинг (перекодирование исходника в набор качеств) и исходящий трафик к зрителю. Порядок цифр удобно смотреть по опубликованному прайсу российской видеоплатформы Kinescope: хранение — 1,9 ₽/ГБ за первую 1 000 ГБ и 1,5 ₽/ГБ за следующие 20 000 ГБ; транскодирование — 0,8 ₽ за минуту исходного видео на первых 60 000 минут. CDN-трафик считается лестницей: первые 1 000 ГБ — 1,9 ₽/ГБ, следующие 5 000 ГБ — 1,4 ₽/ГБ, следующие 15 000 ГБ — 1,1 ₽/ГБ, следующие 30 000 ГБ — 0,7 ₽/ГБ. Ступени складываются: 1 000 + 5 000 + 15 000 = 21 000 ГБ, поэтому на объёме 20 000 ГБ ещё работает ставка 1,1 ₽/ГБ, а 0,7 ₽/ГБ включается только после 21 000 ГБ. Бесплатный тариф там даёт «Хранение до 100 минут видео» и «200 ГБ трафика в месяц», платный начинается «от 700 ₽ /мес».

Переведём это в понятную единицу — стоимость одного ролика. Возьмём видео на 10 минут в 1080p при битрейте 4 Мбит/с: такой файл весит около 300 МБ (4 Мбит/с × 600 с = 2400 Мбит ≈ 300 МБ). Дальше — арифметика по тем же тарифам.

Статья расхода Как считается Итог
Транскодинг, разово 10 минут × 0,8 ₽ 8 ₽
Хранение, за месяц 0,3 ГБ × 1,9 ₽ 0,57 ₽
1000 полных просмотров 1000 × 0,3 ГБ × 1,9 ₽ 570 ₽

Видно главное: хранение почти ничего не стоит, а платите вы за просмотры. Ролик, который посмотрели 100 000 раз, стоит уже десятки тысяч рублей трафика — независимо от того, чей это сервер. Отсюда практический вывод: экономику видеохостинга держат битрейт и глубина просмотра, а цена диска в этом счёте почти не участвует. Снижение битрейта с 4 до 2,5 Мбит/с при том же разрешении убирает 37,5% трафика: 2,5 ÷ 4 = 0,625. Вдвое счёт режет только переход на 2 Мбит/с. Это первая ручка, за которую стоит браться.

Свой сервер меняет структуру счёта, но не отменяет его: вместо оплаты за гигабайт вы платите за канал и за администрирование. Чтобы сравнить два варианта, посчитайте счёт платформы на своём объёме по той же лестнице (в биллинге 1 ТБ — это 1 000 ГБ). 1 ТБ исходящего трафика в месяц: 1 000 × 1,9 = 1 900 ₽. 10 ТБ: 1 000 × 1,9 + 5 000 × 1,4 + 4 000 × 1,1 = 13 300 ₽, в среднем 1,33 ₽/ГБ. 50 ТБ: 1 900 + 7 000 + 16 500 + 29 000 × 0,7 = 45 700 ₽, средняя ставка падает до 0,91 ₽/ГБ. Своя инфраструктура выигрывает с того момента, когда этот счёт перерастает стоимость вашего канала и работы администратора. Универсального порога в терабайтах здесь нет: цену канала задаёт ваш хостинг, и в прайсе видеоплатформы её не найти.

Все расчёты в этом разделе наши: арифметика по опубликованным тарифам Kinescope. Битрейт 4 Мбит/с взят как типичное значение для 1080p и на вашем контенте будет отличаться.

Как создать видеохостинг на готовом открытом движке

Быстрее всего своя площадка поднимается не с чистого листа, а из открытого движка. Три проекта закрывают почти весь спрос.

  • PeerTube — федеративная платформа под лицензией AGPL-3.0 (по данным репозитория проекта на GitHub). Разработчики описывают её как «An open code under a free/libre license» и «A federation of interconnected hosting providers», а раздачу трафика разгружает peer-to-peer через WebRTC. Из коробки: адаптивный плеер, плейлисты, подписки, история просмотров, трансляции через RTMP, несколько каналов у автора, аналитика. Установка бесплатна — «PeerTube is freely provided, no need to pay to install it on your server».
  • MediaCMS — тоже AGPL-3.0, по описанию репозитория «modern, fully featured open source video and media CMS, written in Python/Django and React, featuring a REST API». Поддерживает «video, audio, image, and PDF files», ролевую модель доступа, встроенный триммер и разбивку на главы, режимы публикации «Public, unlisted, private workflows». Позиционируется как «Self-host on your infrastructure with complete control over your data».
  • Owncast — лицензия MIT, узкая специализация: «free and open source live video and web chat server for use with existing popular broadcasting software». Инструмент заточен под прямые эфиры со встроенным чатом; библиотеку роликов с каналами на нём не собрать.

Какой сервер нужен под собственный видеохостинг

Требования удобно брать у PeerTube — они опубликованы в FAQ проекта и дают честный ориентир для любого self-hosted решения. Минимум: «1 vCore», «1.5 GB of RAM», «Enough storage for videos» и «20Mbit/s upload network speed». Для нагрузки порядка тысячи одновременных зрителей рекомендуется «4 vCore», «4 GB of RAM», «1Gbit/s upload network speed». Если транскодинг крутится на той же машине, планка поднимается до «8 vCore» и «8 GB of RAM»: в документации прямо сказано «Transcoding is very cpu intensive». Про хранилище там же: «If you want to store many videos on your PeerTube instance, you may want to store videos externally using Object Storage».

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

Как создать видеохостинг с нуля: технологический стек

Если готовые движки не подходят по логике продукта, платформа собирается из пяти слоёв. Ниже — состав каждого и решения, которые в этих ролях проверены практикой.

Шаг 1: выбор технологического стека

  • Backend: Python (Django или Flask), Node.js (Express), FastAPI или Ruby on Rails. Задача слоя — принять загрузку, поставить файл в очередь на обработку и отдать метаданные клиенту.
  • База данных: PostgreSQL или MySQL для пользователей, метаданных о видео, сессий. Сами файлы в базе не хранят — только пути и статусы обработки.
  • Frontend: HTML, CSS, JavaScript; для динамического интерфейса — React, Angular или Vue.js.
  • Очередь задач: Redis или RabbitMQ. Без неё загрузка большого файла блокирует веб-процесс, и сайт перестаёт отвечать во время перекодирования.

Шаг 2: обработка и хранение видеофайлов

  • FFmpeg — рабочая лошадь любого видеохостинга: конвертация, сжатие, обрезка, миниатюры, нарезка на сегменты для потоковой раздачи.
  • Объектное хранилище с S3-совместимым API — для самих файлов. Локальный диск сервера годится только на время прототипа: он не резервируется и не масштабируется вместе с ростом библиотеки.

Установка FFmpeg для обработки видео на собственном видеохостинге

Шаг 3: аутентификация и безопасность

Механизм входа собирается на OAuth2 или JWT. Пароли — только в виде хешей, весь обмен — по HTTPS, обновления зависимостей — регулярные. Отдельный пункт для видео: прямые ссылки на файлы в хранилище закрывают подписанными URL с ограниченным сроком жизни, иначе платный контент утекает копированием адреса из панели разработчика браузера.

Шаг 4: управление контентом и аккаунтами

  • Модерация: очередь проверки загруженного, правила блокировки, журнал решений. Автоматическая проверка по хешам известных нарушений экономит модератору часы.
  • Профили и каналы: загрузка, редактирование, организация роликов, настройки приватности, подписки.

Шаг 5: взаимодействие и общение

  • Комментарии, оценки, обратная связь — то, что превращает библиотеку файлов в площадку.
  • Подписки и уведомления о новых роликах. На этом слое площадка начинает удерживать зрителя.
для id="промпт" блок о бесплатном курсе не обнаружен

Практика: собираем минимальный видеохостинг на Node.js и React

Мы будем использовать технологический стек, который включает Node.js для бэкенда, React для фронтенда. Мы также будем использовать базу данных SQLite для простоты.

Шаг 1: подготовка окружения

  • Убедитесь, что у вас установлен Node.js и npm (Node Package Manager) на вашем компьютере.
  • Создайте папку для проекта, перейдите в нее через терминал:
«`bash

mkdir micro-video-hosting

cd micro-video-hosting

«`

  • Инициализируйте проект, создайте файл `package.json`:
«`bash

npm init -y

«`

Шаг 2: создание бэкенда

  • Установите необходимые пакеты для бэкенда:
«`bash

npm install express sqlite3 cors

«`

  • Создайте файл `server.js` для бэкенда:
«`javascript

const express = require(‘express’);

const cors = require(‘cors’);

const sqlite3 = require(‘sqlite3’).verbose();

const app = express();

const port = process.env.PORT || 5000;

app.use(cors());

app.use(express.json());

const db = new sqlite3.Database(‘./videos.db’, (err) => {

if (err) {

console.error(‘Database connection error:’, err.message);

} else {

console.log(‘Connected to the database.’);

}

});

// Здесь вы можете создать необходимые роуты для загрузки, получения и управления видео.

app.listen(port, () => {

console.log(`Server is running on port ${port}`);

});

«`

  • Создайте файл `videos.db` для SQLite базы данных.

Шаг 3: создание фронтенда

  • Установите необходимые пакеты для фронтенда:
«`bash

npx create-react-app client

cd client

npm install axios

«`

  • Создайте компоненты для загрузки или просмотра видео.

Вот пример компонента для загрузки видео (`VideoUpload.js`):

«`javascript

import React, { useState } from ‘react’;

import axios from ‘axios’;

function VideoUpload() {

const

= useState(null);

const handleVideoUpload = async (e) => {

e.preventDefault();

const formData = new FormData();

formData.append(‘video’, video);

try {

await axios.post(‘http://localhost:5000/upload’, formData, {

headers: {

‘Content-Type’: ‘multipart/form-data’,

},

});

alert(‘Video uploaded successfully’);

} catch (error) {

console.error(‘Error uploading video:’, error);

}

};

return (

<div>

<h2>Upload Video</h2>

<form onSubmit={handleVideoUpload}>

<input type=»file» accept=»video/*» onChange={(e) => setVideo(e.target.files[0])} />

<button type=»submit»>Upload</button>

</form>

</div>

);

}

export default VideoUpload;

«`

  • Создайте компонент для отображения видео (`VideoPlayer.js`):
«`javascript

import React from ‘react’;

function VideoPlayer({ videoUrl }) {

return (

<div>

<video controls width=»400″ src={videoUrl} />

</div>

);

}

export default VideoPlayer;

«`

Шаг 4: связывание фронтенда и бэкенда

На этом этапе важно наладить взаимодействие между клиентской (фронтенд), серверной (бэкенд) частями приложения. Вам нужно будет реализовать API-роуты для обработки загрузки видеофайлов, их хранения, а также получения информации о видео и его воспроизведения на клиенте.

Реализация API для загрузки

Бэкенд: настройка обработки

На стороне сервера необходимо создать маршрут для загрузки видео. В зависимости от используемого стека технологий можно воспользоваться:

  • Express (Node.js) – если сервер написан на Node.js
  • Django (Python) – если используется Django Rest Framework
  • FastAPI (Python) – если нужна высокая скорость обработки

Пример API на Node.js + Express с использованием Multer для загрузки файлов:

const express = require(«express»);
const multer = require(«multer»);
const path = require(«path»);

const app = express();
const upload = multer({ dest: «uploads/» });

app.post(«/upload», upload.single(«video»), (req, res) => {
if (!req.file) {
return res.status(400).send(«Файл не загружен»);
}
res.json({ message: «Видео успешно загружено», filePath: `/uploads/${req.file.filename}` });
});

app.listen(5000, () => console.log(«Сервер запущен на порту 5000»));

Этот код создает сервер на Express, который принимает видеофайл через POST-запрос, сохраняет его в папке uploads/ и возвращает путь к файлу.

Настройка фронтенда для загрузки видео

На клиентской стороне (React/Vue/Angular) необходимо создать форму для загрузки видеофайлов и отправки их на сервер.

Пример загрузки видео в React с помощью fetch:

import { useState } from «react»;

function VideoUpload() {
const [file, setFile] = useState(null);

const handleFileChange = (event) => {
setFile(event.target.files[0]);
};

const handleUpload = async () => {
if (!file) return alert(«Выберите файл для загрузки»);

const formData = new FormData();
formData.append(«video», file);

const response = await fetch(«http://localhost:5000/upload», {
method: «POST»,
body: formData
});

const data = await response.json();
alert(data.message);
};

return (
<div>
<input type=»file» onChange={handleFileChange} accept=»video/*» />
<button onClick={handleUpload}>Загрузить видео</button>
</div>
);
}

export default VideoUpload;

Этот компонент позволяет выбрать видеофайл и отправить его на сервер, используя fetch.

Получение списка загруженных видео

После загрузки вам нужно создать API для получения списка загруженных файлов и их отображения.

Бэкенд: получение списка файлов

Допустим, мы храним файлы в uploads/. API на Express может выглядеть так:

const fs = require(«fs»);

app.get(«/videos», (req, res) => {
fs.readdir(«uploads/», (err, files) => {
if (err) {
return res.status(500).json({ message: «Ошибка чтения файлов» });
}
res.json({ videos: files.map(file => `/uploads/${file}`) });
});
});

Фронтенд: отображение списка загруженных видео

Пример кода для отображения списка видео в React:

import { useEffect, useState } from «react»;

function VideoList() {
const [videos, setVideos] = useState([]);

useEffect(() => {
fetch(«http://localhost:5000/videos»)
.then(res => res.json())
.then(data => setVideos(data.videos))
.catch(err => console.error(err));
}, []);

return (
<div>
<h2>Список загруженных видео</h2>
{videos.map((video, index) => (
<video key={index} width=»320″ height=»240″ controls>
<source src={`http://localhost:5000${video}`} type=»video/mp4″ />
Ваш браузер не поддерживает видео.
</video>
))}
</div>
);
}

export default VideoList;

Воспроизведение видео

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

Бэкенд: настройка статического сервера для видео

Добавьте этот код в server.js, чтобы отдавать загруженные видеофайлы:

app.use(«/uploads», express.static(«uploads»));

Теперь файлы, загруженные в uploads/, можно запрашивать по URL /uploads/название_файла.

Фронтенд: воспроизведение видео

Видео можно воспроизводить с помощью стандартного <video>-тега в HTML или использовать видеоплееры, например, Video.js.

Пример с Video.js в React:

import «video.js/dist/video-js.css»;
import videojs from «video.js»;

function VideoPlayer({ src }) {
return (
<video className=»video-js» controls preload=»auto» width=»640″ height=»360″>
<source src={src} type=»video/mp4″ />
</video>
);
}

export default VideoPlayer;

Теперь фронтенд и бэкенд связаны:

  1. Пользователь может загружать видео через веб-интерфейс.
  2. Видео сохраняются на сервере.
  3. Фронтенд получает список загруженных файлов и отображает их.
  4. Видео можно воспроизводить прямо в браузере.

Следующим шагом можно реализовать поддержку прогрессивной загрузки видео, потокового вещания (например, через HLS) и более сложные функции, такие как комментарии, лайки и монетизацию.

Транскодинг и раздача: чем настоящий видеохостинг отличается от папки с файлами

Конвейер видео: от загрузки файла до кадра у зрителя
Конвейер видео: от загрузки файла до кадра у зрителя

Пример выше отдаёт mp4 целиком через статику. Для демонстрации этого достаточно, для сервиса — нет: зритель на мобильном интернете ждёт первый кадр, пока не докачается заметный кусок файла, а при просадке канала видео встаёт. Настоящая раздача устроена иначе — файл режется на короткие сегменты и выкладывается в нескольких качествах, а плеер сам переключается между ними.

Как нарезать видео в HLS

Стандартный инструмент нарезки — тот же FFmpeg. В его документации у HLS-мультиплексора есть опция hls_time: «Set the target segment length. Default value is 2» — то есть по умолчанию поток режется на сегменты по две секунды, и рез делается на ближайшем ключевом кадре после этой отметки. Из этого следуют два практических правила: задавать интервал ключевых кадров принудительно (иначе длина сегментов «поплывёт») и держать длину сегмента одинаковой во всех качествах, иначе переключение будет с рывком.

Лестница качеств

Каждый исходник перекодируется в набор дорожек — например, 1080p, 720p, 480p и 360p с разными битрейтами. Плеер получает плейлист-манифест со списком вариантов и выбирает подходящий по фактической скорости канала. Это и есть adaptive bitrate: технология, из-за отсутствия которой самодельные платформы выглядят «медленными» рядом с крупными сервисами при одинаковом железе.

Плеер и CDN

На фронтенде HLS воспроизводят через готовые плееры — Video.js, hls.js, Plyr; писать свой смысла нет, вся сложность там в обработке сетевых сбоев. Раздачу берёт на себя CDN: сегменты кешируются на узлах ближе к зрителю, и ваш сервер отдаёт файл один раз, дальше копии живут на узлах сети. Без CDN исходящий канал сервера становится потолком аудитории задолго до того, как закончится место на диске.

Мини-вывод: транскодинг в несколько качеств, HLS-нарезка и CDN — три обязательных элемента. Пропустить можно только один из них и только на этапе, пока платформу смотрят десятки человек.

Что требует закон от видеохостинга в России

Технической части мало: публичная площадка с чужим контентом попадает в правовое поле сразу, а часть обязанностей включается по размеру аудитории.

  • Реестр аудиовизуальных сервисов. Статья 10.5 закона № 149-ФЗ описывает владельца аудиовизуального сервиса как владельца сайта, страницы, информационной системы или программы, которые используются «для формирования и (или) организации распространения в сети «Интернет» совокупности аудиовизуальных произведений, доступ к которым предоставляется за плату и (или) при условии просмотра рекламы». Норма применяется, если доступ к ним «в течение суток составляет более ста тысяч пользователей сети «Интернет», находящихся на территории Российской Федерации». Такой реестр ведёт Роскомнадзор.
  • Ограничение на иностранное участие. Та же статья ограничивает долю: иностранное юридическое лицо или российское юрлицо с долей иностранного участия в уставном капитале более двадцати процентов не могут владеть более чем двадцатью процентами долей в таком сервисе без согласования.
  • Персональные данные. Регистрация пользователей означает обработку персональных данных: нужны политика обработки, согласие при регистрации и хранение баз на серверах в России.
  • Чужой контент. Механизм приёма жалоб правообладателей и быстрого снятия ролика лучше закладывать в архитектуру сразу — как отдельную роль модератора и журнал решений; почтовый ящик для жалоб эту задачу не закрывает. Что считается нарушением при использовании сгенерированных материалов, разобрано в материале об авторском праве на ИИ.

Порог в сто тысяч пользователей в сутки отсекает большинство нишевых проектов, но остальные пункты работают с первого зарегистрированного пользователя.

Чек-лист запуска видеохостинга

  1. Сформулировать тип площадки: закрытый плеер для своего сайта, сообщество с каналами или сервис прямых эфиров.
  2. Посчитать месячный трафик: количество роликов × средний вес × ожидаемые просмотры. Именно это число и выбирает путь.
  3. Проверить открытые движки: PeerTube — сообщество и федерация, MediaCMS — медиатека с ролями доступа, Owncast — эфиры.
  4. Заложить объектное хранилище с S3-совместимым API и отдельный узел под транскодинг.
  5. Собрать конвейер: загрузка → очередь → FFmpeg → лестница качеств → HLS → CDN → плеер.
  6. Закрыть прямые ссылки подписанными URL с ограниченным сроком жизни.
  7. Добавить модерацию, приём жалоб и журнал решений.
  8. Оформить политику обработки персональных данных и согласие при регистрации.
  9. Снять базовые метрики: время до первого кадра, доля буферизаций, глубина просмотра.
РОССИЙСКИЕ НЕЙРОСЕТИ ДЛЯ ЖИЗНИ И КАРЬЕРЫ В 2025
Присоединяйся к онлайн-вебинару.
В прямом эфире разберем и потестируем лучшие на сегодняшний день отечественные ИИ!
Вы узнаете о том:
  • Выполним базовые задачи на российских нейросетях и посмотрим на результаты!
  • Файл-инструкцию «Как сделать нейро-фотосессию из своего фото бесплатно, без иностранных карт и прочих сложностей»
  • Покажем 10+ способов улучшить свою жизнь с ИИ каждому — от ребенка и пенсионера до управленца и предпринимателя
Участвовать бесплатно
ОБЗОРНЫЙ ПРАКТИКУМ ПО НАШУМЕВШИМ НЕЙРОСЕТЯМ
Нейросети DEEPSEEK И QWEN
За 2 часа сделаем полный обзор новых мощных ИИ-моделей, которые бросают вызов нейросети ChatGPT
Вы узнаете:
  • Возможность получить Доступ в Нейроклуб на целый месяц
  • Как ИИ ускоряет работу и приносит деньги
  • За 2 часа вы получите четкий план, как начать работать с ИИ прямо сейчас!
Участвовать бесплатно

Частые вопросы о создании видеохостинга

Сколько стоит создать свой видеохостинг?

Софт может быть бесплатным: PeerTube и MediaCMS распространяются под AGPL-3.0, Owncast — под MIT. Платите вы за трафик и мощности. По опубликованному прайсу Kinescope хранение стоит 1,9 ₽/ГБ на первой тысяче гигабайт, транскодирование — 0,8 ₽ за минуту исходного видео, CDN-трафик — от 1,9 до 0,7 ₽/ГБ в зависимости от объёма. Тысяча полных просмотров десятиминутного ролика в 1080p при битрейте 4 Мбит/с даёт около 300 ГБ трафика, то есть примерно 570 ₽ по верхней ступени тарифа.

Можно ли создать видеохостинг без программирования?

Да, если не писать движок самому. Открытые платформы вроде PeerTube и MediaCMS ставятся на сервер по инструкции разработчиков, а готовые видеоплатформы подключаются к сайту вставкой кода плеера. Программирование понадобится только для нестандартной логики: своей монетизации, интеграции с внешней системой или необычного интерфейса.

Какой сервер нужен для видеохостинга?

Разработчики PeerTube называют минимумом 1 vCore, 1,5 ГБ оперативной памяти, достаточный объём хранилища и канал 20 Мбит/с на отдачу. Для примерно тысячи одновременных зрителей рекомендуется 4 vCore, 4 ГБ памяти и канал 1 Гбит/с, а если на той же машине идёт транскодинг — 8 vCore и 8 ГБ памяти, поскольку перекодирование сильно нагружает процессор.

Чем HLS лучше обычного файла mp4?

HLS режет видео на короткие сегменты и хранит несколько качеств одного ролика, а плеер переключается между ними по фактической скорости канала. В FFmpeg длина сегмента задаётся опцией hls_time, значение по умолчанию — 2 секунды. Обычный mp4 отдаётся одним файлом в одном качестве, поэтому на слабом соединении зритель ждёт загрузку и видит остановки.

Нужно ли регистрировать видеохостинг в Роскомнадзоре?

Обязанности владельца аудиовизуального сервиса по статье 10.5 закона № 149-ФЗ наступают, когда доступ к аудиовизуальным произведениям предоставляется за плату или при условии просмотра рекламы, а доступ к ним в течение суток составляет более ста тысяч пользователей сети «Интернет», находящихся на территории Российской Федерации. Реестр таких сервисов ведёт Роскомнадзор. Требования о персональных данных и о снятии контента по жалобам правообладателей действуют независимо от размера аудитории.

Итог

Порядок действий сводится к одному правилу: сначала посчитайте трафик, потом выбирайте технологию. Пока счёт платформы на вашем объёме держится ниже стоимости своего канала и администратора, выгоднее готовая платформа; для сообщества со своими правилами — открытый движок на своём сервере, а разработка с нуля оправдана там, где продукт живёт за счёт нестандартной механики. Техническое ядро во всех трёх случаях одно: очередь загрузок, FFmpeg, лестница качеств, HLS и CDN.

Читайте также

3 материала