精华内容
下载资源
问答
  • 推流地址与播流地址(原画):如何拼接推流和拉流地址 2.通过拼接创建推拉流地址 2.1 说明 2.2 前提 2.3 如何拼接推流地址 2.4 如何拼接播流地址 2.5 示例 其他:具体详情以及注意事项参考文档 推流地址与播流...

    使用java获取阿里云直播推流和拉流地址

    1.相关文档

    阿里云视频直播文档

    阿里云配置鉴权文档

    直播推流异常排查

    推流地址与播流地址(原画):如何拼接推流和拉流地址

    2.通过拼接创建推拉流地址

    2.1 说明
    在这里插入图片描述
    2.2 前提
    在这里插入图片描述
    2.3 如何拼接推流地址
    在这里插入图片描述
    2.4 如何拼接播流地址
    在这里插入图片描述
    2.5 示例
    在这里插入图片描述
    其他:具体详情以及注意事项参考文档

    推流地址与播流地址(原画):如何拼接推流和拉流地址

    3.代码

    3.1 在 pom.xml 导入依赖包

    <!--阿里云直播-->
    <dependency>
    	<groupId>com.aliyun</groupId>
    	<artifactId>aliyun-java-sdk-core</artifactId>
    	<version>4.4.6</version>
    </dependency>
    <dependency>
    	<groupId>com.aliyun</groupId>
    	<artifactId>aliyun-java-sdk-live</artifactId>
    	<version>3.8.0</version>
    </dependency>
    
    <!-- Hutool工具包 -->
    <dependency>
    	<groupId>cn.hutool</groupId>
    	<artifactId>hutool-all</artifactId>
    	<version>4.0.12</version>
    </dependency>
    

    3.2 需要的参数

    package com.test.live.common;
    
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component
    @Data
    public class AliYunLiveConfig {
        /**
         * 推流域名:阿里云配置
         */
        @Value("push.testlive.com")
        private String aliyunLivePushDomain;
        /**
         * 拉流域名:阿里云配置
         */
        @Value("play.testlive.com")
        private String aliyunLivePullDomain;
        /**
         * 直播测试appName
         */
        @Value("test_live_video")
        private String aliyunLiveAppName;
        /**
         * 直播流名称streamName{直播类型}_{类型id}:可以给个时间戳
         */
        @Value("")
        private String aliyunLiveStreamName;
        /**
         * 推流鉴权url key(这里是随便写的) :阿里云平台配置 
         */
        @Value("assdfffgg")
        private String aliyunLivePushIdentKey;
        /**
         * 拉流鉴权url key(这里是随便写的):阿里云平台配置 
         */
        @Value("wwwfffffa")
        private String aliyunLivePullIdentKey;
    
        /**
         * 鉴权url的有效时间(秒),默认30分钟,1800秒 key
         */
        @Value("1800")
        private Integer aliyunLiveIdentUrlValidTime;
    }
    
    
    package com.test.live.utils;
    import cn.hutool.core.util.StrUtil;
    import cn.hutool.crypto.digest.DigestUtil;
    import cn.xh.rewards.common.AliYunConfig;
    import org.springframework.beans.factory.annotation.Value;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class AliYunLiveUtil {
        /**
         * 推拉流地址示例:
         * rtmp://push.testlive.com/test_live_video/1591682546?auth_key=1558065152-0-0-c3cb54d946c0590ca9aeee63573201ee
         * 播流地址
         * 原画
         * rtmp://play.testlive.com/test_live_video/1591682546?auth_key=1558065152-0-0-fc711455c0815aeb581385f33451d5b4
         * http://play.testlive.com/test_live_video/1591682546.flv?auth_key=1558065152-0-0-221abff1da1ee32151e365cf0dd42a53
         * http://play.testlive.com/test_live_video/1591682546.m3u8?auth_key=1558065152-0-0-72124fcc3aee3404b0d65dcc114e207f
         */
    
        /**
         * 根据源id创建该id的推流url
         * @param aliYunLiveConfig 
         * @return
         */
        public static String createLivePushUrl(AliYunLiveConfig aliYunLiveConfig) {
            // 推流域名
            String pushDomain = aliyunConfig.getAliyunLivePushDomain();
            // 应用名称
            String appName = aliyunConfig.getAliyunLiveAppName();
            // 流名称
            String streamName = aliyunConfig.getAliyunLiveStreamName();
            // 推流签名key
            String pushIdentKey = aliyunConfig.getAliyunLivePushIdentKey();
            // 签名url有效时间
            Integer identUrlValidTime = aliyunConfig.getAliyunLiveIdentUrlValidTime();
            
            // 计算过期时间
            String timestamp = String.valueOf((System.currentTimeMillis() / 1000) + identUrlValidTime);
            
            // 组合推流域名前缀
            //rtmp://{pushDomain}/{appName}/{streamName}
            String rtmpUrl = StrUtil.format("rtmp://{}/{}/{}", pushDomain, appName, streamName);
    
            // 组合md5加密串
            ///{appName}/{streamName}-{timestamp}-0-0-{pushIdentKey}
            String md5Url = StrUtil.format("/{}/{}-{}-0-0-{}", appName, streamName, timestamp, pushIdentKey);
            
            // md5加密
            String md5Str = DigestUtil.md5Hex(md5Url);
            
            // 组合最终鉴权过的推流域名
            // {rtmpUrl}?auth_key={timestamp}-0-0-{md5Str}
            String finallyPushUrl = StrUtil.format("{}?auth_key={}-0-0-{}", rtmpUrl, timestamp, md5Str);
            System.out.println("最终鉴权过的推流域名=" + finallyPushUrl);
            return finallyPushUrl;
        }
    
        /**
         * 创建拉流域名,key=rtmpUrl、flvUrl、m3u8Url,代表三种拉流类型域名
         * @param aliYunLiveConfigz
         * @return
         */
        public static Map<String,Object> createLivePullUrl(AliYunLiveConfig aliYunLiveConfig) {
            Map<String,Object> map = new HashMap<>();
            // 拉流域名
            String pullDomain = aliyunConfig.getAliyunLivePullDomain();
            // 应用名称
            String appName = aliyunConfig.getAliyunLiveAppName();
            // 流名称
            String streamName = aliyunConfig.getAliyunLiveStreamName();
            // 拉流签名key
            String pullIdentKey = aliyunConfig.getAliyunLivePullIdentKey();
            // 签名url有效时间
            Integer identUrlValidTime = aliyunConfig.getAliyunLiveIdentUrlValidTime();
    
            // 计算过期时间
            String timestamp = String.valueOf((System.currentTimeMillis() / 1000) + identUrlValidTime);
    
            // 组合通用域名
            // {pullDomain}/{appName}/{streamName}
            String pullUrl = StrUtil.format("{}/{}/{}", pullDomain, appName, streamName);
    
            // 组合md5加密串
            // /{appName}/{streamName}-{timestamp}-0-0-{pullIdentKey}
            String md5Url = StrUtil.format("/{}/{}-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey);
            String md5FlvUrl = StrUtil.format("/{}/{}.flv-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey);
            String md5M3u8Url = StrUtil.format("/{}/{}.m3u8-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey);
    
            // md5加密
            String md5Str = DigestUtil.md5Hex(md5Url);
            String md5FlvStr = DigestUtil.md5Hex(md5FlvUrl);
            String md5M3u8Str = DigestUtil.md5Hex(md5M3u8Url);
            System.out.println("md5加密串,md5Url    =" + md5Url + "       ------     md5加密结果,md5Str=" + md5Str);
            System.out.println("md5加密串,md5FlvUrl =" + md5FlvUrl + "    ------    md5加密结果,md5FlvStr=" + md5FlvStr);
            System.out.println("md5加密串,md5M3u8Url=" + md5M3u8Url + "   ------    md5加密结果,md5M3u8Str=" + md5M3u8Str);
    
            // 组合三种拉流域名前缀
            //        rtmp://{pullUrl}?auth_key={timestamp}-0-0-{md5Str}
            String rtmpUrl = StrUtil.format("rtmp://{}?auth_key={}-0-0-{}", pullUrl, timestamp, md5Str);
            //        http://{pullUrl}.flv?auth_key={timestamp}-0-0-{md5FlvStr}
            String flvUrl = StrUtil.format("http://{}.flv?auth_key={}-0-0-{}", pullUrl, timestamp, md5FlvStr);
            //        http://{pullUrl}.m3u8?auth_key={timestamp}-0-0-{md5M3u8Str}
            String m3u8Url = StrUtil.format("http://{}.m3u8?auth_key={}-0-0-{}", pullUrl, timestamp, md5M3u8Str);
    
            map.put("rtmpUrl",rtmpUrl);
            map.put("flvUrl",flvUrl);
            map.put("m3u8Url",m3u8Url);
    
            System.out.println("最终鉴权过的拉流rtmp域名=" + rtmpUrl);
            System.out.println("最终鉴权过的拉流flv域名 =" + flvUrl);
            System.out.println("最终鉴权过的拉流m3u8域名=" + m3u8Url);
            return map;
        }
    }
    

    说明:将生成的对应推流地址和拉流地址分别在推流工具和拉流工具上测试即可

    展开全文
  • 参考阿里云的直播开发文档,关联推流和播流域名,然后在java中实现推流和拉流的生成,这个两个的有效时间设置为30分钟,参数的参考请查看阿里云的官方开发文档 官方的参考拼接路径:...

    参考阿里云的直播开发文档,关联推流和播流域名,然后在java中实现推流和拉流的生成,这个两个的有效时间设置为30分钟,参数的参考请查看阿里云的官方开发文档
    官方的参考拼接路径:http://play.aliyunlive.com/app/stream_sd.m3u8?auth_key=timestamp-rand-uid-md5hash
    在这里插入图片描述
    Md5加密是是那些东西,可以在下面看出,自己领悟,直接上代码吧
    在这里插入图片描述
    在这里插入图片描述
    最后生成推流和拉流的路径,
    在这里插入图片描述
    利用 OBS软件,进行推流,然后开始直播

    在这里插入图片描述
    然后使用VLC播放器来播放视频
    您需要将鉴权后的播流地址输入指定的位置即可进行播放
    在这里插入图片描述
    博主描述过于简单,想更清楚的请参考阿里云的官方开发文档,然后再回来看。

    更多精彩技术,请移步 有趣的程序员

    展开全文
  • 推流:将直播内容推送至服务器的过程 拉流:为服务器已有直播内容,用指定地址进行拉取的过程 ...所有的rtmp地址都是这种结构组成,基本同一个平台不同直播的地址前两部分是不变的。 推流码构成 推流过

    推流:将直播内容推送至服务器的过程

    拉流:为服务器已有直播内容,用指定地址进行拉取的过程

    推流与拉流示意图

    推流码:

    RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。

    一种设计用来进行实时数据通信的网络协议。

    每一个推流码地址唯一指向单个的直播活动。它由rtmp://开头,包含了上传服务器地址,上传目录名和上传节点,三部分组成。所有的rtmp地址都是这种结构组成,基本同一个平台不同直播的地址前两部分是不变的。

    推流码构成

    推流过程示意图

    各流程协议与格式

    展开全文
  • ## H5开发直播推流端和拉流端 如何在网页上进行推流和拉流观看? 之前在搭建好的SRS服务器上用ffmpeg进行推流和拉流,能否用ffmpeg 和h5结合开发? 或有什么解决方案吗?
  • 如何从海康平台拉流接入EasyNVR 提出问题 最近在与用户交流需求时发现,用户提出现场已经搭建了海康平台,希望将海康平台的视频流直接接入到EasyNVR中,同时用户提供从海康平台上抽出来的一个RTSP流地址如下...

    背景需求

    随着雪亮工程、明厨亮灶、手机看店、智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网、微信直播,我们知道摄像头直播的春天了。将安防摄像头或NVR上的视频流转成互联网直播常用的RTMP、HTTP-FLV、HLS等流格式再分发给用户端进行直播,不管身处何地都可以通过移动通讯设备查看监控设备,这些功能是EasyNVR互联网直播系统研发和设计的初衷和基础功能。另外EasyNVR增值功能是可通过接口二次集成在自己的原有的web业务系统实现网页、H5无插件实时直播。

    EasyNVR

    如何从海康平台上拉流接入EasyNVR

    提出问题

    最近在与用户交流需求时发现,用户提出现场已经搭建了海康平台,希望将海康平台的视频流直接接入到EasyNVR中,同时用户提供从海康平台上抽出来的一个RTSP流地址如下:

    rtsp://36.155.108.49:557/pag://36.155.108.49:7302:32020143001320014262:0:MAIN:TCP?streamform=rtp&checkinfo=ewogICAidGltZSIgOiAiMjAxOTExMDVUMTU0MzU3WiIsCiAgICJ1cmwiIDogInJ0c3A6Ly8zNi4xNTUuMTA4LjQ5OjU1Ny9wYWc6Ly8zNi4xNTUuMTA4LjQ5OjczMDI6MzIwMjAxNDMwMDEzMjAwMTQyNjI6MDpNQUlOOlRDUD9zdHJlYW1mb3JtPXJ0cCIKfQo%3D&idinfo=EAAAAAAQAADWFs6SvfpW%2FpQiBE2i51%2Fzox1K5IIq%2FZV%2BFHmA9KV%2FbNUkgghzezHELdiaGnPZxg4%3D
    

     

    EasyNVR

    分析问题

    正常接入到EasyNVR系统中的流地址,可以是前端或者硬盘录像机中摄像头的RTSP流协议地址或者ONVIF协议地址,同时提供登录它们的用户名和密码,才可以通过通道配置接入到我们的EasyNVR服上来,实现视频直播。

    解决问题

    针对以上需求,我们进行了如下几步验证:

    首先,我们把这串流地址用VLC来播放,确认是否可以正常播放,经验证,VLC播放正常。

    EasyNVR

     

    其次,我们在EasyNVR通道配置页面中的摄像机接入RTSP地址,将上述流地址配置进对应通道,点击保存。

    最后,我们在EasyNVR视频广场中进行验证,发现可以成功接入到EasyNVR中,视频播放正常。由此EasyNVR成功实现拉海康平台RTSP流进行网页无插件直播。

     

    EasyNVR

    展开全文
  • 直播拉流推流测试demo

    2020-10-05 14:39:41
    该测试demo主要用于测试拉流 和 推流, 其代码类qt av 集成方便,推流的延时也很低,直播拉流的延时也很低
  • 为了保护系统内容和信息的安全性,我们讲过TSINGSEE青犀视频团队在已经上线的视频平台如EasyCVR、EasyGBS等都设置了登录鉴权,并且在调用接口进行二次开发时,也需要先调用登录接口。登录鉴权即系统对用户使用数据...
  • EasyNVR网页无插件直播平台经过多次的修正和改良,已经成为一套成熟的流媒体视频云服务平台,能够满足安防、智慧城市、教育等不同场景的应用需求。 测试EasyNVR拉流,在确认输入源问题的时候,一般会使用VLC进行...
  • 代理EasyNVR的过程也是将EasyNVR集成进其他平台的过程,这个问题在集成过程中还是比较常见的,下面我给大家详细讲下这个问题出现的原因。 我们打开该用户的EasyNVR的界面,通过网页我们可以发现,EasyNVR视频广场中...
  • Rtsp拉流录制MP4

    千次阅读 2017-07-12 21:47:00
    平台:ARM+linux 用到的库:ffmpeg一、首先是拉流拉流直接使用av_read_frame直接就可以。然后分辩其stream_index即可,video_stream_idx和audio_stream_idx是初始化input确定的。 我这里直接保存入队列,防止IO...
  • LiveNVR直播拉流Onvif/RTSP流媒体服务平台如何配置播放回调鉴权集成业务自身的权限系统1、准备回调鉴权接口2、配置回调鉴权地址3、调试说明3.1、调试环境3.2、调用示例3.3、额外传递的参数4、RTSP/HLS/FLV/RTMP拉流...
  • TSINGSEE团队研发的RTSP协议视频平台EasyNVR通过获取数字网络摄像机视频流完成音视频的采集,然后由EasyNVR内部实现流媒体协议转换、转码和流媒体分发工作,最终可以分发出RTMP、HTTP-FLV和HLS流,同时也实现在线...
  • 为了保护系统内容和信息的安全性,我们讲过TSINGSEE青犀视频团队在已经上线的视频平台如EasyCVR、EasyGBS等都设置了登录鉴权,并且在调用接口进行二次开发时,也需要先调用登录接口。登录鉴权即系统对用户使用数据...
  • 在部分项目的实际使用中,国标协议下的视频智能安防平台EasyGBS会遇到需要内外网设备同时接入播放的情况,然而当时EasyGBS可以实现内外网兼容同时接入,但是不能实现同时播放。 我们考虑到该需求的可行性,在...
  • 拉流,从服务器地址,写成一个文件。 ffmpeg -i rtmp://server/live/streamName -c copy dump.flv windows 下载obs直播推流软件 和potplayer 播放器 使用OBS直播软件进行推流, 设置自定义url rtmp://...
  • 推流与拉流简概

    2021-03-25 16:45:19
    推流:将直播内容推送至服务器的过程 拉流:为服务器已有直播内容,用指定地址进行拉取的过程 ...所有的rtmp地址都是这种结构组成,基本同一个平台不同直播的地址前两部分是不变的。 推流码构成 推流过
  • 拉流推流服务器设计

    千次阅读 2017-06-24 16:08:38
    客户那边使用的是腾讯的直播sdk, 将不同终端的流推到腾讯云平台, 但是又想推到其他平台, 基于此需求,该产品产生了。 该产品通讯协议使用的是WebSocket, 客户端可以自己定义 可以拉腾讯云平台的直播流并把它推送...
  • Unix shell内核安装: 参考如下两个网址,shell内核用于执行.sh脚本,实现多路视频的同时推流,而...VLC测试RTMP播放地址 视频服务器搭建 Node-Media-Server https://github.com/illuspas/Node-Media-Server
  • ijkplayer框架是专门用来做 视频直播 的开源框架,基于ffmpeg,同时支持 Android 和 iOS 平台。 对于 App 中的直播功能,如果我们成功集成ijkplayer ,那么就算完成一半的工程了。接下来,只要获取到 拉流 URL,就...
  • 比如我们在运行EasyNVR视频平台时,视频拉流播放的操作会造成服务器的负责,这时内存占用就会增加。 我们发现当EasyNVR在Chrome浏览器播放视频流的时候,windows占用的内存越来越高,超过了普通值。 我们知道...
  • 视频推流与拉流

    2021-04-12 14:14:51
    视频推流拉流概念,我认为这个哥们的图挺不错 概念 推流 推流,指的是把采集阶段封包好的内容传输到服务器的过程。 主流的推送协议和优缺点 RTMP RTMP是Real Time Messaging Protocol(实时消息传输协议)...
  • 推流和拉流

    千次阅读 2020-05-12 10:53:26
    拉流,指服务器已有直播内容,用指定地址进行拉取的过程。根据协议类型(如RTMP、RTP、RTSP、HTTP等),与服务器建立连接并接收数据;流程如下: 解析二进制数据,从中找到相关流信息; 根据不同的封装格式(如FLV...
  • 大华 摄像头 rtmp 拉流

    2020-05-10 22:09:53
    rtsp://<user>:<password>@<cam_ip>:554/cam/realmonitor?channel=1&subtype=1
  • 直播拉流功能:这里使用了开源的IJKPlayer第三框架,ijkplayer 是一款做视频直播的框架, 基于ffmpeg,是大多数搭建直播平台的首选框架,当然各大云平台都有自己的直播框架,具体大家使用的时候可以自行研究,有问题...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,307
精华内容 522
关键字:

平台拉流地址