srs3.0支持mp4文件的錄製,本文在參考3.0的基礎上,實現了2.0版本的dvr。
整個錄製的流程從SrsSource::on_video_imp(SrsSharedPtrMessage* msg)函數和SrsSource::on_audio_imp(SrsSharedPtrMessage* msg)作爲入口,如下圖所示。
上圖SrsFormat類和重載的video_avc_demux(char* data, int size, SrsFormat* format)函數需要實現,在srs_kernel_codec源文件中。SrsFormat存放video_avc_demux函數解析tag包出來的媒體信息。
上圖中重載的video_aac_demux(char* data, int size, SrsFormat* format)函數需要實現。
整個錄製的工作在srs_app_dvr源文件中實現,mp4文件的封裝在srs_kernel_mp4源文件中實現,這部分參考srs3.0實現。
其它需要定製的還有寫文件類SrsFileWriter中的函數virtual int lseek(off_t offset, int whence, off_t* seeked)。
代碼見百度雲盤(代碼)目錄下srs-2.0_dvr_mp4.zip文件。