问题标签 [yuv]

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 投票
2 回答
20359 浏览

android - 在 C++ 中从 YUV 转换为 RGB (android-ndk)

我在android中开发,并希望将字节数组从相机的previewCallback(YUV格式)转换为rgb格式。

我已经使用了这个答案中给出的功能:Getting frames from Video Image in Android

它在java中完美运行,但我的问题是我想用c++制作函数(我使用的是ndk,对c++不太熟悉)。

我曾尝试在 c++ 中创建该函数,但它总是产生奇怪的结果(例如,图片全是绿色)。

有没有人有类似的功能或这个功能在 c++ 中工作?

谢谢。

0 投票
4 回答
51153 浏览

android - 在 Android 中显示 YUV 图像

在我的应用程序中,我们需要显示从服务器接收到的视频帧到我们的 android 应用程序,
服务器正在以每秒 50 帧的速度发送视频数据,已在 WebM 中编码,即使用 libvpx 对图像进行编码和解码,

现在从 libvpx 解码后,它得到 YUV 数据,我们可以在图像布局上显示,

当前的实现是这样的,

在 JNI / Native C++ 代码中,我们将 YUV 数据转换为 RGB 数据 在 Android 框架中,调用

要创建位图图像,

使用以下代码在 imageView 上显示图像,

我的查询是,总的来说这个函数大约需要 40 毫秒,有没有办法优化它,
1 - 有没有办法将 YUV 数据显示到 imageView ?

2 - 有没有其他方法可以从 RGB 数据创建图像(位图图像​​),

3 -- 我相信我总是在创建图像,但我想我应该只创建一次位图,并且总是在我们收到时做/提供新的缓冲区。
请分享你的观点。

0 投票
9 回答
73653 浏览

android - 在android的onPreviewFrame期间转换YUV-> RGB(图像处理)-> YUV?

我正在使用 SurfaceView 捕获图像并在public void onPreviewFrame4(byte[] data, Camera camera)中获取 Yuv Raw 预览数据

我必须在 onPreviewFrame 中执行一些图像预处理,所以我需要将 Yuv 预览数据转换为 RGB 数据,而不是图像预处理并返回到 Yuv 数据。

我已使用这两个函数将 Yuv 数据编码和解码为 RGB,如下所示:

问题是编码和解码 Yuv 数据可能有一些错误,因为如果我跳过预处理步骤,那么编码的 Yuv 数据也与 PreviewCallback 的原始数据不同。

请帮我解决这个问题。我必须在 OCR 扫描中使用此代码,因此我需要实现这种类型的逻辑。

如果有任何其他方式做同样的事情,请提供给我。

提前致谢。:)

0 投票
1 回答
2672 浏览

android - 将预览数据转换为位图?

在以下方法中,

数据以 Yuv 格式出现,有什么方法可以将其转换为 RGB,因为我已经使用以下方法进行了尝试

}

但它对我来说无法正常工作。

请提供任何其他方式将其转换为位图。

谢谢...!!!

0 投票
1 回答
3797 浏览

ios - FFmpeg AVFrame 到 OpenGL 纹理没有 YUV 到 RGB 软转换

我想在 iOS 上解码一个加密的 H264 视频文件。我已经移植了我们的解密算法,它运行良好。但是,由于 SDK 中缺少 API,我们无法直接使用 H264 硬件解码器。

所以我正在尝试寻找解码 H264 视频的替代方法。即使存在一些可能的 LGPL 许可证问题,我也在尝试使用 FFmpeg 解码这些视频。我解码 H264 视频没有任何问题,并且由于 OpenGL ES 纹理,我渲染了 H264 帧。但是存在一些性能问题。我检测了我的代码,瓶颈是 ffmpeg 重新缩放和 YUV 到 RGB 的转换。我知道我可以使用 OpenGL ES 2.0 着色器通过 GPU 加速将 YUV 转换为 RGB(相关帖子Alternative to ffmpeg for iOS)。我也知道 AVFrame 结构是如何组成的:Y 数据的 data[0],U 数据的 data[1] 和 V 数据的 data[1]。但我不明白如何使用 line size[x] 和 data[x] 将数据传输到 OpenGL 纹理。

有人有 AVFrame YUV 到 OpenGL 纹理的例子吗?

谢谢,大卫

