很多开发者提到,拉取的摄像机(一般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拉流录像功能需要考虑的几点设计,遗憾的是,好多开发者之关注第六条,前五条或多或少的忽略了,除了常规的接口设计之外,录像功能需要考虑的其他因素还很多,后续有机会再做进一步分享。