标签: video-processing

我可以使用Gstreamer API合并2个视频吗?

我想写一个简单的Linux CLI应用程序,可以拍摄2个视频源(1个演示者讲话,1个幻灯片,没有音频)并合并它们.

我希望整个输出视频是两个原创视频,并排.如果做不到这一点,我的第二个最佳选择将是"画中画"风格的视频,主持人在角落里的一个小框架中.

从几个小时研究,GStreamer的看起来可能能够做到这一点.任何人都可以在我花更多时间尝试之前确认吗?

如果不能,那么我可以使用其他API吗?

video video-processing gstreamer

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

裁剪具有已定义宽度,长度和像素位置的视频文件

我试图创建一个程序来检测视频中的脸部.在接受"面子"之前,必须通过一些要求.毕竟的要求都满足我,然后要采取认为"面子"的框架和裁剪他们,使脸部对焦的区域.程序将遍历每一帧并执行此操作,然后拍摄新视频并将其制作成视频文件.

我从未使用过视频文件或图像文件,所以这对我来说都是新手.我目前正在编写用于确定面部是否被接受的所有算法,以及面部的定位.我还为该项目提供了一个视频处理器.视频处理器用于检测面部.如果检测到面部,视频会将面部标记为红色矩形,并给出面部的x和y坐标,以及面部的长度和宽度.

我完全不知道怎么做的程序的唯一区域是面部的实际裁剪,以及新框架(聚焦在面部上)在原始框架上的放置.

我也不确定如何制作视频文件.我假设它与创建文本文件的行相同,只是使用了不同的方法和类.它是否正确?如果不是我应该怎么做?

我仍然处于设计阶段(我有视频处理器和其他程序的设计,但我想确保在我告诉那个人我可以做之前我能够裁剪和放置面部).我有视频处理器的代码(它很长但我可以发布一些方法,如果需要).

我可以看一下什么好的资源或建议?

(我不知道最好的标签.随意添加/删除任何)

c++ video video-capture video-processing video-streaming

6
推荐指数
1
解决办法
1539
查看次数

分段和网络传输的可能视频格式是什么?

我有一个远程教育系统项目,我必须分割视频并通过网络分享.

我的问题是什么视频格式更好选择?我在哪里可以找到有关视频格式的规格细节?

如果我将视频分成几部分,它们是按顺序排列的吗?(例如:第二个视频帧正好位于第一个视频帧之后?)

asp.net video video-processing

6
推荐指数
1
解决办法
249
查看次数

Android从图像列表中制作动画视频

我想通过在两个图像之间应用过渡动画来从图像列表制作动画视频.我在SO上发现了很多类似的问题,

Android屏幕捕获或从图像制作视频

Android-如何使用SD卡中的一组图像制作视频?

所有类似的SO问题建议使用动画,但我们如何将动画图像存储到视频文件?是否有任何Android库支持此工具制作图像视频?

任何帮助表示赞赏...... !!! 提前致谢

android video-processing android-image android-animation

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

Android更改任何视频文件的音频

我正在尝试为我的视频文件应用新的音频音调.

我想用android代码替换现有视频的音频.在android中有可能吗?任何人都可以帮助我这样做

是否有任何Android库支持此功能来更改视频文件的音频?

任何帮助表示赞赏...... !!! 提前致谢

audio video android video-processing

6
推荐指数
1
解决办法
2682
查看次数

用于视频处理的标准测试视频

所以..在图像处理中,lena是用于在研究社区中测试算法的标准图像.同样..是否有任何标准视频用于测试用于视频处理的MATLAB代码?

matlab video-processing

6
推荐指数
1
解决办法
7679
查看次数

FFMPEG无法显示视频的持续时间

我正在尝试使用ffmpeg从视频文件中捕获帧,但我甚至无法获得视频的持续时间.每次当我尝试访问它时,pFormatCtx->duration 我都会得到0.我知道指针已初始化并包含正确的持续时间,因为如果我使用 av_dump_format(pFormatCtx, 0, videoName, 0);那么我实际上得到持续时间数据以及有关视频的其他信息.这是我使用时得到的av_dump_format(pFormatCtx, 0, videoName, 0);:

输入#0,avi,来自'futurama.avi':

持续时间:00:21:36.28,开始:0.000000,比特率:1135 kb/s

流#0.0:视频:mpeg4(高级简单配置文件),yuv420p,512x384

[PAR 1:1 DAR 4:3],25 tbr,25 tbn,25 tbc

流#0.1:音频:ac3,48000Hz,立体声,s16,192kb/s

我不明白为什么av_dum_format可以显示持续时间而我不能.我检查了函数定义,显示持续时间,该函数也使用pFormatCtx-> duration.当我在main.cpp中调用它们时,其他成员变量也不会显示正确的数据

这是我的main.cpp:

extern "C" {
    #include<libavcodec/avcodec.h>
    #include<libavformat/avformat.h>
    #include<libswscale/swscale.h>
}


