GPUimageVideoCamera for android

时间:2013-04-29 11:00:31

标签: android compression gpuimage

我正在使用GPUImage库来压缩我的iOs应用中的视频(GPUimageVideoCamera) https://github.com/BradLarson/GPUImage/

我在iOS上使用它并且它非常快

我想在我的Android应用程序中做同样的事情,但似乎在android库中不存在GPUImageMovie类: https://github.com/CyberAgent/android-gpuimage/tree/master/library/src/jp/co/cyberagent/android/gpuimage

似乎android库只能处理图像(没有视频)。

任何人都知道这个图书馆是否可以胜任这项工作?如果没有,有人开发了GPUImage所有库吗?如果没有,我可以使用的最佳库是什么,可以像GPUImage库一样快地完成工作。

这就是GPUimageVideoCamera在iOs中所做的事情(过滤直播视频):

要从iOS设备的相机过滤实时视频,您可以使用以下代码:

GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"CustomShader"];
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, viewWidth, viewHeight)];

  // Add the view somewhere so it's visible

    [videoCamera addTarget:customFilter];
    [customFilter addTarget:filteredVideoView];

[videoCamera startCameraCapture];

这会设置一个来自iOS设备后置摄像头的视频源,使用一个试图以640x480捕捉的预设。该视频是在界面处于纵向模式下捕获的,其中横向左侧安装的摄像机需要在显示之前旋转其视频帧。然后,使用CustomShader.fsh文件中的代码将自定义过滤器设置为来自摄像机的视频帧的目标。这些过滤后的视频帧最终在UIView子类的帮助下显示在屏幕上,该子类可以呈现由此管道产生的过滤后的OpenGL ES纹理。

可以通过设置其fillMode属性来更改GPUImageView的填充模式,这样,如果源视频的宽高比与视图的宽高比不同,则视频将被拉伸,以黑条为中心或缩放。填补。

对于混合滤镜和其他可以拍摄多个图像的滤镜,您可以创建多个输出并添加单个滤镜作为这两个输出的目标。将输出添加为目标的顺序将影响输入图像的混合或处理顺序。

此外,如果您希望启用麦克风音频捕获以录制到电影,则需要将摄像机的audioEncodingTarget设置为电影编写器,如下所示:

videoCamera.audioEncodingTarget = movieWriter;

是否有一个可以在android中执行相同操作的库?

0 个答案:

没有答案