centos7 -linux 添加环境变量【/lib快捷方式和/bin不一样】最好的方法(和windows一样的原理)

本文详细介绍了在CentOS7中如何通过编辑.bash_profile文件来添加/lib路径的环境变量$LD_LIBRARY_PATH,包括具体步骤和验证方法,以及如何使更改立即生效。

CentOS7添加/lib路径的环境变量 【$LD_LIBRARY_PATH-lib的环境变量】

第一步:打开.bash_profile文件【当前用户有效】

$ vim  ~/.bash_profile 

第二步:添加环境变量路径

// 这个环境变量$LD_LIBRARY_PATH就是专门正对于/lib的

LD_LIBRARY_PATH=/user/local/Anaconda3/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

 第三步:查看是否设置成功

// 查看是否设置成功

echo $LD_LIBRARY_PATH

第四步:执行下面命令更新或reboot重启电脑 

//  修改完毕后必须执行下面命令更新或重启才能生效

$ source  ~/.bash_profile

 

/etc/profile和~/.bash_profile等文件的区别和联系:https://blog.youkuaiyun.com/u010048823/article/details/51871825

 

[root@iZbp11irq8z6b1plo30y63Z trunk]# ffplay rtmp://121.43.231.156:1936/live/livestream ffplay version 3.4.13 Copyright (c) 2003-2023 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-44) configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags='-Wl,-z,relro ' --extra-cflags=' ' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-fontconfig --enable-gcrypt --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libcdio --enable-libdrm --enable-indev=jack --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libmp3lame --enable-nvenc --enable-openal --enable-opencl --enable-opengl --enable-libopenjpeg --enable-libopus --disable-encoder=libopus --enable-libpulse --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvidstab --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzvbi --enable-avfilter --enable-avresample --enable-libmodplug --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-libmfx --enable-runtime-cpudetect libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 pci id for fd 4: 1013:00b8, driver (null) gbm: failed to open any driver (search paths /usr/lib64/dri) gbm: Last dlopen error: /usr/lib64/dri/kms_swrast_dri.so: cannot open shared object file: No such file or directory failed to load driver: kms_swrast gbm: failed to open any driver (search paths /usr/lib64/dri) gbm: Last dlopen error: /usr/lib64/dri/swrast_dri.so: cannot open shared object file: No such file or directory failed to load swrast driver Could not initialize SDL - displayIndex must be in the range 0 - -1 (Did you set the DISPLAY variable?) [root@iZbp11irq8z6b1plo30y63Z trunk]# 什么意思?
03-12
<think>好的,我现在需要分析用户提供的FFmpeg错误日志,并解释其含义。用户之前已经询问过关于推流的问题,现在他们遇到了使用ffplay播放RTMP流时的错误。我需要仔细阅读日志,找出关键错误信息,并给出解释解决方案。 首先,用户执行的命令是`ffplay rtmp://121.43.231.156:1936/live/livestream`,这表示他们试图用ffplay播放RTMP流。输出的日志显示了一些错误信息,我需要逐一分析。 首先,注意到ffplay的版本是3.4.13,这个版本比较旧,可能之前的FFmpeg版本一样存在兼容性问题。接下来是配置信息,这里可能会有直接的问题,但之后出现的错误信息需要关注。 接下来的错误信息包括: 1. `pci id for fd 4: 1013:00b8, driver (null)`:这可能硬件驱动有关,但可能是主要问题。 2. `gbm: failed to open any driver (search paths /usr/lib64/dri)`:GBM(Generic Buffer Management)是图形相关的库,这里提示无法打开驱动,路径是/usr/lib64/dri,具体错误是找到kms_swrast_dri.soswrast_dri.so。 3. `failed to load driver: kms_swrast` `failed to load swrast driver`:这两个错误表明图形驱动加载失败,可能影响视频渲染。 4. `Could not initialize SDL - displayIndex must be in the range 0 - -1` `Did you set the DISPLAY variable?`:SDL初始化失败,通常是因为没有设置DISPLAY环境变量,可能是在无图形界面的服务器环境下运行ffplay。 结合这些错误,核心问题应该是SDL无法初始化显示设备,因为服务器可能没有图形界面或者DISPLAY变量未设置。此外,缺少的图形驱动文件可能也是问题的一部分,但主要问题可能还是DISPLAY变量。 接下来需要验证用户的运行环境。如果他们在Linux服务器上,尤其是无GUI的headless服务器,ffplay需要图形界面才能运行,否则会失败。这时候可能需要通过设置DISPLAY变量指向一个有效的X服务器,或者使用其他方法如xvfb-run来虚拟显示。 另外,用户之前的问题中提到的流映射错误可能已经解决,现在的问题是关于播放端的。需要确保播放环境正确,并且RTMP流本身是可用的。可能的解决方案包括检查DISPLAY变量,安装必要的图形驱动,或者使用其他工具如VLC来播放流。 在回答中需要分点解释错误原因,并提供具体的解决步骤,比如设置DISPLAY,安装缺失的驱动,使用替代播放方法等。同时,提醒用户检查流是否正常,因为如果推流端有问题,播放端也无法接收。</think>以下是对该FFmpeg播放错误的逐层解析: --- ### 一、核心错误定位 ``` Could not initialize SDL - displayIndex must be in the range 0 - -1 (Did you set the DISPLAY variable?) ``` **直接原因**:FFplay基于SDL图形库,但当前环境无法连接显示设备 --- ### 二、错误根源分析 1. **无图形界面环境** - 当前系统为Linux服务器(从`root@iZbp11irq8z6b1plo30y63Z`可判断) - 服务器未安装图形界面(如X11/Wayland),或未启用远程显示支持 2. **驱动文件缺失** ``` gbm: failed to open any driver (search paths /usr/lib64/dri) failed to load driver: kms_swrast failed to load swrast driver ``` - 缺少关键图形驱动文件: - `kms_swrast_dri.so`:内核模式设置驱动 - `swrast_dri.so`:软件渲染驱动 - 常见于:云服务器默认安装图形驱动 --- ### 三、解决方案建议 #### 方案1:强制软件渲染(推荐) ```bash export DISPLAY=:0 # 设置虚拟显示环境 ffplay -v quiet -noborder -an -alwaysontop rtmp://... ``` #### 方案2:安装缺失驱动 ```bash yum install mesa-dri-drivers # CentOS/RHEL apt install mesa-utils # Ubuntu/Debian ``` #### 方案3:使用替代播放方式 ```bash # 通过VLC网络播放 vlc rtmp://121.43.231.156:1936/live/livestream # 保存为本地文件测试 ffmpeg -i rtmp://... -c copy test.mp4 ``` --- ### 四、技术细节补充 1. **SDL初始化流程**: $$ \text{SDL_Init()} \rightarrow \text{创建窗口} \rightarrow \text{连接显示服务器} $$ 失败节点:无法找到有效显示设备(DISPLAY变量未定义) 2. **图形驱动依赖关系**: ```mermaid graph TD FFplay-->SDL2 SDL2-->GBM(Graphics Buffer Manager) GBM-->Mesa3D Mesa3D-->内核DRM驱动 ``` --- ### 五、附加验证建议 1. 测试图形环境: ```bash xclock # 若出现图形时钟说明X11可用 glxinfo | grep OpenGL # 检查OpenGL支持 ``` 2. 检查RTMP流有效性: ```bash ffprobe rtmp://... ``` 建议优先使用方案1或方案3进行快速验证,如需长期使用则选择方案2完整配置图形环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值