Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   RTSP-C-LINUX (http://forum.oszone.net/showthread.php?t=305569)

evpu 17-09-2015 20:05 2554476

RTSP-C-LINUX
 
Всем добрый день!

Хочу научиться создавать примерно следующее:

Есть IP камера. Стоит главная задача написать приложение, которое цепляется к этой камере одним RTSP потоком, само при этом являясь сервером RTSP. Основная цель - организация соединения к видеопотоку большого числа клиентов, сохранив на камеру один поток.

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

evpu 08-11-2015 12:53 2572676

В продолжении этой темы. Что такое RTSP и с чем его можно съесть описано в описании протокола. Вся соль - парсинг текстовых заголовков RTSP.

Вопрос о теории. Допустим, некий байтовый массив занимает в памяти некий объем). Процесс его создавший, публикует его адрес и размер, и постоянно его обновляет. Т.е цепляется к потоку от камеры, и пишет передаваемый траффик в этот массив.
Тонкости пойму в процессе...

Суть вопроса такова: Если некий другой процесс (точнее много процессов) получат этот опубликованный адрес, и будут ОДНОВРЕМЕННО пытаться с ним работать, это не приведет к краху доступа к RAM? И в итоге крах приложения...
Т.е один процесс все время пишет(в первом приближении), а куча других пытаются читать.


Будет ли жить такое решение?
Речь идет о С, среда - Linux.

User001 08-11-2015 18:09 2572771

Цитата:

Цитата evpu
Суть вопроса такова: Если некий другой процесс (точнее много процессов) получат этот опубликованный адрес, и будут ОДНОВРЕМЕННО пытаться с ним работать, это не приведет к краху доступа к RAM? »

А у вас получится получить доступ к памяти, используемой другим процессом?
Цитата:

Цитата evpu
Вопрос о теории. Допустим, некий байтовый массив занимает в памяти некий объем). Процесс его создавший, публикует его адрес и размер, и постоянно его обновляет. Т.е цепляется к потоку от камеры, и пишет передаваемый траффик в этот массив.
Тонкости пойму в процессе... »

Смотрите в сторону IPC (разделенная память и методы работы с общими ресурсами в принципе).
Цитата:

Цитата evpu
Речь идет о С »

Почему именно этот язык?

evpu 08-11-2015 19:13 2572794

ОК, спасибо!

В С есть мало-мальски наработки, работающий проект, пишу на нем относительно свободно... Хотя работы еще непочатый край, знания весьма начальны.
А задачи вполне реальные. Да и наблюдать за производительностью решений на нем довольно приятно!

По поводу доступа к памяти! Если я опубликую через раскрытие указателя диапазон адресов памяти используемый потоком, неужто по данному адресу другой процесс не сможет ничего прочитать? Поправьте если я неправ, но ведь снимаются же дампы RAM тех же исполняемых файлов, и то, что они заняты - не мешает их читать! Есть в частности под виндой WinHEX, с помощью которого можно залезть прямо в память.

User001 11-11-2015 09:16 2573588

Цитата:

Цитата evpu
ОК, спасибо! »

Пожалуйста.
Цитата:

Цитата evpu
В С есть мало-мальски наработки, работающий проект, пишу на нем относительно свободно... »

Если это вам дается достаточно легко - то классно.

Цитата:

Цитата evpu
По поводу доступа к памяти! Если я опубликую через раскрытие указателя диапазон адресов памяти используемый потоком, неужто по данному адресу другой процесс не сможет ничего прочитать? Поправьте если я неправ, но ведь снимаются же дампы RAM тех же исполняемых файлов, и то, что они заняты - не мешает их читать! »

Процессы не работают с физической памятью, они работают с виртуальной (1, 2) так что публикуемый вами адрес - адрес в виртуальной памяти. Задача ОС изолировать адресное пространство процессов, так что если вы будете просто писать в память другого процесса, то как раз можете получить падение процесса, непонятные данные и т.д.

В любом случае вам нужно синхронизировать чтение и запись в буфер, а для этого как раз нужно межпроцессное взаимодействие. У вас, как я понял, 1 и 1 задача производителя-потребителя.


Время: 12:59.

Время: 12:59.
© OSzone.net 2001-