将图像置于视频上方并将视频保存在android

时间:2015-04-29 14:58:34

标签: java android video-processing video-editing

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

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

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

2 个答案:

答案 0 :(得分:5)

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

我认为这是你的情景:

**您的应用中有视频

**打开位图资源(某些位置的图像文件)

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

**将视频保存在外部存储空间

对于此ffmpeg确实支持覆盖功能或Android MediaCodec stuff FFMPEG 有各种过滤器,其中一个是叠加过滤器。我所理解的是你想要在视频上叠加一个图像(即png),ffmpeg肯定是一个有用的框架来完成这项工作。您可以设置输出格式,您可以设置要过度显示的图像的坐标。

E.g:

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

上面的命令在左下角的input.avi视频文件中添加了overlays logo.png。

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

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

这是GitHub链接

FFmpeg Android Java

Android Java wrapper around ffmpeg command line binarythis

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

希望我能正确理解你的问题,这会有所帮助。

答案 1 :(得分:1)

假设您的意思是将其放置为视图叠加层,可以在布局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>