【发布时间】:2013-09-18 06:11:12
【问题描述】:
我正在使用 JavaCV 通过 FrameRecorder 从我的网络摄像头捕获视频。
我正在创建一个库实用程序类,它将网络摄像头视频作为“avi”视频 InputStream 提供,这里我无法这样做,因为 FrameRecorder 不提供任何此类工具,只需要一个文件名并将视频保存在文件系统上。 我应该怎么做才能从 FrameRecorder 生成一个 java InputStream?
以下是示例代码供参考:
FrameGrabber frameGrabber = FrameGrabber.createDefault(1);
frameGrabber.start();
IplImage grabbedImage = frameGrabber.grab();
int width = grabbedImage.width();
int height = grabbedImage.height();
FrameRecorder frameRecorder = new FFmpegFrameRecorder("c:\\output.avi", width, height);
frameRecorder.setAudioChannels(frameGrabber.getAudioChannels());
frameRecorder.start();
int i = 0;
while ((grabbedImage = frameGrabber.grab()) != null && i <= 500) {
frameRecorder.record(grabbedImage);
i++;
}
frameRecorder.stop();
frameGrabber.stop();
我也愿意接受任何其他选择...
提前致谢
阿什
【问题讨论】:
-
您说您接受替代解决方案,您能否解释一下您的目标是什么?为什么需要 AVI 流而不是原始流?
-
该问题仅提及容器格式(avi),但未指定任何编解码器。是否应该解释为未压缩的视频流?如果您想掌握原始流数据,这些细节非常重要。
-
@DiegoCNascimento :我希望直接在网络浏览器上播放 avi 流,原始流无法实现。
-
@brunocodutra : 考虑我是视频流的新手,我只想要一个可以定向到浏览器上播放的视频流,所以请相应地回答我。