问题标签 [swscale]
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.
h.264 - 如何将来自相机的输入图像编码为 H.264 流?
我正在尝试使用 Mac OS X 10.9.5 上的 libx264 将来自 MacBook Pro 内置 FaceTime 高清摄像头的输入图像实时编码为 H.264 视频流。
以下是我采取的步骤:
- 使用 AVFoundation API(AVCaptureDevice 类等)以 15fps 从相机获取 1280x720 32BGRA 图像
- 使用 libswscale 将图像转换为 320x180 YUV420P 格式。
- 使用 libx264 将图像编码为 H.264 视频流(基线配置文件)。
每次从相机获取图像时,我都会应用上述步骤,相信编码器会跟踪编码状态并在可用时生成 NAL 单元。
由于我想在向编码器提供输入图像的同时获取编码帧,因此我决定每 30 帧(2 秒)刷新一次编码器(调用 x264_encoder_delayed_frames())。
但是,当我重新开始编码时,编码器会在一段时间后停止(x264_encoder_encode() 永远不会返回。)我尝试在刷新之前更改帧数,但情况没有改变。
下面是相关代码(我省略了图像捕获代码,因为它看起来没有问题。)
你能指出我可能做错了什么吗?
ffmpeg - swscaler@0dd9e620:使用了不推荐使用的像素格式,请确保您正确设置了范围”
我正在用 FFMpeg 解码 RTSP 视频流。在显示时(调用cv::imshow(...)
),我得到以下异常:
[swscaler @ 0d55e5c0] 使用了不推荐使用的像素格式,请确保您正确设置了范围
我正在将像素格式从“AV_PIX_FMT_YUVJ420P”转换为“AV_PIX_FMT_YUV420P”。仍然得到上述异常。任何帮助表示赞赏;
video - 像素格式转换问题 [FFMPEG]
我使用 ffmpeg 的库编写了一个小程序。执行以下操作-
1)解码一帧。2)将帧转换为 rgb24 。3)将rgb24帧转换回yuv420p。4)编码yuv420p帧并打包成视频文件。
但结束视频与输入视频不同。最终视频中有一些伪影(水平线)。当调用 rgbToYuv 方法时,我也会收到警告 - 警告:数据未对齐!这可能会导致速度损失
我怀疑我的格式转换方法有问题,因为当我从我的程序中评论覆盖步骤时,输出视频与输入视频相同。
以下是我的方法 -
输入视频的尺寸是424 X 200。我的转换功能有什么问题吗?
ffmpeg - FFMPEG swscale 1920x1080 UYVY422 下降到奇数宽度会产生不正确的颜色
我正在使用 libswscale(来自 FFMPEG)将 1920x1080 UYVY422 图像缩放到以编程方式确定的大小,具体取决于我们要渲染到的大小窗口。
在调整“画布”的大小时,我注意到图像的颜色会在正常和无效(不正确的颜色)之间来回变化。
在分析了颜色无效的尺寸后,我注意到当宽度为偶数像素时,图像总是看起来是正确的。
从那以后,我更新了我的代码以始终缩放到均匀的宽度。
它适用于此代码。但是,我仍然不明白它为什么这样做。如果我缩放原始宽度为奇数的图像,我是否必须确保我的宽度也是奇数?我想明白这一点。
c++ - 使用 SWScale 的 FFMpeg RGB32 到 NV12
我正在尝试将 RGB32 帧转换为 NV12 帧以输入编码器。
如果我制作 m_outputPixelFormat AV_PIX_FMT_RGB32 并使用 DMO 颜色空间转换器,视频会正确输出。但是,如果我将其更改为 NV12,我最终会得到一个倾斜的视频,底部缺少数据。我知道这是由于我错误地将数据从缓冲区中复制出来造成的,但我不确定我做错了什么。
ffmpeg - ffmpeg 记录改变颜色
我尝试从屏幕录制视频,用于写入视频文件我使用 ffmpeg(libavcodec)。但在结果上我看到了其他颜色,我的例子:
分辨率 1920x1080。在原始显示上看这个http://joxi.ru/p27bbn6u093elm
保存视频颜色时调光器http://joxi.ru/YmE99W1fZvbdWm
看起来,白色背景颜色变为灰色。或者可能是亮度。我做错了什么?我怎样才能保存到颜色?
UDP
我尝试使用
但这永远不会改变
c++ - AVFrame 有一个负的 linesize
我正在使用 libav(为 MSVC 构建的 2.7)使用 dshow 打开相机:
当我打开视频流时,它是格式的“原始视频”(根据其long_name
)AV_PIX_FMT_BGR24
。我需要有框架,AV_PIX_FMT_RGB24
所以我制作了一个 SwsContext,如下所示:
然后我有一个循环计时器来读取帧并解码为 AVFrame,然后将其传递给 sws_scale。
在此之后,我将av_picture
在我的应用程序中使用,但是sws_scale
挂起和崩溃。看着我要处理的所有数据sws_scale
,除了linesize之外,我觉得没什么奇怪的av_frame
。av_frame->linesize[0] == -1920
(linesize[1]
并且linesize[2]
是 0 的预期BGR24
)。由于我的框架宽度是 640,我预计是 1920,但负号似乎很奇怪。我试过翻转标志,但没有帮助。我应该注意,它不会每次都崩溃(有些运行它首先会通过几帧)。
为什么 linesize 是负数?这是否意味着什么,或者只是以某种方式搞砸了?
c++ - FFMPEG 缩放错误-无效维度
我正在开发 FFMPEG 中的一个项目,现在我遇到了一个问题。
我想要做的是,将 png pic 转换为 mpeg 视频文件。我已经设法从图片中获取信息,但不知何故我无法将图片转换为 YUV 格式。它返回“0x0->0x0 是无效的缩放尺寸”。
这是我的代码:
编辑:
转换后,我尝试将帧编码为 oa 数据包,但数据包的大小为 0。代码
c++ - 如何使用 DXVA2 和 ffmpeg 解码和获取帧
我已经搜索了一个关于如何在 Windows 中使用 ffmpeg 使用硬件加速解码 H264 流的简单示例,但我找不到任何内容。我知道我应该使用 dxva2 和 ffmpeg 来进行硬件加速。
我可以在 CPU 上使用 ffmpeg 解码 H264,然后将 NV12 格式转换为 RGBA 并将帧保存为 bmp 文件,这要归功于post中提供的示例项目。
我已按照以下帖子中提供的内容获取有关 dxva2 的帮助:发布
我相信我可以用 dxva2 成功解码;但是,当我想获取解码帧并将其转换为 RGBA 格式并将其保存为 bmp 文件时,我收到有关源指针的错误。
我解码和检索帧如下:
并将输出帧馈送到:
我收到此错误:
[swscaler @ 030c5c20] 错误的 src 图像指针
显然有些问题,pFrameYuv->data
但我不知道是什么。
我们如何将使用 DXVA2 解码的 NV12 帧转换为使用 sws_scale 的 RGBA?