当前位置: 首页 > article >正文

ubuntu pytorch容器内安装gpu版本的ffmpeg

一、基础镜像和生成容器

     pytorch/pytorch :1.13.1-cuda11.6-cudnn8-devel

生成容器,一定要加NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics,否则侯建无法推流,报错缺少编码之类的。

docker run -it --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics  --shm-size 8g   -P --name ffmpeg_torch  --env LANG="C.UTF-8"  -v `pwd`:/host pytorch/pytorch:1.13.1-cuda11.6-cudnn8-devel

 

二、安装基础的库

     一定要装上,基本都有用,省的后面报各式各样的错

     删除自带的ffmpeg,在conda里

    rm -r  /opt/conda

apt update
apt install libx264-dev libx265-dev  libass-dev  build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev libtool-bin pkg-config libfdk-aac-dev libssl-dev libass-dev libsdl2-dev -y 

三、安装nv-codec-headers

make & make install

 四、安装ffmpeg

./configure  --prefix=/usr/local/ffmpeg --enable-openssl --disable-x86asm --enable-static --enable-shared --enable-ffplay --enable-gpl --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libass --enable-libfreetype --enable-pthreads --enable-cuda --enable-cuda-nvcc --enable-cuvid --enable-nvenc --enable-libnpp --enable-nonfree --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 
  
make & make install

五、修改系统路径文件

vim   .bashrc

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/root/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/root/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/root/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/root/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<


export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig
export PATH=$PATH:/usr/local/ffmpeg/bin/
export LD_LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/ffmpeg/lib

这里面把anconda的路径也加上了

六、还有可能出现的问题

    6.1 镜像提交的时候,没有问题,在镜像保存的时候报错:(可能是之前删除了系统自带的ffmpeg)

        

Error response from daemon: open /var/lib/docker/overlay2merged/opt/conda/bin/ffmpeg: no such file or directory

解决方法:

docker system prune --all
systemctl restart docker

这一步是清除无用的容器和容器,及一部分层,小心,如果镜像没有对应的容器,就会别删掉。

本次就是这样,不小删除所有镜像和容器,然后有重新拉取镜像、安装容器、配置ffmpeg,

docker commit提交容器,docker save保存镜像就没有问题,具体原因未知。

6.2  验证成功

推流测试:

ffmpeg -re -i ${video} -y -an -f  rawvideo -vcodec rawvideo -pix_fmt bgr24  -r 25  -g 25 -b:v  5000k -c:v h264_nvenc  -bufsize  5000k   -pix_fmt yuv420p  -tune ll   -f flv   ${url}

其中video、url是自己的是视频和推流地址。

注意此时:

在容器内容执行 nvidia-smi,并不能显示ffmpeg的进程;但在主机的nvidia-smi命令中可以体现如下:

 

最后一个关于软件的问题,

相关软件放在了自己的百度网盘/software,没有公开 


http://www.kler.cn/a/405964.html

相关文章:

  • Stm32f103X HAL库 串口DMA空闲中断学习 踩坑记
  • [每周一更]-(第124期):模拟面试|缓存面试思路解析
  • SpringBoot学习记录(四)之分页查询
  • vue中路由缓存
  • ubuntu18.04 vscode c++ filesystem 使用
  • java八股-SpringCloud微服务-Eureka理论
  • android studio无法下载,Could not GET xxx, Received status code 400
  • C++设计模式介绍
  • Bug:引入Feign后触发了2次、4次ContextRefreshedEvent
  • IDEA 下载源码很慢,Download Source使用阿里云镜像仓库
  • 算法编程题-排序
  • 什么是Web3D?有何优势?有哪些应用场景?
  • javascrip页面交互
  • 基于 MONAI 的 3D 图像分割任务1(数据增强可视化)
  • STL容器之priority_queue的常用功能和操作
  • 初识Linux · 信号处理 · 续
  • 区块链安全常见的攻击——不安全的 Delegatecall 漏洞(Unsafe Delegatecall Vulnerability)【3】
  • 类和对象( 中 【补充】)
  • 关于xftp7 的中文乱码问题
  • C语言执行Lua进行错误处理
  • FPGA 14 ,硬件开发板分类详解,FPGA开发板与普通开发板烧录的区别
  • 优化 Spring Boot 性能
  • ubuntu22.04 android studio老卡
  • 滚珠导轨在极端温度下性能如何?
  • redis6.0之后的多线程版本的问题
  • 泷羽sec学习打卡-网络七层杀伤链1