Toybrick

rkmpp解码1920*1080 mjpeg视频会出现彩带现象

adminrootadmin

新手上路

积分
31
发表于 2025-5-30 16:21:20    查看: 458|回复: 7 | [复制链接]    打印 | 显示全部楼层
### 背景

rkmpp版本:1.0.9

使用ffmpeg生成mjpeg格式的视频:
  1. ffmpeg -f v4l2 -video_size 1920x1080 -pix_fmt mjpeg -i /dev/video0 -c:v copy -pix_fmt yuv420sp ~/tmp/mjpeg.mjpeg
复制代码


使用rkmpp自带的mpi_dec_test将mjpeg格式的视频解码为yuv格式的视频:
  1. mpi_dec_test -i ~/tmp/mjpeg.mjpeg -w 1920 -h 1080 -t 8 -f 0 -o yuv.yuv
复制代码

### 问题描述

生成的yuv.yuv,使用YUView软件查看,图像上方出现半透明彩带(绿色和粉色渐变),占用16行像素。

### 尝试过的解决方法

* 使用1920*1080和800*600分辨率的mjpeg视频(分辨率不是16位对齐的),解码后会出现上述问题。使用1280*720分辨率(分辨率是16位对齐),解码后画面正常。怀疑是对齐导致。


没有修改过原版mpp代码,直接使用mpi_dec_test。

回复

使用道具 举报

adminrootadmin

新手上路

积分
31
 楼主| 发表于 2025-5-30 16:28:59 | 显示全部楼层





附上yuv文件和YUView实际看到的图像

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

jefferyzhang

版主

积分
14885
发表于 2025-5-30 18:16:34 | 显示全部楼层
本帖最后由 jefferyzhang 于 2025-5-30 18:17 编辑

一眼看过去你这可能出来的是1088但你按1080显示了,彩带是UV部分0的值,你数下应该是8个像素宽。
或者你按1088宽度看下这张图
回复

使用道具 举报

adminrootadmin

新手上路

积分
31
 楼主| 发表于 2025-6-3 09:43:28 | 显示全部楼层
jefferyzhang 发表于 2025-5-30 18:16
一眼看过去你这可能出来的是1088但你按1080显示了,彩带是UV部分0的值,你数下应该是8个像素宽。
或者你按1 ...

感谢给出的建议。我尝试按照1088的宽度显示,但实际不行,原因是yuv.yuv文件大小为3110400字节(格式为YUV420SP,计算得出1920*1080*1.5=3110400)。
回复

使用道具 举报

jefferyzhang

版主

积分
14885
发表于 2025-6-4 09:50:50 | 显示全部楼层
adminrootadmin 发表于 2025-6-3 09:43
感谢给出的建议。我尝试按照1088的宽度显示,但实际不行,原因是yuv.yuv文件大小为3110400字节(格式为YU ...

这个对齐问题会在你代码逻辑中就搞错了,比如你喂的参数就写成了-h 1080,出来的yuv当然就是那个尺寸,你改成-h 1088试一下。或者-w -h不要写,mjpeg是自带头部信息的,不需要强制指定
回复

使用道具 举报

adminrootadmin

新手上路

积分
31
 楼主| 发表于 2025-6-6 11:38:48 | 显示全部楼层
jefferyzhang 发表于 2025-6-4 09:50
这个对齐问题会在你代码逻辑中就搞错了,比如你喂的参数就写成了-h 1080,出来的yuv当然就是那个尺寸,你 ...

经过对比发现,同样的mjpeg.mjpeg文件、同样的参数使用mpi_dec_test,使用mpp1.0.9画面会出现彩条,使用mpp1.0.8画面正常。

另外,通过查看代码,mpi_dec_test接收的参数“-w -h”应该只会影响“OUTPUT_FRAME”的buffer大小。

没有继续深入代码研究,不知道是什么原因造成的。我暂时回退到1.0.8版本使用。

谢谢你的帮助。
回复

使用道具 举报

jefferyzhang

版主

积分
14885
发表于 2025-6-6 15:33:51 | 显示全部楼层
您能否把这个有问题的mjpeg文件一起发上来,
1.0.9相对1.0.8不应该会多这种问题,毕竟这块代码没有涉及到
回复

使用道具 举报

adminrootadmin

新手上路

积分
31
 楼主| 发表于 2025-6-6 16:41:19 | 显示全部楼层
jefferyzhang 发表于 2025-6-6 15:33
您能否把这个有问题的mjpeg文件一起发上来,
1.0.9相对1.0.8不应该会多这种问题,毕竟这块代码没有涉及到 ...

由于论坛限制上传文件的大小,我重新生成了mjpeg和yuv文件,与之前上传的文件没有关联。

分别进入mpp1.0.8和mpp1.0.9里面的test二进制目录,分别执行(在执行之前,已经清除原来版本的mpp并重新安装)下面的命令:
  1.   ./mpi_dec_test -i ~/tmp/mjpeg.mjpeg -w 1920 -h 1080 -t 8 -f 0 -o yuv.yuv
复制代码

分别得到yuv_mpp1.0.8.yuv和yuv_mpp1.0.9.yuv(为了好区分,名称重新命名)(由于论坛上传限制,若需要这两个文件,改天可上传)。

使用YUView分别查看图片(参数设置:width=1920,height=1080,颜色空间为nv12),观察到:yuv_mpp1.0.8.yuv正常,yuv_mpp1.0.9.yuv上方有彩条。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表