Может ли библиотека FFMPEG отправлять живой поток IOS-камеры H264 на Wowza с помощью RTSP
Мое требование состоит в том, чтобы получить канал камеры iphone, кодировать его в формате H264 и отправить его на сервер. В поиске я нашел, что часть кодирования возможна с ffmpeg lib с x264 (libx264). Но теперь следующая задача - отправить закодированные данные на сервер Wowza с помощью rtsp.
Пожалуйста, поделитесь кодом или полезным документом, если кто-нибудь знает об этом.
Есть еще одна библиотека для целей кодирования live555. Но я не уверен, что он может отправлять данные на сервер с помощью rtsp.
4 ответа
На самом деле я создал потоковое приложение для iOS (с wowza в качестве потокового сервера)
Я считаю, что вы можете передавать потоковое видео только с FFmpeg с протоколом RTSP, хотя FFmpeg не полностью поддерживает его
Однако с помощью ffmpeg вы можете получить действительный SDP и передать его в wowza по протоколу RTCP - ANNOUNCE OPTION SETUP RECORD -
Я не использовал FFmpeg для кодирования, но если вы можете получить необработанные данные H264, вы можете упаковать их для создания действительного RTP-пакета, используя rfc6184
редактировать: вот пример для подключения wowza:
NSString* response = [NSString stringWithFormat:@"ANNOUNCE %@ RTSP/1.0\r\n",self->addr];
response = [response stringByAppendingFormat:@"CSeq: %d\r\n",self->cseq];
response = [response stringByAppendingFormat:@"Content-Type: application/sdp\r\nContent-Length: %d\r\n\r\n", [self->sdp length] ];
response = [response stringByAppendingString:self->sdp];
NSString* result = [self sendAndRecvData:response];
где sendAndRecvData - это сокет TCP, связанный с wowza_ip:1935
вы можете использовать тот же тип кода для SETUP, который отправит обратно порты RTP (+RTCP), куда вы должны отправить свои данные
Если вы используете live555, вы можете использовать сервер live 555, работающий на устройстве, для отправки аудио и видео, что даст вам поток rtsp+rtcp в wowza, для объявления и записи в прямом эфире 555 имеет неподдерживаемый модуль dss.
Wowza имеет приложение для iPhone под названием GoCoder, которое отправляет живой закодированный поток на сервер Wowza.
Вы можете осуществлять потоковую передачу непосредственно на сервер Wowza, используя RTMP вместо RTSP. Команда ffmpeg выглядит примерно так:
ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName
Если вы укажете формат вывода как flv, а пункт назначения вывода - rtmp://xxx, то все будет в порядке.
Источник: потоковое ffmpeg