Described as seen on disk when exported from NVR by client but also used in network traffic from IPC and NVR. 1001 - 32 byte BC description header - older x.1.x clients write this to the start of the file 4 bytes magic 4 bytes data size of header itself 4 bytes width 4 bytes height 1 byte unknown. Known values 00/01 1 byte Frames per second (Reolink=FPS, Swann=Appears to be the index value of the FPS setting) 1 byte Start UTC year since 1900 1 byte Start UTC month 1 byte Start UTC date 1 byte Start UTC hour 1 byte Start UTC minute 1 byte Start UTC seconds 1 byte End UTC year since 1900 1 byte End UTC month 1 byte End UTC date 1 byte End UTC hour 1 byte End UTC minute 1 byte End UTC seconds 2 bytes reserved Eg Width = 1280 Height = 720 Camera FPS = 6 Start UTC time = 27th September 2019 11:50:01 End UTC time = 27th September 2019 11:53:43 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Magic | Size | Width | Height | 31 30 30 31 20 00 00 00 00 05 00 00 D0 02 00 00 |?|FR|SY|SM|SD|SH|SM|SS|EY|EM|ED|EH|EM|ES| res | 00 06 77 09 1B 0B 32 01 77 09 1B 0B 35 2B 00 00 ***************** Junk data may follow which I believe may be partial data from a previous frame. ***************** 00dc - 24 byte BC I frame header 4 bytes magic 4 bytes video type (eg H264 or H265) 4 bytes data size of payload after header 4 bytes data size of header extension 4 bytes Microseconds 4 bytes unknown. Known values 1-00/23/5A 2-00 3-00 4-00 First 8 bytes of iframe header extension (exists if headextend >= 8 bytes) * 4 bytes POSIX time_t 32bit UTC time (seconds since 00:00:00 Jan 1 1970) 4 bytes unknown. Known values 1-00/06/29 2-00/01 3-00/C3 4-00 Second 8 bytes of iframe header extension (exists if headextend >= 16 bytes) # 4 bytes unknown. Known values 1-02 2-00 3-00 4-07 4 bytes unknown. Known values 1-00 2-00 3-00 4-00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Magic |Video Type | Data Size |head extend| 30 30 64 63 48 32 36 34 83 DB 00 00 08 00 00 00 |Microsecs | ? | time_t *| ? *| 58 5B 90 02 00 00 00 00 69 F7 8D 5D 06 00 C3 00 | ? #| ? #| 02 00 00 07 00 00 00 00 h264 I frame video data follows after ***************** 01dc - 24 byte BC P frame header 4 bytes magic 4 bytes video type (eg H264 or H265) 4 bytes data size of payload after header 4 bytes data size of header extension 4 bytes Microseconds 4 bytes unknown. Known values 1-00/5A 2-00 3-00 4-00 First 8 bytes of pframe header extension (exists if headextend >= 8 bytes) # 4 bytes unknown. Known values 1-02 2-00 3-00 4-07 4 bytes unknown. Known values 1-00 2-00 3-00 4-00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Magic |Video Type | Data Size |head extend| 30 31 64 63 48 32 36 34 08 01 00 00 00 00 00 00 |Microsecs | ? | ? #| ? #| 18 B2 23 03 00 00 00 00 02 00 00 07 00 00 00 00 h264 P frame video data follows after ***************** 05wb - 8 byte BC AAC frame header 4 bytes magic 2 bytes data size of payload after header 2 bytes data size of payload after header 00 01 02 03 04 05 06 07 | Magic |Size |Size | 30 35 77 62 07 02 07 02 AAC audio data follows after ***************** 01wb - 8 byte BC DVI4 ADPCM frame header. First 4 bytes of payload is description, then 4 bytes of state data then raw DVI4/IMA ADPCM data. Received from camera to client - eg Swann cameras: BC media 248 byte payload DVI4 244 byte payload (4 bytes header + 240 bytes ADPCM aka 480 samples) 4 bytes magic 2 bytes data size of payload after header 2 bytes data size of payload after header 4 bytes magic for DVI4 244 byte frame (01=Hisilicon voice frame 0x7A=122 S16 audio aka 244 bytes) 2 bytes DVI4 adpcm current/last output state 2 bytes DVI4 adpcm step_index state 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Magic |Size |Size | DVI4 Magic|Last |Index| 30 31 77 62 F8 00 F8 00 00 01 7A 00 58 FB 31 00 DVI4/IMA ADPCM audio data follows Send from client to camera (aka Talk) - eg Reolink cameras: BC media 520 byte payload DVI4 516 byte payload (4 bytes header + 512 bytes ADPCM aka 1024 samples) 4 bytes magic 2 bytes data size of payload after header 2 bytes data size of payload after header 4 bytes magic for DVI4 516 byte frame (01=Hisilicon voice frame 0x0200=512 but this would be big endian and 512 is audio only no state) 2 bytes DVI4 adpcm current/last output state 2 bytes DVI4 adpcm step_index state 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Magic |Size |Size | DVI4 Magic|Last |Index| 30 31 77 62 08 02 08 02 00 01 02 00 58 FB 31 00 DVI4/IMA ADPCM audio data follows *************** 03wb - 8 byte BC DVI4 ADPCM frame header. First 4 bytes of payload is description, then 4 bytes of state data then raw DVI4/IMA ADPCM data. Reference: https://habr.com/ru/post/422163/ BC media 168 byte payload DVI4 164 byte payload (4 bytes header + 160 bytes ADPCM aka 320 samples) 4 bytes magic 2 bytes data size of payload after header 2 bytes data size of payload after header 4 bytes magic for DVI4 164 byte frame (01=Hisilicon voice frame 0x52=82 S16 audio aka 164 bytes) 2 bytes DVI4 adpcm current/last output state 2 bytes DVI4 adpcm step_index state 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Magic |Size |Size | DVI4 Magic|Last |Index| 30 33 77 62 A8 00 A8 00 00 01 52 00 70 00 25 00 DVI4/IMA ADPCM audio data follows ***************