BabitMF / bmf

Cross-platform, customizable multimedia/video processing framework. With strong GPU acceleration, heterogeneous design, multi-language support, easy to use, multi-framework compatible and high performance, the framework is ideal for transcoding, AI inference, algorithm integration, live video streaming, and more.
https://babitmf.github.io/
Apache License 2.0
773 stars 65 forks source link

运行demo报:[swscaler @ 0x7f5cbb7f1200] No accelerated colorspace conversion found from yuv420p to rgb24. #110

Open QQiangren opened 5 months ago

QQiangren commented 5 months ago

运行官方镜像, docker pull babitmf/bmf_runtime:latest docker run --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all -it babitmf/bmf_runtime:latest bash export CMAKE_ARGS="-DBMF_ENABLE_CUDA=ON" ./build.sh 编译后运行demo: python3 ~/bmf/output/demo/video_enhance/enhance_demo.py 代码未报错,能够生成视频,但运行过程中一直报:No accelerated colorspace conversion found from yuv420p to rgb24. 问题: 生成的output.mp4视频,播放时完全看不到视频内容,显示花屏。

HuHeng commented 5 months ago

应该是我们babitmf/bmf_runtime:latest镜像内的ffmpeg有问题,我试了一下里面的ffmpeg,使用ffmpeg -i bbb.mp4 -vf "scale=1280x720" xx.mp4, 生成的视频是有问题的。我们后面会进一步检查一下问题在哪里。 临时办法: 可以先删除/usr/local/lib下的ffmpeg相关库libswscale.so, libav*系列库。然后使用apt-get update && apt-get install ffmpeg使用发行版源包安装ffmpeg。

QQiangren commented 5 months ago

感谢你的回答,通过你的方法,我做了如下操作: *rm -rf /usr/local/lib/libswscale.so rm -rf /usr/local/lib/libav apt-get update && apt-get install ffmpeg 操作完后继续运行该demo: python3 enhance_demo.py** 仍然报:No accelerated colorspace conversion found from yuv420p to rgb24., 生成的视频比之前清晰了一些,但是画面仍然花屏,画面内是一条条红色的横杠条纹。 我安装的ffmpeg版本是 ffmpeg (7:4.2.7-0ubuntu0.1) 。 请问对ffmpeg版本有什么要求吗?谢谢

HuHeng commented 5 months ago

需要删除干净。 rm -rf /usr/local/lib/libswscale.so rm -rf /usr/local/lib/libav rm -rf /usr/local/lib/libswresample.so*

QQiangren commented 5 months ago

根据指导,已跑通demo。 感谢 后期是否维护更新该镜像?

QQiangren commented 2 months ago

邮件已经收到,我会尽快回复你。--任强强

KkemChen commented 2 months ago

应该是我们babitmf/bmf_runtime:latest镜像内的ffmpeg有问题,我试了一下里面的ffmpeg,使用ffmpeg -i bbb.mp4 -vf "scale=1280x720" xx.mp4, 生成的视频是有问题的。我们后面会进一步检查一下问题在哪里。 临时办法: 可以先删除/usr/local/lib下的ffmpeg相关库libswscale.so, libav*系列库。然后使用apt-get update && apt-get install ffmpeg使用发行版源包安装ffmpeg。

为什么 我手动build的 ffmpeg来给bmf使用,也会发生该问题呢?

而在使用发行版源包 安装ffmpeg之后,再切换到手动编译的ffmpeg版本(使用bmf/scripte下提供的 ffmpeg构建脚本),最终画面也是正常的 (环境为 ubuntu22.04,并未使用babitmf/bmf_runtime:latest镜像)

JackLau1222 commented 2 months ago
  1. 检查下编译的ffmpeg是否是4-5的版本
  2. 检查编译的是否为动态库 以及编译后存储的路径是否在环境中
KkemChen commented 2 months ago
  1. 检查下编译的ffmpeg是否是4-5的版本
  2. 检查编译的是否为动态库 以及编译后存储的路径是否在环境中

版本试过4.4, 4.4.4 以及 5.1.2 编译好后都通过ffmpeg --version确认过当前环境使用的ffmpeg,(也尝试过,apt remove ffmpeg*后 仅保留手动编译的ffmpeg版本)进行测试,结论跟上面描述的一样

HuHeng commented 2 months ago

应该是我们babitmf/bmf_runtime:latest镜像内的ffmpeg有问题,我试了一下里面的ffmpeg,使用ffmpeg -i bbb.mp4 -vf "scale=1280x720" xx.mp4, 生成的视频是有问题的。我们后面会进一步检查一下问题在哪里。 临时办法: 可以先删除/usr/local/lib下的ffmpeg相关库libswscale.so, libav*系列库。然后使用apt-get update && apt-get install ffmpeg使用发行版源包安装ffmpeg。

为什么 我手动build的 ffmpeg来给bmf使用,也会发生该问题呢?

而在使用发行版源包 安装ffmpeg之后,再切换到手动编译的ffmpeg版本(使用bmf/scripte下提供的 ffmpeg构建脚本),最终画面也是正常的 (环境为 ubuntu22.04,并未使用babitmf/bmf_runtime:latest镜像)

ffmpeg4.4后使用--disable-x86asm编译再使用libswscale库是有问题的,这是ffmpeg本身的bug。不过一般是不使用这个参数去编译ffmpeg的,建议安装yasm/nasm再去除--disable-x86asm参数后进行编译。

KkemChen commented 2 months ago

应该是我们babitmf/bmf_runtime:latest镜像内的ffmpeg有问题,我试了一下里面的ffmpeg,使用ffmpeg -i bbb.mp4 -vf "scale=1280x720" xx.mp4, 生成的视频是有问题的。我们后面会进一步检查一下问题在哪里。 临时办法: 可以先删除/usr/local/lib下的ffmpeg相关库libswscale.so, libav*系列库。然后使用apt-get update && apt-get install ffmpeg使用发行版源包安装ffmpeg。

为什么 我手动build的 ffmpeg来给bmf使用,也会发生该问题呢? 而在使用发行版源包 安装ffmpeg之后,再切换到手动编译的ffmpeg版本(使用bmf/scripte下提供的 ffmpeg构建脚本),最终画面也是正常的 (环境为 ubuntu22.04,并未使用babitmf/bmf_runtime:latest镜像)

ffmpeg4.4后使用--disable-x86asm编译再使用libswscale库是有问题的,这是ffmpeg本身的bug。不过一般是不使用这个参数去编译ffmpeg的,建议安装yasm/nasm再去除--disable-x86asm参数后进行编译。

嗷,这样啊,好的,明白了,晚点我尝试一下。 🙏感谢答复