LINUX.ORG.RU

Видео стриминг

 ,


0

4

Посоветуйте, как решить задачу. Я с таким вообще никогда не сталкивался, и даже подходов не могу придумать.
Есть,.. энтерпрайз-портал, так назовём, написанный на perl. Прошу громко не смеяться, такова уж жизнь, зато нескучно.
Задача - публиковать на этом портале видео. И смотреть его, разумеется. То есть сняли видео, положили куда следует, потом в нужном месте нажали «добавить документ - видео», прописали как-то путь к нему... а потом его надо как-то смотреть. С разграничением доступа, разумеется.

Как это вообще делать? Гугл подсказал, что ffserver, но что с ним делать и как им управлять, я не очень понял.
И на странице потом что делать - тег <video>?

★★★★★

ffserver устаревший, уже не поддерживается и его скоро собираются из ffmpeg выкинуть, если не уже

подозреваю, что тебе раздавать через HTTP хватит

Harald ★★★★★ ()

Если ты уже записал видос в файл то причем тут (реальный) стриминг? ффсервер не нужен. Просто отдавай обычным сервером файл. Можешь посмотреть как с этим работает nginx например, там и индексы чтоб перемотка быстрая была и отдача чанками. Можно прикрутить проверку кук или даже прав доступа к конкретному видео и не отдавать. Можно ссимбиозить нжинкс и перл, можно проксить отдачу видео-файла через перл со всеми мыслимыми проверками.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Если ты уже записал видос в файл то причем тут (реальный) стриминг?

При том что DRM. Если видос не стримить, а тупо выкладывать, то его элементарно спереть.

no-such-file ★★★★★ ()

Как это вообще делать?

Использовать зашифрованный стриминг, например HLS AES или MPEG DASH CENC. Если не хочется возиться, то есть (полу)готовые решения типа Woowza, AWS Media Services, или Azure Media Services. Впрочем возиться всё равно придётся, т.к. вся эта петрушка в любом случае заморочная.

no-such-file ★★★★★ ()
Ответ на: комментарий от deep-purple

Не поможет же.

В теории ничто не поможет, т.к. в любом случае видос должен отображаться на компе пользователя. Но в 99% случаев у пользователя не хватает тямы, чтобы получить ключ шифрования потока. Все автоматические качалки отсекаются 100%.

no-such-file ★★★★★ ()
Ответ на: комментарий от Jopich1

Причем энтерпрайзных

Так ведь

Есть,.. энтерпрайз-портал

Ну а кроме того, не такие уж там и бешеные цены. Самому стримить тоже не дёшево будет, если вспомнить, что у VPS есть лимиты трафика.

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от Jopich1

для vod достаточно псевдостриминга nginx + cdn

Да я как бы и не призываю, но человек же вообще не в теме, пусть походит по ссылкам, почитает там, с чем эту тему вообще едят, какие есть варианты и т.п. Можно конечно и всё своё замутить, но время тоже не бесплатное.

no-such-file ★★★★★ ()
Ответ на: комментарий от deep-purple

Просто отдавай обычным сервером файл

Просто пишу Content-type: video/mp4, отправляю в сокет файл, и на клиенте его подхватывает тег <video>? И всё будет работать? Не нужна мне пока супер перемотка, превьюхи и прочее, мне бы хоть как раздать. И drm меня не интересует на данный момент, ничего там секретного...

Xellos ★★★★★ ()
Ответ на: комментарий от anonymous

И трафика тоже не ожидается. Там не так много пользователей, это такая очень внутренняя штука.

Xellos ★★★★★ ()
Ответ на: комментарий от Xellos

ну если будешт отдавать целый файл вместо чанков то как раз твой сервер загнется быстрее. что касается файла mp4 - не забудь про moov atom ( https://rigor.com/blog/2016/01/optimizing-mp4-video-for-fast-streaming) - это позволит начать проигрывать файл без полной его загрузки. Это как раз можно сделать через ffmpeg

Jopich1 ()
Последнее исправление: Jopich1 (всего исправлений: 1)
Ответ на: комментарий от Xellos

Да. Ну еще можешь прикрутить 206 Partial content для «докачки». Этого будет достаточно для перемотки.

deep-purple ★★★★★ ()

Насчет перла, тут он как обвязка, кто то с телеграмм канала про современный perl,что-то такое подымал, спроси там

https://t.me/modernperl

pinachet ★★★★★ ()
Ответ на: комментарий от Xellos

Просто пишу Content-type: video/mp4, отправляю в сокет файл

Задача перла сохранить, преобразовать, проверить права доступа и отдать просмоторщик. Остальное должен реализовывать тот кто умеет нормально отдавать видео файл - nginx/apache/iis.

я делал 100 лет назад ( наверно, не очень актуально, но возможно поможет) через ffmpeg, aac кодек libfaac ( http://www.audiocoding.com/index.html сборка http://oss.netfarm.it/mplayer/misc/libfaac-1.28.7z ), mp4 контейнер (MP4Box http://www.videohelp.com/tools/mp4box ), генерил ключевые кадры через mplayer. Ну и просмоторщик videojs.

Создание MP4 видео

1 Конвертация видео в формат H.264 видео и AAC аудио

ffmpeg -vpre path_to_file_presett -y -i input.avi -s 320x240 -vcodec libx264 -acodec

libfaac -threads 0 -ab 64k -b 400k -bt 500k -g 24 -r 24 temp.mp4

2 Создание контейнера MP4

MP4Box -add temp.mp4 output.mp4

3 Создание ключевых кадров

mplayer -ss 00:00:04 -sstep 12 -frames 16 -vo jpeg:outdir=path_to_jpeg_folder-nosound output.mp4

как-то так.

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.