多媒體實時直播的方法和裝置的制造方法
【專利摘要】本發明涉及通信技術領域,公開了多媒體實時直播的方法和裝置,該方法包括:接收多媒體流;將接收的多媒體流轉化為實時消息傳輸協議RTMP流;將所述RTMP流傳輸給服務器,以使所述服務器對所述RTMP流進行分發來實現多媒體流的實時直播。本發明能夠將實時獲得的多媒體傳輸給服務器,通過服務器分發實現多媒體的實時播放;此外,因為采用RTMP流進行多媒體傳輸,可以利用各種通信網絡,承載多媒體數據,進而使用戶能夠在多種環境下進行多媒體實時播放。
【專利說明】
多媒體實時直播的方法和裝置
技術領域
[0001]本發明涉及通信技術領域,具體地,涉及一種多媒體實時直播的方法和裝置。
【背景技術】
[0002]隨著智能終端技術的發展,用戶進行視頻拍攝和音頻錄音變得越來越容易。用戶在完成視頻拍攝或音頻錄音后,可能會希望將該視頻或音頻與他人分享。在此種情況下,需要解決如何與他人分享多媒體數據的問題。
[0003]相關技術中采用多種方式進行多媒體數據的分享。例如,在視頻拍攝完成后,在即時通信工具中發布該視頻,使得同一群組中的好友可以分享用戶的視頻。或者,在視頻拍攝完成后,將視頻發布在平臺網站中,使得公眾可以瀏覽到用戶拍攝的視頻。上述多媒體播放的方法,都是在用戶完成多媒體數據錄制之后進行共享,其無法實現對多媒體的實時播放。因此,針對現有技術需要提供一種能夠實時播放多媒體的技術。
【發明內容】
[0004]本發明的目的是提供多媒體實時直播的方法和裝置,以解決或者至少部分地解決上述技術問題。
[0005]為了實現上述目的,本發明提供一種多媒體實時直播的方法,該方法包括:接收多媒體流;將接收的多媒體流轉化為實時消息傳輸協議RTMP流;將所述RTMP流傳輸給服務器,以使所述服務器對所述RTMP流進行分發來實現多媒體流的實時直播。
[0006]優選地,所述接收多媒體流包括:接收所述終端設備中拍攝組件拍攝的視頻和/或音頻數據流。
[0007]優選地,所述將接收的多媒體流轉化為實時消息傳輸協議RTMP流包括:調用終端設備的操作系統中媒體記錄器將接收的多媒體流編碼成實時傳輸協議RTP流;對RTP流進行格式轉換,將RTP流轉換為RTMP流。
[0008]優選地,所述將所述RTMP流傳輸給服務器包括:在接收到開始指令后,獲取服務器的IP地址和端口號;根據獲取的服務器的IP地址和端口號與所述服務器建立連接;利用建立的連接將所述RTMP流傳輸給所述服務器。
[0009]優選地,所述方法還包括:接收到停止指令后,停止將所述RTMP流傳輸給所述服務器,并停止將接收的多媒體流轉化為RTMP流。
[0010]根據本發明的另一方面,提供一種多媒體實時直播的裝置,該裝置包括:多媒體接收模塊,用于接收多媒體流;數據轉化模塊,用于將接收的多媒體流轉化為實時消息傳輸協議RTMP流;數據傳輸模塊,用于將所述RTMP流傳輸給服務器,以使所述服務器對所述RTMP流進行分發來實現多媒體流的實時直播。
[0011]優選地,所述多媒體接收模塊用于接收所述終端設備中拍攝組件拍攝的視頻和/或音頻數據流。
[0012]優選地,所述數據轉化模塊用于調用終端設備的操作系統中媒體記錄器將接收的多媒體流編碼成實時傳輸協議RTP流;對RTP流進行格式轉換,將RTP流轉換為RTMP流。
[0013]優選地,所述裝置還包括:指令接收模塊,用于接收開始指令;所述數據傳輸模塊用于在所述指令接收模塊接收到開始指令后,獲取服務器的IP地址和端口號;根據獲取的服務器的IP地址和端口號與所述服務器建立連接;利用建立的連接將所述RTMP流傳輸給所述服務器。
[0014]優選地,所述裝置還包括:指令接收模塊,用于接收停止指令;所述數據傳輸模塊還用于在所述指令接收模塊接收到停止指令后,停止將所述RTMP流傳輸給所述服務器;所述數據轉化模塊還用于在所述指令接收模塊接收到停止指令后,停止將接收的多媒體流轉化為RTMP流。
[0015]通過上述技術方案,在接收到多媒體流之后,將接收的多媒體流轉化為RTMP(實時消息傳輸協議)流,將RTMP流傳輸給服務器,以使服務器對RTMP流進行分發來實現多媒體流的實時直播。如此,因為在接收多媒體流的同時使用RTMP將接收的多媒體傳輸給服務器,所以能夠將實時獲得的多媒體傳輸給服務器,通過服務器分發來實現多媒體的實時播放。此夕卜,因為采用RTMP流進行多媒體傳輸,可以利用各種通信網絡,例如3G、4G的運營商網絡、WIFI(無線局域網)網絡,承載多媒體數據,進而使用戶能夠在多種環境下進行多媒體實時播放。
[0016]本發明的其它特征和優點將在隨后的【具體實施方式】部分予以詳細說明。
【附圖說明】
[0017]附圖是用來提供對本發明的進一步理解,并且構成說明書的一部分,與下面的【具體實施方式】一起用于解釋本發明,但并不構成對本發明的限制。在附圖中:
[0018]圖1是根據本發明一【具體實施方式】的多媒體實時直播的方法的流程圖;
[0019]圖2是根據本發明一【具體實施方式】的將多媒體流轉化為RTMP流的方法的流程圖;
[0020]圖3是根據本發明一【具體實施方式】的將RTMP流傳輸給服務器的方法的流程圖;
[0021 ]圖4是根據本發明一【具體實施方式】的應用場景示意圖;
[0022]圖5是根據本發明一【具體實施方式】的多媒體實時直播的方法的流程圖;
[0023]圖6是根據本發明一【具體實施方式】的多媒體實時直播的裝置的結構圖;
[0024]圖7是根據本發明一【具體實施方式】的多媒體實時直播的裝置的結構圖;以及
[0025]圖8是根據本發明一【具體實施方式】的多媒體實時直播的系統的結構圖。
【具體實施方式】
[0026]以下結合附圖對本發明的【具體實施方式】進行詳細說明。應當理解的是,此處所描述的【具體實施方式】僅用于說明和解釋本發明,并不用于限制本發明。
[0027]圖1是根據本發明一【具體實施方式】的多媒體實時直播的方法的流程圖,該方法可用于終端設備,所述終端設備可包括手機、PAD(平板電腦)、或PC(個人電腦)等。所述多媒體可包括視頻、音頻或音視頻等。如圖1所示,該方法可包括如下步驟S110-S130。
[0028]在步驟SllO中,接收多媒體流。
[0029]在一實施例中,所述接收多媒體流可包括接收終端設備中拍攝組件拍攝的視頻和/或音頻數據流。其中,拍攝組件可以包括攝像頭(例如,前置攝像頭或后置攝像頭)和麥克風等能夠進行音頻、視頻拍攝的組件。
[0030]下面以拍攝組件為攝像頭,多媒體流為視頻數據流為例,對上述步驟進行示例性說明。
[0031]在終端設備中安裝APP(應用)。當APP開啟后,調用終端設備中的攝像頭,對周圍環境進行拍攝。可替換地,可以在APP中設置拍攝按鈕,當在APP開啟后拍攝按鈕被用戶點擊時,接收到開始指令;接收到開始指令后,調用終端設備中的攝像頭,對周圍環境進行拍攝。之后,APP接收攝像頭拍攝的視頻數據。可選擇地,可以在調用攝像頭進行視頻拍攝時,在終端屏幕中實時顯示拍攝到的視頻畫面。該視頻畫面可以全屏顯示,也可以通過可縮放的窗口進行顯示。
[0032]可替換地,可以在終端設備的相機應用中插入插件,當插件中啟動按鈕被點擊后,接收到開始指令。接收到開始指令后,插件接收相機應用通過攝像頭拍攝的視頻數據流。
[0033]其中,每當接收到音頻或視頻中完整的一幀或多幀數據后,可開始進行如下所述的RTMP流轉換過程。
[0034]上述說明為示例性說明,在上述步驟中可以接收各種拍攝組件拍攝的視頻、音頻或音視頻數據流。例如,通過安裝的APP或在已有的APP中插入插件,來接收麥克風接收到的音頻數據流。
[0035]在步驟SI20中,將接收的多媒體流轉化為RTMP流。
[0036]例如,可以通過終端設備中的處理芯片將接收的多媒體流轉化為RTMP流。每當接收到音頻或視頻的一幀或多幀數據后,可開始進行轉化為RTMP流的過程。以每秒25幀為例,每幀40毫秒,在接收多媒體流40毫秒之后,可以啟動轉化為RTMP流的過程。
[0037]在一實施例中,如圖2所示,所述將接收的多媒體流轉化為RTMP流包括如下步驟S122和步驟S124。
[0038]在步驟S122中,調用終端設備的操作系統中媒體記錄器將接收的多媒體流編碼成RTP 流。
[0039]在步驟S124中,對RTP流進行格式轉換,將RTP流轉換為RTMP流。
[0040]以終端設備中安裝有安卓系統的情況為例,對本實施例進行示例性說明。在終端設備中,調用安卓的MediaRecorder(媒體記錄器)將接收的視頻、音頻、或者音視頻編碼為RTP流。得到RTP流的數據后,等到RTP流的一個或多個數據包可以解析出一幀或多幀數據后,可開始進行RTMP轉化,將RTP流轉換為RTMP流。例如,通過FFmpeg(FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序)中的格式轉換將RTP流轉換為RTMP流。
[0041 ]在本實施例中,直接調用操作系統中媒體記錄器將接收的多媒體流編碼成RTP流,再通過格式轉換將RTP流轉換為RTMP流,如此,能夠減少開發工作量,從而降低了開發成本,提尚了開發效率。
[0042]在步驟S130中,將RTMP流傳輸給服務器,以使服務器對RTMP流進行分發來實現多媒體流的實時直播。
[0043]RTMP可以通過TCP/IP或UDP/IP連接進行傳輸。
[0044]在一實施例中,如圖3所示,所述將RTMP流傳輸給服務器包括如下步驟S132-S136。在步驟S132中,在接收到開始指令后,獲取服務器的IP地址和端口號。在步驟S134中,根據獲取的服務器的IP地址和端口號與服務器建立連接。在步驟S136中,利用建立的連接將RTMP流傳輸給服務器。
[0045]舉例而言,在終端設備中安裝APP,在APP中設置拍攝按鈕,當在APP開啟后拍攝按鈕被用戶點擊時,接收到開始指令。在接收到開始指令后,獲取服務器的IP地址和端口號。其中,可以直接從APP的配置文件中獲得服務器的IP地址和端口號;也可以從APP的配置文件中獲得服務器的域名,對服務器的域名進行域名解析,根據解析到的服務器IP地址與服務器協商獲得端口號,根據IP地址和端口號與服務器進行傳輸層連接(例如,TCP/IP或UDP/IP連接),再利用建立的傳輸層連接將RTMP流傳輸給服務器。服務器可以包括直播的云平臺服務器。服務器在接收到RTMP流后,可利用HLS(基于HTTP協議的流媒體解決方案,HTTPLive Streaming),對RTMP流進行分發。也就是,采用HLS技術,將多媒體流切分成小片TS并建立索引文件m3u8,然后利用m3u8進行多媒體流分發。進而通過服務器對終端設備拍攝的多媒體數據進行直播。
[0046]本領域所屬技術人員應當理解,上述步驟SI 1和S130之間沒有的時間順序限制。例如,在終端設備中安裝APP,在APP中設置拍攝按鈕,當在APP開啟后拍攝按鈕被用戶點擊時,接收到開始指令,此時調用終端設備中的拍攝組件對周圍環境進行拍攝,將拍攝的多媒體流轉化為RTMP流進行緩存。在進行上述處理的同時,可獲取服務器的IP地址和端口號,與服務器建立連接,之后讀取緩存中的RTMP流,利用建立的連接將RTMP流發送給服務器。
[0047]在一實施例中,所述方法還可包括:接收到停止指令后,停止將RTMP流傳輸給服務器,并停止將接收的多媒體流轉化為RTMP流。
[0048]舉例而言,在終端設備中安裝APP,在APP中設置停止按鈕,當停止按鈕被用戶點擊時,接收到停止指令;接收到停止指令后,停止將RTMP流傳輸給服務器,并停止將接收的多媒體流轉化為RTMP流。可選擇地,在接收到停止指令后,還可以停止接收多媒體流。例如,退出對拍攝組件的調用,并將屏幕中的視頻畫面顯示窗口進行關閉。
[0049]采用本實施例中方法,能夠將實時獲得的多媒體傳輸給服務器,通過服務器分發實現多媒體的實時播放。此外,因為采用RTMP流進行多媒體傳輸,可以利用各種通信網絡,例如3G、4G的運營商網絡、WIFI(無線局域網)網絡,承載多媒體數據,進而使用戶能夠在多種環境下進行多媒體實時播放。并且,可以通過直接調用操作系統中媒體記錄器將接收的多媒體流編碼成RTP流,再將RTP流轉換為RTMP流,使得多媒體流到RTMP流的轉換更加容易實現,降低了開發成本,提高了開發效率。
[0050]圖4是根據本發明一【具體實施方式】的應用場景示意圖。如圖4所示,終端設備A通過網絡與云服務器連接,云服務器通過網絡將終端設備A的多媒體數據分發給終端設備I?η。其中,終端設備A中安裝有安卓系統,在安卓系統中安裝用于實現直播的ΑΡΡ,ΑΡΡ中設置有拍攝按鈕和停止按鈕,APP的配置文件中配置有服務器的IP地址和端口號。圖5是根據本發明一【具體實施方式】的多媒體實時直播的方法的流程圖,如圖5所示,該方法包括如下步驟。
[0051]在步驟S510中,當拍攝按鈕被點擊時,接收到開始指令,調用攝像頭進行視頻拍攝,接收拍攝的視頻數據,并獲得服務器的IP地址和端口號,根據IP地址和端口號與云服務器建立連接。在步驟S520中,調用安卓系統中MediaRecorder將接收的多媒體流編碼成RTP流。在步驟S530中,通過FFmpeg對RTP流進行格式轉換,將RTP流轉換為RTMP流。在步驟S540中,利用與云服務器建立的連接,將RTMP流傳輸給云服務器,以使云服務器對該RTMP流進行分發。在步驟S550中,當停止按鈕被點擊時,接收到停止指令,停止將RTMP流傳輸給服務器,并停止將接收的多媒體流轉化為RTMP流,退出對攝像頭的調用。
[0052]本實施例中對使用攝像頭進行視頻拍攝,將視頻進行直播的方法進行示例性說明。采用麥克風進行音頻錄制,將音頻進行直播,以及采用攝像頭和麥克風進行音視頻拍攝,對音視頻進行直播的方法與此類似,在此不再贅述。
[0053]以上描述僅為本發明中方法進行了示例性說明,該說明不用于限定本發明。任何本領域所屬技術人員能夠理解的任何等同替換手段均在本發明的保護范圍之內。
[0054]根據本發明還提供一種多媒體實時直播的方法,該方法包括:終端設備執行前述任一所述的方法;服務器接收到終端設備發送的RTMP流,對RTMP流進行分發以實現對多媒體的實時直播。
[0055]如如所述,在終?而設備中安裝APPο當APP開啟后,終?而設備調用攝像頭對周圍環境進行拍攝,接收多媒體流。終端設備調用安卓的MediaRecorder將接收的視頻編碼為RTP流,等到RTP流的一個或多個數據包可以解析出一幀或多幀數據后,開始進行RTMP轉化,將RTP流轉換為RTMP流。終端設備通過與服務器間的連接將RTMP流傳輸給服務器。服務器在接收到RTMP流后,可利用HLS(基于HTTP協議的流媒體解決方案,HTTP Live Streaming)將RTMP流分發給其他終端設備,進而實現對終端設備拍攝的多媒體流的實時直播。
[0056]圖6是根據本發明一【具體實施方式】的多媒體實時直播的裝置的結構圖。所述終端設備可包括手機、PAD(平板電腦)、或PC(個人電腦)等。所述多媒體可包括視頻、音頻或音視頻等。如圖6所示,該裝置包括如下模塊:多媒體接收模塊610,用于接收多媒體流;數據轉化模塊620,用于將接收的多媒體流轉化為實時消息傳輸協議RTMP流;以及數據傳輸模塊630,用于將RTMP流傳輸給服務器,以使服務器對RTMP流進行分發來實現多媒體流的實時直播。
[0057]在一實施例中,多媒體接收模塊610用于接收終端設備中拍攝組件拍攝的視頻和/或音頻數據流。
[0058]在一實施例中,數據轉化模塊620用于調用終端設備的操作系統中媒體記錄器將接收的多媒體流編碼成實時傳輸協議RTP流;對RTP流進行格式轉換,將RTP流轉換為RTMP流。
[0059]在一實施例中,如圖7所示,裝置還包括:指令接收模塊710。
[0060]指令接收模塊710用于接收開始指令;數據傳輸模塊630用于在指令接收模塊710接收到開始指令后,獲取服務器的IP地址和端口號;根據獲取的服務器的IP地址和端口號與服務器建立連接;利用建立的連接將RTMP流傳輸給服務器。
[0061 ]在一實施例中,如圖7所示,裝置還包括:指令接收模塊710,該指令接收模塊710用于接收停止指令;數據傳輸模塊630還用于在指令接收模塊710接收到停止指令后,停止將RTMP流傳輸給服務器。數據轉化模塊620還用于在指令接收模塊710接收到停止指令后,停止將接收的多媒體流轉化為RTMP流。
[0062]下面以拍攝組件為攝像頭,多媒體流為視頻數據流為例,對上述裝置進行示例性說明。
[0063]在終端設備中安裝APP,在APP中設置拍攝按鈕,當在APP開啟后拍攝按鈕被用戶點擊時,指令接收模塊710接收到開始指令;在指令接收模塊710接收到開始指令后,多媒體接收模塊610調用攝像頭進行視頻拍攝,接收拍攝的視頻數據,數據傳輸模塊630獲得服務器的IP地址和端口號,根據IP地址和端口號與云服務器建立連接。數據轉化模塊620調用安卓系統中MediaRecorder將接收的多媒體流編碼成RTP流,通過FFmpeg對RTP流進行格式轉換,將RTP流轉換為RTMP流。數據傳輸模塊630利用與云服務器建立的連接,將RTMP流傳輸給云服務器,以使云服務器對該RTMP流進行分發。當停止按鈕被點擊時,指令接收模塊710接收到停止指令,數據傳輸模塊630停止將RTMP流傳輸給服務器,數據轉化模塊620停止將接收的多媒體流轉化為RTMP流,多媒體接收模塊610退出對攝像頭的調用。
[0064]采用本實施例中裝置,能夠將實時獲得的多媒體傳輸給服務器,通過服務器分發實現多媒體的實時播放。此外,因為采用RTMP流進行多媒體傳輸,可以利用各種通信網絡,例如3G、4G的運營商網絡、WIFI(無線局域網)網絡,承載多媒體數據,進而使用戶能夠在多種環境下進行多媒體實時播放。并且,可以通過直接調用操作系統中媒體記錄器將接收的多媒體流編碼成RTP流,再將RTP流轉換為RTMP流,使得多媒體流到RTMP流的轉換更加容易實現,降低了開發成本,提高了開發效率。
[0065]圖8是根據本發明一【具體實施方式】的多媒體實時直播的系統的結構圖。如圖8所示,該系統包括:包括前述任一所述的裝置的終端設備100,以及服務器200,用于接收終端設備100發送的RTMP流,對RTMP流進行分發以實現多媒體流的實時直播。
[0066]如前所述,多媒體接收模塊610調用攝像頭對周圍環境進行拍攝,接收多媒體流。數據轉化模塊620調用安卓的MediaRecorder將接收的視頻編碼為RTP流,等到RTP流的一個或多個數據包可以解析出一幀或多幀數據后,開始進行RTMP轉化,將RTP流轉換為RTMP流。數據傳輸模塊630通過與服務器200間的連接將RTMP流傳輸給服務器。服務器200在接收到RTMP流后,可利用HLS將RTMP流分發給其他終端設備,進而實現對終端設備100拍攝的多媒體流的實時直播。
[0067]以上結合附圖詳細描述了本發明的優選實施方式,但是,本發明并不限于上述實施方式中的具體細節,在本發明的技術構思范圍內,可以對本發明的技術方案進行多種簡單變型,這些簡單變型均屬于本發明的保護范圍。
[0068]另外需要說明的是,在上述【具體實施方式】中所描述的各個具體技術特征,在不矛盾的情況下,可以通過任何合適的方式進行組合。
[0069]此外,本發明的各種不同的實施方式之間也可以進行任意組合,只要其不違背本發明的思想,其同樣應當視為本發明所公開的內容。
【主權項】
1.一種多媒體實時直播的方法,用于終端設備,該方法包括: 接收多媒體流; 將接收的多媒體流轉化為實時消息傳輸協議RTMP流; 將所述RTMP流傳輸給服務器,以使所述服務器對所述RTMP流進行分發來實現多媒體流的實時直播。2.根據權利要求1所述的方法,其特征在于,所述接收多媒體流包括: 接收所述終端設備中拍攝組件拍攝的視頻和/或音頻數據流。3.根據權利要求1或2所述的方法,其特征在于,所述將接收的多媒體流轉化為實時消息傳輸協議RTMP流包括: 調用終端設備的操作系統中媒體記錄器將接收的多媒體流編碼成實時傳輸協議RTP流; 對RTP流進行格式轉換,將RTP流轉換為RTMP流。4.根據權利要求1或2所述的方法,其特征在于,所述將所述RTMP流傳輸給服務器包括: 在接收到開始指令后,獲取服務器的IP地址和端口號; 根據獲取的服務器的IP地址和端口號與所述服務器建立連接; 利用建立的連接將所述RTMP流傳輸給所述服務器。5.根據權利要求1或2所述的方法,其特征在于,所述方法還包括: 接收到停止指令后,停止將所述RTMP流傳輸給所述服務器,并停止將接收的多媒體流轉化為RTMP流。6.一種多媒體實時直播的裝置,用于終端設備,該裝置包括: 多媒體接收模塊,用于接收多媒體流; 數據轉化模塊,用于將接收的多媒體流轉化為實時消息傳輸協議RTMP流; 數據傳輸模塊,用于將所述RTMP流傳輸給服務器,以使所述服務器對所述RTMP流進行分發來實現多媒體流的實時直播。7.根據權利要求6所述的裝置,其特征在于,所述多媒體接收模塊用于接收所述終端設備中拍攝組件拍攝的視頻和/或音頻數據流。8.根據權利要求6或7所述的裝置,其特征在于,所述數據轉化模塊用于調用終端設備的操作系統中媒體記錄器將接收的多媒體流編碼成實時傳輸協議RTP流;對RTP流進行格式轉換,將RTP流轉換為RTMP流。9.根據權利要求6或7所述的裝置,其特征在于,所述裝置還包括: 指令接收模塊,用于接收開始指令; 所述數據傳輸模塊用于在所述指令接收模塊接收到開始指令后,獲取服務器的IP地址和端口號;根據獲取的服務器的IP地址和端口號與所述服務器建立連接;利用建立的連接將所述RTMP流傳輸給所述服務器。10.根據權利要求6或7所述的裝置,其特征在于,所述裝置還包括: 指令接收模塊,用于接收停止指令; 所述數據傳輸模塊還用于在所述指令接收模塊接收到停止指令后,停止將所述RTMP流傳輸給所述服務器; 所述數據轉化模塊還用于在所述指令接收模塊接收到停止指令后,停止將接收的多媒 體流轉化為RTMP流。
【文檔編號】H04N21/6437GK105898620SQ201510843743
【公開日】2016年8月24日
【申請日】2015年11月26日
【發明人】王濤
【申請人】樂視移動智能信息技術(北京)有限公司