标签: video-recording

GPUImageMovieWriter - 录制视频两端偶尔会出现黑框

我有录制应用程序实现,用户可以点击"录制"按钮开始/停止录制.我有一个基本的实现这一目标GPUImageVideoCamera具有输出设置为一个GPUImageView,以及一个GPUImageMovieWriter.

50%的时间,录制的剪辑最终会在两端都有一对(或单个)黑框,有时两者都是.实现相当简单,但无论如何都是这样.

gpuImageView = [[GPUImageView alloc] initWithFrame:cameraView.frame];
gpuImageView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill;

[cameraView addSubview:gpuImageView];

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPresetHigh cameraPosition:(usingBackCamera) ? AVCaptureDevicePositionBack : AVCaptureDevicePositionFront];

[videoCamera addTarget:gpuImageView];
[videoCamera addTarget:movieWriter];
videoCamera.audioEncodingTarget = movieWriter;
[videoCamera startCameraCapture];

double delayToStartRecording = 0.5;
dispatch_time_t startTime = dispatch_time(DISPATCH_TIME_NOW, delayToStartRecording * NSEC_PER_SEC);
        dispatch_after(startTime, dispatch_get_main_queue(), ^(void){
            NSLog(@"Start recording");
            [movieWriter startRecording];
        });
Run Code Online (Sandbox Code Playgroud)

