精华内容
下载资源
问答
  • rtmp视频流播放-前端

    2019-02-19 17:11:24
    rtmp视频流播放-前端直播技术,video.js播放视频流源文件,下载可用
  • ffmpeg接收rtmp视频流

    2018-03-21 17:27:58
    使用ffmpeg对rtmp视频流进行数据接收,并且进行播放,从而达到网络直播的效果
  • web直播rtmp视频流

    2017-08-08 14:42:27
    不需要插件即可播放rtmp视频流,实现直播功能
  • c#简易Vlc播放RTMP视频流的项目,里面有些开发的步骤以及需要注意的地方,下载之后希望评论。
  • 播放rtsp,rtmp视频流安卓代码

    热门讨论 2016-06-12 10:32:47
    本项目集成了1、ffmpeg:解析rtsp、rtmp视频流,解码后转换得到YUV格式图片数据;2、SDL2:将YUV格式图片显示在安卓手机上。
  • 我们知道多数监控摄像头都是支持RTMP协议的,当然公安部的摄像头是支持GB28181协议的,这个我们在本文不做过多赘述,我们来探讨一下网页播放RTMP视频流的播放器。 网页可以播放RTMP视频流吗?当然是可以的,

    随着4G/5G网络的发展,以及有限带宽越来越大,人们对视频直播的需求也越来越多。不仅普通的互联网直播发展很快,传统的安防监控也开始互联网化,走起了互联网直播的路。雪亮工程、明厨亮灶、手机看店、智慧幼儿园监控等等都是将传统的安防摄像头进行互联网直播,有些甚至做成了web无插件直播和微信直播。

    我们知道多数监控摄像头都是支持RTMP协议的,当然公安部的摄像头是支持GB28181协议的,这个我们在本文不做过多赘述,我们来探讨一下网页播放RTMP视频流的播放器。

    RTMP.png

    网页可以播放RTMP视频流吗?当然是可以的,但是对于PC端来说,网页播放RTMP流媒体视频流将会承受更多的服务器压力,满足网页播放RTMP视频流有哪些要求,下文我们一起来看一下。

    1.便捷。基于Web页面观看监控画面,访问同一个地址;
    2.跨平台。跨平台支持PC端、安卓端、iOS端等主流终端;
    3.易用。无须安装任何自有插件、监控APP等,减少资源消耗;
    4.无限制。对接自有流媒体服务器平台,不限制观看人数。

    对于这些要求,我们的视频流媒体服务器已经解决。我们研发的流媒体服务器自身支持对成功接入的摄像机实时视频进行7*24h录像,支持录像的检索与回放,并且支持网络硬盘录像机NVR按设备、通道、日期获取对应录像文件进行录像的检索与回放,无需安装各个安防厂商的视频播放插件。

    NVR12.png

    本文已经为大家介绍完毕啦,结论就是网页是能够播放RTMP视频流的,如果想体验网页播放RTMP视频流的流媒体服务器或者播放器,可以继续关注本栏目。

    展开全文
  • 流媒体服务器是实现视频分发功能的服务器,而...我们用该播放器在谷歌浏览器播放RTMP视频流,出现了报错,但视频流仍然可以播放,然而换IE浏览器后,不能正常播放RTMP视频流了。 首先我们看谷歌这边报的错误,显示为

    流媒体服务器是实现视频分发功能的服务器,而要将视频流展现出来,则需要的是视频播放器。EasyPlayer就是TSINGSEE青犀视频团队研发并使用的视频流媒体播放器,大家熟悉的EasyNVR、EasyDSS里面,集成的都是EasyPlayer播放器。

    EasyPlayer分很多版本,EasyPlayer.JS就是集成进网页的网页播放器。我们用该播放器在谷歌浏览器播放RTMP视频流,出现了报错,但视频流仍然可以播放,然而换IE浏览器后,不能正常播放RTMP视频流了。

    66.png

    首先我们看谷歌这边报的错误,显示为XMLHttpRequest网络请求错误,说明地址写入播放器前存在问题,定位到传入地址的代码位置:

    src() {
      if (!this.videoUrl) {
         return "";
      }
      var xhr = new XMLHttpRequest();
      xhr.open('GET', this.videoUrl);
      xhr.onreadystatechange = () => {
      if (/\.flv.*$/.test(xhr.responseURL || "" ) && this.typeFlv) {
        this.videoUrl = xhr.responseURL
        this.typeFlv = false
      }else if (/\.m3u8.*$/.test(xhr.responseURL || "")){
        this.videoUrl = xhr.responseURL
       }
      };
      xhr.send(null);
      if (this.videoUrl.indexOf("/") === 0) {
        return location.protocol + "//" + location.host + this.videoUrl;
      }
       return this.videoUrl;
    },
    
    

    发现确实有一个XMLHttpRequest对象处理地址,从代码看发现RTMP不用XMLHttpRequest对象处理。

    这时我们可以给地址做一层判断处理。

    src() {
      if (!this.videoUrl) {
        return "";
      }
      if (this.videoUrl.indexOf("rtmp://") === 0) {
        if (this.videoUrl.indexOf("/") === 0) {
          return location.protocol + "//" + location.host + this.videoUrl;
        }
        return this.videoUrl;
      } else {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', this.videoUrl);
        xhr.onreadystatechange = () => {
      if (/\.flv.*$/.test(xhr.responseURL || "" ) && this.typeFlv) {
        this.videoUrl = xhr.responseURL
        this.typeFlv = false
      }else if (/\.m3u8.*$/.test(xhr.responseURL || "")){
        this.videoUrl = xhr.responseURL
      }
     };
      xhr.send(null);
      return this.videoUrl;
     }
    },
    

    判断该视频不需要处理XMLHttpRequest对象时,视频播放就会正常不会报错。

    67.png

    展开全文
  • RTMP协议以及提取RTMP视频流组成H264视频文件 首先我们获得h264的流,在监听里,我们通过参数可以获得RTMP包 IStreamPacket,调用getData()方法直接获得包数据 放入IOBuffer。以下是提取并修改数据存成h264文件的...

    RTMP协议以及提取RTMP视频流组成H264视频文件

    首先我们获得h264的流,在监听里,我们通过参数可以获得RTMP IStreamPacket,调用getData()方法直接获得包数据 放入IOBuffer。以下是提取并修改数据存成h264文件的步骤

    1. 添加监听 IStreamListener

    2. 通过IOBuffer的put函数将每次获得的包数据放入新的IObuffer

    3. 在流结束时将IOBuffer存成文件

    4. 用工具,如UltraEdit打开文件,查看里面的数据并分析

    5. 根据分析结果修改程序,提取h264视频文件所需的数据并存储

     

    1.RTMP协议

    RTMP协议封包由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4,  1 byte(s).完整的RTMP包头应该是12bytes,包含了时间戳,AMFSize,AMFType,StreamID信息, 8字节的包头只纪录了时间戳,AMFSize,AMFType,其他字节的包头纪录信息依次类推 。包体最大长度默认为128字节,通过chunkSize可改变包体最大长度,通常当一段AFM数据超过128字节后,超过128的部分就放到了其他的RTMP封包中,包头为一个字节.
    完整的12字节RTMP包头每个字节的含义:

    用途

    大小(Byte)

    含义

    Head_Type

    1

    包头

    TiMMER

    3

    时间戳

    AMFSize

    3

    数据大小

    AMFType

    1

    数据类型

    StreamID

    4

    ID


    1.1 Head_Type
    第一个字节Head_Type的前两个Bit决定了包头的长度.它可以用掩码0xC0进行""计算
    Head_Type
    的前两个Bit和长度对应关系:

    Bits

    Header Length

    00

    12 bytes

    01

    8 bytes

    10

    4 bytes

    11

    1 byte


    Head_Type的后面6BitStreamID决定了ChannelID  StreamIDChannelID对应关系:StreamID=(ChannelID-4)/5+1 参考red5

    ChannelID

    Use

    02

    Ping 和ByteRead通道

    03

    Invoke通道 我们的connect() publish()和自字写的NetConnection.Call() 数据都是在这个通道的

    04

    Audio和Vidio通道

    05 06 07

    服务器保留,经观察FMS2用这些Channel也用来发送音频或视频数据


    例如在rtmp包里面经常看到的0xC2,就表示一字节的包头,channel=2.

    1.2 TiMMER
    TiMMER
    3个字节纪录的是时间戳,音视频流的时间戳是统一排的。可分为绝对时间戳和相对时间戳。
    fms
    对于同一个流,发布的时间戳接受的时间戳是有区别的
    publish
    时间戳,采用相对时间戳,时间戳值等于当前媒体包的绝对时间戳与上个媒体包的绝对时间戳之间的差距,也就是说音视频时间戳在一个时间轴上面.单位毫秒。
    play
    时间戳,相对时间戳,时间戳值等于当前媒体包的绝对时间戳与上个同类型媒体包的绝对时间戳之间的差距,也就是说音视频时间戳分别为单独的时间轴,单位毫秒。
    flv
    格式文件时间戳,绝对时间戳,时间戳长度3个字节。超过0xFFFFFF后时间戳值等于TimeStamp &0xFFFFFF
    flv
    格式文件影片总时间长度保存在onMetaDataduration属性里面,长度为8个字节,是一个翻转的double类型。

    1.3 AMFSize
    AMFSize
    占三个字节,这个长度是AMF长度,可超过RTMP包的最大长度128字节。如果超过了128字节,那么由多个后续RTMP封包组合,每个后续RTMP封包的头只占一个字节。一般就是以0xC?开头。

    1.4 AMFType
    AMFSize占三个字节,这个长度是AMF长度,可超过RTMP包的最大长度128字节。
    AMFType
    是包的类型

    0×01

    Chunk Size

    changes the chunk size for packets

    0×02

    Unknown

     

    0×03

    Bytes Read

    send every x bytes read by both sides

    0×04

    Ping

    ping is a stream control message, has subtypes

    0×05

    Server BW

    the servers downstream bw

    0×06

    Client BW

    the clients upstream bw

    0×07

    Unknown

     

    0×08

    Audio Data

    packet containing audio

    0×09

    Video Data

    packet containing video data

    0x0A-0x0E

    Unknown

     

    0x0F

    FLEX_STREAM_SEND

    TYPE_FLEX_STREAM_SEND

    0x10

    FLEX_SHARED_OBJECT

    TYPE_FLEX_SHARED_OBJECT

    0x11

    FLEX_MESSAGE

    TYPE_FLEX_MESSAGE

    0×12

    Notify

    an invoke which does not expect a reply

    0×13

    Shared Object

    has subtypes

    0×14

    Invoke

    like remoting call, used for stream actions too.

    0×16

    StreamData

    这是FMS3出来后新增的数据类型,这种类型数据中包含AudioDataVideoData




    1.6 StreamID
    StreamID
    是音视频流的ID,如果AMFType!=0x08!=0x09那么 StreamID0
    ChannelID
    StreamID之间的计算公式:StreamID=(ChannelID-4)/5+1 参考red5
    例如当ChannelID234StreamID都为1ChannelID9的时候StreamID2

     

    2.RTMP包的数据部分分析

    如果 AMFType = 0×09, 数据就是 Video Data

    Video Data由多个video tag组成

      一个video tag,包含的信息:SPSPPS,访问单元分隔符,SEII帧包

    首先我们来看下vedio tag

    如果TAG包中的TagType==9时,就表示这个TAGvideo.

    StreamID之后的数据就表示是VideoTagHeaderVideoTagHeader结构如下:

    Field

    Type

    Comment

    Frame Type

    UB [4]

    Type of video frame. The following values are defined:
    1 = key frame (for AVC, a seekable frame)
    2 = inter frame (for AVC, a non-seekable frame)
    3 = disposable inter frame (H.263 only)
    4 = generated key frame (reserved for server use only)
    5 = video info/command frame

    CodecID

    UB [4]

    Codec Identifier. The following values are defined:
    2 = Sorenson H.263
    3 = Screen video
    4 = On2 VP6
    5 = On2 VP6 with alpha channel
    6 = Screen video version 2
    7 = AVC

    AVCPacketType

    IF CodecID == 7
    UI8

    The following values are defined:
    0 = AVC sequence header
    1 = AVC NALU
    2 = AVC end of sequence (lower level NALU sequence ender is not required or supported)

    CompositionTime

    IF CodecID == 7
    SI24

    IF AVCPacketType == 1
    Composition time offset
    ELSE
    0
    See ISO 14496-12, 8.15.3 for an explanation of composition
    times. The offset in an FLV file is always in milliseconds.

    VideoTagHeader的头1个字节,也就是接跟着StreamID1个字节包含着视频帧类型及视频CodecID最基本信息.表里列的十分清楚.

    VideoTagHeader之后跟着的就是VIDEODATA数据了,也就是videopayload.当然就像音频AAC一样,这里也有特例就是如果视频的格式是AVCH.264)的话,VideoTagHeader会多出4个字节的信息.

    AVCPacketType CompositionTimeAVCPacketType表示接下来 VIDEODATAAVCVIDEOPACKET)的内容:

    IF AVCPacketType ==0 AVCDecoderConfigurationRecordAVC sequence header
    IF AVCPacketType == 1 One or more NALUs (Full frames are required)

    AVCDecoderConfigurationRecord.包含着是H.264解码相关比较重要的spspps信息,再给AVC解码器送数据流之前一定要把spspps信息送出,否则的话解码器不能正常解码。而且在解码器stop之后再次start之前,如seek、快进快退状态切换等,都需要重新送一遍spspps的信息.AVCDecoderConfigurationRecordFLV文件中一般情况也是出现1次,也就是第一个 video tag.

     



    2.1 AVC sequence header分析

     

    §  171-keyframe  7-avc

    §  00AVC sequence header -- AVC packet type

    §  00 00 00composition timeAVC时,全0,无意义

        因为AVC packet type=AVCsequence header,接下来就是AVCDecoderConfigurationRecord的内容

    §  configurationVersion= 01

    §  AVCProfileIndication= 42

    §  profile_compatibility=00

    §  AVCLevelIndication =1E

    §  lengthSizeMinusOne =FF -- FLVNALU包长数据所使用的字节数,(lengthSizeMinusOne & 3+1,实际测试时发现总为ff,计算结果为4,下文还会提到这个数据

    §  numOfSequenceParameterSets= E1 -- SPS的个数,numOfSequenceParameterSets & 0x1F,实际测试时发现总为E1,计算结果为1

    §  sequenceParameterSetLength= 002E-- SPS的长度,2个字节,计算结果46

    §  sequenceParameterSetNALUnits=6742 80 1E 96 54 0A 0F D8 0A 84 00 00 03 00 04 00 00 03 00 7B 80 00 08 00 00 0400 1F c6 38 C0 00 04 00 0 03 02 00 0F E3 1C 3B 42 44 D4-- SPS,为刚才计算的46个字节, SPS中包含了视频长、宽的信息

    §  numOfPictureParameterSets= 01 -- PPS的个数,实际测试时发现总为E1,计算结果为1

    §  pictureParameterSetLength= 0004-- PPS的长度

    §  pictureParameterSetNALUnits=68ce 35 20 -- PPS 

       

    2.1 AVCNALU分析

    接下来又是新的一包videotag数据了

    §  171-keyframe  7-avc

    §  01AVC NALU

    §  00 00 00composition timeAVC时,全0,无意义

        因为AVCPacket type = AVCNALU,接下来就是一个或多个NALU

        每个NALU包前面都有(lengthSizeMinusOne & 3+1个字节的NAL包长度描述(前文提到的,还记得吗),前面计算结果为4个字节

    §  00 00 00 022 -- NALU length

    §  09 10NAL

        这里插入一点NALU的小知识,每个NALU第一个字节的前5位标明的是该NAL包的类型,即NAL nal_unit_type

    #define NALU_TYPE_SLICE 1

    #define NALU_TYPE_DPA 2

    #define NALU_TYPE_DPB 3

    #define NALU_TYPE_DPC 4

    #define NALU_TYPE_IDR 5

    #define NALU_TYPE_SEI 6

    #define NALU_TYPE_SPS 7

    #define NALU_TYPE_PPS 8

    #define NALU_TYPE_AUD 9//访问分隔符

    #define NALU_TYPE_EOSEQ 10

    #define NALU_TYPE_EOSTREAM 11

    #define NALU_TYPE_FILL 12

     

    §  09&0x1f=9,访问单元分隔符

     前面我们解析的sps头字节为6767&0x1f = 7pps头字节为6868&0x1f=8,正好能对应上。

    §  00 00 00 29:说明接下来的NAL包长度为41

     06 00 11 80 00 af c8 00 00 03 00 00 03 00 00 af c8 00 00 03 00 00 40 010c 00 00 03 00 00 03     00 90 80 08 00 00 03 00 088006&0x1f=6 -- SEI

    §  00 00 0F 9F:接下来的NAL包长度

     65 88 80……65&0x1f=5 -- I帧数据

      这包video tag分析到此结束了,下面会紧接着来一些该I帧对应的P帧数据,

     前面说的I帧数据从65 88 80,到下图第一行的 5F 7E B0都是上一个video tag的内容,即前面说的65 88 80那个I帧的数据拉,27开始是新的一个video tag

       

    §  272-inter frameP帧,7-codecid=AVC

    §  01AVCPacket type = AVC NALU

    §  00 00 00composition timeAVC时,全0,无意义

    §  00 00 00 02 09 30:跟上面分析的一样拉,2个字节的nal包,访问单元分隔符

    §  00 00 00 1117字节的NAL

    §  06 01 0c 00 00 80 0000 90 80 18 00 00 03 00 08 8006&0x1f=6  --SEI

    §  00 00 0C 45 NAL包数据长度

    §  41 9A 02…… 41&0x1f=1 --P帧数据

     

     

    3.H264视频文件格式

    h264NALUNALU之间是由00 00 01(也可以是00 00 00 01)分隔开的,我们组成h264之后的格式为

        100 00 00 01 SPS 0000 00 01 PPS 00 00 00 01访问单元分隔符 00 00 00 01 SEI 0000 00 01 I 00 00 00 01 P 00 00 00 01 P……P帧数量不定)

       

        其中的访问单元分隔符和SEI不是必须的

     

    4.将获得的包数据存储成H264文件

    通过以上我们清楚了H264文件的格式,也分析了现在获得的数据格式,我们需要对这些数据进行处理,得到H264视频要求的数据格式

    1.当数据是AVC squence header(只有一次)的时候,提取sps,pps数据并加入 0000 01(也可以是00 00 00 01)隔开。

    2. 当数据是AVC NALU时,四个字节存储帧数据长度,后面紧跟着数据,根据长度计算帧数据长,提取数据,加上00 00 00 01,将每个帧数据隔开。

     

    5.red5 数据处理代码

    @Override

    public void streamPublishStart(IBroadcastStreamstream) {

    super.streamPublishStart(stream);

    stream.addStreamListener(newIStreamListener() {

     

    protected boolean bFirst = true;

    @Override

    public void packetReceived(IBroadcastStreamarg0, IStreamPacket arg1) {

    IoBufferin = arg1.getData();

    if(arg1.getDataType() == 0x09){  

    System.out.println("11111");

    byte[] data = new byte[in.limit()];

    in.get(data);

    byte[] foredata = { 0, 0, 0, 1 };

    ioBuffer3.put(data);

    // buflimit3 += in.limit();

    if( bFirst) {

    //AVCsequence header

    ioBuffer.put(foredata);

    //获取sps

    intspsnum = data[10]&0x1f;

    intnumber_sps = 11;

    intcount_sps = 1;

    while (count_sps<=spsnum){

    int spslen =(data[number_sps]&0x000000FF)<<8 |(data[number_sps+1]&0x000000FF);

    number_sps += 2;

    ioBuffer.put(data,number_sps, spslen);

    ioBuffer.put(foredata);

    number_sps += spslen;

    count_sps ++;

    }

    //获取pps

    intppsnum = data[number_sps]&0x1f;

    intnumber_pps = number_sps+1;

    intcount_pps = 1;

    while (count_pps<=ppsnum){

    int ppslen =(data[number_pps]&0x000000FF)<<8|data[number_pps+1]&0x000000FF;

    number_pps += 2;

    ioBuffer.put(data,number_pps,ppslen);

    ioBuffer.put(foredata);

    number_pps += ppslen;

    count_pps ++;

    }

    bFirst =false;

    } else {

    //AVCNALU

    int len =0;

    int num =5;

    ioBuffer.put(foredata);

    while(num<data.length) {

    len =(data[num]&0x000000FF)<<24|(data[num+1]&0x000000FF)<<16|(data[num+2]&0x000000FF)<<8|data[num+3]&0x000000FF;

    num = num+4;

    ioBuffer.put(data,num,len);

    ioBuffer.put(foredata);

    num = num + len;

    }

    }       

    System.out.println("22222");

                }else if (arg1.getDataType() == 0x08) {

    //            这存储处理音频数据 Audio data

    }

    }

    });

    } 

     

    备注:

    http://blog.csdn.net/cssmhyl/article/details/8059420

     

    http://blog.csdn.net/cssmhyl/article/details/8059774


    展开全文
  • 想用一个nginx主服务器 做代理 反向代理一个可以播放rtmp视频流的nginx服务器 各位大神 这怎么办
  • 网页中播放rtmp视频流、亲测~~~使用的是videojs播放rtmp视频流!!!注意:videojs的引入地址一定不要错引入播放器js地址引入播放器样式的地址这两个地址要和使用的版本对应,反正我写的版本不对应,播放不了效果图~...

    使用的是videojs播放rtmp视频流

    (可实现远程监控、、、可在Chrome上播放)
    我这人喜欢直接上代码~~~

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>使用video.js实现rtmp流的直播播放</title>
    		<!--引入播放器样式-->
    		<link href="http://vjs.zencdn.net/5.19/video-js.min.css" rel="stylesheet">
    		<!--引入播放器js-->
    		<script src="http://vjs.zencdn.net/5.19/video.min.js"></script>
    		<script src="https://cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js"></script>
    	</head>
    	<body>
    
    		<div class="div1">
    			<!--vjs-big-play-centered 播放按钮居中-->
    			<!--poster默认的显示界面,就是还没点播放,给你显示的界面-->
    			<!--controls 规定浏览器应该为视频提供播放控件-->
    			<!--preload="auto" 是否提前加载-->
    			<!--data-setup='{"example_option":true}' 可以把一些属性写到这个里面来,如data-setup={"autoplay":true}-->
    
    			<video id="my-player" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto" poster="//vjs.zencdn.net/v/oceans.png"
    			 width="700" height="400" data-setup='{}'>
    				<!--src: 规定媒体文件的 URL  type:规定媒体资源的类型-->
    				<source src='rtmp://58.200.131.2:1935/livetv/hunantv' type='rtmp/flv' />
    			</video>
    		</div>
    
    	<script type="text/javascript">
    			// 设置flash路径,用于在videojs发现浏览器不支持HTML5播放器的时候自动唤起flash播放器
    			videojs.options.flash.swf = 'https://cdn.bootcss.com/videojs-swf/5.4.1/video-js.swf';
    			var player = videojs('my-player'); //my-player为页面video元素的id
    			player.play(); //播放
    			//    1. 播放   player.play()
    			//    2. 停止   player.pause()
    			//    3. 暂停   player.pause()
    		</script>
    	</body>
    </html>
    
    
    !!!注意:videojs的引入地址一定不要错
    引入播放器js地址

    http://vjs.zencdn.net/5.19/video.min.js
    https://cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js

    引入播放器样式的地址

    href=“http://vjs.zencdn.net/5.19/video-js.min.css” rel=“stylesheet”

    这两个地址要和使用的版本对应,反正我写的版本不对应,播放不了

    在这里插入图片描述
    浏览器加载结束主要实现代码就是上图的这个

    效果图~~~

    在这里插入图片描述

    这些rtmp视频源都是可用的,今天全部试了一遍~~~

    香港卫视,rtmp://live.hkstv.hk.lxdns.com/live/hks
    香港财经,rtmp://202.69.69.180:443/webcast/bshdlive-pc
    韩国GoodTV,rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp
    韩国朝鲜日报,rtmp://live.chosun.gscdn.com/live/tvchosun1.stream
    美国1,rtmp://ns8.indexforce.com/home/mystream
    美国2,rtmp://media3.scctv.net/live/scctv_800
    美国中文电视,rtmp://media3.sinovision.net:1935/live/livestream
    湖南卫视,rtmp://58.200.131.2:1935/livetv/hunantv

    展开全文
  • 【前端】rtsp 与 rtmp 视频流的播放方法导读写在前面前端如何在网页上播放 rtsp 视频流 导读 RTSP(Real Time Streaming Protocal),RFC2326,实时流传输协议,是 TCP/IP 协议体系中的一个应用层协议。… 额,算了...
  • android RTMP流视频播放器,基于Vitamio框架开发,3个文件夹,vitamio作为引用项目,simple 是简单例子。具体实现可自行修改
  • Video.js 播放rtmp视频流

    万次阅读 热门讨论 2016-08-06 19:22:37
    使用video.js播放rtmp视频流 视频直播 直播间 poster="http://ppt.downhot.com/d/file/p/2014/08/12/9d92
  • 实现RTSP和RTMP视频流在页面播放

    千次阅读 2020-04-24 09:41:21
    话不多说直奔主题,今天公司让写个js实现rtsp或rtmp视频流在页面播放。因为从来没搞过这些,查找了大量的文章。然后代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8">...
  • RTMP视频流格式解析

    万次阅读 2017-04-09 10:42:40
    简析FLV格式以及适用于RTMP格式以及怎样从H264裸进行转换。
  • 大家知道我们的视频直播点播服务器是可以结合我们研发的RTMP平台一起使用,EasyRTMP推平台将手机录像进行实时的直播。 那么为了演示直播推流工程,我来架设一个简易的RTMP服务器,用OBS推,并在播放器中...
  • 5. 客户端播放 rtmp 视频流 1. 安装说明 要想树莓派实现远程监控的能力,那么就需要有一个“视频中转站”,这个中转站要有一个公网IP,这样才可以在任何地方都能访问 我这里使用的中转站是阿里云服务器。当然网上...
  • 记录: pyqt5+opencv实现rtsp/rtmp视频流播放 最近有一个需求,要求写一个客户端实时展示多个摄像头的视频流。 界面大致设计如下: 由于我是搞Java出生的,很想用java写客户端,但是java写的窗口程序,实在是太。。。...
  • 请问python能不能实现rtmp并提取视频帧处理,之后推rtmp服务器上
  • 2020年12月31日flash禁用后网页如何播放rtmp视频流 众所周知,2020年底flash将不再被各大浏览器支持,那么以前利用flash技术做的产品该怎么办呢?我就遇到了这样的问题。 公司有一个老项目,在网页上接入了监控...
  • 大家知道我们的视频直播点播服务器是可以结合我们研发的RTMP平台一起使用,EasyRTMP推平台将手机录像进行实时的直播。 那么为了演示直播推流工程,我来架设一个简易的RTMP服务器,用OBS推,并在播放器中...
  • 192.168.2.188 master(lvs ...192.168.2.177 node1(nginx-rtmp 视频流服务器)开通1935,1936端口 192.168.2.178 node2 ( nginx-rtmp 视频流服务器 ) 开通1935,1936端口 步骤: 1.在mastar中  yum install ipvsadm
  • 端口在部署流媒体平台中是非常重要的一个存在,如果把IP地址比作一间...有的用户需要通过端口映射来获取EasyNVR的RTMP视频流,但是我们近期发现将EasyNVR进行端口映射成功后,EasyNVR的RTMP流依然无法直播。 首先
  • FFmpeg将网络摄像机的rtsp视频流转换成rtmp流,然后推送rtmp视频流到nginx上面,然后使用手机播放hls的视频流。 在期间遇到一些问题,总是丢包,我截了个图,请大家帮忙看看是不是我在使用ffmpeg时参数设置的不对啊...
  • aliplayer播放rtmp视频流

    千次阅读 2019-12-18 14:19:50
    //rtmp格式的地址 } , function ( player ) { player . on ( "ready" , function ( e ) { } ) ; player . on ( "canplaythrough" , function ( e ) { var sample = player . _flv . ...
  • 1、开启浏览器的flash支持。 2、不支持本地运行,建议搭建nodejs本地服务器运行测试html/js https://blog.csdn.net/u011456337/article/details/50704331
  • vue播放RTMP视频流

    2020-03-13 14:08:00
    1.安装 npm install vue-video-player -S 2.测试 <template> <videoPlayer class="vjs-custom-skin videoPlayer" :options="playerOptions"></videoPlayer> </template>... ...
  • 端口在部署流媒体平台中是非常重要的一个存在,如果把IP地址比作一间...有的用户需要通过端口映射来获取EasyNVR的RTMP视频流,但是我们近期发现将EasyNVR进行端口映射成功后,EasyNVR的RTMP流依然无法直播。 首先
  • 说明: 操作系统:window server 2008 R2   步骤: 1、安装ffmpeg: 通过官网...需要下载旧版nginx并安装nginx-rtmp-module(我使用的是从网上下载的nginx-rtmp集成版,版本号:nginx:1....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,729
精华内容 8,691
关键字:

rtmp视频流