Потоковое видео с использованием C ++ - PullRequest
7 голосов
/ 01 декабря 2009

Я собираюсь создать приложение на c ++, которое создает поток фотографий и затем отправляет их в виде видеопотока в другое приложение. Любые идеи о том, как я могу начать? что я имею в виду, какие библиотеки я должен использовать и какую кодировку? Я думаю о MJPEG и UDP или RTP в качестве протокола .... любая помощь будет принята с благодарностью.

Ответы [ 3 ]

6 голосов
/ 01 декабря 2009

Если ваши входные данные - это просто набор случайных изображений, а не видео, вы не собираетесь выполнять «потоковое видео». Вы просто собираетесь отправить кучу полных изображений. Не нужно задействовать технологию кодирования видео, просто сделайте максимально возможную передачу изображений. Видеокодеры полагаются на каждый кадр, имеющий различные отношения к предыдущему, как это обычно бывает в реальном видео. Для входов случайных изображений они не смогут сжимать так много, и однокадровое сжатие (например, JPEG / PNG / что угодно), скорее всего, уже будет применено к вашим входным данным.

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

Вам, вероятно, следует просто использовать TCP для этого, в ваших требованиях нет ничего, что указывало бы на необходимость использования более сложных и подверженных ошибкам решений на основе UDP / RTP.

5 голосов
/ 01 декабря 2009

Для потоковой части вы можете использовать Live555 . Он должен охватывать все, что вам нужно. Это все еще оставляет проблему генерации MJpeg Stream. Здесь я могу только догадываться, FFMpeg может быть тем, что вы ищете (как я вижу, оно также охватывает потоковое вещание, поэтому вам может понадобиться только это). Я думаю, что MJpeg очень подходит для вашего приложения. Что касается TCP или UDP, это зависит от того, как вы хотите его использовать. UDP имеет смысл, если вы хотите сделать свой поток многоадресным, иначе я бы предпочел TCP, потому что он более надежен.

Надеюсь, что это несколько полезных советов.

0 голосов
/ 01 декабря 2009

Используйте библиотеку ffmpeg для кодирования вашего потока и используйте стек RTP / RTSP для потоковой передачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...