将图片放在视频上方并将视频保存在 android
Put Image above Video and save video in android
我正在编写必须将图像放在视频上方并保存视频的应用程序。
在一般应用程序中打开视频文件后,用户 select 具有透明背景的图像并将该图像放在视频上方,在用户按下保存按钮后他会获得新视频,但视频上方已经有图像。
能否请您提供信息或提示如何做到这一点。
假设您的意思是将其作为视图叠加层放置,则可以在您的布局中轻松完成 XML。
您可以使用 FrameLayout
或 RelativeLayout
将一个视图置于另一个视图之上
<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 链接
Android Java wrapper around ffmpeg command line binary or this
如果这是您问题的解决方案,您需要与上述命令等效的 C 代码。你还需要看看ffmpeg的性能,因为它是一个纯软件框架。
希望我已经正确理解了你的问题,这对你有所帮助。
我正在编写必须将图像放在视频上方并保存视频的应用程序。
在一般应用程序中打开视频文件后,用户 select 具有透明背景的图像并将该图像放在视频上方,在用户按下保存按钮后他会获得新视频,但视频上方已经有图像。
能否请您提供信息或提示如何做到这一点。
假设您的意思是将其作为视图叠加层放置,则可以在您的布局中轻松完成 XML。
您可以使用 FrameLayout
或 RelativeLayout
<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 链接
Android Java wrapper around ffmpeg command line binary or this
如果这是您问题的解决方案,您需要与上述命令等效的 C 代码。你还需要看看ffmpeg的性能,因为它是一个纯软件框架。
希望我已经正确理解了你的问题,这对你有所帮助。