Docker环境下RTSP流转RTMP和HLS

  1. 一、RTSP转RTMP
    1. Nginx-Rtmp环境搭建
    2. ffmpeg环境搭建
    3. 测试
  2. 二、RTSP流转HLS
    1. 创建映射目录
    2. nginx 配置
    3. nginx 映射路径
    4. nginx 映射端口
    5. ffmpeg启动容器
    6. hls流访问地址

一、RTSP转RTMP

Nginx-Rtmp环境搭建

# 拉取镜像
docker pull tiangolo/nginx-rtmp:latest-2024-08-26

# 启动镜像
docker run --name nginx-rtmp -itd --restart=always -p 1935:1935 tiangolo/nginx-rtmp

ffmpeg环境搭建

# 拉取镜像
docker pull chainguard/ffmpeg:latest

# 启动镜像,并将一个rtsp流转为rtmp流
docker run --name ffmpeg29 -itd --restart=always chainguard/ffmpeg -rtsp_transport tcp -i rtsp://admin:CSG300222@10.10.10.29:554/h264/ch1/main/av_stream -f flv -r 25 -s 1920*1080 -an rtmp://192.168.6.209:1935/live/29

测试

VLC测试

VLC播放成功

二、RTSP流转HLS

创建映射目录

mkdir /usr/local/docker/data/nginx/hls

chmod 777 /usr/local/docker/data/nginx/hls

nginx 配置

server {
  listen       8002;
  server_name  server_hls;

  location / {
    types {
       application/vnd.apple.mpegusr m3u8;
       video/mp2t ts;
    }
    root hls;    #8002端口服务的根目录,nginx目录下的hls目录
    add_header Cache-Control no-cache;
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers "Origin, X-Requested-With,      Content-Type, Accept";
    add_header Access-Control-Methods "GET, POST, OPTIONS";
  }
}

nginx 映射路径

-v /usr/local/docker/data/nginx/hls:/etc/nginx/hls

nginx 映射端口

-p 8002:8002

ffmpeg启动容器

docker run --name ffmpeghls --privileged=true -v /usr/local/docker/data/nginx/hls:/hls -itd --restart=always chainguard/ffmpeg -f rtsp -rtsp_transport tcp -i rtsp://admin:CSG300222@10.10.10.29:554/h264/ch1/main/av_stream -codec copy -f hls -hls_list_size 10 -hls_flags 20 -hls_time 15 /hls/test.m3u8

hls流访问地址

# nginx ip + 映射端口
http://192.168.6.209:8002/test.m3u8

hls流播放效果


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 george_95@126.com