【音视频】RTMP流媒体服务器搭建、推流拉流

服务器:SRS(Simple RTMP Server,⽀持RTMP、HTTP-FLV,HLS)

推流端:ffmpeg + OBS

拉流端:ffplay +VLC + srs播放器

1 安装和测试srs流媒体服务器

1.1 安装srs流媒体服务器

第⼀步,获取SRS

shell 复制代码
git clone https://gitee.com/winlinvip/srs.oschina.git
cd srs.oschina
#使⽤当前最新的3.0版本
git checkout -b 3.0 remotes/origin/3.0release
cd trunk

第⼆步,编译SRS。

shell 复制代码
./configure
make -j$(nproc)

第三步,编写SRS配置⽂件

  • 修改rtmp配置文件

    vim conf/rtmp.conf

  • 注释其中部分

  • 启动SRS服务器
shell 复制代码
./objs/srs -c conf/rtmp.conf
  • 监听rtmp服务器日志
shell 复制代码
tail -f ./objs/srs.log

2. rtmp推流

2.2 ffmpeg推流

  • ffmpeg推流本地flv视频
shell 复制代码
ffmpeg -re -i music.flv -codec copy -f flv -y rtmp://192.168.217.128/live/livestream
  • 使用ffplay拉流
shell 复制代码
ffplay rtmp://192.168.217.128/live/livestream -x 800
  • vlc拉流
  • ffmpeg推流摄像头+麦克风,这里使用dshow来推流
  • 先查看自己电脑支持的设备
  • 如果出现乱码,建议使用高版本的ffmpeg,我在ffmpeg4.2.2出现乱码,在ffmpeg7.1就没有这个情况
shell 复制代码
ffmpeg -list_devices true -f dshow -i dummy
  • 推流摄像头+麦克风
  • 这里要做编码,所以指定编码器为libx264和aac,并且编码为flv格式
shell 复制代码
ffmpeg -re -f dshow -i video="Integrated Camera":audio="麦克风阵列 (Realtek(R) Audio)" -vcodec libx264 -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
  • ffplay拉流
shell 复制代码
ffplay rtmp://192.168.217.128/live/livestream -x 800
  • ffmpeg推流桌面 + 麦克风,这里使用gdigrab捕捉桌面
  • 稍微复杂一点,因为我的电脑是双显示屏,要捕捉第二个显示屏,所以设置了捕捉的范围
  • 使用h264_amf显卡编码,快一点
  • 不知道为什么这里的麦克风和录屏如果一起推,延迟巨大无比
shell 复制代码
 ffmpeg -re -f gdigrab -framerate 30 -video_size 1920x1080 -offset_x 0 -offset_y 0 -i desktop -f dshow -i audio="麦克风阵列 (Realtek(R) Audio)" -vcodec h264_amf -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
  • vlc拉流,拉流稍微慢一点,要等一会
  • obs推流桌面
  • 打开加号的显示器采集
  • 设置里面选择推流的服务器
  • 使用ffplay拉流
shell 复制代码
ffplay rtmp://192.168.217.128/live/livestream
shell 复制代码
ffmpeg -list_devices true -f dshow -i dummy
  • ffmpeg 使用dshow推流屏幕+麦克风
  • 这样推流就比gdigrab延迟低很多,相比正常多了
  • 使用硬件编码降低延迟
shell 复制代码
ffmpeg -re -f dshow -i video="screen-capture-recorder":audio="麦克风阵列 (Realtek(R) Audio)" -vcodec h264_amf -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
  • 使用ffplay拉流
shell 复制代码
ffplay rtmp://192.168.217.128/live/livestream

更多资料:https://github.com/0voice

相关推荐
沸速存储2 小时前
AI 机器人靠哪些内存与存储驱动整机运行?
服务器·科技·嵌入式硬件·电脑
fengyehongWorld3 小时前
Linux squid搭建基础代理服务器
linux·运维·服务器
Cx330❀4 小时前
【Linux网络】网络层 IP 协议:从网段划分到内核源码解析
大数据·linux·服务器·网络·tcp/ip·性能优化·langchain
AI码农小姐姐5 小时前
AI漫剧推文短视频动态镜头实现:FFmpeg zoompan 与 Ken Burns 效果实践
人工智能·音视频·ai工具·ai漫剧
技灵AI5 小时前
ChatGPT Images 2.5 深度解读:延迟减半、Sketch 草图与 Flare/Sunburst 双模型 API
人工智能·gpt·aigc·音视频·images2.5
林澈在路上5 小时前
游戏场景背景音乐定制AI软件哪款好 2026对比推荐
大数据·人工智能·aigc·音视频
一技安身5 小时前
【信创】docker-26.0.2.tgz 原理 + 完整安装
linux·运维·服务器
AI码农小姐姐5 小时前
AI漫剧推文短视频自动化生产:从文本分镜到视频合成的工程实现
人工智能·音视频·ai工具·ai漫剧·知漫剧
郝学胜-神的一滴6 小时前
Effective Python 条款 13:善用星号解包,告别下标切片拆分的坑
服务器·开发语言·数据结构·python·程序人生·pycharm
benbenAItalk6 小时前
真人克隆数字人的素材与成品视频生成:还原度和批量稳定性怎么控?
人工智能·科技·音视频