FROM ubuntu:latest
WORKDIR /mediamtx
ADD mediamtx_v1.8.2_linux_amd64.tar.gz start.sh /mediamtix/
RUN apt update && apt -y install ffmpeg
ENTRYPOINT ["/bin/bash", "start.sh"]
其中RUN apt update && apt -y install ffmpeg就是安装ffmpeg工具,ffmpeg主要就是视频解码、编码和推流功能。
start.sh脚本启动mediamtx命令:/mediamtx/mediamtx
启动mediamtx容器docker run -itd --name mediamtx-ffmpeg-m --gpus 'all,"capabilities=compute,video,utility"' --restart=always
-e MTX_PROTOCOLS=tcp
-v /mnt/data01/ssqi/docker-data/mediamtx/:/mediamtx/
-v /etc/localtime:/etc/localtime:ro
-p 9997:9997
-p 8554:8554
-p 1935:1935
-p 8888:8888
-p 8889:8889
-p 8890:8890/udp
-p 8189:8189/udp
mediamtx:1.8.2-ffmpeg
其中--gpus 'all,"capabilities=compute,video,utility"'参数作用就是docker容器中使用nvidia显卡来解码转码。docker容器怎么使用nvidia显卡,请参考:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

修改配置文件/mnt/data01/docker-data/mediamtx/mediamtx.yml,这个文件就是docker容器中挂载在宿主机的配置文件。
#webrtc端口
webrtcLocalTCPAddress: 8189
#第一个ip是宿主机ip,第二个ip是docker容器ip
webrtcAdditionalHosts: [xx.xx.xx.xx,xx.xx.xx.xx]
#将rtsp h265流转化为webrtc和rtsp h264流
paths:
stream2:
runOnInit: ffmpeg -rtsp_transport tcp -hwaccel cuda -i rtsp://username:pass@ip:554/streaming/channels/102 -c:a copy -c:v h264_nvenc -bf 0 -f rtsp rtsp://127.0.0.1:8554/stream-out-2
runOnInitRestart: yes
source: rtsp://127.0.0.1:8554/stream-out-2
其中rtsp://username:pass@ip:554/streaming/channels/102为海康视频流,source: rtsp://127.0.0.1:8554/stream-out-2为转码后的视频流。
通过浏览器访问:http://ip:8889/stream2就可以访问实时视频了。