4

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

我在 iOS 上使用过它,它非常快

我想在我的 android 应用程序中做同样的事情,但似乎 GPUImageMovie 类在 android 库中不存在: https ://github.com/Cyber​​Agent/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];

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

GPUImageView 的填充模式可以通过设置它的 fillMode 属性来改变,这样如果源视频的纵横比与视图的纵横比不同,则视频将被拉伸、以黑条居中或缩放以填充。

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

此外,如果您希望启用麦克风音频捕获以录制电影,您需要将相机的 audioEncodingTarget 设置为您的电影作者,如下所示:

videoCamera.audioEncodingTarget = movieWriter;

有没有一个库可以在android中做同样的事情?

4

0 回答 0