然后使用以下内容停止录制(同时现场摄像机继续显示GPUImageView.

[movieWriter finishRecording];
Run Code Online (Sandbox Code Playgroud)

有没有其他人经历过这个和/或找到了避免黑框的解决方案?我无法暂停/恢复摄像头捕获,以确保无缝的用户体验.

avfoundation video-recording ios gpuimage

4
推荐指数
1
解决办法
912
查看次数

如何在gstreamer中录制音频和视频

我是 gstreamer 的新手,我想录制音频和视频并将其保存为 .mp4 格式,使用网络摄像头录制视频并使用 MIC 录制音频这是我的管道

gst-launch-1.0 -e v4l2src !队列 !x264enc!h264解析!队列 !qtmux0。阿尔萨斯RC!'音频/x-raw,速率=44100,深度=24'!音频转换!音频重采样!沃阿森克!aacparse!qtmux!文件接收器位置=test.mp4

当我执行它时,视频仅录制 10 秒,音频甚至没有录制,它给出了一些消息,例如

警告:来自元素 /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:无法足够快地录制音频附加调试信息:gstaudiobasesrc.c(866):gst_audio_base_src_create():/GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:删除了 425565 个样本。这很可能是因为下游无法跟上并且消耗样本太慢。

帮助我克服这个问题提前谢谢你

c audio audio-recording gstreamer video-recording

4
推荐指数
1
解决办法
9654
查看次数

FFMPEG RTMP流录制超时

[已解决] - 最终编辑中的解决方案我正在使用 ffmpeg 录制 rtmp 直播流,并希望添加一个标志,该标志将在新数据停止到达时自动停止处理。

如果我启动和停止脚本(通过按需终止进程来停止),一切都很好,录音将被保存并可以播放。但是,当在没有手动调用 STOP 的情况下从源停止流时,脚本仍将运行一段时间,并且生成的文件将被损坏(使用手动停止调用进行测试 - 有效,并在录制之前停止流,模拟浏览器/选项卡关闭或断开连接 - 失败)

我正在运行的命令

$command = "ffmpeg -i {$rtmpUrl} -c:v copy -c:a copy -t 3600 {$path} >/dev/null  2>/dev/null &";
$res = shell_exec($command)
Run Code Online (Sandbox Code Playgroud)

我尝试在输入之前和之后添加 -timeout 0 选项,如下所示

$command = "ffmpeg -timeout 0 -i {$rtmpUrl} -c:v copy -c:a copy -t 3600 {$path} >/dev/null  2>/dev/null &"; 
Run Code Online (Sandbox Code Playgroud)

$command = "ffmpeg -i {$rtmpUrl} -c:v copy -c:a copy -timeout 0 -t 3600 {$path} >/dev/null  2>/dev/null &";
Run Code Online (Sandbox Code Playgroud)

但没有任何改善。

我在这里缺少什么?当新数据停止从直播中产生时,有什么方法可以自动停止脚本(意味着流停止并且录制也应该停止)。

注意 $rtmpUrl 和 $path 已被检查,只要脚本在直播结束前停止,一切都会正常。

任何建议都将受到高度赞赏 …

ffmpeg rtmp video-streaming video-recording

4
推荐指数
1
解决办法
6146
查看次数

VLC记录网络摄像头和流到chrome linux

我目前正在寻找如何完成我被告知可能的事情.

我被告知我们可以使用vlc在linux中流式传输网络摄像头,这将允许以下内容:

  • 将流记录到本地计算机以供以后上载.
  • 使用Chrome的HTML5视频功能播放流媒体.
  • 从Web发送启动和停止命令以进行vlc录制.

我已经研究了很长一段时间,但却找不到可行的解决方案.

我可以使用VLC录制视频,但以下内容

vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:standard{access=file,dst=capture_4.avi}"
Run Code Online (Sandbox Code Playgroud)

这真的有可能吗?

ubuntu google-chrome vlc video-recording html5-video

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

如何在iPhone应用程序中获取录制视频的持续时间

我在iPhone录制视频我希望获得录制的录制持续时间.有没有办法获得录制的视频持续时间.

这是我获取录制视频和路径的代码.

if ([type isEqualToString:(NSString *)kUTTypeVideo] || [type isEqualToString:(NSString *)kUTTypeMovie])
{
    NSURL*videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

    videoData = [[NSData dataWithContentsOfURL:videoURL] retain];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormat setDateFormat:@"dd-MM-yyyy_HH:mm:SS"];

    NSDate *now = [[[NSDate alloc] init] autorelease];
    NSDate* theDate = [dateFormat stringFromDate:now];

    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Default Album"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
        [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];

    NSString*testUser=TitleTextField.text;

    NSString *videopath= [[[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/%@.mov",documentsDirectory,testUser]] autorelease];

    BOOL success = [videoData …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c video-recording

3
推荐指数
1
解决办法
3735
查看次数

如何以编程方式在android中录制静音视频

我正在尝试使用MediaRecorder在Android中创建视频录像机,用户可以选择录制静音视频,即录制没有音频的视频.我检查了是否有任何选项来记录Android中的静音视频和经过大量搜索我没有得到任何完美的方法来做到这一点,我尝试了下面的AudioManager方法:

audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);

audioManager.setMicrophoneMute(true);

audioManager.setStreamVolume(AudioManager.STREAM_SYSTEM, 0,   AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE)
Run Code Online (Sandbox Code Playgroud)

但他们都没有为我工作.

任何人都可以帮助我解决这个问题.

谢谢 !!!

android video-recording mediarecorder android-mediarecorder

3
推荐指数
1
解决办法
2472
查看次数

cv2.videowriter writes 0 bytes file (python) (opencv)

I am currently doing a motion detection project that records down video when motion is detected. Right now there is no error when recording the video but when i check on the video, it is 0 bytes. Any help would be very much appreciated.

This is my code:

camera = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640, 480))
Run Code Online (Sandbox Code Playgroud)

python opencv video-recording

3
推荐指数
1
解决办法
1918
查看次数

使用opencv c ++每1分钟创建一个新的视频文件

我正在用opencv制作一个小的“ Dashcam”。我想创建一个以当前日期和时间命名的新视频文件的每一分钟都很简单。这些视频文件的内容是网络摄像头的框架。

但是,经过第一分钟后,不再生成视频文件。

这是我的注释代码:

#include <iostream>
#include <windows.h>
#include <ctime>
#include <time.h>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;


int record_video()
{
    VideoCapture cam(0);
    if (!cam.isOpened())
    {
        cout << "Error from webcam" << endl;
        return -1;
    }

    time_t t = time(0);
    struct tm* now = localtime( & t );
    char buffer[80];

    strftime(buffer, 80, "%F_%Hh%M.wmv", now); //get the date and time for my file

    VideoWriter video(buffer, CV_FOURCC('W', 'M', 'V', '2'), 30, Size(640, 480), true); //Creation of …
Run Code Online (Sandbox Code Playgroud)

c++ video opencv video-processing video-recording

3
推荐指数
1
解决办法
420
查看次数

TypeError,captureStream 不是函数

我创建了一个带有视频元素的 HTML5 页面。播放示例视频。在我尝试在视频元素中记录流之后。我正在使用 RecordRTC 库来实现录制功能。我有以下代码

var stream = document.getElementById("my_video").captureStream();
var recorder = RecordRTC(stream, { 
  type: 'video'
});

recorder.startRecording();
Run Code Online (Sandbox Code Playgroud)

录制在 Chrome 浏览器和 Mozilla 浏览器上成功运行,直到版本 57。但在去年 1 月,Mozilla 浏览器更新到版本 58。此更新后,尝试使用 Mozilla 录制视频时出现错误。

错误信息是:

TypeError 
message: document.getElementById("my_video").captureStream is not a function"
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

html javascript video-recording html5-video recordrtc

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

ReplayKit:RPScreenRecorder.shared().startCapture() 不工作

ReplayKit最近真的让我很沮丧。因为某些原因

RPScreenRecorder.shared().startCapture(handler: { (sample, bufferType, error) in
Run Code Online (Sandbox Code Playgroud)

当我调用它时实际上不起作用,因为我在其中有一个print()语句并且它从未被调用过。

我的代码ViewController是:

import UIKit
import AVFoundation
import SpriteKit
import ReplayKit
import AVKit

class ViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, RPPreviewViewControllerDelegate {

    var assetWriter:AVAssetWriter!
    var videoInput:AVAssetWriterInput!

func startRecording(withFileName fileName: String) {
        if #available(iOS 11.0, *)
        {

            assetWriter = try! AVAssetWriter(outputURL: fileURL, fileType:
                AVFileType.mp4)
            let videoOutputSettings: Dictionary<String, Any> = [
                AVVideoCodecKey : AVVideoCodecType.h264,
                AVVideoWidthKey : UIScreen.main.bounds.size.width,
                AVVideoHeightKey : UIScreen.main.bounds.size.height
            ];

            videoInput  = AVAssetWriterInput (mediaType: AVMediaType.video, outputSettings: videoOutputSettings)
            videoInput.expectsMediaDataInRealTime = true
            assetWriter.add(videoInput) …
Run Code Online (Sandbox Code Playgroud)

avfoundation video-recording swift avkit replaykit

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