日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目

發布時間:2024/8/1 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


從快播到直播

視頻直播的應用的場景:
即時通訊視頻直播互動直播在線教育

網易云通信直播源自網易多年視頻技術沉淀,基于專業的跨平臺視頻編解碼技術和大規模視頻內容分發網絡,提供穩定流暢、低延時、高并發的實時音視頻服務,有視頻直播需求的用戶可調用網易云通信直播提供的API或SDK即可將視頻直播無縫對接到自身的業務應用系統。

本服務適用于各類音視頻直播場景,比如教育行業的在線教育、網絡課堂等,娛樂行業的美女直播、游戲直播等,廣電行業的電視直播、賽事直播等,另外還適用于企業協作、遠程醫療、云監控、庭審直播等其他視頻相關行業。





視頻和直播的準備:

android-java層:camera相關(視頻)、AudioRecord(音頻)相關、MediaCodec相關(音視頻編碼)
android-native層(c++):h264、h265等編碼庫的調用;各種音頻編碼庫的使用(aac、amr、mp3、g711等);容器封裝技術(音視頻封裝ts、ps等);媒體協議(hls、rtsp、rtmp等)

socket編程;android-ndk編譯so技術;jni技術


難點:

大概就這么多,如果細說還有許多細節,比如音視頻同步,傳輸過程中的QOS等等問題

android系統版本太多,直接用android 系統接口的話,會有很多坑,例如mediacodec有的支持編碼264,有的不支持,所以要配合第三方庫一起使用,如果只是單純的會java,那么android直播這里是玩不轉的


直播的完整 SDK選擇方案: http://www.cctime.com/html/2016-6-6/1179900.htm
即構科技:就在深南大道 :即構科技的CEO林友堯,是原騰訊QQ即通部門總經理
要分開一個一個說。我最熟悉的是花椒(huajiao),他們家技術牛逼,單向直播的功能是自己做的, 技術和產品和運營都是行業翹楚,沒的說的。他們的互動直播(連麥,多主播)是在2016年的9月左右上線的吧,用的是即構科技(ZEGO)的互動直播方案/SDK。 不是說他們做不出來,而是他們不能短時間做出來,短時間內需要把主要精力放在主營業務上,所以就用了即構科技(zego.im)的互動直播SDK,單向直播部分還是用他們自己的。

作者:柴文多
鏈接:https://www.zhihu.com/question/36076688/answer/130681539
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
看看一線的直播平臺在用哪些第三方公司的直播SDK?比如說花椒和一直播用了即構科技的。====但是我沒有看到SDK
不要用網易,功能不完全,推流有內建參數,無法設置高碼流和高幀數,延遲高
不要用趣拍,穩定性差,延遲高,SDK太大 ,趣拍直播就很不錯,SDK很好集成,芒果直播也在用
不要用百度,響應慢,低畫質馬賽克,高畫質延遲高
大牛直播:有比較好的文檔和技術支持 虎牙直播是YY的,自然是用YY的方案了
斗魚用網宿,映客用騰訊云,熊貓用網宿和迅雷等
七云牛:直播 https://github.com/daniulive/SmarterStreaming 騰訊云https://www.qcloud.com/document/product/267/4735

主流的視頻和音頻的解碼

vitamio==============美拍

ffmpeg==============主流

ijkplayer=============斗魚,網易音樂 ? ??嗶哩嗶哩的ijkplayer了。

vlc==================YY

webRTC? :網頁端的

1).vitamio這個是功能很強大,但是企業收費版的,個人用戶可以玩玩.美拍,結果對于非個人移動應用均需購買Vitamio使用授權

流媒體支持

Vitamio支持各種常見的流媒體協議,可以點播或者直播音頻和視頻,例如如下常見協議均能無縫支持:
Vitamio使用了 FFmpeg 做為媒體解析器和最主要的解碼器,同時開發了針對不同移動平臺的硬解碼方案,能夠完美支持 H.264/AVC、H.263、MPEG4 等常見的視頻編碼,覆蓋上百種多媒體格式。
  • MMS
  • RTSP (RTP, SDP), RTMP
  • HTTP progressive streaming
  • HLS - HTTP live streaming (M3U8) Vitamio ? 新浪微博(安卓客戶端),搜狐視頻(安卓客戶端),風行網(安卓客戶端),歌華有線,熊貓影音(91網龍),視訊中國(央視),法國航空,懸浮瀏覽器等等

2).ffmpeg是一個非常強大的音視頻編解碼開源庫,目前市場上流行的播放器,大部分都是基于此開發的,包括暴風,騰訊,等等以及上面提到的vitamio,vlc,ijkplayer
關于ffmpeg源碼分析,有興趣的請看雷霄驊(leixiaohua1020)的專欄

發現網易云音樂,斗魚用的ijkplayer,

3).ijkplayer是一個基于FFmpeg的輕量級Android/iOS視頻播放器。FFmpeg的是全球領先的多媒體框架,能夠解碼,編碼, 轉碼,復用,解復用,流,過濾器和播放大部分的視頻格式

  • 4.vlc 支持android開發 ,ijkplayer也支持. 通過反編譯網易云音樂,以及YY等音視頻app.YY用的VLC. VLC Media Player (VideoLAN)?為 Windows、Linux、OS X、Android、iOS、Windows Phone?等平臺提供一個視頻播放器、解碼器。它可以播放來自網絡、攝像頭、磁盤、光驅的文件,支持包括MPEG 1/2/4, H264, VC-1, DivX, WMV, Vorbis, AC3, AAC等格式的解碼。

4). ??目前WebRtc只適合小范圍(8人以內)音視頻會議,不適合做直播可以用WebRTC來做視頻直播嗎? ? ? ? ?接下來介紹下 ffmpeg vlc ijkplayer以及選擇方案

1.1基本概念: 視頻是什么

靜止的畫面叫圖像(picture)。連續的圖像變化每秒超過24幀(frame)畫面以上時,根椐視覺暫留原理, 人眼無法辨別每付單獨的靜態畫面,看上去是平滑連續的視覺效果。這樣的連續畫面叫視頻。 當連續圖像變化每秒低于24幀畫面時,人眼有不連續的感覺叫動畫(cartoon)

流媒體 所謂流媒體是指采用流式傳輸的方式在Internet播放的媒體格式。 流媒體又叫流式媒體,它是指商家用一個視頻傳送服務器把節目當成數據包發出,傳送到網絡上。 用戶通過解壓設備對這些數據進行解壓后,節目就會像發送前那樣顯示出來。 http://baike.baidu.com/link?url=4Ql7QicMGPpMMOHvIs_J7_GN85aIdA2axgnjLvTTfSLdMezUz-IwjoAh2m-zbZiPL1aUEbEhqTssIzaN4_XrxGMH1SOHdxopA6fraK8RcXom3NyY-YwhIm5gXrQH7-U4

碼流
碼流(Data Rate)是指視頻文件在單位時間內使用的數據流量,也叫碼率,是視頻編碼中畫面質量控制中最重要的部分。同樣分辨率下,視頻文件的碼流越大,壓縮比就越小,畫面質量就越好。
一般我們用的單位是kbps即千位每秒。

幀率

幀/秒(frames per second)的縮寫,也稱為幀速率,測量用于保存、顯示動態視頻的信息數量。每一幀都是靜止的圖象,快速連續地顯示幀便形成了運動的假象。 每秒鐘幀數 (fps) 愈多,所顯示的動作就會愈流暢,可理解為1秒鐘時間里刷新的圖片的幀數,也可以理解為圖形處理器每秒鐘能夠刷新幾次,也就是指每秒鐘能夠播放(或者錄制)多少格畫面。

1.2 多媒體的格式分類

