iOS 直播-實現後臺錄音並推流

来源:http://www.cnblogs.com/xubaoaichiyu/archive/2016/07/11/5660597.html
-Advertisement-
Play Games

iOS 直播 實現後臺錄音並推流 從一個月前開始開始接收公司的直播類app.到今天為止測試都已接近尾聲,但是產品哥哥加了一個要求,就是在app進入後臺後也實時保證錄音並且推流. 剛聽到這個的時候我也是懵逼的,可是冷靜下來找資料,還是有所收穫的,在此分享一下. 對於我們的app要求後臺也實時錄音並推流 ...


iOS 直播-實現後臺錄音並推流


從一個月前開始開始接收公司的直播類app.到今天為止測試都已接近尾聲,但是產品哥哥加了一個要求,就是在app進入後臺後也實時保證錄音並且推流.
剛聽到這個的時候我也是懵逼的,可是冷靜下來找資料,還是有所收穫的,在此分享一下.
對於我們的app要求後臺也實時錄音並推流主要要註意兩點:

  • 保證app進入後臺後實時錄音
  • 保證app進入後臺後實時推流

1.設置應用為voip應用

打開-info.plist文件,加入如下的key

Required background modes,追加

//保證app進入後臺後實時錄音
App plays audio or streams audio/video using AirPlay
//保證app進入後臺後實時推流
App provides Voice over IP services

2.將socket設置成非同步模式,並將socket設置成VOIP類的,以便系統能夠托管它。

CFStreamCreatePairWithSocket(NULL, (CFSocketNativeHandle)(mosq->sock), &readStream, NULL);
//保證不關閉原來的socket
CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanFalse);
//設置成voip socket
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);

3.安裝keepAliveTimeout handler,讓系統每隔一段時間重新建立連接

UIApplication *application = [UIApplication sharedApplication];
[application setKeepAliveTimeout:600 handler:^{
    [self reconnect];
}];

到這裡command + R 運行程式,開始直播然後將app切入後臺會發現屏幕頂部會有一條紅色條,然後用播放器播放會發現錄音與推流成功.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 設置一個按鈕的方法就不再贅述了 法一: UIBarButtonItem *oneButton = [[UIBarButtonItemalloc]initWithTitle:@"設置" style:UIBarButtonItemStylePlain target:selfaction:@selecto ...
  • 代碼: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.title=@"頁面調的時候隱藏工具條"; //當跳轉的時候,隱藏工具條 [self.tabB ...
  • 打開終端: 查看Git的版本的終端命令:git —version 輸入:ssh 查看是否已經存在ssh. 如果存在,先將已有的ssh備份,或者將新建的ssh生成到另外的目錄下 如果不存在,通過預設的參數直接生成ssh 生成過程如下: ssh-keygen -t rsa -C [email protected] ...
  • 當我們自定義View的時候,在給View賦值一些長度寬度的時候,一般都是在layout佈局文件中進行的。,比如android:layout_height="wrap_content",除此之外,我們也可以自己定義屬性,這樣在使用的時候我們就可以使用形如 myapp:myTextSize="20sp" ...
  • 你好, 世界 <!--EndFragment--> <!--EndFragment--> <!--EndFragment--> <!--EndFragment--> <!--EndFragment--> <!--EndFragment--> <!--EndFragment--> 【寫在開頭:】 『關 ...
  • 文件系統的文件太多,而且是照搬的MINIX的文件系統,不想繼續分析下去了。緩衝區機制和文件系統密切相關,所以這裡就簡單分析一下緩衝區機制。 buffer.c 程式用於對高速緩衝區(池)進行操作和管理。高速緩衝區位於內核代碼塊和主記憶體區之間,見圖9-9 中所示。高速緩衝區在塊設備與內核其它程式之間起著 ...
  • 1、跳轉到一個新的Actitity 新建項目, 新建一個java類OtherScreenActivity 繼承自 Activity類 顯然需要新建一個名為activity_two的android.xml,隨便寫一些控制項佈局一下 MainActivity.java中的代碼如下 當然,click中的代碼 ...
  • 自定義TabBarController Push下一級Controller時 會報這樣的錯誤:Unbalanced calls to begin/end appearance transitions for <XXXViewController: 0x7fcea3730650>. 網上的一些回答,都 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...