gpt4 book ai didi

android - 将图像转换为视频

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:12 27 4
gpt4 key购买 nike

如何使用FFmpeg将图像转换成视频?或 JCodec , 仅适用于 android MediaCodec .视频图像是位图文件,可以是 ARGB888 或 YUV420(我的选择)。最重要的是视频必须可以在安卓设备上播放,最大 API 是 16。我知道 API 18 MediaMuxer不能使用它。

请帮助我,我被困在这个问题上很多天了。(JCodec 很慢,而 FFmpeg 使用起来很复杂)。

最佳答案

在适用于所有设备的 API 16 中,没有简单的方法可以做到这一点。

你会遇到 buffer alignment 的问题, color spaces ,并且需要使用不同的YUV layouts在不同的devices .

考虑缓冲区对齐问题。在具有高通 SOC 的 API 18 之前的设备上,您必须将 CbCr 平面与缓冲区起点对齐 2K 偏移量。在 API 18 上,所有设备都使用相同的布局;这是由 Android 4.3 中添加的 CTS 测试强制执行的。

即使使用 API 18,您仍然必须在运行时检测编码器需要平面值还是半平面值。 (这可能与您的情况无关,但是 MediaCodec 不接受相机输出的任何 YUV 格式。)请注意 MediaCodec 没有 RGB 输入。 .

如果可移植性不是问题,即您的目标是特定设备,您的代码会简单得多。

上面链接的 SO 页面中有代码 fragment 。最接近的“官方”示例是 EncodeDecodeTest 中的缓冲区到缓冲区/缓冲区到表面测试。 .这些是 API 18 测试,这意味着它们不会执行“如果 QC 和 API16 则更改缓冲区对齐方式”的舞蹈,但它们确实展示了如何进行平面布局与半平面布局检测。它不包括 RGB 到 YUV 颜色转换器,但网络上有这样的示例。

好的一面是,编码器输出似乎在任何设备和 API 版本上都很好。

将原始 H.264 流转换为 .mp4 文件需要第 3 方库,因为正如您所说 MediaMuxer不可用。我相信有人安装了ffmpeg作为命令行实用程序并以这种方式执行(可能类似于 this ?)。

关于android - 将图像转换为视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com