很多開發者提到,拉取的攝像機(一般RTSP流)或RTMP流,如果需要錄制,需要考慮哪些因素,本文以大牛直播SDK的Windows平台拉流端錄像為例(github),做個簡單的介紹:
1. 基礎文件名設定
一般來說,本地錄像的話,不可能每個文件單獨命名,這個時候,需要考慮如文件名前綴、文件名是否添加日期、是否添加時間幾個因素,以C#為例,具體接口定義如下:
2. 設置錄像目錄、單個錄像文件大小
這個不再贅述,設置錄像目錄是錄像的基礎操作,單個文件大小設定,可以更精細的控制單個文件size,一般建議單個文件不要過大,單次錄制,超過設定的size,將自動切分保存到另外一個新的文件。
3. 音頻轉碼后錄像
一般來說,AAC格式更通用,設置錄像時音頻轉AAC編碼的開關, 可以把比如speex, pcmu, pcma轉aac的后再錄像,確保錄制文件的audio格式更通用,轉碼會有一定的資源消耗。
4. 更精細的音視頻錄像控制(純音頻、純視頻錄制)
這兩組接口設置的意義在於, 有些場景下可能不想錄制視頻,只想錄音頻,或是只錄制視頻、不錄制音頻,通過開放此類接口設定,讓開發者操作更靈活。
5. 容易被忽略的callback事件
第五條,錄像狀態反饋,是好多開發者容易遺忘的,錄像回調狀態,可以很方便的告知上層開發者,什么時候開啟了錄像,什么時候結束了錄像,什么時候寫入了新的錄像文件,這樣便於上層邏輯開發人員,對錄制好的文件進行二次編輯或處理。
6. 開始錄像/停止錄像
不再贅述,有了以上5條的設計,第六條,只要上層開發者按部就班的調用就好了。
總結:
以上是一個友好的RTSP、RTMP拉流錄像功能需要考慮的幾點設計,遺憾的是,好多開發者之關注第六條,前五條或多或少的忽略了,除了常規的接口設計之外,錄像功能需要考慮的其他因素還很多,后續有機會再做進一步分享。