封裝格式(專業上講叫容器,通俗的叫文件格式),視頻編解碼,音頻編解碼 ####1.1常見的封裝格式 * MPEG : 編碼采用的容器,具有流的特性。里面又分為 PS,TS 等,PS 主要用于 DVD 存儲,TS 主要用于 HDTV. * MP 3 :大名鼎鼎的 MP3,已經成為網絡音頻的主流格式,能在 128kbps 的碼率接近 CD 音質 * MP4(Mp4) : 編碼采用的容器,基于 QuickTime MOV 開發,具有許多先進特性;實際上是對Apple公司開發的MOV格式(也稱Quicktime格式)的一種改進. * MKV: 它能把 Windows Media Video,RealVideo,MPEG-4 等視頻音頻融為一個文件,而且支持多音軌,支持章節字幕等;開源的容器格式 * 3GP : 3GPP視頻采用的格式, 主要用于流媒體傳送;3GP其實是MP4格式的一種簡化版本,是手機視頻格式的絕對主流. * MOV : QuickTime 的容器,恐怕也是現今最強大的容器,甚至支持虛擬現實技術,Java等,它的變種 MP4,3GP都沒有這么厲害;廣泛應用于Mac OS操作系統,在Windows操作系統上也可兼容,但是遠比不上AVI格式流行 * AVI : 最常見的音頻視頻容器,音頻視頻交錯(Audio Video Interleaved)允許視頻和音頻交錯在一起同步播放. * WAV : 一種音頻容器,大家常說的 WAV 就是沒有壓縮的 PCM 編碼,其實 WAV 里面還可以包括 MP3 等其他 ACM 壓縮編碼 等等
http://baike.baidu.com/link?url=kR6hmAlRdnZgjwMpmZ2x1p1pXGX1QvmV-ZjaAlOyjYG42LmvabtaiMlStuReHZp0RgdPV3s_RSvVMOYhqVtQCeAK-XIyu-y8sypwVR03zDs6n1LaV8u8Hzi8HvtQ4as2xolijPfVkzItjsB0ZWiMtq

1.3 流媒體協議(RTP RTCP RTSP RTMP HLS)

參考地址: http://www.zhixing123.cn/computer/55326.html

RTP :(Real-time Transport Protocol)是用于Internet上針對多媒體數據流的一種傳輸層協議.RTP協議和RTP控制協議RTCP一起使用,而且它是建立在UDP協議上的 RTCP:Real-time Transport Control Protocol或RTP Control Protocol或簡寫RTCP)實時傳輸控制協議,是實時傳輸協議(RTP)的一個姐妹協議 RTP協議和RTP控制協議RTCP一起使用,而且它是建立在UDP協議上的 RTSP:(Real Time Streaming Protocol)是用來控制聲音或影像的多媒體串流協議,RTSP提供了一個可擴展框架,使實時數據,如音頻與視頻的受控、點播成為可能。 數據源包括現場數據與存儲在剪輯中的數據。該協議目的在于控制多個數據發送連接,為選擇發送通道,如UDP、多播UDP與TCP提供途徑,并為選擇基于RTP上發送機制提供方法 傳輸時所用的網絡通訊協定并不在其定義的范圍內,服務器端可以自行選擇使用TCP或UDP來傳送串流內容,比較能容忍網絡延遲 RTP不像http和ftp可完整的下載整個影視文件,它是以固定的數據率在網絡上發送數據,客戶端也是按照這種速度觀看影視文件,當影視畫面播放過后,就不可以再重復播放,除非重新向服務器端要求數據。 RTSP與RTP最大的區別在于:RTSP是一種雙向實時數據傳輸協議,它允許客戶端向服務器端發送請求如回放、快進、倒退等操作。當然,RTSP可基于RTP來傳送數據,還可以選擇TCP、UDP、組播UDP等通道來發送數據,具有很好的擴展性。它時一種類似與http協議的網絡應用層協議
RTSP協議族的優勢,在于可以控制到視頻幀,因此可以承載實時性很高的應用。這個優點是相對于HTTP方式的最大優點。倍速播放功能是RTSP協議獨有的,其他視頻協議都無法支持。
缺點:就是服務器端的復雜度也比較高,實現起來也比較復雜。Ios端不支持該協議。


在國內視頻網站多采用HTTP+MP4或者HTTP+FLV協議傳輸視頻,而國外使用RTMP,RTSP等專門的流媒體格式。

質就是下載視頻文件,而利用視頻文件本身的特點,就是存在頭部信息,和部分視頻幀數據,就完全可以解碼播放了。顯然這種方式需要將視頻文件的頭部信息放在文件的前面



RTMP協議
? ? RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。 RTMP(Real Time Messaging Protocol)實時消息傳送協議是Adobe?Systems公司為Flash播放器和服務器之間音頻、視頻和數據傳輸 開發的開放協議。 該協議基于TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議, 主要用來在Flash/AIR平臺和支持RTMP協議的流媒體/交互服務器之間進行音視頻和數據通信。支持該協議的軟件包括Adobe Media Server/Ultrant Media Server/red5等。



