当前位置: 首页 > 知识库问答 >
问题:

Android视频过滤器

空正豪
2023-03-14

我正在尝试创建一个应用程序,可以在其中为录制的视频添加过滤器。基本上,我想复制Instagram视频或Viddy中存在的功能。

我做过研究,但我不能把它全部拼凑起来。我研究过使用GLSurfaceView播放录制的视频,我知道我可以使用NDK进行像素处理,并将其发送回SurfaceView或以某种方式保存。问题是,我不知道如何发送像素数据,因为似乎没有访问它的功能。这个想法来自相机功能“onPreviewFrame”。该函数返回一个字节数组,允许我操作像素并显示它。

另一个想法是使用GLSurfaceView并使用OpenGL渲染过滤器。GLSurfaceView有一个可以设置的渲染器,但我对OpenGL不是很熟悉。但是,这又回到了实际获取每个视频帧的像素。我也读过关于将每一帧撕成纹理,然后在OpenGL中操作纹理的文章,但是我遇到的答案不是很详细。

最后,我研究了JavaCV。尝试使用FFmpegFrameGrabber,但我也没有太多。我只想抓取一帧,但当我尝试将帧的ByteBuffer写入ImageView时,会出现“缓冲区大小不足以容纳像素”错误。

任何指导都很好。

共有2个答案

尹承泽
2023-03-14

使用exoplayer过滤器库是很好的,这一个将完成您的工作,但为了将过滤后的视频与视频合并,您必须做额外的工作。

ExoplayerFilter的链接就在这里:ExoplayerFilter

你必须为此选择外部玩家,但是按照他们的指示你就可以完成任务了。如果有什么事就通知我。

潘琨
2023-03-14

在Android 4.3中,您可以使用曲面作为编码器的输入。http://developer.android.com/about/versions/android-4.3.html#Multimedia

因此,您可以使用GLSurfaceView并使用片段着色器应用过滤器。

你可以在这里找到一些很好的例子。http://bigflake.com/mediacodec/

 类似资料:
  • 37 视频滤镜 在配置编译FFmpeg时可以通过--disable-filters来禁止所有滤镜的编译。也可以配置编译脚本来输出所有包含进编译的滤镜信息。 下面是当前可用的视频滤镜介绍。 alphaextract 把输入视频作为灰度视频来提取透明通道,它通常和alphamerge滤镜联用。 alphamerge 通过添加或者替换透明通道,让主要视频与另外一路视频混合。这里主要是使用alphaext

  • 视图过滤 可以对视图的渲染输出进行过滤 <?php namespace app\index\controller; use think\Controller; class Index extends Controller { public function index() { // 使用视图输出过滤 return $this->filter(fu

  • 如何在Android中通过任何视频链接播放视频(例如—https://youtu.be/SiD77g9KfhA“也可以是另一个媒体门户的另一个视频链接)。我尝试过这样做,但遇到了一个错误。 我的代码 错误。

  • 我正试图在我的RecyclerView中实现搜索过滤器,就像在这篇文章中一样 我已经对它进行了调试,它确实按照预期过滤了项目,但列表在应用程序中似乎没有改变。一、 E:我过滤一个名字,有7个结果,在屏幕上是原始列表。 我的 onCreateMenu活动选项是: 我的适配器如下所示: 我忘了什么? 提前致谢!

  • 我需要批量处理一堆视频以将它们的高度缩放到240,保持长宽比不变。几乎完成工作的命令是: 如您所见,有趣的部分是vf比例=-1:240 这适用于缩放输出宽度为偶数的视频。否则,我会收到以下错误消息: 我如何克服这个问题? 编辑:根据这个链接,我尝试使用scale=trunc(oh/a/2)*2:240“输出一部电影,但结果视频质量很差。 编辑#2:这不是重复项,因为它标记错误。这个问题发布得比另一

  • 我想把2个视频合成一个视频并排放。我还希望为每个视频设置开始/停止时间。最终视频应为H264/AAC编解码和mp4格式。我附上了样本视频。https://www.dropbox.com/s/e5eouyrrqsy44ts/1.webm?dl=0 https://www.dropbox.com/s/u0zqie0icxamt3q/2.webm?dl=0 我使用了下面的ffmpeg命令。 ffmpeg