我正在尝试弄清楚如何使用AVFoundation
Swift 录制视频。我已经创建了一个自定义相机,但我只知道如何用它拍摄静态照片,但不知道如何录制视频。希望你能帮我解决这个问题。
我想按住 takePhotoButton
录制视频,然后在我预览当前静态照片的地方预览视频。您的帮助将真正帮助我继续我的项目。多谢!
import UIKit
import AVFoundation
@available(iOS 10.0, *)
class CameraViewController: UIViewController,AVCaptureVideoDataOutputSampleBufferDelegate {
let photoSettings = AVCapturePhotoSettings()
var audioPlayer = AVAudioPlayer()
var captureSession = AVCaptureSession()
var videoDeviceInput: AVCaptureDeviceInput!
var previewLayer = AVCaptureVideoPreviewLayer()
var frontCamera: Bool = false
var captureDevice:AVCaptureDevice!
var takePhoto = false
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
prepareCamera()
}
func prepareCamera() {
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
if let availableDevices = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: .back).devices { …
Run Code Online (Sandbox Code Playgroud) 我正在使用 webrtc 示例代码从 Android 设备流式传输到网页。示例代码不具备切换摄像头的功能。我试图解决它,但失败了。该示例使用 VideoCapturerAndroid 类,我发现切换相机使用不同类型的所有建议。
示例的主要部分如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_chat);
ButterKnife.bind(this);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Bundle extras = getIntent().getExtras();
if (extras == null || !extras.containsKey(Constants.USER_NAME)) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
Toast.makeText(this, "Need to pass username to VideoChatActivity in intent extras (Constants.USER_NAME).", Toast.LENGTH_SHORT).show();
finish();
return;
}
this.username = extras.getString(Constants.USER_NAME, "");
this.mCallStatus = (TextView) findViewById(R.id.call_status);
// First, we initiate the PeerConnectionFactory with our application context and some options.
PeerConnectionFactory.initializeAndroidGlobals(
this, // Context
true, // Audio Enabled …
Run Code Online (Sandbox Code Playgroud) 我在最近的一次市议会会议上发言了几分钟。我想下载视频,以便抓取我的视频部分并将其发布到社交媒体。该市使用一些名为 Granicus 的提供商。这是网址:
有人能帮帮我吗?我尝试下载 VLC,但无法打开流。
首先感谢您的关注。我正在尝试使用 opencv 和 ip 摄像头进行流式传输,但它只返回“[tcp @ 000001d5fce13580] uri 中缺少端口”。我已经在 VLC 上进行了测试,并且还使用 JavaCV 进行了测试,它适用于两者。我已经检查过 MPEG 了,没问题。有没有人经历过这个并且可以提供帮助?
我和:
代码:
import numpy as np
import cv2
def runCam():
print(cv2.getBuildInformation())
video_src = "rtsp://admin:myPWCam@192.168.1.223:554/Streaming/channels/1/"
cap = cv2.VideoCapture(video_src, cv2.CAP_FFMPEG)
while True:
ret, frame = cap.read()
try:
cv2.resizeWindow('Stream IP Camera OpenCV', 120300, 800)
cv2.imshow('Stream IP Camera OpenCV', frame)
except Exception as ex:
template = "An exception of type {0} occurred. Arguments:\n{1!r}"
message = template.format(type(ex).__name__, ex.args)
print(message)
break
if cv2.waitKey(1) & 0xFF == ord('q'):
break …
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个应用程序,当启动时,我的自定义视频录制屏幕自动启动视频录制,我自己的按钮停止录制和其他按钮.我所做的是设计按钮的布局,直到现在,但如何在后台添加视频录制屏幕..请帮助.
我是OpenCV的新手,我想显示我的网络摄像头看到的OpenCV.我正在使用C编码语言.
我试过这段代码:
#include <stdio.h>
#include <cv.h> // Include the OpenCV library
#include <highgui.h> // Include interfaces for video capturing
int main()
{
cvNamedWindow("Window", CV_WINDOW_AUTOSIZE);
CvCapture* capture =cvCreateCameraCapture(-1);
if (!capture){
printf("Error. Cannot capture.");
}
else{
cvNamedWindow("Window", CV_WINDOW_AUTOSIZE);
while (1){
IplImage* frame = cvQueryFrame(capture);
if(!frame){
printf("Error. Cannot get the frame.");
break;
}
cvShowImage("Window",frame);
}
cvReleaseCapture(&capture);
cvDestroyWindow("Window");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的网络摄像头的指示灯亮起,但结果是一个完全灰色的窗口,没有图像.
你能帮助我吗?
我们正在开发一个网站,您可以在其中上传有关教程的视频,它看起来像某个机构的视频存储库.我们想出了一个用户可以将视频直接录制到网站并上传标题,说明等内容的想法.我们将在rails框架上使用ruby.除了使用闪光灯和银光之外,有谁知道如何制作它?好吧,我搜索一些,发现一些,但案例是当用户停止录制时,它自动上传文件...用户可以放一些标题或描述等..而这个例子是在php,这就是为什么它对我来说是一个问题我怎么能在铁轨上做到这一点
提前致谢
我有一个关于avconv(或ffmpeg)用法的问题.
我的目标是从网络摄像头捕获视频并将其保存到文件中.另外,我不想使用太多的CPU处理.(我不希望avconv扩展或重新编码流)
所以,我正在考虑使用来自网络摄像头的压缩mjpeg视频流并直接将其保存到文件中.
我的网络摄像头是Microsoft LifeCam HD 3000,它的功能是:
ffmpeg -f v4l2 -list_formats all -i /dev/video0
Raw: yuyv422 : YUV 4:2:2 (YUYV) : 640x480 1280x720 960x544 800x448 640x360 424x240 352x288 320x240 800x600 176x144 160x120 1280x800
Compressed: mjpeg : MJPEG : 640x480 1280x720 960x544 800x448 640x360 800x600 416x240 352x288 176x144 320x240 160x120
Run Code Online (Sandbox Code Playgroud)
什么是avconv命令直接保存压缩流而不使用avconv进行缩放或重新编码.
现在,我正在使用此命令:
avconv -f video4linux2 -r 30 -s 320x240 -i /dev/video0 test.avi
Run Code Online (Sandbox Code Playgroud)
我不确定这个命令是否具有CPU效率,因为我没有告诉任何地方使用网络摄像头的mjpeg压缩功能.
在开始记录文件之前,avconv是否负责配置网络摄像头设置?它始终是原始流的工作,并在原始流上进行缩放和enconding吗?
感谢您的回答
我是python(2.7)和opencv(3.0)的新手(以及一般的视频流/编写),因此请原谅。
我正在使用Logitech c920作为我的网络摄像头,它可以流传输以h264格式压缩的视频,因此我试图编写一个简单的应用程序,该应用程序将VideoCapture实例的4个属性(fourcc设置为h264;宽度设置为1920;高度设置为1080;以及fps)到30),然后将视频录制到名为test.mp4的上一级目录,并在我的屏幕上显示该录制内容。这是代码:
import sys
import cv2 as cv
cap = cv.VideoCapture(0)
fourcc = cv.VideoWriter_fourcc('H','2','6','4')
cap.set(6, fourcc)
cap.set(3,1920)
cap.set(4,1080)
cap.set(5, 30)
vid = cv.VideoWriter('../test.mp4', fourcc, 20.0, (640,480))
print vid.isOpened() #returns false :(
while (cap.isOpened()):
ret, frame = cap.read()
if (ret == True):
#gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
vid.write(frame)
cv.imshow('window', frame)
if (cv.waitKey(1) & 0xFF == ord('q')):
break
cap.release()
vid.release()
cv.destroyWindow('window')
Run Code Online (Sandbox Code Playgroud)
cv.imshow('window',frame)正常工作,并且所有属性都已设置;但是,vid.isOpened()返回false,因此很明显我在上面做了错误的事情。如果我为fourcc传递-1,则可以从编解码器列表中进行选择,并且i420可用,并且说(对于Logitech摄像机),并且如果我将文件扩展名从mp4更改为avi,则vid.isOpened()返回true(我猜想这意味着i420无法存储为.avi?),但是test.avi总是很大,看似原始,几秒钟的测试视频只有100MB,无法打开。
任何帮助都会很棒,非常感谢
这是从网络摄像头保存视频的代码
import numpy
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
frame = cv2.flip(frame,0)
# write the flipped frame
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
当我运行它在python中它给出以下错误
> raceback (most recent call last): File
> "C:\Users\Prakash\Desktop\Image Proccessing\c.py", line 6, in <module>
> fourcc = cv2.VideoWriter_fourcc(*'XVID') AttributeError: 'module'
> object has no attribute 'VideoWriter_fourcc' …
Run Code Online (Sandbox Code Playgroud)