- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 sws_scale 将图像从 RGB 转换为 YUV420P。我在 C++ 中使用的代码如下:
SwsContext *swscontext = sws_getContext(current_width,
current_height,
PIX_FMT_RGB24,
current_width,
current_height,
PIX_FMT_YUV420P,
SWS_FAST_BILINEAR,
NULL,
NULL,
NULL);
const int srcstride[3] = {current_width * 3, 0, 0};
BYTE *data_pos[3] = {data, NULL, NULL};
BYTE *dest[3] = {yuv,
yuv + current_width * current_height,
yuv + (current_width * current_height)
+ ((current_width * current_height) / 2)};
const int dststride[3] = {current_width, current_width / 2, current_width / 2};
sws_scale(swscontext, data_pos, srcstride, 0, current_height,
dest, dststride);
Y 和 U 平面编码正确,但 V 平面完全写入值 0x80
我想知道我是否做错了什么。
最佳答案
我仍然不知道它为什么起作用,但这解决了问题:
BYTE *dest[3] = {yuv,
yuv + current_width * current_height,
yuv + (current_width * current_height)
+ ((current_width >> 1) * (current_height >> 1))};
在语义上它们是相同的,所以我将保留这个问题,以防有人提出解释。
关于c++ - ffmpeg:sws_scale 在 RGB 到 YUV420 转换期间返回平面 V 中的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9497259/
我需要将 YUV 转换为 RGB。我还需要 RGB 值在有限范围内 (16-235)。我尝试使用 sws_scale 函数来完成这项任务。 我的代码你可以在下面看到。但是转换后我得到的黑色像素是 (0
我正在使用 sws_scale将一组 RGB32 图像转换为 YUV420 格式。每张图像都与前一张非常相似,它们仅在矩形区域 Q 上有所不同。 我的问题是如何利用 Q 来加快转换过程?应在 sws_
尝试将任意视频读取为纯 RGB24 像素,因此使用 sws_scale() 转换帧这边走: //... AVFrame* pic_out = av_frame_alloc();
我必须使用 sws_scale 对从 CAIRO_FORMAT_ARGB32 到 AV_PIX_FMT_YUV420P 的一系列帧进行编码。从 ffmpeg 文档我了解到源格式的 AV 等效项是 AV
在播放 4K 视频时,用户可以调整播放器窗口的大小 - 结果图像将在运行时平滑缩放。 另一方面 - 使用 libav 编写的程序逐帧读取 4k 视频文件并使用 sws_scale 函数将其缩小,但效果
我的代码非常简单;它使用 YUV420P 数据,调整其大小,并生成 PNG 或 JPEG 图像(OS X Lion、Apple 的 gcc 4.2.1)。效果很好;我正在使用 ffmpeg (HEAD
/* values for the flags, the stuff on the command line is different */ #define SWS_FAST_BILINEAR
我正在尝试使用 ffmpeg 的 sws_scale 函数将 AVFrame 从 JPEG(YUV 像素格式)转换为 RGB24 格式。我按如下方式设置 SwsContext: struct SwsC
我正在开发一个 OpenGL 视频应用程序,我想在其中以全屏模式渲染视频。我正在尝试使用以下代码渲染视频: GLFWmonitor* monitor = glfwGetPrimaryMonitor()
我正在尝试使用 ffmpeg 库将图像编码为视频。 我有这些全局参数: //Global params AVCodec *codec; AVCodecContext *codecCt
我正在用 libav 制作电影播放器。我正在解码视频数据包,我正在反向工作,我正在寻找工作。所有这些都无法在 x86 android 模拟器上运行,但无法在真正的 android 手机上运行(ar
我正在解码相机编解码器,然后总是将其编码为 H264更具体地说qsv如果支持。目前有2个摄像头要测试。一种是H264编码,一个是rawvideo .问题来自 rawvideo .像素格式为BGR24并
尝试编写使用 libav 的程序从任意视频中提取原始像素数据(~BMP)。一切顺利,除了 sws_scale()转换失败 AVFrame到 RGB24。 我制定了它的最小示例,其中 AVFrame正在
我正在使用 ffmpeg 编写视频播放器(仅限 Windows,Visual Studio 2015,64 位编译)。 对于普通视频(最高 4K @ 30FPS),它的效果非常好。但是对于我的最大目标
我有一个基于sws_scale的颜色空间转换函数.在应用程序的生命周期中,它将被多个不同的线程调用。但是,我不知道 sws_scale 的线程安全性如何,而且我没有在其文档中找到它。 我假设每个线程都
我想将 YUV420P 图像(从 H.264 流接收)转换为 RGB,同时调整它的大小,使用 sws_scale. 原始图像的大小为 480 × 800。只需使用相同的尺寸进行转换即可。 但是,当我尝
我的代码有问题。 我想将 YUV 转换为 RGB,但是 sws_scale始终返回 0 并填充数据 00000000..NULL 我尝试谷歌搜索,但我找不到任何问题。 我需要 AVPicture 还是
我正在使用 FFMpeg 解码视频,并想使用 OpenGL 编辑解码帧,但为了做到这一点,我需要将 AVFrame 中的数据从 YUV 转换为 RGB。 为了做到这一点,我创建了一个新的 AVFram
我正在将 PIX_FMT_ARGB 格式的图片混合到 mp4 视频中。 一切都很好,除了输出图像的最后一个像素行被搞砸了,在大多数情况下最后一行是完全黑色的,有时还有其他颜色,它似乎在某种程度上取决于
我想通过使用 ffmpeg 的 func--->sws_scale() 来调整图片的大小。 有没有人知道怎么做? 你有这个函数的源代码吗? 最佳答案 首先你需要创建一个SwsContext (您只需要
我是一名优秀的程序员,十分优秀!