Как отобразить RTSP с IP-камеры / CCTV в iOS

очевидно, есть способ сделать это, потому что так много приложений уже делают это - NetCamViewer и iCamviewer, чтобы назвать только один.

Я искал и искал, но я не нахожу ничего ценного, что дает намек на то, как это делается. Я тянусь в надежде, что кто-то даст мне подсказку.

Я пытаюсь подключиться к камере видеонаблюдения (Y-CAM), которая поддерживает протокол RTSP, и отображать видео из моего приложения iPhone/iPad. Камера имеет IP-адрес, и я могу просматривать видео из веб-браузера и Quicktime, работающего на моем Mac. Проблема в том, что RSTP не поддерживается в iOS, поэтому даже попытка подключения с помощью Safari на iPad не работает.

Я читал, что некоторые пытаются использовать Live5555, но я не видел статьи, которая описывает, если это было сделано успешно и как.

альтернативой является захват потока RTSP на сервере, преобразование его в поток HTTP Live, а затем подключение к потоку HTTP Live из iOS. К сожалению, это оказалось не так просто, как кажется.

Я бы предпочел перейти непосредственно к камере, как и другие приложения, которые я видел. RTSP To Live-это отступление, если мне придется.

любые советы с благодарностью. Спасибо!

4 ответов


Это неправильно :) или не обязательно (альтернативой является захват потока RTSP на сервере, преобразование его в HTTP Live stream, а затем подключение к HTTP Live stream из iOS. К сожалению, это оказалось не так просто, как кажется.)

вы должны использовать библиотеку ffmpeg, так как эта библиотека может подключать любой потоковый сервер (поддержка rtsp, mms, tcp, udp ,rtmp ...) а затем нарисуйте картинки на экране.. (для рисования вы также можете использовать opengles или uiimage работает)

прежде всего, используйте avformat_open_input для подключения к вашему ip-адресу затем используйте avcodec_find_decoder & avcodec_open2, чтобы найти кодеки и открыть их (вы должны вызвать их для аудио и видео)

затем через некоторое время цикл чтения пакетов с сервера с помощью метода av_read_frame Когда вы получаете кадр, если это аудио, то отправил его в AudioUnit или AudioQueue, если это видео, преобразуйте его из формата yuv в rgb с помощью метода sws_scale и нарисуйте изображение в экран.

вот и все.

посмотрите на эту обертку также (http://www.videostreamsdk.com), он написан в библиотеке ffmpeg и поддерживает iOS


вам действительно нужно искать переполнение стека перед публикацией, этот вопрос задавался много раз. Да, live 555 работает, и некоторые из нас заставили его работать..

есть и другие игроки, в том числе наши http://www.streammore.tv/


вы можете найти с открытым исходным кодом FFMepg Дешифратора для iOS (и некоторых образцов) на GitHub:https://github.com/mooncatventures-group

пример использования этой библиотеки : http://sol3.typepad.com/exotic_particles/


есть две общие технологии для отображения RTSP-видео на iOS Safari:

  • RTSP /HLS (H. 264+AAC)
  • РЦП / с WebSocket (стандарт H. 264+ААС ==> в формате MPEG+и G. 711 или H. 264+?)

для HLS вы можете рассмотреть Wowza server. Для воспроизведения Websocket в iOS Safari вы можете использовать WCS4-сервера.

основная идея для воспроизведения websocket-это прямой рендеринг HTML5 в HTML-элемент холста страницы и аудио контекст. В случае воспроизведения MPEG декодирование видео будет выполнено на стороне iOS Safari с использованием простого JavaScript.

другой вариант-установите плагин WebRTC с поддержкой getUserMedia и воспроизводите этот поток через WebRTC. В любом случае вам понадобится транскодер RTSP-WebRTC на стороне сервера.