LINUX.ORG.RU

Отдать RTSP из Си библиотек FFMPEG

 ,


1

2

Приветствую!

Буду благодарен подсказке направления или примеру куда двигаться.

Скачал git исходники, собрал, подключил к своему Сишному проекту библиотеки, получаю в нем кадры с usb камеры и пишу их на диск - как бы теперь не изобретая велосипед самими библиотеками организовать и слушающий сокет и запись в него SDP и RTP потока.

Просто в море информации не могу найти то что нужно для решения задачи. Вроде бы ffmpeg умеет стримить в rtsp

★★★

в ffmpeg вообще всё плохо с серверами, потому что там нужна полноценная конструкция с реактором сокетов, прерыванием исполнения, событийно-асинхронной архитектурой.

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

Я был бы в легком унынии от перспективы делать это всё на ффмпеге

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

В нем аппаратная реализация кодирования с помощью гпу есть, количество потоков не велико предполагаю, обычно один, ну может 5 от силы

А что посоветуете если от кодирования ффмпегом уйти нельзя?

Я думал может ртсп-симпл-сервер препарировать, но и в него как то надо сначала поток отдать

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

вы зря используете термин «кодирование» по отношению к упаковке.

Вам нужно транспорт собрать и отдать. Или пошариться чего есть в ffmpeg, или написать самому (там несложно), или втащить libvlc

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

Нет, именно кодирование, если быть точнее даже перекодирование из мжпег в х264 с помощью аппаратного кодека cedrus для H3 арм

Буду шарить, но вдруг кто скажет куда именно смотреть )

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

ну вы опять всё перемешиваете.

x264 — это библиотека под x86 (и немного arm), которая на процессоре кодирует сырое видео в h264. В x264 невозможно кодировать, в него можно коммитить код.

h264 — это кодек.

Для cedrus вам нужны библиотеки именно для этой железки, причем что очень важно, вам нужно обратить внимание на декодирование jpeg, потому что оно сравнимо по жору с кодированием h264.

И если вы будете декодировать jpeg на процессоре, а кодировать на чипе, то будет больно ещё и на копировании сырого видео между железками.

Короче, ффмпег тут сбоку, припеку. Где вы вообще взяли либы для cedrus? Не из 8-летней давности репы на гитхабе?

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

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

Опять же почему декодирование нужно, потому что некодированный поток камера неспособна через усб передать в 2мп и хотя бы 15 кадров

Но это все к вопросу не относится конечно.

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
Ответ на: комментарий от wolverin

как я понимаю касаемо ффмпег мне нужно препарировать под свои цели единственный файл ffserver.c, который правда начиная с 4.0 версии из ффмпега выкинули ))

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
Ответ на: комментарий от wolverin

попробую понизить версию, собрать и прикрутить его исходник к текущей версии под свою задачу https://superuser.com/questions/1296377/why-am-i-getting-an-unable-to-find-a-suitable-output-format-for-http-localho/1297419#1297419

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
4 сентября 2022 г.
Ответ на: комментарий от imb

Подскажите может знаете, а в лив555 можно организовать аля rtsp прокси? Я разобрался как писать из ффмпега рстп на сторонний сервер (использую rtsp-simple-server), а потом с него уже смотреть

С ффсервером пока затык (

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

Видимо прокси на нем можно http://www.live555.com/proxyServer/

Те мне надо в отдельный поток вытолкнуть эти библиотеки и писать в него как будто он в отдельном процессе

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

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

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

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

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

выходит вообще не полностью описана задача которую решаете

зря вы rtsp трогаете, он устарел и не очень хороший, лучше пойти и webrtc осилить как вам и предлагали уже несколько раз

ffmpeg он не про передачу данных по сети; кстати и x264 так себе для передачи по сети, ratecontrol у него для cbr не очень, они решили, что cbr не нужен и сосредоточились на ratecontrol для хранения и т.п. жать свою порноколекцию

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

ртсп это вобщем то пока промежуточная задача (требуется замена по ТТХ другого толком не работающего функционала из не подходящего железа и не подходящего к нему ртсп сервера - mjpeg камеры и v4l2rtspserver), для вебртс понадобится все тот же х264, ффмпег тем не менее все таки приемлемо передает по сети, но пока что у меня получилось писать лишь в сторонний ртсп сервер

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

вопщим с live555 proxyServer путь в никуда, ничего в него писать нельзя, он может только забирать с другого ртсп сервера, короче говоря полная профанация, после моего вопроса в их списке рассылке авторы поправили в документации на той странице что ничего стримить в него нельзя, предлагают в одном потоке буферами обмениваться в их реализации ртсп сервера (((

а так казалось просто там все сделано, так мало кода ) думал запущу его в отдельном потоке и спокойно писать по событию в него будут

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

liv555 я пробовал на своей работе, он говно кривое неработающее

как сказать, не идельно конечно, но сказать что не работает нельзя

через него делал вещание потока с ip-камеры, вроде робило

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

)) сегодня день обломов у меня, со сравнительно устраивающим меня rtsp-simple-sever тоже мимо, он написан на каком то непотребстве Go, а не на православном C/C++ (в отличии от live555 кстати)

похоже все таки придется либо тащить умерший ffserver из версии 3.4 или гстример разбирать…

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

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

например https://stackoverflow.com/questions/43979720/how-to-listen-to-2-incoming-rtsp-streams-at-the-same-time-with-ffmpeg

как бы теперь открыть слушающее ПИШУЩЕЕ подключение этими же либами???

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