问题标签 [libyuv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1090 浏览

android-studio - 将 LibYUV 集成到我的 Android Studio 项目中

我想知道如何将 libyuv 库包含到我的 Android Studio 项目中。我有“libyuv_static.a”文件,它是一个预编译的二进制文件,但我尽一切努力将它包含在我的项目中。我在 src/main 中创建了一个名为 jniLibs 的文件夹,并将二进制文件放在该文件夹中,但在运行时它不会加载库,它给了我这个:

原因:java.lang.UnsatisfiedLinkError: 无法从加载器 dalvik.system.PathClassLoader[dexPath=/data/app/com.example.myproject-1.apk,libraryPath=/data/app-lib/com 加载 libyuv2rgb。 example.myproject-1]:findLibrary 返回 null

. 有人可以分享他/她的经验。

0 投票
1 回答
738 浏览

yuv - libyuv::NV21ToI420 messes up colors

I am using libyuv to convert NV21 image format to I420:

The size of my input is 640x480.

I display the dumped file using ImageMagick's display:

However, the colors are messed up in the displayed image. The other aspects of the image look okay.

I am wondering if I am making a mistake in my code. Perhaps my stride calculations are not correct.

Note that if I use my custom function to rearrange V1U1V2U2... as U1U2...V1V2... and dump the output, it displays fine. However, I prefer to use libyuv as it has some optimization for neon, SSE2, etc. Regards.

0 投票
2 回答
1883 浏览

android - Android 上的 libyuv::ConvertToI420 问题?

我设置了一个 onPreviewFrame 回调。这会得到一个包含 NV21 数据的 byte[]。我已将预览大小设置为 176*144。当设备处于横向模式时,具有 176*144 尺寸的 byte[] 是完美的,但是当设备处于纵向模式时,我仍然会得到具有相同尺寸的 byte[]。

我想将 byte[] 旋转 90 度并获得尺寸为 144*176 的 byte[]。

那么问题来了,如何旋转数据,而不仅仅是预览图呢?Camera.Parameters.setRotation 只影响拍照,不影响视频。Camera.setDisplayOrientation 明确表示它只影响显示预览,而不影响帧字节:

在查看了各种帖子后,我发现这篇文章声明使用 libyuv 的 ConvertToI420。

现在的交易是我已经编译了 libyuv 并且能够调用 libyuv::ConvertToI420 方法,但是我得到的结果 I420 在颜色和显示线条等方面都搞砸了......但是我现在得到的尺寸是144*176,图片可以看这里

我使用的代码片段如下。

我不想裁剪图像,只需将其旋转 90(顺时针/逆时针)附加图像用于 kRotate90。

谁能指出我哪里出了问题,我强烈怀疑它是否对传递给 ConvertToI420 方法的参数做一些事情。

任何帮助表示赞赏。

0 投票
3 回答
1164 浏览

ios - 为 arm64 的 iPhone 构建 pjsip 的 libyuv

我一直在尝试为 arm64 架构构建 Libyuv,然后将其集成到 PJSIP 库中。但是我没有取得任何进展,因为 Pjsip 无法找到libyuv.a框架。

在配置 Pjsip 构建时,我使用以下命令:

这是所在的文件夹libyuv.a

但是,在配置时,会出现此行:

关于这里有什么问题的任何建议?

参考 :

  1. 为 iPhone 构建 Pjsip:https ://trac.pjsip.org/repos/wiki/Getting-Started/iPhone

  2. 构建 libyuv:https ://trac.pjsip.org/repos/ticket/1776

更新

这就是我构建的方式libyuv.a

  1. GYP_DEFINES="OS=ios target_arch=arm64 target_subarch=arm64" GYP_CROSSCOMPILE=1 GYP_GENERATOR_FLAGS="output_dir=out_ios" ./gyp_libyuv -f ninja --depth=. libyuv_test.gyp

  2. ninja -j7 -C out_ios/Release-iphoneos libyuv_unittest

这成功地创建了库,但我没有得到连接该库的正确方法!

0 投票
1 回答
2571 浏览

android - 将 YUV420Sp 图像逆时针旋转 90 度

我想将 YUV420SP 图像逆时针旋转 90。图像大小为 640*480,因此旋转后的图像大小变为 480*640,这是我不想要的,所以我想提取 480*480 数据(或任何其他正方形大小)并旋转该数据。

我见过:Rotate an YUV byte array on Android

但是这个答案顺时针旋转了 90 度。

有人可以建议一些将 YUV420Sp 数据旋转 90(逆时针)或 270 度(顺时针)而不改变图像尺寸的功能。

0 投票
1 回答
2533 浏览

android - 如何通过libyuv将NV21格式的android相机预览数据转换为i420?

我通过以下方式接收 NV21 格式的预览数据:

我想通过libyuvdata转换为 I420 格式。它似乎或在是我需要的。NV21ToI420ConvertToI420include/libyuv/convert.h

有没有一些例子可以做到这一点?

0 投票
0 回答
385 浏览

android - Android Camera上libyuv::ConvertToI420后的异常图片

ImageFormat.NV21在 startPreview 之前设置为相机预览格式。

我需要通过libyuv将NV21预览数据转换为I420,然后对I420数据进行编码。

在这里,相关信息是:

CameraInfo 的相机方向是90.

输出如下:

在此处输入图像描述

如何解决?我错过了什么?

0 投票
1 回答
1222 浏览

c - 如何通过 libyuv::I420Scale 为 android 前置摄像头实现镜像?

以下文字来自libyuv#rotation

镜像 - 水平翻转镜像功能用于水平翻转图像,这对于网络摄像头的“自我视图”很有用。

通过传递负宽度和/或高度,也可以使用 I420Scale 和 ARGBScale 函数实现镜像功能。

但是,我看到了I420Scale这样的实现:

如果dst_width <= 0 || dst_height <= 0, 那么return -1;

这是在开玩笑Mirror functionality can also be achieved with the I420Scale by passing negative width and/or height吗?

如何实现镜像功能I420Scale

0 投票
0 回答
691 浏览

video - 使用 FFMPEG YUV 问题连接视频文件

我正在用 FFMPEG 连接三个视频。

连接的第一个和第三个视频是使用 FFMPEG 从 AVI 文件中提取的,并转换为 MP4。

他们的编解码器信息如下。

在此处输入图像描述

连接中的第二个视频是使用 FFMPEG 编译的。我正在用 FFMPEG 编译帧来创建这个视频。

它的编解码器信息如下。

在此处输入图像描述 如您所见,视频共享相同的编解码器、分辨率和帧速率。

他们唯一不共享的是解码格式。一个是 4:4:4,一个是 4:2:2

我想我从这个链接中理解了 YUV 的含义,https: //msdn.microsoft.com/en-us/library/windows/desktop/dd391027%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

当我使用concat demuxer将这三个视频连接在一起时,它可以工作,但是当我尝试观看最终视频时,视频显示第一个文件正在播放,然后最终视频中的第二个视频显示为空白,第三个视频玩得也很好。

所以我的问题是,我如何连接 3 个 MP4 文件,但将第二个视频的解码格式更改为 4:2:2。当我编译帧时,我想我可以改变 YUV 格式,但我还不知道怎么做。

0 投票
0 回答
192 浏览

android - 我的位图中的透明像素显示为白色

我正在使用 c 代码从 gif 文件中获取,并且使用libraryframe可以正常工作,然后我使用这种方法将返回的图像从这种格式格式转换。ffmpegav_read_frameBGRA to ARGBlibyuv::ABGRToARGB

在 java 部分我收到了bitmap,当我把它放在ImageView画成白色的透明像素中时。

即使我循环返回bitmap pixels并检查每个像素,我也发现它们是透明的!

什么也没发生,它仍然是白色的。然后我确实将所有透明像素转换为透明的!猜猜看,它正在工作!

我不明白为什么会这样。任何帮助,将不胜感激。

编辑1: 我从位图中获取所有像素并再次设置它们而不做任何事情,它也有效!?