2014年3月11日 星期二

iOS -- 錄音功能實作

近日針對 iOS 設備的錄音功能做一研究,整理如下:

一、聲音來源

錄音時,其聲音來源可能有以下兩處,
  • 麥克風
  • 正在播放的音頻資料(可能來自本地端的檔案,或是遠端的音頻資料)
可以分別選擇不同來源進行錄音,也可以將兩種聲音進行 mix

live555 程式碼分析 -- testRTSPClient.cpp

testRTSPClient.cpp 提供了一個程式範例,介紹如何使用 live555 來建立一個 RTSP 連線。
以下整理個人對此程式碼的閱讀心得。程式碼備份於此

1. 定義 ourRTSPClient class
此 class 繼承 RTSPClient class,並且改寫 createNew(),以及新增一個用來記錄stream狀態的 StreamClientState scs,此處須注意的是 createNew() 修改了最後一個參數的值,固定此值 socketNumToServer=-1。

2014年2月25日 星期二

[NEWS] 針對 NVR 監視系統優化,WD Purple 將取代 AV GP 系列硬碟

要搞NVR的話,硬碟真的要好好選才行。

====
摘錄原文如下:

針對 NVR 監視系統優化,WD Purple 將取代 AV GP 系列硬碟

以色彩來分別產品線的 WD,這次又多了繽紛的新選擇。

黑標、藍標、綠標、紅標,不同取向的產品線有者不同色彩標籤,WD 決定推出新顏色。
針對數位監控系統、NVR 網路監控錄影機等需求,推出了全新的系列 Purple。過去 WD 針對類似的 DVR、機上盒等市場曾推出了 WD-AV GP 系列硬碟,是基於 Green 系列產品加上特別的軔體優化而成。但近來流行的 NVR 都是以 NAS 作為基礎平台,有些平台除了儲存視訊串流以外還有會搭載 NAS RAID 的功能,在這點 Green 系列並沒有辦法好好的支援,因此 WD Purple 是以 NAS 導向的 Red 系列為基礎進行修改,加上對 SATA 指令、韌體的優化而成。
wd purple carousel 678x452 665x553 針對 NVR 監視系統優化,WD Purple 將取代 AV GP 系列硬碟
在對軔體的優化方面,過去 AV-GP 使用的 WD SilkStream 優化,可以同時錄製 12 路的 HD 影片串流;在 Purple 系列中,此技術被更新為 AllFrame ,可以一口氣支援到同步錄製 32 路串流,不過 WD 建議檢閱過驗證可以完整支援 AllFrame 技術的清單以得到完整的功能解放。
機械性的部分,Purple 系列和 Red 系列為 5400 RPM 與 IntelliPower、TLER 技術,不過並沒有搭載 RAFF 旋轉伺服加速系統,因此某種程度上限制了可用的硬碟數量,理想的範圍約莫在 1~8 Bay 左右。官方標稱的負載週期約在 60 TB/yr ,以錄製四路 1080P30 的影片一年約在 200TB 左右,因此 PURPLE 系列 比較建議可以搭配 RAID 使用,如果需要更重載的錄製需求,則建議使用 Se/Re 系列硬碟。
wd purple se re 665x422 針對 NVR 監視系統優化,WD Purple 將取代 AV GP 系列硬碟
Purple 系列到時將會有 1~4 TB 容量可選擇,目前已知 WD 也已經與 Synology、QNAP 等廠商建立起夥伴關係。

原文出處為:

2014年2月10日 星期一

如何取得 iPhone 內建音效檔案

iPhone 手機內建了許多音效,當我們開發App時,要如何直接使用這些音效檔案呢?以下簡介使用與取得這些音效檔案的方法。

2014年1月27日 星期一

RFC4747 -- NAT 的行為要求(UDP)

RFC4747 : Network Address Translation (NAT) Behavioral Requirements for Unicast UDP

此篇 RFC 提供了一些方法,說明當應用程式遇到不同類型的 NAT 時,應該如何處理UDP封包,才比較容易在NAT環境下運作無誤(NAT打洞容易成功)。例如線上遊戲或是視訊會議等應用程式。
The goals of this document are to define a set of common terminology for describing the behavior of NATs and to produce a set of requirements on a specific set of behaviors for NATs.

2014年1月20日 星期一

ffmpeg -- 使用 ffmpeg 命令降低 H.264 檔案大小

參考 x264EncodingGuide,使用裡頭的一個例子進行轉檔,以減少檔案大小。如下:
ABR (Average Bit Rate)
ffmpeg -i input -c:v libx264 -b:v 256k output.mp4 
轉好後的檔案的確降低 bitrate,但轉換後的檔案卻多出了 B-frame,如此可能會造成某些串流播放器播放時的困難。

以下記錄此問題的解決過程:

2014年1月19日 星期日

iOS -- 背景撥放音樂

iOS -- 背景撥放音樂

背景控制播放音樂的基本原理如下:
1. 將 app 設定為 FirstResponder 
2. 實作 UIResponder class 定義的 remoteControlReceivedWithEvent: 方法
   接收對應的 event 並進行處理,以下列舉幾個 event 當作例子 
UIEventSubtypeRemoteControlPlay
UIEventSubtypeRemoteControlPause
UIEventSubtypeRemoteControlStop
UIEventSubtypeRemoteControlTogglePlayPause
IEventSubtypeRemoteControlNextTrack
UIEventSubtypeRemoteControlPreviousTrack 
3. 透過 MPNowPlayingInfoCenter defaultCenter 設定鎖屏時顯示的資訊
   例如:[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo ];

網路上已經有很多程式範例了,茲將實作時參考到的程式碼紀錄如後

設定背景撥放音樂,並接收鎖屏時的 Play/Stop 按鍵以進行客製化的行為
修改鎖屏時所顯示的歌曲訊息文字與圖片