Я могу читать видеофайл формата h264 и делать некоторые выводы из машинного обучения. Код работает абсолютно нормально для ввода из файла. Ниже приведен пример кода из Deepstream SDK
FileDataProvider(const char *szFilePath, simplelogger::Logger *logger)
: logger_(logger)
{
fp_ = fopen(szFilePath, "rb");
//fp_ = fopen("/dev/video0", "rb");if (nullptr == fp_) {
LOG_ERROR(logger, "Failed to open file " << szFilePath);
exit(1);
}
pLoadBuf_ = new uint8_t[nLoadBuf_];
pPktBuf_ = new uint8_t[nPktBuf_];
assert(nullptr != pLoadBuf_);
}
~FileDataProvider() {
if (fp_) {
fclose(fp_);
}
if (pLoadBuf_) {
delete [] pLoadBuf_;
}
if (pPktBuf_) {
delete [] pPktBuf_;
}
}
Что такое требование?
Мое исследование
@ubox: ~ $ v4l2-ctl —device = / dev / video1 —list-форматы
ioctl: VIDIOC_ENUM_FMT Индекс: 0 Тип: захват видео
Формат пикселя: ‘YUYV’ Название: YUYV 4: 2: 2Индекс: 1 Тип: пиксель видеозахвата Формат: ‘H264’
(сжатое) Имя: H.264Индекс: 2 Тип: пиксель видеозахвата Формат: ‘MJPG’
(сжатое) Название: Motion-JPEG
vlc v4l2:///dev/video1 --v4l2-chroma=h264
— это показывает видео с веб-камеры. Как это сделать?
— Теперь, как кормить этот прямой эфир в
приведенный выше пример кода такой, что он читает с веб-камеры, а не из файла?
[Обновление-1]
— Другими словами, есть ли в v4l некоторые опции для записи видеопотока в формате h264? Таким образом, я могу прочитать этот файл, как раньше (код выше), когда его (v4l) записывается на диск.
[Обновление-2]
— мы можем использовать FFmpeg вместо v4l. Если какие-либо решения для использования ffmpeg для непрерывного сохранения видеопотока на диск, чтобы другие программы считывали этот файл?
Задача ещё не решена.
Других решений пока нет …