HLS協議:
HTTP Live Streaming(縮寫是HLS是一個由蘋果公司提出的基于HTTP流媒體網絡傳輸協議。是蘋果公司QuickTime XiPhone軟件系統的一部分。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。

HTTP Live Streaming 還有一個巨大優勢:自適應碼率流播(adaptive streaming)。效果就是客戶端會根據網絡狀況自動選擇不同碼率的視頻流,條件允許的情況下使用高碼率,網絡繁忙的時候使用低碼率,并且自動在二者間隨意切換。這對移動設備網絡狀況不穩定的情況下保障流暢播放非常有幫助。實現方法是服務器端提供多碼率視頻流,并且在列表文件中注明,播放器根據播放進度和下載速度自動調整。使用起來也非常簡單。

為什么蘋果要提出HLS這個協議,其實他的主要是為了解決RTMP協議存在的一些問題。比如RTMP協議不使用標準的HTTP接口傳輸數據,所以在一些特殊的網絡環境下可能被防火墻屏蔽掉。

缺點:HLS 直播延時


HLS支持的視頻編碼格式H264,支持的音頻編碼為Acc



二. android音視頻的開發

播放流程: 獲取流-->解碼-->播放
錄制播放路程: 錄制音頻視頻-->剪輯-->編碼-->上傳服務器 別人播放.
直播過程 : 錄制音視頻-->編碼-->流媒體傳輸-->服務器--->流媒體傳輸到其他app-->解碼-->播放

幾個重要的環節

  • 錄制音視頻 AudioRecord/MediaRecord
  • 視頻剪輯 mp4parser 或ffmpeg
  • 音視頻編碼 aac&h264 ? ?視頻的編碼格式為H264,
  • 上傳大文件 網絡框架,進度監聽,斷點續傳
  • 流媒體傳輸 流媒體傳輸協議rtmp rtsp hls
  • 音視頻解碼 aac&h264
  • 渲染播放?MediaPlayer





  • 網易的直播架構:
    直播有2種,一種是直播,還有一種是互動直播。
    推流端和拉流端 主要的協議:Http,RTMP,HLS







    其中上行RTMP推流很普遍了,很多游戲直播都使用obs推RTMP流。

      在整個過程中,涉及很多流媒體的基本概念,先說說GOP。

      GOP即Group of picture(圖像組),指兩個I幀之間的距離。即幾秒有一個關鍵幀。分析線上主流的移動直播APP,大都在2、3秒之間。  


    一般的云服務公司都會提供多種協議的拉流方式,優缺點如下:

      l HLS協議,移動h5瀏覽器支持較好,但是延遲較大。移動端播放前需要產生三個分片,每個分片至少得是一個GOP。一個GOP即使是2秒,也意味著這個環節耗費了6秒的延時。

      l RTMP協議,需要訪問1935端口,支持雙向互動,實時性很好,PC?flash原生支持。

      l HTTP-FLV,不支持雙向互動,實時性和RTMP協議一致。

      基于以下幾點理由,小弟準備采用HTTP-FLV作為拉流協議

      1. 國內網絡情況的惡劣程度,并不是每個網絡防火墻都允許1935包通過。

      2. RTMP協議和HTTP-FLV,實際傳輸的內容都是相同的FLV,實時性也一樣。

      3. RTMP協議握手方式比HTTP復雜。

      確定好了拉流協議,再看看推流側依賴的參數。

      l FPS,每秒編碼傳輸的視頻幀數;

      l 碼率,每秒編碼傳輸的音視頻比特數;

      l GOP,關鍵幀間隔;


    1) 能完全運行起來的是金山云、百度云提供的SDK。



    我們先看下搭建一個完整的手機直播都包含哪些必須的環節:

    推流端(采集、前處理、編碼、推流),

    服務端處理(轉碼、錄制、截圖、鑒黃),

    播放器(拉流、解碼、渲染)、

    互動系統(聊天室、禮物系統、贊)



    手機直播推流端需要做哪些工作?

    直播推流端即主播端,主要通過手機攝像頭采集視頻數據和麥克風采集音頻數據,經過一系列前處理、編碼、封裝,然后推流到CDN進行分發。CDN的全稱是Content Delivery Network
    采集

    手機直播SDK通過手機攝像頭和麥克風直接采集視頻數據和音頻數據。其中,視頻采樣數據一般采用RGB或YUV格式、音頻采樣數據一般采用PCM格式。對于采集到的原始音視頻的體積是非常大的,因此需要經過壓縮技術來處理,降低視頻的大小來提示傳輸效率。 在手機視頻采集方面,iOS系統在硬件的兼容性方面做得比較好,系統本身提供了比較完整的視頻采集的接口,使用起來也比較簡單。但是,Android系統就比較麻煩了,千奇百怪的機型都有,適配起來非常難。我們在初期做了一項調研,發現Android的適配率還不到50%。

    前處理

    在這個環節主要處理美顏、水印、模糊等效果。特別是美顏功能幾乎是直播的標配功能,沒有美顏的直播主播們根本提不起興趣。我們見過太多case是因為沒有美顏功能被拋棄使用的。另外國家明確提出了,所有直播都必須打有水印并回放留存15天以上。所以,在選擇直播SDK時,沒有美顏和水印功能基本就可以選擇放棄了。

    美顏實際上是通過算法去識別圖像中的皮膚部分,再對皮膚區域進行色值調整。通常情況下人的膚色與周邊環境色調存在較大差異,通過顏色對比,找到皮膚的基本輪廓,進一步進行膚色檢查還可以確定人臉范圍。找到了皮膚的區域,可以進行色值調整、添加白色圖層或調整透明度等來等來達到美白效果。美顏除了美白效果還需要磨皮功能,磨皮實際上就是用模糊濾鏡實現的。濾鏡有很多種,如高斯濾波,雙邊濾波,導向濾波,到底選擇什么樣的模糊濾鏡各家也有自己的喜好。

    在美顏處理方面,最著名的GPUImage提供了豐富的效果,同時可以支持IOS和Android,還支持自己寫算法實現自己最理性的效果。GPUImage本事內置了120多種常見濾鏡效果,添加濾鏡只需要簡單調用幾行代碼就可以了,比如大家可以試試使用GPUImageBilateralFiter的雙邊濾波濾鏡來處理基本的磨皮效果,想要實現更理想的效果還是要通過自定義算法去實現的,各家也都有自己一套算法。

    編碼

    為了便于手機視頻的推流、拉流以及存儲,通常采用視頻編碼壓縮技術來減少視頻的體積。現在比較常用的視頻編碼是H.264,但具有更高性能的H.265編碼技術正在飛速發展,并可能很快成為主流;在音頻方面,通比較常用的是用AAC編碼格式進行壓縮,其它如MP3、WMA也是可選方案。視頻經過編碼壓縮大大提高了視頻的存儲和傳輸效率,當然,經過壓縮后的視頻在播放時必須進行解碼。通俗點講就是編碼器將多張圖像進行編碼后產生一段段GOP(Group of Pictures),播放時解碼器讀取一段段GOP進行解碼后讀取圖像并進行渲染顯示。 在編碼方面的核心是在分辨率、碼率、幀率等參數中找到最佳平衡點,達到體積最小畫面最優的效果,這些參數各家也都有自己的一套核心參數。

    2012年8月,愛立信公司推出了首款H.265編解碼器,六個月后,國際電聯(ITU)就正式批準通過了HEVC/H.265標準,稱之為高效視頻編碼(High Efficiency Video Coding),相較于之前的H.264標準有了相當大的改善,做到了僅需要原來一半帶寬即可播放相同質量的視頻,低于1.5Mbps的網絡也能傳輸1080p的高清視頻。國內,如阿里云、金山云都在推自己的H.265編解碼技術,隨著直播的快速發展和對帶寬的依賴,H.265編解碼技術已有全面取代H.264的趨勢。當然,全面推開應用還需要些時間。
    另外,硬件編碼已經成為手機直播的首選方案,軟編碼處理在720p以上的視頻頹勢非常明顯。在IOS平臺上硬件編碼的兼容性比較好,可以直接采用,但在 Android 平臺上,Android的MediaCodec?編碼器,針對不同的芯片平臺表現差異還是非常大的,要完全實現全平臺兼容的成本還是非常高的。



    推流

    要想用于推流還必須把音視頻數據使用傳輸協議進行封裝,變成流數據。常用的流傳輸協議有RTSP、RTMP、HLS等,使用RTMP傳輸的延時通常在1–3秒,對于手機直播這種實時性要求非常高的場景,RTMP也成為手機直播中最常用的流傳輸協議。最后通過一定的Qos算法將音視頻流數據推送到網絡斷,通過CDN進行分發。 在直播場景中,網絡不穩定是非常常見的,這時就需要Qos來保證網絡不穩情況下的用戶觀看直播的體驗,通常是通過主播端和播放端設置緩存,讓碼率均勻。另外,針對實時變化的網絡狀況,動態碼率和幀率也是最常用的策略。

    當然,在網絡傳輸方面全部自己來做基本不現實,找提供推流服務的CDN服務商提供解決方案是最好的選擇,可參考文章開頭介紹的云視頻服務商。據了解,阿里云是國內唯一能自研CDN緩存服務器的廠商,性能還是非常有保障的。通常,大多數直播平臺都會同時接入多個視頻云服務提供商,這樣可以做拉流線路互備,對推流后視頻集群再進行優化也可提高直播的流暢性和穩定性。

    服務端處理需要做哪些工作?

    要想適配各終端和平臺,服務端還需要對流進行轉碼,如支持RTMP、HLS、FLV等格式拉流,支持一路轉多路適配不同網絡和分辨率的終端設備。另外,像現在必備的鑒黃功能也需要服務端完成。

    截圖、錄制、水印

    像阿里云、金山云、UCloud等云服務商都提供了實時轉碼技術將用戶推流碼率較高(比如720P)實時轉化成較低清晰度(比如360P)的流以適應播放端的需求。如果要自己搭建實時轉碼系統,這個成本是極高的。一臺8核設備只能實時轉10 路流,如果一個正常的直播平臺有1000路流,那至少就需要100臺設備,加上后期的運維成本,一般公司就吃不消了。實時截圖功能和實時轉碼類似,只是一般單機可以處理100路流。市面上云服務提供商基本上都提供了服務端轉碼、截圖、錄制功能,建議選擇好的云服務提供商即可,可以節約大量成本。

    鑒黃

    2016年,4月14日上午10時,文化部公布了一則消息,斗魚、虎牙、YY、熊貓TV、戰旗TV、龍珠直播、六間房、9158等網絡直播平臺因涉嫌提供含宣揚淫穢、暴力、教唆犯罪等內容的互聯網文化產品,被列入查處名單。文化部已部署相關執法機構查處涉案企業,將及時公布處罰結果。在前期的野蠻生長后,國家介入管制一定程度上遏制了直播的發展速度,但更有利于直播行業打造健康的生態,進入良性發展。這也意味著直播行業鑒黃成了必須環節,使用技術手段去鑒黃是手機直播平臺必然采用的方案。
    市面上提供鑒黃服務的方案主要有兩種,第一種是對視頻進行截圖,然后對圖片進行鑒黃,返回鑒黃結果和分值。典型的企業有阿里(綠網)、圖譜科技,他們目前都支持直接傳入視頻,經過服務端分析返回結果,鑒黃的結果分為色情、疑似色情、正常或性感,并對每種結果進行打分。通常由業務系統接入鑒黃服務,根據鑒黃結果對直播流進行控制,如切斷直播流、禁用用戶的賬號等。第二種是和CDN結合,直接對直播流進行分析,識別結果也分為色情、疑似色情、性感和正常,業務系統根據識別結果直接控制直播流。典型的企業是Viscovery,這套方案的優點是實時性保證比較好,缺點是必須部署到CDN或自己的機房,使用成本相對高一些。

    趣拍微視頻云服務作為一站式直播解決方案提供商,我們的主旨是讓用戶以最短時間、最小成本接入直播服務。因此,用戶只需在控制臺對鑒黃服務進行配置就可以針對每個應用,每一路直播流進行實時審核,審核內容包括色情、暴恐、時政敏感等。在控制臺中,趣拍微視頻服務實時將鑒黃結果返回,用戶可以直接查看色情直播和違規界面的截圖,同時可以對直播流進行控制,切斷問題直播流。我們提供了短信、郵件和站內信提供功能,避免漏洞一個非法視頻,給平臺造成損失。數據統計功能讓用戶可以把握平臺最新的動態信息,為進一步采取必要的措施提供可靠的依據。同時,為了滿足用戶定制化需求,我們還提供了豐富的接口,可以很方便的將鑒黃服務接入到自己的業務系統。

    播放器端需要做哪些工作?

    在播放器端如何做到秒開,在直播過程中保證畫面和聲音清晰度的同時,穩定、流程、無卡頓的直播流量,這些工作都需要播放器端配合服務端來做優化,做到精確調度。

    拉流

    拉流實際是推流的逆過程。首先通過播放端獲取碼流,標準的拉流格式有RTMP、HLS、FLV等。RTMP是Adobe的專利協議,開源軟件和開源庫都支持的比較好,如開源的librtmp庫,播放端只要支持flashPlayer的就能非常簡單的播放RTMP直播,直播延遲一般在1–3秒。HLS是蘋果提出的基于HTTP的流媒體傳輸協議,HTML5可以直接打開播放,通過微信、QQ等軟件分享出去,用戶也可以直接觀看直播,可以說手機直播app,HLS拉流協議是必須支持的,缺點是延遲通常大于10秒。FLV(HTTP-FLV)協議是使用HTTP協議傳輸流媒體內容的一個協議,也不用擔心被Adobe的專利綁架,直播延遲同樣可以做到1–3秒。

    趣拍微視頻云服務的直播拉流提供了RTMP、HLS、FLV三種格式,滿足不同業務場景的需求,如對即時性要求較高或有互動需求的可以采用RTMP或FLV格式進行直播拉流播放;對于有回放或跨平臺需求的,推薦使用HLS。當然,三種協議是可以同時使用的,分別用到自己的場景就可以了。

    解碼和渲染

    拉流獲取封裝的視頻數據后,必須通過解碼器解碼、渲染后才能在播放器上播放。它是編碼的逆過程,是指從音視頻的數據中提取原始數據。前面介紹的H.264和H.265編碼格式都是有損壓縮,所以在提取后的原始數據,并非原始采樣數據,存在一定的信息丟失。因此,在視頻體積最小的情況下通過各種編碼參數保留最好的原始畫面,成為了各視頻公司的核心機密。

    考慮對高清的支持,解碼肯定還是要選擇硬解碼的。前面介紹過,IOS系統由于硬件比較單一、比較封閉,支持的比較好,Android系統由于平臺差異非常大,編解碼要完全兼容各平臺還需要很多工作要做。

    渲染最大的難點不在與畫面繪制,而在于畫音同步,業內大部分直播平臺在這塊做的都還是不夠的。我們在這方面積累了一些經驗和大家分享。

    手機直播中的交互系統

    手機直播中最常見的交互有聊天室(彈幕)、點贊、打賞和禮物等,有些比較有特色的手機直播平臺也加入了和主播互動的游戲功能。交互系統涉及消息的實時性和互動性,在技術實現上大多是使用IM的功能來實現的,對服務器的壓力也是比較大。 對于在線人數比較多的房間,彈幕消息量是非常大,主播與用戶其實都看不過來,為了緩解服務器壓力,在產品策略可以做一些必要的優化,比如對于發送消息的頻率進行限制或對每條消息發送對象的上限進行限制等。

    聊天室

    手機直播中的彈幕交互功能已經成為直播必不可少的部分,是用戶和主播互動的主要方式。手機直播中的彈幕實際上就是IM中的聊天室功能。聊天室和群聊功能類似,但聊天室的消息是不需要分發給不在線的用戶的,對于歷史消息也不需要查看,用戶只有進入聊天室后才能查看聊天消息和群成員信息。要面對復雜多變的網絡狀況,還需要根據用戶位置就近選擇近對應運營商的單線機房接入彈幕消息服務,讓彈幕更及時。當然,可以根據團隊情況選擇自己搭建還是選擇第三方的聊天服務。

    趣拍直播SDK提供豐富的聊天室功能和接口,以最簡單的方式對接自己的聊天系統或第三方的聊天系統。

    禮物系統

    禮物系統已是絕大多數手機直播平臺的標配了,它是這些平臺主要的收入來源。在手機直播平臺上我們常常可以見到土豪秒榜、土豪對刷的情景,據報道,明星直播一場禮物收入幾十萬也是常有的事,一年千萬收入的網紅也不少,可見國內有禮物消費習慣的土豪還不少。另一方面,送禮物的形式增強了用戶和主播之間的互動交流,也是主播依賴平臺的最主要原因。

    禮物的收發在技術實現上也是用聊天室接口做的,通常采用IM中的自定義消息實現,當用戶收到或發送禮物時將自定義消息對應的禮物圖形渲染出來。另外,面對大量用戶刷禮物時,禮物系統對一致性要求就比較高了,所以在實現上存一份數據建多條索引是一種很好的選擇,也可以降低對事務的依賴。

    手機直播的前景

    手機直播行業現在如此火熱,我們認為這個火熱會在很長一段時間內持續,并且在未來通過和各行業的整合,會成為具有無限可能性的行業。所以直播SDK的選擇也成為一些企業的轉折點,就比如趣拍直播SDK吧,擁有視頻開發行業長達10年的歷史,和阿里云、支付寶、釘釘、芒果直播有著緊密的合作,關于趣拍直播的云服務和技術總是能跑在行業的前面,選擇趣拍直播SDK是一種信任。

    往主要原因包括如下幾點:

    第一,手機直播的UGC生產模式比PC端的直播更明顯,人人都有設備,隨時隨地開播,完全順應了互聯網時代的開放性原則,全民直播時代將內容生產潛力發揮到最大。如今,“網紅經濟”如此火熱,更是刺激更多人去創造和傳播優質內容。作為網紅經濟的代表,papi醬融資1200萬,估值2億,廣告招標溝通會門票8000元/張,單條貼片廣告中標價2200萬,一個個數字都如此刺激大眾眼球。手機直播中的網紅價值也在被更多創業者重視,擁有極大的增漲空間。

    第二,網絡帶寬和速度在逐漸提高,網絡成本在逐漸下降,4G乃至今后的5G也會像今天的有線網絡那么廉價,為手機直播提供一個極佳的發展環境。技術的發展,手機可以承載的內容也就越豐富,文字、聲音、視頻、游戲等都會在手機直播中呈現,創造更加豐富的用戶體驗。各行業都可以將直播作為一種工具接入到自己的應用中,教育、社交、電商、金融等行業都可以通過手機直播形式開展新業務,增強與用戶之間的互動,提高用戶粘性。比如,教育領域中的課后輔導完全可以以直播的形式開展業務,電商也可借助直播讓用戶挑選商品,促進銷售。

    第三,一個與VR/AR技術相結合的手機直播為整個行業的未來提供了新的發展空間。VR/AR直播能夠讓用戶身臨其境,帶動主播與觀眾更貼切真實的互動,大大提高平臺的用戶參與度。更加創新的硬件設備與直播的結合,如穿戴設備,更加豐富的傳感器,更方便的采集信息,也將會大大拓展手機直播未來的應用場景。哪家公司如果在VR/AR和穿戴設備上取得突破性進展勢必會在直播行業取得領先地位。

    總之,手機直播欣欣向榮的發展已是必然趨勢,盡管國家層級在加強管控、內容創作上還比較單一,紅海一片搏死拼殺,但是它的未來是一個具有無限可能的超級市場,這個領域必然將會誕生千億市值的巨頭。

    播推流端即主播端,主要通過手機攝像頭采集視頻數據和麥克風采集音頻數據,經過一系列前處理、編碼、封裝,然后推流到CDN進行分發。




    參考知識:
    http://www.jianshu.com/p/8436c7353296
    http://blog.csdn.net/huaxun66/article/details/53427771
    http://www.jianshu.com/p/7ebbcc0c5df7

    http://www.cnblogs.com/Leo_wl/p/5646916.html
    直播的系列教程: http://blog.csdn.net/jwzhangjie/article/details/9947559

    從快播到直播

    視頻直播的應用的場景:
    即時通訊視頻直播互動直播在線教育

    網易云通信直播源自網易多年視頻技術沉淀,基于專業的跨平臺視頻編解碼技術和大規模視頻內容分發網絡,提供穩定流暢、低延時、高并發的實時音視頻服務,有視頻直播需求的用戶可調用網易云通信直播提供的API或SDK即可將視頻直播無縫對接到自身的業務應用系統。

    本服務適用于各類音視頻直播場景,比如教育行業的在線教育、網絡課堂等,娛樂行業的美女直播、游戲直播等,廣電行業的電視直播、賽事直播等,另外還適用于企業協作、遠程醫療、云監控、庭審直播等其他視頻相關行業。





    視頻和直播的準備:

    android-java層:camera相關(視頻)、AudioRecord(音頻)相關、MediaCodec相關(音視頻編碼)
    android-native層(c++):h264、h265等編碼庫的調用;各種音頻編碼庫的使用(aac、amr、mp3、g711等);容器封裝技術(音視頻封裝ts、ps等);媒體協議(hls、rtsp、rtmp等)

    socket編程;android-ndk編譯so技術;jni技術


    難點:

    大概就這么多,如果細說還有許多細節,比如音視頻同步,傳輸過程中的QOS等等問題

    android系統版本太多,直接用android 系統接口的話,會有很多坑,例如mediacodec有的支持編碼264,有的不支持,所以要配合第三方庫一起使用,如果只是單純的會java,那么android直播這里是玩不轉的


    直播的完整 SDK選擇方案: http://www.cctime.com/html/2016-6-6/1179900.htm
    即構科技:就在深南大道 :即構科技的CEO林友堯,是原騰訊QQ即通部門總經理
    要分開一個一個說。我最熟悉的是花椒(huajiao),他們家技術牛逼,單向直播的功能是自己做的, 技術和產品和運營都是行業翹楚,沒的說的。他們的互動直播(連麥,多主播)是在2016年的9月左右上線的吧,用的是即構科技(ZEGO)的互動直播方案/SDK。 不是說他們做不出來,而是他們不能短時間做出來,短時間內需要把主要精力放在主營業務上,所以就用了即構科技(zego.im)的互動直播SDK,單向直播部分還是用他們自己的。

    作者:柴文多
    鏈接:https://www.zhihu.com/question/36076688/answer/130681539
    來源:知乎
    著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
    看看一線的直播平臺在用哪些第三方公司的直播SDK?比如說花椒和一直播用了即構科技的。====但是我沒有看到SDK
    不要用網易,功能不完全,推流有內建參數,無法設置高碼流和高幀數,延遲高
    不要用趣拍,穩定性差,延遲高,SDK太大 ,趣拍直播就很不錯,SDK很好集成,芒果直播也在用
    不要用百度,響應慢,低畫質馬賽克,高畫質延遲高
    大牛直播:有比較好的文檔和技術支持 虎牙直播是YY的,自然是用YY的方案了
    斗魚用網宿,映客用騰訊云,熊貓用網宿和迅雷等
    七云牛:直播 https://github.com/daniulive/SmarterStreaming 騰訊云https://www.qcloud.com/document/product/267/4735

    主流的視頻和音頻的解碼

    vitamio==============美拍

    ffmpeg==============主流

    ijkplayer=============斗魚,網易音樂 ? ??嗶哩嗶哩的ijkplayer了。

    vlc==================YY

    webRTC? :網頁端的

    1).vitamio這個是功能很強大,但是企業收費版的,個人用戶可以玩玩.美拍,結果對于非個人移動應用均需購買Vitamio使用授權

    流媒體支持

    Vitamio支持各種常見的流媒體協議,可以點播或者直播音頻和視頻,例如如下常見協議均能無縫支持:
    Vitamio使用了 FFmpeg 做為媒體解析器和最主要的解碼器,同時開發了針對不同移動平臺的硬解碼方案,能夠完美支持 H.264/AVC、H.263、MPEG4 等常見的視頻編碼,覆蓋上百種多媒體格式。
    • MMS
    • RTSP (RTP, SDP), RTMP
    • HTTP progressive streaming
    • HLS - HTTP live streaming (M3U8) Vitamio ? 新浪微博(安卓客戶端),搜狐視頻(安卓客戶端),風行網(安卓客戶端),歌華有線,熊貓影音(91網龍),視訊中國(央視),法國航空,懸浮瀏覽器等等

    2).ffmpeg是一個非常強大的音視頻編解碼開源庫,目前市場上流行的播放器,大部分都是基于此開發的,包括暴風,騰訊,等等以及上面提到的vitamio,vlc,ijkplayer
    關于ffmpeg源碼分析,有興趣的請看雷霄驊(leixiaohua1020)的專欄

    發現網易云音樂,斗魚用的ijkplayer,

    3).ijkplayer是一個基于FFmpeg的輕量級Android/iOS視頻播放器。FFmpeg的是全球領先的多媒體框架,能夠解碼,編碼, 轉碼,復用,解復用,流,過濾器和播放大部分的視頻格式

    • 4.vlc 支持android開發 ,ijkplayer也支持. 通過反編譯網易云音樂,以及YY等音視頻app.YY用的VLC. VLC Media Player (VideoLAN)?為 Windows、Linux、OS X、Android、iOS、Windows Phone?等平臺提供一個視頻播放器、解碼器。它可以播放來自網絡、攝像頭、磁盤、光驅的文件,支持包括MPEG 1/2/4, H264, VC-1, DivX, WMV, Vorbis, AC3, AAC等格式的解碼。

    4). ??目前WebRtc只適合小范圍(8人以內)音視頻會議,不適合做直播可以用WebRTC來做視頻直播嗎? ? ? ? ?接下來介紹下 ffmpeg vlc ijkplayer以及選擇方案

    1.1基本概念: 視頻是什么

    靜止的畫面叫圖像(picture)。連續的圖像變化每秒超過24幀(frame)畫面以上時,根椐視覺暫留原理, 人眼無法辨別每付單獨的靜態畫面,看上去是平滑連續的視覺效果。這樣的連續畫面叫視頻。 當連續圖像變化每秒低于24幀畫面時,人眼有不連續的感覺叫動畫(cartoon)

    流媒體 所謂流媒體是指采用流式傳輸的方式在Internet播放的媒體格式。 流媒體又叫流式媒體,它是指商家用一個視頻傳送服務器把節目當成數據包發出,傳送到網絡上。 用戶通過解壓設備對這些數據進行解壓后,節目就會像發送前那樣顯示出來。 http://baike.baidu.com/link?url=4Ql7QicMGPpMMOHvIs_J7_GN85aIdA2axgnjLvTTfSLdMezUz-IwjoAh2m-zbZiPL1aUEbEhqTssIzaN4_XrxGMH1SOHdxopA6fraK8RcXom3NyY-YwhIm5gXrQH7-U4

    碼流
    碼流(Data Rate)是指視頻文件在單位時間內使用的數據流量,也叫碼率,是視頻編碼中畫面質量控制中最重要的部分。同樣分辨率下,視頻文件的碼流越大,壓縮比就越小,畫面質量就越好。
    一般我們用的單位是kbps即千位每秒。

    幀率

    幀/秒(frames per second)的縮寫,也稱為幀速率,測量用于保存、顯示動態視頻的信息數量。每一幀都是靜止的圖象,快速連續地顯示幀便形成了運動的假象。 每秒鐘幀數 (fps) 愈多,所顯示的動作就會愈流暢,可理解為1秒鐘時間里刷新的圖片的幀數,也可以理解為圖形處理器每秒鐘能夠刷新幾次,也就是指每秒鐘能夠播放(或者錄制)多少格畫面。

    1.2 多媒體的格式分類

    封裝格式(專業上講叫容器,通俗的叫文件格式),視頻編解碼,音頻編解碼 ####1.1常見的封裝格式 * MPEG : 編碼采用的容器,具有流的特性。里面又分為 PS,TS 等,PS 主要用于 DVD 存儲,TS 主要用于 HDTV. * MP 3 :大名鼎鼎的 MP3,已經成為網絡音頻的主流格式,能在 128kbps 的碼率接近 CD 音質 * MP4(Mp4) : 編碼采用的容器,基于 QuickTime MOV 開發,具有許多先進特性;實際上是對Apple公司開發的MOV格式(也稱Quicktime格式)的一種改進. * MKV: 它能把 Windows Media Video,RealVideo,MPEG-4 等視頻音頻融為一個文件,而且支持多音軌,支持章節字幕等;開源的容器格式 * 3GP : 3GPP視頻采用的格式, 主要用于流媒體傳送;3GP其實是MP4格式的一種簡化版本,是手機視頻格式的絕對主流. * MOV : QuickTime 的容器,恐怕也是現今最強大的容器,甚至支持虛擬現實技術,Java等,它的變種 MP4,3GP都沒有這么厲害;廣泛應用于Mac OS操作系統,在Windows操作系統上也可兼容,但是遠比不上AVI格式流行 * AVI : 最常見的音頻視頻容器,音頻視頻交錯(Audio Video Interleaved)允許視頻和音頻交錯在一起同步播放. * WAV : 一種音頻容器,大家常說的 WAV 就是沒有壓縮的 PCM 編碼,其實 WAV 里面還可以包括 MP3 等其他 ACM 壓縮編碼 等等
    http://baike.baidu.com/link?url=kR6hmAlRdnZgjwMpmZ2x1p1pXGX1QvmV-ZjaAlOyjYG42LmvabtaiMlStuReHZp0RgdPV3s_RSvVMOYhqVtQCeAK-XIyu-y8sypwVR03zDs6n1LaV8u8Hzi8HvtQ4as2xolijPfVkzItjsB0ZWiMtq

    1.3 流媒體協議(RTP RTCP RTSP RTMP HLS)

    參考地址: http://www.zhixing123.cn/computer/55326.html

    RTP :(Real-time Transport Protocol)是用于Internet上針對多媒體數據流的一種傳輸層協議.RTP協議和RTP控制協議RTCP一起使用,而且它是建立在UDP協議上的 RTCP:Real-time Transport Control Protocol或RTP Control Protocol或簡寫RTCP)實時傳輸控制協議,是實時傳輸協議(RTP)的一個姐妹協議 RTP協議和RTP控制協議RTCP一起使用,而且它是建立在UDP協議上的 RTSP:(Real Time Streaming Protocol)是用來控制聲音或影像的多媒體串流協議,RTSP提供了一個可擴展框架,使實時數據,如音頻與視頻的受控、點播成為可能。 數據源包括現場數據與存儲在剪輯中的數據。該協議目的在于控制多個數據發送連接,為選擇發送通道,如UDP、多播UDP與TCP提供途徑,并為選擇基于RTP上發送機制提供方法 傳輸時所用的網絡通訊協定并不在其定義的范圍內,服務器端可以自行選擇使用TCP或UDP來傳送串流內容,比較能容忍網絡延遲 RTP不像http和ftp可完整的下載整個影視文件,它是以固定的數據率在網絡上發送數據,客戶端也是按照這種速度觀看影視文件,當影視畫面播放過后,就不可以再重復播放,除非重新向服務器端要求數據。 RTSP與RTP最大的區別在于:RTSP是一種雙向實時數據傳輸協議,它允許客戶端向服務器端發送請求如回放、快進、倒退等操作。當然,RTSP可基于RTP來傳送數據,還可以選擇TCP、UDP、組播UDP等通道來發送數據,具有很好的擴展性。它時一種類似與http協議的網絡應用層協議
    RTSP協議族的優勢,在于可以控制到視頻幀,因此可以承載實時性很高的應用。這個優點是相對于HTTP方式的最大優點。倍速播放功能是RTSP協議獨有的,其他視頻協議都無法支持。
    缺點:就是服務器端的復雜度也比較高,實現起來也比較復雜。Ios端不支持該協議。


    在國內視頻網站多采用HTTP+MP4或者HTTP+FLV協議傳輸視頻,而國外使用RTMP,RTSP等專門的流媒體格式。

    質就是下載視頻文件,而利用視頻文件本身的特點,就是存在頭部信息,和部分視頻幀數據,就完全可以解碼播放了。顯然這種方式需要將視頻文件的頭部信息放在文件的前面



    RTMP協議
    ? ? RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。 RTMP(Real Time Messaging Protocol)實時消息傳送協議是Adobe?Systems公司為Flash播放器和服務器之間音頻、視頻和數據傳輸 開發的開放協議。 該協議基于TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議, 主要用來在Flash/AIR平臺和支持RTMP協議的流媒體/交互服務器之間進行音視頻和數據通信。支持該協議的軟件包括Adobe Media Server/Ultrant Media Server/red5等。



    HLS協議:
    HTTP Live Streaming(縮寫是HLS是一個由蘋果公司提出的基于HTTP流媒體網絡傳輸協議。是蘋果公司QuickTime XiPhone軟件系統的一部分。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。

    HTTP Live Streaming 還有一個巨大優勢:自適應碼率流播(adaptive streaming)。效果就是客戶端會根據網絡狀況自動選擇不同碼率的視頻流,條件允許的情況下使用高碼率,網絡繁忙的時候使用低碼率,并且自動在二者間隨意切換。這對移動設備網絡狀況不穩定的情況下保障流暢播放非常有幫助。實現方法是服務器端提供多碼率視頻流,并且在列表文件中注明,播放器根據播放進度和下載速度自動調整。使用起來也非常簡單。

    為什么蘋果要提出HLS這個協議,其實他的主要是為了解決RTMP協議存在的一些問題。比如RTMP協議不使用標準的HTTP接口傳輸數據,所以在一些特殊的網絡環境下可能被防火墻屏蔽掉。

    缺點:HLS 直播延時


    HLS支持的視頻編碼格式H264,支持的音頻編碼為Acc



    二. android音視頻的開發

    播放流程: 獲取流-->解碼-->播放
    錄制播放路程: 錄制音頻視頻-->剪輯-->編碼-->上傳服務器 別人播放.
    直播過程 : 錄制音視頻-->編碼-->流媒體傳輸-->服務器--->流媒體傳輸到其他app-->解碼-->播放

    幾個重要的環節

  • 錄制音視頻 AudioRecord/MediaRecord
  • 視頻剪輯 mp4parser 或ffmpeg
  • 音視頻編碼 aac&h264 ? ?視頻的編碼格式為H264,
  • 上傳大文件 網絡框架,進度監聽,斷點續傳
  • 流媒體傳輸 流媒體傳輸協議rtmp rtsp hls
  • 音視頻解碼 aac&h264
  • 渲染播放?MediaPlayer





  • 網易的直播架構:
    直播有2種,一種是直播,還有一種是互動直播。
    推流端和拉流端 主要的協議:Http,RTMP,HLS





    其中上行RTMP推流很普遍了,很多游戲直播都使用obs推RTMP流。

      在整個過程中,涉及很多流媒體的基本概念,先說說GOP。

      GOP即Group of picture(圖像組),指兩個I幀之間的距離。即幾秒有一個關鍵幀。分析線上主流的移動直播APP,大都在2、3秒之間。  


    一般的云服務公司都會提供多種協議的拉流方式,優缺點如下:

      l HLS協議,移動h5瀏覽器支持較好,但是延遲較大。移動端播放前需要產生三個分片,每個分片至少得是一個GOP。一個GOP即使是2秒,也意味著這個環節耗費了6秒的延時。

      l RTMP協議,需要訪問1935端口,支持雙向互動,實時性很好,PC?flash原生支持。

      l HTTP-FLV,不支持雙向互動,實時性和RTMP協議一致。

      基于以下幾點理由,小弟準備采用HTTP-FLV作為拉流協議

      1. 國內網絡情況的惡劣程度,并不是每個網絡防火墻都允許1935包通過。

      2. RTMP協議和HTTP-FLV,實際傳輸的內容都是相同的FLV,實時性也一樣。

      3. RTMP協議握手方式比HTTP復雜。

      確定好了拉流協議,再看看推流側依賴的參數。

      l FPS,每秒編碼傳輸的視頻幀數;

      l 碼率,每秒編碼傳輸的音視頻比特數;

      l GOP,關鍵幀間隔;


    1) 能完全運行起來的是金山云、百度云提供的SDK。



    我們先看下搭建一個完整的手機直播都包含哪些必須的環節:

    推流端(采集、前處理、編碼、推流),

    服務端處理(轉碼、錄制、截圖、鑒黃),

    播放器(拉流、解碼、渲染)、

    互動系統(聊天室、禮物系統、贊)



    手機直播推流端需要做哪些工作?

    直播推流端即主播端,主要通過手機攝像頭采集視頻數據和麥克風采集音頻數據,經過一系列前處理、編碼、封裝,然后推流到CDN進行分發。CDN的全稱是Content Delivery Network
    采集

    手機直播SDK通過手機攝像頭和麥克風直接采集視頻數據和音頻數據。其中,視頻采樣數據一般采用RGB或YUV格式、音頻采樣數據一般采用PCM格式。對于采集到的原始音視頻的體積是非常大的,因此需要經過壓縮技術來處理,降低視頻的大小來提示傳輸效率。 在手機視頻采集方面,iOS系統在硬件的兼容性方面做得比較好,系統本身提供了比較完整的視頻采集的接口,使用起來也比較簡單。但是,Android系統就比較麻煩了,千奇百怪的機型都有,適配起來非常難。我們在初期做了一項調研,發現Android的適配率還不到50%。

    前處理

    在這個環節主要處理美顏、水印、模糊等效果。特別是美顏功能幾乎是直播的標配功能,沒有美顏的直播主播們根本提不起興趣。我們見過太多case是因為沒有美顏功能被拋棄使用的。另外國家明確提出了,所有直播都必須打有水印并回放留存15天以上。所以,在選擇直播SDK時,沒有美顏和水印功能基本就可以選擇放棄了。

    美顏實際上是通過算法去識別圖像中的皮膚部分,再對皮膚區域進行色值調整。通常情況下人的膚色與周邊環境色調存在較大差異,通過顏色對比,找到皮膚的基本輪廓,進一步進行膚色檢查還可以確定人臉范圍。找到了皮膚的區域,可以進行色值調整、添加白色圖層或調整透明度等來等來達到美白效果。美顏除了美白效果還需要磨皮功能,磨皮實際上就是用模糊濾鏡實現的。濾鏡有很多種,如高斯濾波,雙邊濾波,導向濾波,到底選擇什么樣的模糊濾鏡各家也有自己的喜好。

    在美顏處理方面,最著名的GPUImage提供了豐富的效果,同時可以支持IOS和Android,還支持自己寫算法實現自己最理性的效果。GPUImage本事內置了120多種常見濾鏡效果,添加濾鏡只需要簡單調用幾行代碼就可以了,比如大家可以試試使用GPUImageBilateralFiter的雙邊濾波濾鏡來處理基本的磨皮效果,想要實現更理想的效果還是要通過自定義算法去實現的,各家也都有自己一套算法。

    編碼

    為了便于手機視頻的推流、拉流以及存儲,通常采用視頻編碼壓縮技術來減少視頻的體積。現在比較常用的視頻編碼是H.264,但具有更高性能的H.265編碼技術正在飛速發展,并可能很快成為主流;在音頻方面,通比較常用的是用AAC編碼格式進行壓縮,其它如MP3、WMA也是可選方案。視頻經過編碼壓縮大大提高了視頻的存儲和傳輸效率,當然,經過壓縮后的視頻在播放時必須進行解碼。通俗點講就是編碼器將多張圖像進行編碼后產生一段段GOP(Group of Pictures),播放時解碼器讀取一段段GOP進行解碼后讀取圖像并進行渲染顯示。 在編碼方面的核心是在分辨率、碼率、幀率等參數中找到最佳平衡點,達到體積最小畫面最優的效果,這些參數各家也都有自己的一套核心參數。

    2012年8月,愛立信公司推出了首款H.265編解碼器,六個月后,國際電聯(ITU)就正式批準通過了HEVC/H.265標準,稱之為高效視頻編碼(High Efficiency Video Coding),相較于之前的H.264標準有了相當大的改善,做到了僅需要原來一半帶寬即可播放相同質量的視頻,低于1.5Mbps的網絡也能傳輸1080p的高清視頻。國內,如阿里云、金山云都在推自己的H.265編解碼技術,隨著直播的快速發展和對帶寬的依賴,H.265編解碼技術已有全面取代H.264的趨勢。當然,全面推開應用還需要些時間。
    另外,硬件編碼已經成為手機直播的首選方案,軟編碼處理在720p以上的視頻頹勢非常明顯。在IOS平臺上硬件編碼的兼容性比較好,可以直接采用,但在 Android 平臺上,Android的MediaCodec?編碼器,針對不同的芯片平臺表現差異還是非常大的,要完全實現全平臺兼容的成本還是非常高的。



    推流

    要想用于推流還必須把音視頻數據使用傳輸協議進行封裝,變成流數據。常用的流傳輸協議有RTSP、RTMP、HLS等,使用RTMP傳輸的延時通常在1–3秒,對于手機直播這種實時性要求非常高的場景,RTMP也成為手機直播中最常用的流傳輸協議。最后通過一定的Qos算法將音視頻流數據推送到網絡斷,通過CDN進行分發。 在直播場景中,網絡不穩定是非常常見的,這時就需要Qos來保證網絡不穩情況下的用戶觀看直播的體驗,通常是通過主播端和播放端設置緩存,讓碼率均勻。另外,針對實時變化的網絡狀況,動態碼率和幀率也是最常用的策略。

    當然,在網絡傳輸方面全部自己來做基本不現實,找提供推流服務的CDN服務商提供解決方案是最好的選擇,可參考文章開頭介紹的云視頻服務商。據了解,阿里云是國內唯一能自研CDN緩存服務器的廠商,性能還是非常有保障的。通常,大多數直播平臺都會同時接入多個視頻云服務提供商,這樣可以做拉流線路互備,對推流后視頻集群再進行優化也可提高直播的流暢性和穩定性。

    服務端處理需要做哪些工作?

    要想適配各終端和平臺,服務端還需要對流進行轉碼,如支持RTMP、HLS、FLV等格式拉流,支持一路轉多路適配不同網絡和分辨率的終端設備。另外,像現在必備的鑒黃功能也需要服務端完成。

    截圖、錄制、水印

    像阿里云、金山云、UCloud等云服務商都提供了實時轉碼技術將用戶推流碼率較高(比如720P)實時轉化成較低清晰度(比如360P)的流以適應播放端的需求。如果要自己搭建實時轉碼系統,這個成本是極高的。一臺8核設備只能實時轉10 路流,如果一個正常的直播平臺有1000路流,那至少就需要100臺設備,加上后期的運維成本,一般公司就吃不消了。實時截圖功能和實時轉碼類似,只是一般單機可以處理100路流。市面上云服務提供商基本上都提供了服務端轉碼、截圖、錄制功能,建議選擇好的云服務提供商即可,可以節約大量成本。

    鑒黃

    2016年,4月14日上午10時,文化部公布了一則消息,斗魚、虎牙、YY、熊貓TV、戰旗TV、龍珠直播、六間房、9158等網絡直播平臺因涉嫌提供含宣揚淫穢、暴力、教唆犯罪等內容的互聯網文化產品,被列入查處名單。文化部已部署相關執法機構查處涉案企業,將及時公布處罰結果。在前期的野蠻生長后,國家介入管制一定程度上遏制了直播的發展速度,但更有利于直播行業打造健康的生態,進入良性發展。這也意味著直播行業鑒黃成了必須環節,使用技術手段去鑒黃是手機直播平臺必然采用的方案。
    市面上提供鑒黃服務的方案主要有兩種,第一種是對視頻進行截圖,然后對圖片進行鑒黃,返回鑒黃結果和分值。典型的企業有阿里(綠網)、圖譜科技,他們目前都支持直接傳入視頻,經過服務端分析返回結果,鑒黃的結果分為色情、疑似色情、正常或性感,并對每種結果進行打分。通常由業務系統接入鑒黃服務,根據鑒黃結果對直播流進行控制,如切斷直播流、禁用用戶的賬號等。第二種是和CDN結合,直接對直播流進行分析,識別結果也分為色情、疑似色情、性感和正常,業務系統根據識別結果直接控制直播流。典型的企業是Viscovery,這套方案的優點是實時性保證比較好,缺點是必須部署到CDN或自己的機房,使用成本相對高一些。

    趣拍微視頻云服務作為一站式直播解決方案提供商,我們的主旨是讓用戶以最短時間、最小成本接入直播服務。因此,用戶只需在控制臺對鑒黃服務進行配置就可以針對每個應用,每一路直播流進行實時審核,審核內容包括色情、暴恐、時政敏感等。在控制臺中,趣拍微視頻服務實時將鑒黃結果返回,用戶可以直接查看色情直播和違規界面的截圖,同時可以對直播流進行控制,切斷問題直播流。我們提供了短信、郵件和站內信提供功能,避免漏洞一個非法視頻,給平臺造成損失。數據統計功能讓用戶可以把握平臺最新的動態信息,為進一步采取必要的措施提供可靠的依據。同時,為了滿足用戶定制化需求,我們還提供了豐富的接口,可以很方便的將鑒黃服務接入到自己的業務系統。

    播放器端需要做哪些工作?

    在播放器端如何做到秒開,在直播過程中保證畫面和聲音清晰度的同時,穩定、流程、無卡頓的直播流量,這些工作都需要播放器端配合服務端來做優化,做到精確調度。

    拉流

    拉流實際是推流的逆過程。首先通過播放端獲取碼流,標準的拉流格式有RTMP、HLS、FLV等。RTMP是Adobe的專利協議,開源軟件和開源庫都支持的比較好,如開源的librtmp庫,播放端只要支持flashPlayer的就能非常簡單的播放RTMP直播,直播延遲一般在1–3秒。HLS是蘋果提出的基于HTTP的流媒體傳輸協議,HTML5可以直接打開播放,通過微信、QQ等軟件分享出去,用戶也可以直接觀看直播,可以說手機直播app,HLS拉流協議是必須支持的,缺點是延遲通常大于10秒。FLV(HTTP-FLV)協議是使用HTTP協議傳輸流媒體內容的一個協議,也不用擔心被Adobe的專利綁架,直播延遲同樣可以做到1–3秒。

    趣拍微視頻云服務的直播拉流提供了RTMP、HLS、FLV三種格式,滿足不同業務場景的需求,如對即時性要求較高或有互動需求的可以采用RTMP或FLV格式進行直播拉流播放;對于有回放或跨平臺需求的,推薦使用HLS。當然,三種協議是可以同時使用的,分別用到自己的場景就可以了。

    解碼和渲染

    拉流獲取封裝的視頻數據后,必須通過解碼器解碼、渲染后才能在播放器上播放。它是編碼的逆過程,是指從音視頻的數據中提取原始數據。前面介紹的H.264和H.265編碼格式都是有損壓縮,所以在提取后的原始數據,并非原始采樣數據,存在一定的信息丟失。因此,在視頻體積最小的情況下通過各種編碼參數保留最好的原始畫面,成為了各視頻公司的核心機密。

    考慮對高清的支持,解碼肯定還是要選擇硬解碼的。前面介紹過,IOS系統由于硬件比較單一、比較封閉,支持的比較好,Android系統由于平臺差異非常大,編解碼要完全兼容各平臺還需要很多工作要做。

    渲染最大的難點不在與畫面繪制,而在于畫音同步,業內大部分直播平臺在這塊做的都還是不夠的。我們在這方面積累了一些經驗和大家分享。

    手機直播中的交互系統

    手機直播中最常見的交互有聊天室(彈幕)、點贊、打賞和禮物等,有些比較有特色的手機直播平臺也加入了和主播互動的游戲功能。交互系統涉及消息的實時性和互動性,在技術實現上大多是使用IM的功能來實現的,對服務器的壓力也是比較大。 對于在線人數比較多的房間,彈幕消息量是非常大,主播與用戶其實都看不過來,為了緩解服務器壓力,在產品策略可以做一些必要的優化,比如對于發送消息的頻率進行限制或對每條消息發送對象的上限進行限制等。

    聊天室

    手機直播中的彈幕交互功能已經成為直播必不可少的部分,是用戶和主播互動的主要方式。手機直播中的彈幕實際上就是IM中的聊天室功能。聊天室和群聊功能類似,但聊天室的消息是不需要分發給不在線的用戶的,對于歷史消息也不需要查看,用戶只有進入聊天室后才能查看聊天消息和群成員信息。要面對復雜多變的網絡狀況,還需要根據用戶位置就近選擇近對應運營商的單線機房接入彈幕消息服務,讓彈幕更及時。當然,可以根據團隊情況選擇自己搭建還是選擇第三方的聊天服務。

    趣拍直播SDK提供豐富的聊天室功能和接口,以最簡單的方式對接自己的聊天系統或第三方的聊天系統。

    禮物系統

    禮物系統已是絕大多數手機直播平臺的標配了,它是這些平臺主要的收入來源。在手機直播平臺上我們常常可以見到土豪秒榜、土豪對刷的情景,據報道,明星直播一場禮物收入幾十萬也是常有的事,一年千萬收入的網紅也不少,可見國內有禮物消費習慣的土豪還不少。另一方面,送禮物的形式增強了用戶和主播之間的互動交流,也是主播依賴平臺的最主要原因。

    禮物的收發在技術實現上也是用聊天室接口做的,通常采用IM中的自定義消息實現,當用戶收到或發送禮物時將自定義消息對應的禮物圖形渲染出來。另外,面對大量用戶刷禮物時,禮物系統對一致性要求就比較高了,所以在實現上存一份數據建多條索引是一種很好的選擇,也可以降低對事務的依賴。

    手機直播的前景

    手機直播行業現在如此火熱,我們認為這個火熱會在很長一段時間內持續,并且在未來通過和各行業的整合,會成為具有無限可能性的行業。所以直播SDK的選擇也成為一些企業的轉折點,就比如趣拍直播SDK吧,擁有視頻開發行業長達10年的歷史,和阿里云、支付寶、釘釘、芒果直播有著緊密的合作,關于趣拍直播的云服務和技術總是能跑在行業的前面,選擇趣拍直播SDK是一種信任。

    往主要原因包括如下幾點:

    第一,手機直播的UGC生產模式比PC端的直播更明顯,人人都有設備,隨時隨地開播,完全順應了互聯網時代的開放性原則,全民直播時代將內容生產潛力發揮到最大。如今,“網紅經濟”如此火熱,更是刺激更多人去創造和傳播優質內容。作為網紅經濟的代表,papi醬融資1200萬,估值2億,廣告招標溝通會門票8000元/張,單條貼片廣告中標價2200萬,一個個數字都如此刺激大眾眼球。手機直播中的網紅價值也在被更多創業者重視,擁有極大的增漲空間。

    第二,網絡帶寬和速度在逐漸提高,網絡成本在逐漸下降,4G乃至今后的5G也會像今天的有線網絡那么廉價,為手機直播提供一個極佳的發展環境。技術的發展,手機可以承載的內容也就越豐富,文字、聲音、視頻、游戲等都會在手機直播中呈現,創造更加豐富的用戶體驗。各行業都可以將直播作為一種工具接入到自己的應用中,教育、社交、電商、金融等行業都可以通過手機直播形式開展新業務,增強與用戶之間的互動,提高用戶粘性。比如,教育領域中的課后輔導完全可以以直播的形式開展業務,電商也可借助直播讓用戶挑選商品,促進銷售。

    第三,一個與VR/AR技術相結合的手機直播為整個行業的未來提供了新的發展空間。VR/AR直播能夠讓用戶身臨其境,帶動主播與觀眾更貼切真實的互動,大大提高平臺的用戶參與度。更加創新的硬件設備與直播的結合,如穿戴設備,更加豐富的傳感器,更方便的采集信息,也將會大大拓展手機直播未來的應用場景。哪家公司如果在VR/AR和穿戴設備上取得突破性進展勢必會在直播行業取得領先地位。

    總之,手機直播欣欣向榮的發展已是必然趨勢,盡管國家層級在加強管控、內容創作上還比較單一,紅海一片搏死拼殺,但是它的未來是一個具有無限可能的超級市場,這個領域必然將會誕生千億市值的巨頭。

    播推流端即主播端,主要通過手機攝像頭采集視頻數據和麥克風采集音頻數據,經過一系列前處理、編碼、封裝,然后推流到CDN進行分發。




    參考知識:
    http://www.jianshu.com/p/8436c7353296
    http://blog.csdn.net/huaxun66/article/details/53427771
    http://www.jianshu.com/p/7ebbcc0c5df7

    http://www.cnblogs.com/Leo_wl/p/5646916.html
    直播的系列教程: http://blog.csdn.net/jwzhangjie/article/details/9947559

    總結

    以上是生活随笔為你收集整理的Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。