将图片放在视频上方并将视频保存在 android

Put Image above Video and save video in android

我正在编写必须将图像放在视频上方并保存视频的应用程序。

在一般应用程序中打开视频文件后,用户 select 具有透明背景的图像并将该图像放在视频上方,在用户按下保存按钮后他会获得新视频,但视频上方已经有图像。

能否请您提供信息或提示如何做到这一点。

假设您的意思是将其作为视图叠加层放置,则可以在您的布局中轻松完成 XML。

您可以使用 FrameLayoutRelativeLayout

将一个视图置于另一个视图之上
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <VideoView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" />

  <TextView
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="20dip"
    android:layout_gravity="center_horizontal|bottom"

    android:padding="12dip"

    android:background="#AA000000"
    android:textColor="#ffffffff"

    android:text="My customised view" />
</FrameLayout>

因此,根据您的问题,您正在寻找一种视频编辑器解决方案来完成任务。

我认为这是你的情况:

** 您的申请中有视频

** 打开位图资源(来自某处的图像文件)

** 在背景中的所有帧上覆盖电影(视频)底部的位图

** 将视频保存到外部存储器

为此 ffmpeg 确实支持叠加功能,或者 Android MediaCodec stuff. FFMPEG 有各种过滤器,其中之一是叠加过滤器。我的理解是您想在视频上叠加图像(即 png),ffmpeg 无疑是完成这项工作的有用框架。您可以设置输出格式您可以设置要覆盖的图像的坐标。

例如:

ffmpeg -i input.avi -i logo.png -filter_complex 'overlay=10:main_h-overlay_h-10' output.avi

以上命令在左下角的 input.avi 视频文件上添加叠加层 logo.png。

有关过滤器的更多信息,请访问以下网站,

https://www.ffmpeg.org/ffmpeg-filters.html#overlay-1

这是 GitHub 链接

FFmpeg Android Java

Android Java wrapper around ffmpeg command line binary or this

如果这是您问题的解决方案,您需要与上述命令等效的 C 代码。你还需要看看ffmpeg的性能,因为它是一个纯软件框架。

希望我已经正确理解了你的问题,这对你有所帮助。