RTMP绅喉,Real Time Messaging Protocol(實時消息傳輸協(xié)議)
主要用來在Flash/AIR平臺和支持RTMP協(xié)議的流媒體/交互服務(wù)器之間進行音視頻和數(shù)據(jù)通信
HLS,HTTP Live Streaming(縮寫是 HLS)
是一個由蘋果公司提出的基于 HTTP 的流媒體網(wǎng)絡(luò)傳輸協(xié)議。主要用于PC和Apple終端的音視頻服務(wù)
源站
該配置項為可訪問的網(wǎng)絡(luò)地址,可以直接填 IP 地址也可以填寫域名地址灾梦,現(xiàn)不支持多IP 导俘。如果是域名地址,那么 CDN 在回源時會對該域名地址進行 DNS 解析砌们,然后通過解析出來的 IP 地址再進行訪問,因此若解析失敗也會導致無法正掣榻回源浪感。
輸出協(xié)議
直播播放地址
RTMP 格式:rtmp://push.domain.com/接入點/流名
FLV 格式:rtmp://push.domain.com/接入點/流名.flv
M3U8 格式:rtmp://push.domain.com/接入點/流名.m3u8
------------------------------------------
首先得采集,然后轉(zhuǎn)碼饼问,然后再推流到服務(wù)器
熟悉sdk接口調(diào)用影兽,細心看說明
采集的就是用的系統(tǒng)的相機,AVCaptureSession 采集
采集的數(shù)據(jù)回調(diào):
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
CMSampleBufferRef里面是數(shù)據(jù)
/// @abstract 獲取到攝像頭原數(shù)據(jù)時的回調(diào), 便于開發(fā)者做濾鏡等處理
- (CVPixelBufferRef)cameraStreamingSession:(PLCameraStreamingSession *)session cameraSourceDidGetPixelBuffer:(CVPixelBufferRef)pixelBuffer;
------------------------------------------
1. 推流域名:用于推送直播流的域名莱革,長度小于 60 個字符峻堰,支持泛域名綁定,比如:*.yourdomain.com
2. 播放域名:用于播放直播流的域名盅视,默認支持 RTMP捐名,HLS 和 HTTP-FLV;推流域名闹击、播放域名共計最多可綁定個域名镶蹋,支持泛域名,所綁定的域名需要備案既绩;
3. 接入點:支持1-60位英文字符和數(shù)字芹壕,如:rtmp://push.example.com/{接入點}/{流名},該項可不填瓜浸,為空時表示拂酣,可以使用任意的接入點秋冰。
接入點:live
推流域名:push.example.com
播放域名:pull.example.com
則推流地址:rtmp:// push.example.com /live/streamid
則 rtmp 播放地址:rtmp://pull.example.com/live/ streamid
hls 播放地址:http:// pull.example.com/live/ streamid.m3u8
flv 播放地址:http:// pull.example.com/live/ streamid.flv
直播播放地址
RTMP 格式:rtmp://push.domain.com/接入點/流名
FLV 格式:rtmp://push.domain.com/接入點/流名.flv
M3U8 格式:rtmp://push.domain.com/接入點/流名.m3u8
RTMP,HTTP-FLV 和 HLS 協(xié)議的流轉(zhuǎn)碼支持 12 種轉(zhuǎn)碼模板和客戶自定義轉(zhuǎn)碼配置
rtmp://fengniushow.com/zhibo/流名
rtmp://fengniushow.cn/live/? ? ? 播放
push.fengniushow.com
rtmp://pull.fengniushow.com/zhibo? ? play
rtmp://push.fengniushow.com/zhibo? ? record
------------------------------------------
測試效果:延時3秒婶熬,推流視頻關(guān)鍵幀間隔30較為不卡頓
采集配置:videoFrameRate? 30? ? 視頻數(shù)據(jù)的幀率
sessionPreset? ? ? AVCaptureSessionPresetiFrame960x540
previewMirrorFrontFacing? ? yes? 前置預覽是否開啟鏡像
previewMirrorRearFacing? ? ? no? ? 后置預覽是否開啟鏡像
streamMirrorFrontFacing? ? ? yes? ? 推的流是否開啟鏡像
streamMirrorRearFacing? ? ? no? ? 推的流是否開啟鏡像
cameraPosition? ? ? ? ? ? ? ? ? ? ? AVCaptureDevicePositionFront
videoOrientation ? ? ? AVCaptureVideoOrientationPortrait
推流配置: videoSize 編碼分辨率? CGSizeMake(480 , 640)
expectedSourceVideoFrameRate 預期采集源視頻碼率? 30
videoMaxKeyframeInterval 視頻最大關(guān)鍵幀間隔? 90
averageVideoBitRate 平均視頻碼率? 800 * 1000
videoProfileLevel H.264 編碼時的 profile level? ? ? AVVideoProfileLevelH264Baseline31
videoSize丹莲,這個參數(shù)影響的是視頻編碼時的分辨率,而非攝像頭采集到數(shù)據(jù)的預覽大小尸诽,傳遞給編碼器的圖像尺寸與此尺寸不同時甥材,會按照 AVVideoScalingModeResizeAspectFill對圖像做剪切,從而確保圖像不會出現(xiàn)壓縮的現(xiàn)象
H.264 編碼時使用的 Profile Level性含,即videoProfileLevel
視頻的幀率洲赵,視頻的編碼幀率,fps商蕴,每秒傳輸幀數(shù)(Frames Per Second)
視頻編碼關(guān)鍵幀最大間隔(GOP)
視頻編碼碼率叠萍,bps(Bits per Second)
當你不明白每個具體參數(shù)是什么含義前,你可以使用 defaultConfiguration 或者通過指定分辨率和推流質(zhì)量生成一個 config.
rtmp://pili-live-rtmp.fengniushow.com/livelivelive/57beb3b5b1d1ff8fed001525