直播视频技术简述

准备

obs推流软件网址 

直播播放器VLC  srs player

mac自带ffmpeg

进阶 -ffmpeg推流 1)指定视频源  2)指定推流地址

ffmpeg -re -i test.glv\

-vcodec copy -acodec copy\

-f fly -y ramp://192.168.1.170/live/livestream;\

1.直播基础概念


1)视频

1.1 image  Resolution Color Luminosity frameRate

1.2 metadata

1.3 contenerraper

1.4 audio

解码 点播 回放    源文件->Decoding->bofang

编码 直播->录像  直播流->Encoding ->视频录像

转码  特效加工处理文件格式转换  源文件 ->Decoding ->加工->Encoding->目标文件

2.服务端技术选型,搭建,集群

主播方—RTMP—>服务器端 —-RTMP(手机)/FLV(电脑PC)/HLS(网页)—>播放端

1)RTMP

a. 一个流媒体传输协议(Real Time Message Protocal),来自Adobe

b. 定义了视频,音频怎么实时传输

c. 每个时刻的数据,收到立刻转发

d. 建立在长链接TCP上

e. TCP上的一层协议

f. 延时1~3秒

2)HLS

a.HLS全称HTTP Live Streaming

b.短链接HTTP

c.10秒切割一段直播,60秒一个直播列表,客户端隔一段时间请求播放列表

d.延时>10秒

3)HTTP-FLV

a.HTTP-FLV全称RTMP over HTTP

b.以FLV的方式封装RTMP流,形式上稍微转换了一下

c.有RTMP的所有特征,譬如集群,低延迟,热备,GOPcache

d.而且有HTTP的优势,譬如302,穿墙,通用

e.延时1~3秒

HTTP-FLV的优势

a.低延迟,和RTMP一样

b.穿墙,很多防火墙会墙掉rtmp,但http不会

c.容错,SRS的HTTP FLV回源时可以回多个,支持多级热备

d.通用,Flash可以播TRTMP,也可以播HTTP FLV,App也支持

e.简单,FLV是最简单的流媒体封装,HTTP是最广泛的协议

nginx-rtmp-module

srs

a.https://github.com/ossrs/srs

b. ramp

c.hls

d.rtmp,hls集群

e.srs编译: ./configure —disable-all —with-ssl&& make

d.conf配置

# conf/rtmp.conf

listen      1935;

max_connections  1000;

ghost __defaultVhost__{}

e.启动srs: ./objs/srs -c conf/rtmp.conf

f.ffmpeg推流

for((;;));do\

./objs/ffmpeg/bin/ffmpeg -re -i ./doc/source.200kbps.768✖️320.flv\

-vcodec copy -acodec copy\

-f fly -y ramp://192.168.1.170/live/livestream;\

sleep 1;\

done

g.rtmp play ramp://192.168.1,170:1935/live/livestream

h.srs转码

ghostxx.quzhibo.com{

          transcode{

                    enabled  on;

                    ffmpeg  ./objs/ffmpeg/bin/ffmpeg;

            engine ff{

                         enabled    on;

                         codec    libx264;

                          vbitrate  500;

                          vfps      20;

                          vwidth    400;

                          threads    12;

                          profile    main;

                          vpreeset    medium;

                          acidic    copy;

                         #acodec    libaacplus;

                          #abitrate    70;

                          #asample_rate    44100;

                          #achannels      2;

                            output      ramp://127.0.0.1:[port]/[app]?vhost=__defaultVhost__/[s]

                     }

}

}


3.客户端iOS推流,播放

videoCore 推流用,底层用 ffmpeg

iOS  videoCore模块解析

1)Rtmp Session等Rtmp管理类

2)VCSimpleSession 采集管理类

           a.核心采集管理类

           b.核心函数setupGraph

           c.初始化采集视频,输出到VideoMixer上

           d.初始化采集音频,输出到AudioMixer上

            e.将当前采集的视频输出渲染到VCPreviewView上

3)VideoMixer,Audio Mixer

4)BeautyVideoFilter等美颜Filter

5)VCPreviewView 视频预览

6)ffmpeg

           ijkplayer 播放用,播直播用,底层用 ffmpeg play

4.手机网页播放

5.直播费用,流量等介绍

你可能感兴趣的:(直播视频技术简述)