安卓基于SRS的Webrtc推拉流

安卓基于SRS的Webrtc推拉流

文章目录

  • 安卓基于SRS的Webrtc推拉流
    • Https必须需要域名
    • httpx-static 配置 https 代理
    • 基于SRS 配置文件支持 https
    • Android 推拉webrtc流到srs

服务端:SRS (Simple Realtime Server,支持RTMP、HTTP-FLV、HLS、WebRTC)
SRS V4 Webrtc Wiki
推流端:ffmpeg 、 OBS
拉流端:ffplay 、 VLC 、 srs播放器
在线表秒 https://miaobiao.bmcx.com/
本文首发地址:https://blog.csdn.net/CSqingchen/article/details/120830028
最新更新地址:https://gitee.com/chenjim/chenjimblog

Https必须需要域名

  • 如果没有域名,用 https://192.*.*.* 访问,会有类似 你的连接不是专用连接 提示页面,地址栏也有 不安全 提示
  • 如果没有域名,出现以上不安全提问,可以在页面空白地方输入 thisisunsafe,或者按页面提示点击,可以继续访问,但是地址栏会有 不安全 提示
  • 如果没有域名,出现以上不安全提问,在 EDGE 或者 Chrome 启动命令后加 " --test-type --ignore-certificate-errors",可以继续访问,但是地址栏会有 不安全 提示
  • 终极完美解决方案是配置域名,如果不在意地址栏提示,也是可以直接用IP的,包括后面提到的推拉流
  • 本文使用 阿里云域名 ,配置域名 s.h89.cn 指向IP 192.168.31.110 , 申请了免费一年有效期证书,下载 apache 证书
  • 环境变量 ~/.bashrc 中添加 export CANDIDATE=s.h89.cn

httpx-static 配置 https 代理

webrtc 推拉流失败 80% 是 https 配置的异常
winlin 介绍 httpx-static 配置 SRS Https 代理的 视频@Bilibili
相关总结步骤如下

  1. 安装 go
    sudo apt install golang-go
  2. 配置Go环境变量,在 .bashrc 添加以下
    export GOPATH=~/go
    export GOBIN=$GOPATH/bin
    export PATH=$PATH:$GOBIN
    
  3. 下载 httpx-static
    go get github.com/ossrs/go-oryx/httpx-static
    默认源码在目录 $GOPATH/src/httpx-static 在目录 $GOPATH/bin
    配置代理命令
    sudo $GOBIN/httpx-static -https 443 -ssk key/s.h89.cn.key -ssc key/s.h89.cn.crt -p http://s.h89.cn:1985/rtc -p http://s.h89.cn:8080
    • 80443 端口需要 sudo
    • 代理 http://s.h89.cn:1985/rtchttps://s.h89.cn/rtc
  4. 启动srs
    ./objs/srs -c conf/rtc.conf
  5. webrtc推流、拉流
    地址 webrtc://s.h89.cn/live/livestream
    webrtc推流 https://s.h89.cn/players/rtc_publisher.html
    webrtc拉流 https://s.h89.cn/players/rtc_player.html
    控制台 https 无法连接,需要用 http 地址

基于SRS 配置文件支持 https

  1. http_serverhttp_api 配置 https 相关,参考如下

     listen              1935;
     max_connections     1000;
     daemon              off;
     srs_log_tank        console;
    
     http_server {
         enabled         on;
         listen          8080;
         dir             ./objs/nginx/html;
         https {
             enabled on;
             listen  8088;
             key ./key/s.h89.cn.key;
             cert ./key/s.h89.cn.crt;
         }
     }
    
     http_api {
         enabled         on;
         listen          1985;
         https {
             enabled on;
             listen 443;
             key ./key/s.h89.cn.key;
             cert ./key/s.h89.cn.crt;
         }
     }
     stats {
         network         0;
     }
     rtc_server {
         enabled on;
         listen 8000;
         candidate $CANDIDATE;
     }
    
     vhost __defaultVhost__ {
         rtc {
             enabled     on;
             rtc_to_rtmp on;
         }
         http_remux {
             enabled     on;
             mount       [vhost]/[app]/[stream].flv;
         }
         dvr {
             enabled      on;
             dvr_path     ./objs/nginx/html/[app]/[stream].[timestamp].flv;
             dvr_plan     session;
         }
     }
    
    
  2. 启动SRS
    用到 443端口,注意加 sudo

  3. webrtc 推流地址
    https://s.h89.cn:8088/players/rtc_publisher.html?autostart=true&app=live&stream=camera&server=s.h89.cn&port=8088&vhost=s.h89.cn&schema=https
    webrtc 拉流地址
    https://s.h89.cn:8088/players/rtc_player.html?autostart=true&app=live&stream=camera&server=s.h89.cn&port=8088&vhost=s.h89.cn&schema=https
    控制台地址
    https://s.h89.cn:8088/console/ng_index.html#/summaries?port=443&schema=https&host=s.h89.cn
    webrtc 地址
    webrtc://s.h89.cn/live/camera


Android 推拉webrtc流到srs

Demo示例 https://github.com/shenbengit/WebRTC-SRS
冬季穿短裤 博文传送门如下

  • Android端从SRS服务器拉取WebRTC流
  • Android端向SRS服务器推送WebRTC流

其它相关文档

  • 安卓webrtc在ubuntu 2004下编译使用
    https://blog.csdn.net/CSqingchen/article/details/120016697

  • Android 断点调试 webrtc、 medieasoup
    https://blog.csdn.net/CSqingchen/article/details/120156900

  • 安卓增加 mediasoup webrtc 日志输出
    https://blog.csdn.net/CSqingchen/article/details/120156669

  • 安卓 webrtc 开启h264 软编解码
    https://blog.csdn.net/CSqingchen/article/details/120199702

你可能感兴趣的:(音视频编解码,Android开发,android)