int main(int argc, char *argv[]) {
    AVFormatContext *pFormatCtx = NULL;

    const char videoName[] = "futurama.avi";

    // Register all formats and codecs.
    av_register_all();
    cout << "Opening the video file";
    // Open video file
    int ret = avformat_open_input(&pFormatCtx, videoName, NULL, NULL) != 0;
    if (ret …
Run Code Online (Sandbox Code Playgroud)

c c++ ffmpeg video-processing libavcodec

6
推荐指数
2
解决办法
5909
查看次数

setVideoSize()以高分辨率崩溃

我想给用户一个设置不同分辨率的选项.

我试过这个解决方案

camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
....
....
mCamera.unlock();
recorder.setCamera(mCamera);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setProfile(camcorderProfile);
Run Code Online (Sandbox Code Playgroud)

它完美地工作:质量好,一切......

当我把它设置为

camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
Run Code Online (Sandbox Code Playgroud)

随着FLASH,视频出现了绿色和其他一些奇怪的颜色.

我在线阅读,人们说这是因为我的手机可能不支持QUALITY_480P.好吧,它会让人感觉到.

因此,我开始研究不同的解决方案,所以我试过......

recorder.setVideoSize(640, 480);
Run Code Online (Sandbox Code Playgroud)

效果很好,

但视频看起来非常难看.

接下来,我检查了支持的视频列表.

List<Size> GetSupportedVideosResolutions =  params.getSupportedVideoSizes();
Run Code Online (Sandbox Code Playgroud)

分辨率:1280x720在列表中,所以

我试图设置以下内容:

recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoSize(1280,720);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
Run Code Online (Sandbox Code Playgroud)

它给了我一个RuntimeException错误.

问题是

为什么不能让我设置手机上可用的更高分辨率?

任何帮助将不胜感激,

谢谢.

编辑:添加了错误日志

04-18 17:40:07.391: E/AndroidRuntime(30191): java.lang.RuntimeException: start failed.
04-18 17:40:07.391: E/AndroidRuntime(30191):    at android.media.MediaRecorder.start(Native Method)
04-18 17:40:07.391: E/AndroidRuntime(30191):    at test.com.VideoActivity.prepare_StartRecorder(VideoActivity.java:1009)
04-18 17:40:07.391: E/AndroidRuntime(30191):    at test.com.VideoActivity.Recorder_Start_Stop(VideoActivity.java:1102)
04-18 17:40:07.391: E/AndroidRuntime(30191):    at test.com.VideoActivity$6.onClick(VideoActivity.java:246)
04-18 17:40:07.391: E/AndroidRuntime(30191):    at android.view.View.performClick(View.java:4489)
04-18 17:40:07.391: E/AndroidRuntime(30191): …
Run Code Online (Sandbox Code Playgroud)

video android video-capture video-processing android-camera

6
推荐指数
1
解决办法
586
查看次数

在IOS Swift项目中使用OpenCV进行视频处理

我使用桥接头(将Swift连接到Objective C)和Objective C包装器(将Objective C连接到C++)在swift IOS项目中集成了opencv.使用这种方法,我可以从Swift代码传递单个图像,在C++文件中分析它们并将它们取回.

我已经看到opencv提供了可以与Objective C UIViewController集成的CvVideoCamera对象.

但是因为我的UIViewController是用Swift编写的,我想知道这是否可行?

c++ opencv video-processing ios swift

6
推荐指数
1
解决办法
5437
查看次数

在Opencv中以UYVY编解码器录制视频

我有一个来自e-con系统的摄像头,支持UYVU编解码器视频录制.当我使用他们自己的软件(QTCam)录制视频时,它以avi格式录制YUY2 Codec,视频打开并在VLC中完美运行.

在此输入图像描述

现在我尝试通过Opencv VideoWrtiter()录制视频.我使用此命令将Camera属性设置为读取UYVY Codec视频.

camera1.set(CV_CAP_PROP_FOURCC,CV_FOURCC('U','Y','V','Y'));
Run Code Online (Sandbox Code Playgroud)

并且还使用VideoWriter以AVI文件格式录制视频.

video1.open("/home/camera1UYVY.avi",CV_FOURCC('Y','U','Y','2'),30,s1,true);
Run Code Online (Sandbox Code Playgroud)

来自相机的进纸工作,我用imshow()检查.但是,录制的视频不是在VLC播放,因为它适用于从QTCam录制的视频.

即使记录的重新编码的opencv也具有相同的编解码器

在此输入图像描述

我的代码如下

#include <opencv2/core/core.hpp>
#include <opencv2/video/video.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/videoio/videoio.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char **argv) {

VideoCapture camera1;
Mat frame1;

camera1.open(0);

camera1.set(CV_CAP_PROP_FOURCC,CV_FOURCC('U','Y','V','Y'));


camera1.set(CV_CAP_PROP_FRAME_WIDTH,1280);
camera1.set(CV_CAP_PROP_FRAME_HEIGHT,720);



cout << "FPS:" << camera1.get(CV_CAP_PROP_FPS) << endl;

camera1.set(CV_CAP_PROP_FPS,30);

cout << "FPS:" << camera1.get(CV_CAP_PROP_FPS) << endl;

cout << "Camera -1 Codec: " << (int)camera1.get(CV_CAP_PROP_FOURCC) << endl;


VideoWriter video1;

cout << camera1.get(CV_CAP_PROP_FRAME_WIDTH) << endl;
cout << camera1.get(CV_CAP_PROP_FRAME_HEIGHT) …
Run Code Online (Sandbox Code Playgroud)

c++ video avi video-processing opencv3.3

6
推荐指数
1
解决办法
725
查看次数