0 投票
1 回答
1098 浏览

android - 在 Android 中从视频中抓取帧

我一直在研究从视频流中获取 YUV 帧的不同方法,但我所看到的大部分内容都依赖于从 previewSize 获取宽度和高度。但是,手机可以拍摄 720p 的视频,但很多手机只能以较低的分辨率(即 800x480)显示它,那么是否可以抓取更接近 1920x1080 的屏幕截图(如果以 720p 拍摄视频)?或者我是否被迫使用预览分辨率(某些手机上为 800x400)?

谢谢

0 投票
1 回答
1664 浏览

video - 网络摄像头是否通过 USB 传递未压缩的原始视频?

网络摄像头是否通过 USB 传递未压缩的原始视频?有谁知道视频通过什么格式?谢谢

0 投票
1 回答
13010 浏览

embedded-linux - v4l2 视频捕获示例

这是我在这里的第一篇文章,我希望我能找到一些帮助

我正在三星 ok6410 板和 ov9650 cmos 相机上开发嵌入式 linux

我必须捕获视频并将其保存在 SD 卡上

我想使用捕获视频的循环缓冲区,当它已满时,允许新数据覆盖旧数据。

有一个标志,当升起时,捕获会持续 10 秒然后停止。保存到 SD 卡的视频应包含升旗前 10 秒和升旗后 10 秒。

我在这里阅读了 v4l2 API 规范官方网站上的捕获示例

http://free-electrons.com/kerneldoc/latest/video4linux/API.html

但是有些地方我看不懂或者不知道我是否理解正确

  1. 在这个例子中,有 4 个帧缓冲区,每个缓冲区可以容纳一帧。这是正确的吗?

  2. 有一个变量(frame_count)被初始化为70,这​​是否意味着通过完成这个程序我将有一个包含70帧的视频?

  3. fns(主循环)和(读取帧)做什么?我知道他们应该做什么,但无法理解书面代码、循环等

  4. 如何在此代码中调整 fps?或者我应该在相机寄存器中写入值?

  5. 捕获视频后,我将有一个充满原始数据的缓冲区,我想对其进行压缩或使用编解码器将其保存为 MPEG ,我可以更改要压缩的像素格式(例如 MPEG)而不是 YUYV 吗?或者我应该怎么做才能压缩视频?编解码器还是什么?

  6. 我可以将缓冲区中的这些原始数据写入文件 .yuv 吗?我找到了一些可以播放这种格式视频的软件。

  7. 是否可以使用循环缓冲区而不是线性缓冲区来保存捕获的视频?

我知道我的帖子太长了,但我是新手,找不到任何可以帮助我编写代码的教程。

提前致谢

0 投票
1 回答
6493 浏览

flash - 将 RGB 转换为 YUV,+ ffmpeg

我正在尝试以下方法从我的 Flash/AIR 应用程序中录制实时视频:

  1. 我每帧拍摄一个“屏幕截图”(舞台上的位图数据)。
  2. 我将每个像素转换为 yuv 格式,如下所示(V2)

    /li>
  3. 我使用以下 ffmpeg 行将原始文件转换为视频:

    /li>

创建了一个视频,但它只是一团糟,与录制的内容几乎没有相似之处。我知道捕获过程有效,因为我尝试了与SimpleFlvWriter相同的 BitmapData“截图” 。

因此,我的转换或 ffmpeg 行有问题,但我不知道。

这是创建视频时 ffmpeg 输出的内容,也许它可以帮助某人:

我不是真正的编解码器专家(刚刚开始;)),所以我不知道该怎么做。

这是一个包含其中一个帧和视频输出的 zip 。应该看到的是一个绿色的微笑梨,没有任何人工制品请记住,大小为 600x700,格式为 yuv420。最好使用 irfanview、IMO 查看此类原始图像文件。不要介意噪音,它来自推我的麦克风;)

0 投票
5 回答
16067 浏览

c++ - rgb转yuv420算法效率

我编写了一个算法来将 RGB 图像转换为 YUV420。我花了很长时间试图让它更快,但我还没有找到任何其他方法来提高它的效率,所以现在我求助于你,你可以告诉我这是否和我得到的一样好,或者是否还有其他更有效的方法方法(算法在 C++ 中,但 C 和汇编器也是选项)