我能够读取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-formats
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将视频流连续保存到磁盘的任何解决方案,以便其他程序读取该文件?