What does GeniCam do for us?

To customize the content of billboard in sport games, e.g. for audience in different countries.

We change part of the video, namely the billboard content, while streaming the game. The end result is the billboard in streamed game video plays different content from the physical billboard on the game venue.

Our current cameras, all IP cameras, have two problems for this job:

  1. content needs to be decoded to process billboard, and then re-encoded, which is too much load on server
  2. hard to sync due to the delay introduced by codec and internet.

GeniCam cameras send raw video to our on site server through fiber network, with no decoding and ignorable delay. The cameras are connected to an IP strobe controller, as seen on picture.

Some components in addition to streaming are:

  1. Video process: OpenCV for object detection and Bayer pixel manipulation
  2. 3D billboard content generation: OpenGL
  3. Pull video from the cameras: GeniCam SDK



Comparing HLS and MPEG-DASH

After two years of HLS streaming, I still don’t see significant advantages on MPEG-DASH.
1. Standard: HLS made it’s way to rfc8216. in 2017.
2. Live subtitles: HLS can not only do VOD, but live streams too.
3. HLS made effort by providing HLS fMP4 so that streaming servers don’t have to provide duplicated copies of media file (.ts and .m4s) in order to satisfy both DASH and HLS clients.

Literally, what does YUV420 mean?

We know what YUV420 is, but literally what does the 0 mean?

In short, 0 means 0 uv values are sampled in the second row.


4: for each 4 pixels in each row

2: 2 uv samples on first row.

0: 0 rv samples on second row: reusing uv samples on first row.

Therefore, for YUV422, second 2 means second row is sampled the same way as the first row.

Why am I not allowed to send the DRM key to video player?

I don’t know exactly, and I am still thinking.

This is the current DRM flow: I, as the content provider, use a key to encrypt my video, and send to player, e.g. JW Player. I send the key to Third Party DRM Provider, e.g. DRMToday, and DRMToday sends the key to JW Player.

I cannot send my key to JW Player unless I have a contract with DRM OEM, e.g. Google WideVine. Why is a contract required? I think it is related to the fact that DRM is never open source; it’s security-by-obscurity. The contract would say: WideVine provides SDK to DRMToday to obscure the key, and DRMToday promises to keep obscuring process a secret. Otherwise, unauthorized party may get the key in clear text and therefore decrypt the video and defeat the DRM.