3

Я обнаружил, что в Linux вы можете использовать video4linux2 и ffmpeg для чтения данных из /dev /video0 и получения видео с веб-камеры. ffmpeg выводит данные в видеофайл, который имеет ограниченную длину. Мой вопрос:

Могу ли я передать поток видео как удаленному зрителю, так и локальной программе, чтобы я мог продолжать обрабатывать данные потока в режиме реального времени?

Благодарю.

2 ответа2

2

Это возможно с миксером. Модифицированный пример из документации:

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a \
"archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"

Обратите внимание, что потоки должны быть явно отображены, поэтому требуется -map .

Также см:

0

Я нашел ответ по этой ссылке, чтобы получить веб-камеру в качестве входа для видео (используя библиотеку). Вам просто нужно определить параметры в функции avformat_open_input ().

Во-первых, регистрация устройства - это импорт:

avdevice_register_all();

Затем определите формат ввода:

AVInputFormat *inputFormat =av_find_input_format("v4l2");

Можно установить другие параметры:

AVDictionary *options = NULL;

av_dict_set(& options, "framerate", "25", 0);

В заключение:

avformat_open_input(&pFormatCtx, "/dev/video0", inputFormat, &options);

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

Надеюсь, что это будет полезно для других.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .