EasyRTMP实现内网摄像头RTSP拉流转码RTMP推流到RTMP服务器EasyRTMP-Android视频采集流程是什么?

背景分析

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写,该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMP/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络下ieyi,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
RTMP推流,就是将直播内容推送到服务器的过程。

关于RTMP推流组件

EasyRTMP是一套调用简单、功能完善、运行高效稳定的RTMP推流功能组件,经过多年客户实战和线上运行打造,支持RTMP推送断线重连、环形缓冲、智能丢帧、网络事件回调,支持Windows、Linux、ARM、Android、iOS平台,支持市面上绝大部分的RTMP流媒体服务器,能够完美应用于各种行业的直播需求,手机直播、桌面直播、摄像机直播、课堂直播等方面。结合EasyDSS流媒体服务器,为开发者提供专业、稳定的直播推流、转码、分发服务,全面满足低超低延迟、超高画质、超大并发访问量的要求。

EasyRTMP-Android 视频采集

解决问题

EasyRTMP-Android推流,使用手机相机来采集视频数据:

1、声明相机权限和相机特征权限

<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />

2、初始化创建Camera实例对象

mCamera = Camera.open(mCameraId);// 初始化创建Camera实例对象
mCamera.setErrorCallback((i, camera) -> {
    throw new IllegalStateException("Camera Error:" + i);
});

3、继承SurfaceView创建预览的View并且传入上面创建的Camera对象

try {
    // TextureView的
    SurfaceTexture holder = mSurfaceHolderRef.get();

    // SurfaceView传入上面创建的Camera对象
    if (holder != null) {
        mCamera.setPreviewTexture(holder);
        Log.i(TAG, "setPreviewTexture");
    }
} catch (IOException e) {
    e.printStackTrace();
}

mCamera.startPreview();

4、初始化相机设置参数

Camera.Parameters parameters = mCamera.getParameters();

//查看支持的预览尺寸
List<Camera.Size> sizeList = parameters.getSupportedPictureSizes();
if(sizeList.size() > 1){
    Iterator<Camera.Size> iterator = sizeList.iterator();
    while (iterator.hasNext()){
        Camera.Size size = iterator.next();
    }
}
//设置预览尺寸
parameters.setPreviewSize(width, height);// 设置预览尺寸

5、获取采集的视频数据

previewCallback = (data, camera) -> {
    if (data == null)
        return;

    int result;

    if (camInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
        result = (camInfo.orientation + displayRotationDegree) % 360;
    } else {  // back-facing
        result = (camInfo.orientation - displayRotationDegree + 360) % 360;
    }

    if (i420_buffer == null || i420_buffer.length != data.length) {
        i420_buffer = new byte[data.length];
    }

    JNIUtil.ConvertToI420(data,i420_buffer,width,height,0,0,width,height,result % 360, 2);
    System.arraycopy(i420_buffer, 0, data, 0, data.length);

    if (mRecordVC != null) {
        mRecordVC.onVideo(i420_buffer, 0);
    }

    mVC.onVideo(data, 0);
    mCamera.addCallbackBuffer(data);
};

原文地址:https://www.cnblogs.com/TSINGSEE/p/11806089.html

时间: 2024-10-08 06:09:29

EasyRTMP实现内网摄像头RTSP拉流转码RTMP推流到RTMP服务器EasyRTMP-Android视频采集流程是什么?的相关文章

RTP推流服务器EasyRTMP实现内网摄像头RTSP拉流转码RTMP推流到EasyRTMP-Android音频采集流程是什么?

音视频流媒体硬解码是指不使用CPU进行编码,使用显卡GPU,专用的DSP.FPGA.ASIC芯片等硬件进行编码.编码框架Video ToolBox和AudioToolbox. EasyRTMP是结合了多种音视频缓存及网络技术的一个rtmp直播推流端,包括:圆形缓冲区(circular buffer).智能丢帧.自动重连.rtmp协议等等多种技术,能够非常有效地适应各种平台(Windows.Linux.ARM.Android.iOS),各种网络环境(有线.wifi.4G),以及各种情况下的直播恢复

Docker搭建内网 composer satis 代码仓库

搭建composer内网代码仓库 拉取 composer/satis 镜像 docker pull composer/satis 配置 composer 该步骤可跳过 目录结构 ├── auth.json ├── cache │ ├── files │ ├── repo │ └── vcs ├── composer.json └── config.json composer.json { } config.json { "config": { "secure-http&quo

VM NAT模式端口映射,让外网访问内网的虚拟机

情景: 物理机外网为IP为A 虚拟机的NAT 内网ip为B 现在想通过ip A访问内网ip为B的虚拟机. 原理: web服务器使用80端口,所以只要做80端口的映射就好了. SSH的默认端口是22,也要做映射才能SSH登陆. 两者均是基于TCP协议. 先查看虚拟机的内网ipB: ifconfig 然后编辑VM的虚拟网络: 编辑->虚拟网络编辑器 1.点击更改设置 2.选中NAT模式后,点击NAT设置 添加端口转发: 主机端口:物理机的端口 做80和22端口的映射 这里虚拟网络就设置好了. 然后在

mysql-proxy做客户端连接转发【外网访问内网mysql】

功能 用于外网客户端连接内网的MySQL,将此工具安装在中转服务器上. 软件版本 mysql-proxy-0.8.1-linux-rhel5-x86-64bit.tar.gz 简单的配置过程 解压后有5个目录 bin include lib libexec share 进bin目录,查看mysql_proxy的使用帮助 [[email protected] bin]# ./mysql-proxy --help-all Usage: mysql-proxy [OPTION...] - MySQL

阿里云实现内网互通

1.首先第一步应该是提交工单,告知两台服务器的外网IP,然后通过工单进行反馈. 2.如果地域都是一样那就好办很多,比如参考官方的案例:https://help.aliyun.com/document_detail/25475.html?spm=5176.doc25385.2.1.dRRsk9 官方内容如下: 除了提供安全保障,您还可以使用安全组实现: 案例 1:内网互通 案例 2:拦截特定 IP 或 端口 案例 3:只允许特定 IP 远程登录到实例 案例 4:只允许实例访问外部特定 IP 说明:

升级防火墙头导致内网用户使用不能使用vpn拨号的问题

公司内网客户端使用pptp vpn拨号连接到外网上一台vpn服务器上,一直正常使用,最近把把旧防火墙换为一台华为USG5000防火墙作为出口,内网中的用户无法使用PPTP客户端连接到VPN服务器.后经查询,防火墙需开启nat穿透功能,具体配置如下: 1. 接口下开启的nat enable,配置detect pptp: interface GigabitEthernet0/0/1 ip address 10.1.1.1 255.255.255.0 nat enable detect pptp 2.

WinServer 之 内网发布网站后端口映射外网访问

内网IP只能在内网局域网访问连接,在外网是不能认识内网IP不能访问的.如有路由权限,且路由有固定公网IP,可以通过路由的端口映射,实现外网访问内网.如无路由,或路由无公网IP,需要用到第三方开放的花生壳端口映射网络辅助实现外网访问内网. 一.通过路由端口映射 1.Tp-link路由器的端口映射设置方法: 登录到路由器的管理界面(认管理地址为http://192.168.0.1,账号admin密码admin),点击路由器的“ 转发规则—虚拟服务器—添加新条目成 ”,如图: 端口映射设置如下:服务端

固定内网ip的方法

ip最后一位找一个不常用的,比如200之后的,ping不通它就用它. 子网掩码,默认网关保持和原来的一样. DNS要填公司的,网上查的不能用,因为他们是互联网上的.主备:XXXXXX/XX (之前填的百度给的,能够解析外网的,内网的解析不了,就造成能连接外网,了解不了内网的假象,通过ping同事的ip,证明内网OK,判断是DNS问题, 注意DNS服务器ping通才能够使用;  小知识:通过内网,连接的外网) 原文地址:https://www.cnblogs.com/Stephen-Qin/p/1

【原创】IP摄像头技术纵览(七)---P2P技术—UDP打洞实现内网NAT穿透

[原创]IP摄像头技术纵览(七)-P2P技术-UDP打洞实现内网NAT穿透 本文属于<IP摄像头技术纵览>系列文章之一: Author: chad Mail: [email protected] 本文可以自由转载,但转载请务必注明出处以及本声明信息. NAT技术的实际需求在10几年前就已经出现,为了解决这个问题,10几年来全世界的牛人早已经研究好了完整的解决方案,网上有大量优秀的解决方案文章,笔者自知无法超越,所以秉承拿来主义,将优秀文章根据个人实验及理解整理汇录于此,用于解释IP摄像头整个技