Skip to main content

Agora SEI information

By default, Agora adds the encoding information of the current video to the transcoded H264/H265 SEI (Supplemental Enhancement Information) during Media Push. The encoding information is a JSON string. The following is the sample code:


_32
{
_32
"canvas": {
_32
"w": 640,
_32
"h": 360,
_32
"bgnd": "#000000"
_32
},
_32
"regions": [
_32
{
_32
"uid": 1,
_32
"alpha": 1.0,
_32
"zorder": 1,
_32
"volume": 50,
_32
"x": 0,
_32
"y": 0,
_32
"w": 320,
_32
"h": 360
_32
},
_32
{
_32
"uid": 2,
_32
"alpha": 1.0,
_32
"zOrder": 1,
_32
"volume": 89,
_32
"x": 320,
_32
"y": 0,
_32
"w": 320,
_32
"h": 360
_32
}
_32
],
_32
"ver": "20190611",
_32
"ts": 1535385600000,
_32
"app_data": ""
_32
}

The definition of the parameters:

ParameterDescription
canvasThe canvas information. It contains the following properties:
  • w: Width (pixel) of the canvas. It corresponds to the width member in the LiveTranscoding class.
  • h: Height (pixel) of the canvas. It corresponds to the height member in the LiveTranscoding class.
  • bgnd: The background color (RGB) of the canvas, represented by a hexademical string. It corresponds to the backgoundColor member in the LiveTranscoding class.
regionsThe layout information of the host. It corresponds to the transcodingUsers member in the LiveTranscoding class. It contains the following properties:
  • suid: (Optional)The string user account of the host in this region. This parameter applies to scenarios where string user accounts are used to identify the host.
  • uid: UID of the host in this region. It corresponds to the uid member in the TranscodingUser class.
  • alpha: The transparency of the video frame of the host. The value range is [0.0, 1.0]. It corresponds to the alpha member in TranscodingUser .
  • zorder: The layout position of the video frame of the host. The value range is [0, 100]. It corresponds to the zOrder member in TranscodingUser.
  • volume: The volume (dB) of the host. The value range is [0, 100].
  • x: The horizontal position of the video frame of the broadacaster from the top left corner of the Media Push. It corresponds to the x member in TranscodingUser.
  • y: The vertical position of the video frame of the host from the top left corner of the Media Push. It corresponds to the y member in TranscodingUser.
  • w: Width (pixel) of the video frame of the host. It corresponds to the width member in TranscodingUser.
  • h: Height (pixel) of the video frame of the host. It corresponds to the height member in TranscodingUser.
verThe version of the SEI protocol. The current version is 20190611.
tsTimestamp (ms) of the current encoding information.
app_dataExtra user-defined information. It corresponds to the transcodingExtraInfo member in the LiveTranscoding class.

The structure of SEI

The SEI information is as follows:


_12
0000 0664bd7b 22617070 5f646174 61223a22 .d.{"app_data":"
_12
0010 222c2263 616e7661 73223a7b 2262676e ","canvas":{"bgn
_12
0020 64223a22 23666666 66666622 2c226822 d":"#ffffff","h"
_12
0030 3a363430 2c227722 3a333630 7d2c2272 :640,"w":360},"r
_12
0040 6567696f 6e73223a 5b7b2261 6c706861 egions":[{"alpha
_12
0050 223a3235 352c2268 223a3634 302c2275 ":255,"h":640,"u
_12
0060 6964223a 33313031 32373137 39312c22 id":3101271791,"
_12
0070 766f6c75 6d65223a 32382c22 77223a33 volume":28,"w":3
_12
0080 36302c22 78223a30 2c227922 3a302c22 60,"x":0,"y":0,"
_12
0090 7a6f7264 6572223a 317d5d2c 22747322 zorder":1}],"ts"
_12
00a0 3a313533 37393630 32333537 38332c22 :1537960235783,"
_12
00b0 76657222 3a223230 31383038 3238227d ver":"20190611"}

In which:

  • 06: The SEI frame.
  • 64: The SEI frame type defined by the user. Here we define it as 100.
  • bd: The length of the SEI frame. The following are some sample calculations rendered in decimal and hexadecimal:
    • If the length is 922, because 922 can be divided by 255 (0xff) three times and the remainder is 157 (0x9d), then bd is ffffff9d.
    • If the length is 572, because 572 can be divided by 255 (0xff) two times and the remainder is 62 (0x3e), then bd is ffff3e.
    • If the length is 234, because 234 divided by 255 (0xff) gives 0 and the remainder is 234 (0xea), then bd is ea.
  • Other digits: Content of the SEI frame.

FAQ

Q: If I use the SEI frame in Media Push, is it necessary to use the signaling system to send the layout information? Do I use either signaling or SEI? A: Adding the H264/H265 SEI information to the video stream during Media Push is different from sending the uplink data. Only the app_data parameter of the SEI information relates to the uplink data.

Q: Does the signaling system send the layout information? Why does the SEI frame contain the layout information? A: Agora puts the layout information in the SEI frame because the audience members in the LIVE_BROADCASTING profile also need the layout information of the current stream to set the window region of the hosts.