标签: video-capture

如何在活动中同时捕捉**视频和照片**

我想同时拍摄视频和照片.

我有两个按钮.

1.当用户点击一个时,它必须拍摄视频和

2.另一个按钮然后它必须停止录制视频和拍照.

现在我正在尝试录音机和相机,但它不能正常工作,

也注意不是两个在同一时间我想一个接一个地做反之亦然..

任何人都可以告诉我一个好主意.

谢谢.

android image-capture video-capture recorder android-camera

2
推荐指数
1
解决办法
2797
查看次数

我的Opencv应用程序处理速度很慢

我正在构建一个OpenCV应用程序,它从相机中捕获视频,并在删除背景后将其覆盖在另一个视频上.

我无法达到合理的速度,因为它以大约1 fps的速度播放输出,而我的背景移除工作速度为3fps.

有没有办法以正常速度显示背景视频并以3fps覆盖已处理的视频?

我试着评论我的代码,我意识到问题主要在于渲染部分本身.我尝试显示视频和我的网络摄像头,我注意到用openCV显示的实际fps和视频的fps有所下降.

这是示例代码:

 void main()
{
    CvCapture* capture, *Vcap;
    capture = cvCaptureFromCAM(0);
    if(!capture)
    {
        printf("Video Load Error");
    }

    Vcap = cvCaptureFromAVI("bgDemo.mp4");
    //printf("\nEntered BGR");
    if(!Vcap)
    {
        printf("Video Load Error");
    }

    while(1)
    {

        IplImage* src = cvQueryFrame(Vcap);
        if(!src)
        {
            Vcap = cvCaptureFromAVI("bgDemo.mp4");
            continue;
        }
        IplImage* bck1 = cvCreateImage(cvGetSize(src),8,3);
        cvResize(src,bck1,CV_INTER_LINEAR);

        cvShowImage("BCK",bck1);
        cvWaitKey(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

c opencv video-capture image-processing visual-c++

2
推荐指数
1
解决办法
5156
查看次数

使用 OpenCV 捕获多播 UDP 视频流

我有一个多播 UDP 视频流,我需要我的 OPenCV (Emgu) 2.4.x 应用程序来捕获和处理(“客户端”)。

在客户端,我可以使用 VLC(udp://xx.yy.zz.aaa:1234,但是我的应用程序无法捕获这个 udp 流。我的代码很简单(

Capture cap = new Capture ("udp://@212.1.1.1:1234");
Run Code Online (Sandbox Code Playgroud)

ps 我已经尝试过并且 2/o @ 也在该地址上尝试过 rtp。没运气 :-/

OpenCV 是否直接允许“捕获”UDP 流?或者我是否需要在客户端上运行 VLC 以将视频重新传输为 rtp 或 http 或其他......?

谢谢。

opencv udp video-capture video-streaming emgucv

2
推荐指数
1
解决办法
1万
查看次数

获得v4l2视频设备的最高分辨率

如何才能检测连接的视频设备能够提供的最大分辨率?

我不想捕获任何东西,只需从v4l2中检索此信息.

谢谢!

linux resolution video-capture v4l2

2
推荐指数
1
解决办法
3031
查看次数

限制python和opencv上的视频捕获帧率

我正在尝试从 ip 摄像头捕获视频并将其保存为 avi 视频文件。同时脚本将包含人脸的帧保存为 jpeg 文件。当脚本执行这些工作时,cpu 使用率约为 100%。因此,我只想在面部检测上限制帧速率。

我的代码是:

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
now = datetime.datetime.now()
strtime = str(now)
cap = cv2.VideoCapture('rtsp://root:root@10.10.10.56:554/stream/profile1=r')




fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('1/video/%s.avi' % strtime,fourcc, 10.0 , (960,540))

if cap.isOpened():


    while(True):
        if cap.set(cv2.CAP_PROP_FPS,4):

            try:


                ret, frame = cap.read()

                if ret==True:


                    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
                    out.write(frame)

                    if cv2.waitKey(1) & 0xFF == ord('q'):
                        break
                    faces = face_cascade.detectMultiScale(gray,
                                                          scaleFactor=1.5,
                                                          minNeighbors=6,
                                                          minSize=(30,30))
                    for (x,y,w,h) in faces:
                        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),
                        cv2.imwrite('1/frames/%sf%s.jpg'%(now,str(cap.get(cv2.CAP_PROP_POS_FRAMES))), frame)


                    cv2.imshow('frame', frame)


            except KeyboardInterrupt:
                cap.release()
                out.release()
                cv2.destroyAllWindows()
                sys.exit(0)
                pass

else: …
Run Code Online (Sandbox Code Playgroud)

python linux video opencv video-capture

2
推荐指数
1
解决办法
5743
查看次数

从 gstreamer 记录相机流

我有一个完美运行的 gstreamer 管道,它可以接收摄像头流,将其编码为 H.264 视频,将其保存到一个文件中,并将其显示在屏幕上,如下所示:

gst-launch-1.0 -v autovideosrc ! tee name = t ! queue ! omxh264enc ! 
'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux ! 
filesink location=test.mp4 t. ! queue ! videoscale ! video/x-raw, 
width=480,height=270 ! xvimagesink -e sync=false
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试做一些更简单的事情,只需将流记录到文件中(不显示在屏幕上),这似乎不起作用!它写入文件但无法播放。到目前为止我尝试过的是:

gst-launch-1.0 -v autovideosrc ! queue ! omxh264enc ! 'video/x-h264, 
stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink 
location=test.mp4 sync=false
Run Code Online (Sandbox Code Playgroud)

我也可以删除队列元素,但结果相同:

gst-launch-1.0 -v autovideosrc ! omxh264enc ! 'video/x-h264, 
stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink 
location=test.mp4 sync=false
Run Code Online (Sandbox Code Playgroud)

它似乎没有给出任何错误,但只是没有将有效的流写入我的文件接收器。

video-capture gstreamer

2
推荐指数
1
解决办法
9107
查看次数

网络摄像头 MJPG 捕获流在 Windows 10 上不可用

在 Windows 10 build 10.1607.14393.10(又称周年纪念版)上,我无法再获取 MJPG 捕获流。曾经是 MJPG 和 YUY2 分辨率,现在我在 DirectShow(内核流)和 Media Foundation MJPG 中仅获得 YUY2,然后在 IBaseFilter 源连接到任何内容之前将媒体类型转换为 NV12。尝试使用不同相机的多个系统。有什么想法可能是错的吗?

     640x480   @30   YUY2
     ...
     640x480   @30   MJPG <- gone
 ...
DirectShow:
    com_t<IAMStreamConfig> sc;
    if_failed_return_result(camera_output_pin->QueryInterface(&sc));
    int number_of_capabilities = 0;
    int capability_size = 0;
    if_failed_return(sc->GetNumberOfCapabilities(&number_of_capabilities, &capability_size), -1);
    for (int i = 0; i < number_of_capabilities && k < count; i++) {
        VIDEO_STREAM_CONFIG_CAPS scc;
        assert(sizeof(scc) == capability_size);
        AM_MEDIA_TYPE* mt = null;
        if_failed_return(sc->GetStreamCaps(i, &mt, (BYTE*)&scc), -1);
...
Run Code Online (Sandbox Code Playgroud)

在MMF中:

    640x480   @30   YUY2
    ...
    640x480   @30 …
Run Code Online (Sandbox Code Playgroud)

webcam directshow video-capture ms-media-foundation windows-10

2
推荐指数
1
解决办法
6885
查看次数

如果视频超过 12 秒则没有声音

我使用 AVFoundation 创建一个自定义视频录制应用程序。问题是当录制达到 13 秒长度时,声音从结果视频中完全消失。我用代码设置相机:

private func configure(_ mode: CameraMode) {
    guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo) as? [AVCaptureDevice] else {return}
    for device in devices {
        if device.position == .back {
            do {
                let input = try AVCaptureDeviceInput(device: device)
                if session.canAddInput(input) {
                    session.addInput(input)
                }
                configureVideoOutput(for: device)
                session.startRunning()
            } catch (let error) {
                print(error)
            }
        }
    }

}


private func configureVideoOutput(for device: AVCaptureDevice) {
    if device.hasMediaType(AVMediaTypeVideo) && session.canAddOutput(sessionVideoOutput) {
        session.beginConfiguration()
        session.sessionPreset = AVCaptureSessionPresetHigh
        guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeAudio) as? [AVCaptureDevice] …
Run Code Online (Sandbox Code Playgroud)

video-capture avfoundation swift

2
推荐指数
1
解决办法
876
查看次数

使用 AVCaptureMovieFileOutput 立即开始视频录制

AVCaptureMovieFileOutput当我的应用程序启动时,我试图使用将设备摄像头录制到视频文件中。令我非常沮丧的是,我无法让它工作:

  • 我可以AVCaptureVideoPreviewLayer很好地查看视频源,所以我的会话连接正确。

  • 它将输出到的文件尚不存在,并且位于可写目录中。

  • API 调用或AVCaptureSessionRuntimeError通知未返回任何错误。

  • 我的AVCaptureFileOutputRecordingDelegate方法根本没有被调用。

我在示例代码之后尝试了示例代码,更令人抓狂的是其中一些似乎确实有效。

video-capture avfoundation ios

2
推荐指数
1
解决办法
430
查看次数

使用opencv编写视频但输出文件不可播放

我想并排使用两个视频来编写一个视频文件,但最终输出文件在任何视频播放器中都无法播放。这是我的代码:

from __future__ import print_function
import numpy as np
import argparse
import cv2
import tkinter as tk
from tkinter import filedialog
import os
import os.path

ap = argparse.ArgumentParser()
ap.add_argument("-o", "--output", type=str, default="sample.avi",
            help="path to output video file")
ap.add_argument("-f", "--fps", type=int, default=100.0,
            help="FPS of output video")
ap.add_argument("-c", "--codec", type=str, default="MJPG",
            help="codec of output video")
args = vars(ap.parse_args())

root = tk.Tk()
root.withdraw()

source_video = filedialog.askopenfilename(title="Select file")
sign = filedialog.askopenfilename(title="Select file")
print("[INFO] Capturing video...")
cap1 = cv2.VideoCapture(source_video)
cap2 = cv2.VideoCapture(sign)

fourcc = cv2.VideoWriter_fourcc(*args["codec"]) …
Run Code Online (Sandbox Code Playgroud)

opencv video-capture python-3.x

2
推荐指数
1
解决办法
2052
查看次数