fan-chao / nvjmi

封装Jetson Multimedia API的编解码库,基于https://github.com/jocover/jetson-ffmpeg基础进行的修改,未集成于ffmpeg,可单独使用。
MIT License
31 stars 12 forks source link

新的Jetpack(5.1.1)运行就segmentation fault #14

Open oUp2Uo opened 1 year ago

oUp2Uo commented 1 year ago

您好,

我尝试在新的Jetpack(5.1.1)环境下,common和include用系统自带的来编译项目。 然后运行了发现就segmentation fault。 不知道是不是比如因为nvbuf_utils的变化?

我试了下fork的这个项目:https://github.com/ald2004/nvjmi (在您的基础上做了5.0.1适配的), 在5.1.1是可以运行的,但是播放高分辨的时候,会出现新旧帧来回跳的情况。

不知您是否有适配新版本的计划。 以及您是否碰到过这种来回跳的情况呢? 如果有的话,可否分享下调试思路。 ps. multimedia api这个比起pc上用的nvdecode真是太晦涩了,真不知道为啥同样是nv搞出来的类似功能的东西,差别这么大

谢谢

fan-chao commented 1 year ago

您好,

我尝试在新的Jetpack(5.1.1)环境下,common和include用系统自带的来编译项目。 然后运行了发现就segmentation fault。 不知道是不是比如因为nvbuf_utils的变化?

我试了下fork的这个项目:https://github.com/ald2004/nvjmi (在您的基础上做了5.0.1适配的), 在5.1.1是可以运行的,但是播放高分辨的时候,会出现新旧帧来回跳的情况。

不知您是否有适配新版本的计划。 以及您是否碰到过这种来回跳的情况呢? 如果有的话,可否分享下调试思路。 ps. multimedia api这个比起pc上用的nvdecode真是太晦涩了,真不知道为啥同样是nv搞出来的类似功能的东西,差别这么大

谢谢

  1. 对于crash的情况,可以比对一下multimedia api是否发生了变化,另外可以参考https://github.com/dusty-nv/jetson-utils,我看此项目已经支持了orin设备。
  2. 对于新旧帧来回跳的情况,可以通过调试看看从结果队列取出的帧是不是index不对应导致的。
  3. 目前暂未有升级新版本的计划。
oUp2Uo commented 1 year ago
  1. jetsonutils的作者我以前联系过了,当时我先发现了jetpack5对nvmm支持的bug找他测试了,然后发现只能不用nvmm。然后到现在这个问题也没搞定… 提到nvmm支持是因为高分辨率(比如4k、8k)的时候,不用nvmm会很慢,比如用它自带的那个video-viewer就没法正常播放视频
  2. 是指nvFrameMeta里面的frame_index么?我看打印是0~31循环正常的。还是指其他的地方?
fan-chao commented 1 year ago

对,index就是指frame_index。对于新旧帧来回跳的问题,还可以从以下几点排查看看:

  1. frame_index这个输出队列只存一帧,也就是输入一帧的码流,输出一帧图像,看看是不是正常。按理,解码都是按顺序来的,不会出现来回跳的问题。
  2. 看一下输出缓冲区的大小是否跟解码后的视频帧大小一致。
  3. 不使用cuda进行yuv->bgr的转换,改成opencv做转换然后保存图像看一下是否正常。
  4. 换一个视频试试,看看是不是视频本身有问题。 如果对于1080P视频是解码正常,而4K/8K有问题,则可能是某个设置不对导致的。
oUp2Uo commented 1 year ago

8k 265视频本身,用jetpack multimedia api的samples里面的video_decode试了,没有来回跳的问题 然后2k 264/265视频的时候,是正常的

看一下输出缓冲区的大小是否跟解码后的视频帧大小一致。 这个是指看coded_width和width,coded_height和height是否一样么?是一样的