如何使用腾讯云SDK开发视频推流、拉流和直播等应用

2 篇文章 0 订阅
1 篇文章 0 订阅

背景

对于一款Android设备,如果我想对该Android设备录屏,并经该录屏的数据经过h264编码推流到RTMP服务器,然后由另外一款设备从该服务器拉流,从而显示屏幕数据,实现同屏的效果;另外,如果想开发直播类应用,也可以参考该文,先使用腾讯云SDK进行demo的开发和验证。

腾讯云SDK介绍

腾讯云移动直播(Mobile Live Video Broadcasting,MLVB)SDK 是云直播服务在移动场景的延伸。相比于主要面向云对接的直播服务,移动直播既提供了基于 RTMP SDK 的“快速集成方案”,也提供了集标准直播(LVB)、快直播(LEB)、云点播(VOD)、即时通信(IM) 和对象存储(COS) 等多云端服务的“一体化解决方案”。具体详情,可参考官网的介绍:https://cloud.tencent.com/document/product/454/56592

搭建RTMP服务器

(1)下载 Nginx 源码

wget http://nginx.org/download/nginx-1.16.1.tar.gz

tar -zxvf nginx-1.21.1.tar.gz

(2)下载 Nginx-rtmp-module

git clone https://github.com/arut/nginx-rtmp-module.git

(3)安装依赖开发包

sudo apt-get install libpcre3-dev libssl-dev

配置、编译和安装

sudo ./configure --with-http_ssl_module --with-http_mp4_module --with-http_flv_module --add-module=../nginx-rtmp-module

sudo make

sudo make install

(4)配置Nginx

cd /home/penglin/data/others/rtmp/myrtmp/nginx-1.21.1/
v​im bin/conf/nginx.conf

#user  nobody; 
worker_processes  1; 
 
events { 
    worker_connections  1024; 
} 
 
rtmp { 
    server { 
         #注意端口占用 
        listen 1935; 
        application myapp { 
            live on; 
            #丢弃闲置5s的连接 
            drop_idle_publisher 5s; 
        } 
    } 
} 
 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    server { 
        listen       80; 
        server_name  localhost; 
 
        location / { 
            root   html; 
            index  index.html index.htm; 
        } 
 
        location /stat { 
            rtmp_stat all; 
            rtmp_stat_stylesheet stat.xsl; 
        } 
        location /stat.xsl { 
            #注意目录 
            root /home/penglin/data/others/rtmp/myrtmp/nginx-rtmp-module-master/; 
        } 
        location /control { 
            rtmp_control all; 
        } 
        location /rtmp-publisher { 
            #注意目录 
            root /home/penglin/data/others/rtmp/myrtmp/nginx-rtmp-module-master/test; 
        } 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
 
}

(5)启动或停止服务

cd /home/penglin/data/others/rtmp/myrtmp/nginx-1.21.1/

sudo bin/sbin/nginx -- 启动 Nginx 服务

sudo bin/sbin/nginx -s stop -- 停止 Nginx 服务

运行nginx:sudo bin/sbin/nginx

浏览器中可以查看:http://192.168.36.113/stat

如果各位不想操作上述步骤,也可以直接下载我已经调试好了的RTMP服务器压缩包,只需要解压该压缩包,运行nginx即可搭建成一个RTMP服务器。

详见:https://download.csdn.net/download/jidapenglin28/22034838

编写Android版本的视频推流程序

摄像头推流,请参考:https://cloud.tencent.com/document/product/454/56592

录屏推流,请参考:https://cloud.tencent.com/document/product/454/56595

腾讯云SDK的推流所使用的RTMP服务器可以使用腾讯云,也可以使用自己搭建的RTMP服务器,如果要使用腾讯云的RTMP(属于腾讯云直播模块),则需要按照腾讯云的相关要求进行若干申请,手续还挺麻烦的,如果您想使用,具体可以参考:https://console.cloud.tencent.com/live/livestat

本文则直接使用的上面的步骤搭建出来的RTMP服务器。

摄像头推流

步骤一:申请腾讯云License

https://console.cloud.tencent.com/live/license

然后在你的Android应用的onCreate或者Application中初始化:

public class MApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        String licenceURL = ""; // 获取到的 licence url
        String licenceKey = ""; // 获取到的 licence key
        TXLiveBase.getInstance().setLicence(this, licenceURL, licenceKey);
    }
}

注:还需要在app的build.gradle中添加腾讯云SDK的依赖
implementation 'com.tencent.liteav:LiteAVSDK_Professional:latest.release'

步骤二:推流

V2TXLivePusher mLivePusher = new V2TXLivePusherImpl(this, V2TXLiveDef.V2TXLiveMode.TXLiveMode_RTMP); //指定对应的直播协议为 RTMP
//启动本地摄像头预览    
TXCloudVideoView mPusherView = (TXCloudVideoView) findViewById(R.id.pusher_tx_cloud_view); 
mLivePusher.setRenderView(mPusherView);
mLivePusher.startCamera(true);
//启动推流
String rtmpURL = "rtmp://192.168.36.113:1935/myapp/1"; //此处填写您的 rtmp 推流地址  
int ret = mLivePusher.startPush(rtmpURL.trim());  
if (ret == V2TXLIVE_ERROR_INVALID_LICENSE) {    
    Log.i(TAG, "startRTMPPush: license 校验失败");  
}


可以在需要的位置结束推流:
//结束推流
mLivePusher.stopPush();

步骤三:在推流前,需要在RTMP服务器上开启RTMP服务,然后可以在浏览器中使用http://192.168.36.113/stat之类的链接实时查看到推流的过程,此时如果使用拉流的应用,即可实时播放(如可以在ubuntu服务器上使用命令:ffplay "rtmp://192.168.36.113:1935/myapp/1" 即可播放推送的视频流);

当然,也可使用腾讯云提供的“腾讯云视立方APP”拉流播放。

该apk的下载地址:https://download.csdn.net/download/jidapenglin28/22036087

屏幕推流

步骤一:申请腾讯云License

https://console.cloud.tencent.com/live/license

然后在你的Android应用的onCreate或者Application中初始化:

public class MApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        String licenceURL = ""; // 获取到的 licence url
        String licenceKey = ""; // 获取到的 licence key
        TXLiveBase.getInstance().setLicence(this, licenceURL, licenceKey);
    }
}

注:还需要在app的build.gradle中添加腾讯云SDK的依赖
implementation 'com.tencent.liteav:LiteAVSDK_Professional:latest.release'

步骤二:推流

String rtmpUrl = "rtmp://192.168.36.113:1935/myapp/1";
mLivePusher.startMicrophone();
mLivePusher.startScreenCapture();
mLivePusher.startPush(rtmpUrl);

 步骤三:拉流播放,同上面的摄像头推流步骤中的拉流验证方式。

总结

根据本文的操作,可以很快的搭建一个远程监控和同屏的Android应用,方便验证相关的功能和产品。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值