-
Notifications
You must be signed in to change notification settings - Fork 11
Video Pipeline Design
Data Flow
2015-10-30 Discussions with MC & BlueT
liveview (IPcam):
1v. rtsp -> KMS -> client (as VP8) HD ~ 4 channels 1920x1080
2o. rtsp -> KMS -> client (as VP8) LD ~ 16 channels? 320x160 (1/36)
- rtsp -> ffmpeg -> node.js WebRTC server -> browser (avoid KMS altogether)
liveview (DVR)
1v. DVR -> connector -> ffmpeg -> FIFO -> KMS -> client
- DVR -> connector -> FIFO -> KMS -> client
3o. DVR -> connector -> KMS -> client (SW: connector to serve rtsp/rtmp/rtp) (Kurento: KMS using socket as source?)
-
DVR -> video receiver -> browser (serve RTMP streams for lower overhead)
-
DVR -> video receiver -> ffmpeg -> browser (similar to IPcam)
record (IPcam):
1v. rtsp -> KMS -> files (as .webm)
2o. rtsp -> ffmpeg -> files (as .mp4) (MC: 1. needs to close manually 2. improve stability)
- rtsp -> KMS -> files (as .mp4) (Kurento: 1. record stream as mp4, 2. detect disconnect)
record (DVR):
- DVR -> connector -> ffmpeg -> KMS -> files (as .webm)
2o. DVR -> connector -> ffmpeg -> files (as .mp4) (MC: ts -> mp4) see: http://stackoverflow.com/questions/11762464/what-is-difference-between-mp4-and-mpegts
playback:
1v. files -> client (as .webm, via video tag) Firefox & Chorme ok (pause/forward ok)
2v. files -> client (as .mp4, via video tag) Chrome ok (pause/forward ok)
3v. files -> KMS -> client (as VP8 streaming, Kurento: pause, forward, progress bar)
**ask Kurento for help: **
- KMS using socket as source? take ts as input? [not possible]
- record stream as mp4 (H264 high profile) [done]
- output switchable by flag (VP8 & H264 both outputable)
- detect source disconnect
- why file playback Chorme ok, webrtc firefox ok?
BlueT's feedback:
-
not all IPcam can have two streams (hi & low-res) need to confirm with GKB
-
cannot playback while still recording
-
need to download whole thing before playback ("time seek" may not be supported) (SY: how current websites do it?) need to store video index? need to explore current tag, or video.js functions
-
recorded segment may not match file segments (hack into HTTP streaming protocol?)
-
can KMS help to play certain "time period" from a group of video files?
-
connector is already heavily loaded
- stream server need to be separated
- connector written in C/C++
- better handling of DVR output streams? (ask Deeplet on demultiplex rules)
- ffmpeg can be removed / optmized
to-investigate:
-
need to confirm with GKB IPcam can support hi & low-res streams concurrently
-
receiver de-multiplex DVR channels -> socket feed to KMS? (KMS receive ts raw data via socket?)
-
if recorded in 30min segments, can we play it?
- do not need to fully download
- can time-seek to 29:50
- watch a recording session across different actual files
-
can .ts file (DVR output) be converted to .mp4 format easily?
-
can DVR video receiver output rtsp or rtmp streams? live555 can take .ts to rtsp/rtp
-
can Firefox + DASH + TS + H264 work? (DVR) ref: http://castlabs.com/products/dash-everywhere/