RTMP交互数据记录分析

RTMP 交互数据记录分析

手工解析报文,一次搞不完,后续慢慢修改

文章目录

  • RTMP 交互数据记录分析
    • Handshake 牵手
      • (C->S) Handshake C0+C1
        • C0
        • C1
      • (S->C) Handshake S0+S1+S2
        • S0
        • S1
        • S2 (= C1)
      • (C->S) Handshake C2
        • C2 (= S1)
    • Connect 连接
      • (C->S) connect('cam_remote') 建立一个 rtmp 连接
        • RTMP Header
        • RTMP Body
      • (S->C) Window Acknowledgement Size 2500000 窗口大小带宽
        • RTMP Header
        • RTMP Body
      • (C->S) Window Acknowledgement Size 2500000 窗口大小带宽
        • RTMP Header
        • RTMP Body
      • (S->C) Set Peer Bandwidth 2500000,Dynamic|Set Chunk Size 60000
        • RTMP Header
        • RTMP Body
        • RTMP Header
        • RTMP Body
        • unknow 未知
    • Create Stream 创建流
      • (C->S) releaseStream(41010299111317000001?vhost=192.168.1.229)
      • (C->S) FCPublish(41010299111317000001?vhost=192.168.1.229) | createStream()
      • (S->C) \_result()
      • (S->C) \_result()|\_result()
    • publishing 推送
      • (C->S) publish(41010299111317000001?vhost=192.168.1.229)
      • (S->C) onFCPublish()
    • 未知
      • FIN ??

Handshake 牵手

我抓取的报文使用的是简单握手,复杂握手后续再研究。

(C->S) Handshake C0+C1

C0

03 Protocol version : 03 C0(1 字节) 备注(0x06表示加密)

C1

5f9916c3 time(4 bytes)
00000000 zero(4 bytes)
249f942f5c3acbd1d355495627a42ca1bf0f7aa2a872e77bd7e052a47f74d18c226cac67907f476ac57ab1d62dcf86d5c70f7e7e7275ea515c43e6c4a8bf58b33a132ab37b5a2d48bdcf2ddba59cc07b9c4deb15abdc570f2f45c4c0ed2b832e2896d38cd90fbda6c7d3887c7e4fe82186da2840c66838de96e6a592182fb229b68ca7978c6b4c5a4ec5c7bd24b7d09398e1bc6550e652d8dbe171e41f3215c7a7ad653a27a2865e6e5c2b7b1ae41da4cccb182bc05412a2446d8d54909322474778725821e1a78145bbe550a612dd81c6df9e8d42993e6f15b4ac8f4fc0bf7f3f38c04a2977b45f39a898d1a385597873e8149e893b1c8fd9b9253780d59fa9156fe42fcf9f7717561ed1eb8c3a6af0297095a394a2427c63509ccc354b843ba36f53811dbb895dc2624f5e8daa55a721d45aa77d852ad1c6b0a5e4e4302696916a26972c98ddd8eb3b3d7fcf7b36e15e798fcdefaba5bc6a59a85d7bbfdc133111934692802d8da45b1382c03a732d9c11eb92a5a05e16e2155c64bd4768df41e52dc5744b591f905d935f81ef7d2ce970b09e1715a5e2131156c141afa874a3c6481e188a2f99d8abe160a9667ea1c73546c73bd5b83fcf1de91fb6a0846075b5707f4e881f2e3a107fd467e67c352ab4ed4e90ac7e6ebb777e781eecc985b040ede8b91b1de41485bf6c7b4b8a8ee886ce874253e6e6bb6b6dcb6645571e7753ef37571b235d91cbb2131d4c9314bb6884e6ac71d36fc64f413b7e8142debd401c23442869bfe523c311605d0f22b67c106adfd4c2b43312d89a842a8750538c5c81a6b74f9acb19943268943d25203e78e82249a33e448ac9b19d57eadacc566a8114a222c8aca0e31b432f324c5f933b6acecf99196169bcefa9b5d0841249ef17dc18c890a9ba9cd6d3bf29395a5694372c34397e86e67536ab54a3a687a1af6aab7eeb5b4897402a5d5b4ca8a2d1c8bfee114583e0aba292e854487edfe8da9175ccdda66a2db9b979146822ce38cacb321e5521b2e8a5aa4cde2f3acd10bc49cea0e147bea1e93ea759497c822357a52a9db7c68d6377c25097ed2c99b05f6e5f4f9e25d9975487e18f136a9b5b16aee1be837531eb466a8a428032dbd0914a263e60f0be9d87a6338b17b7cf1e75b7cee13ce8d473616d9fca8889a920bcc04723c0efb24ea4d6caad9da0b4196691e39380c616cb3aa6a4b3365dbce4241316d511b9329e97e5523b94163dec902f8618e78dd4283a7fc562c5904ddb8c54bf8615db3495c76fc16b6eef5ef02dd50f1b6ad4358d5aebd82f8234191e72c19578a3b21c7a29c6ce88bc3b7fda177fdf6a5a1be9a6efd0c680eed0876f9824d84bc7ddb6d9aa937175b7d95eb7684431b35021604eda35b8d7ee4e55966334ca32188f1ab3297437c95d7f87aeb4a970eeb3ba439de0ec83d642c27396e74cb9e9ccbdabde40d4b68e5a44431ddf9d12996647454d3ab2326d8396ed71d3ad69a6791c93abd95040428675486c214cee707c43aea7ded21c706f18ca52b63be137487cd328b51a5b4278949782d195e354c999edb67a102dd219e02bb82a1ce05b89ba7445beb879455c1fb134a59b7a75436e3aa66f50887140a43053a9209839c3137090bddabf20e27f459721a81b56253fe57d8074d7b12817eeba2095e5d49964746545427636aaa5b6bc5cc3196bebf0d17a6bb83384b83046c9ae3aa4568727a5b55222dcedb09ab11464bb705eb250c92d0fe59ab01cd188bb123c198a4caf4e90ba328472b5447728e9d877aa2f47c0283c62c9494259143e7e16b1bbaee952772ac8dac81b60e1133f67a758977671c4c94915138b12421819dcc5b8d41e36e7d718bee469aee0921c96dba5145b70c68d76c22871ed297bd9df3abce762b3cd6b80b8bd36a856434540d14284511821b0cb3231c84c95b033b97b292a35e77ea7a742ce5e8a188cbbd3c04f33c959cc9b7ce672b18329d54b8eef5eb4decd6a941e3fdb99417664233d9c3fefe61a9a69ea13297c26e8b0a5e61d68cbdbbc66e2e4488334a8d048d67b78d5687c76c26d7ad4d291cb913db99f978b815ae36a4d3ade73d3bda4b13f2c9598911a61ef7d45d0161f7044c116c45c802d4ed36471c1c84c857beeb6908a5d308da8 readom bytes(1528 字节)

(S->C) Handshake S0+S1+S2

S0

03 Protocol version : 03 S0(1 字节)

S1

5f9916c3 time(4 bytes)
5f9916c3 zero(4 bytes)
4e164635f0e722301b36a6c6e7265c79a57fdb8a4fa5e5ec43a6b0132c7c43637c738a7b6195956db44a3baa61882beff0ef8146a47541d022dad43f5d1e8bca82244dcda3d34166246d186fde2c65dd2ad732b75b64966e4571969481316dec3eabc8d2851940937741115d5e5f49714665388ab2bfeae940878caaa9eaa5d19d75b2297fdba5df2b9f4b72f07ed545d41cc08dc4b185ed4820a6da1253ba98b974aa3f565f2573ef5aceeec1aa3a9cb7e438839caf7fcdb82db7b369785229ddee5143545f9f52aa7448722e6b1dce564760e4dfc9c09edf7e614fe89c69cc99a316de11a638a522712641c52d162b5d68164b38c7d21e4d425e44c8b01f705a1f565cae7feac1d918ebad3611c1846ac8b88b97999ad5c5e1209c982813e3385a46d8ca40a0aa419b5f609d2fcdf0e1948a7f342b5be2136c8d9c85928ea7d5c586afee356036c1b08765c95b64b1d8d73f1ceb8befefe0849a6c1d2f22e3de9199d3b8eb1980a289d77ad64a32bd3162c22bd6b922bd4ca5395ac6444cabc7d78d86c98f157a20dddedf2f1fa3516b7565483d7015722537bdd46c108e3ad022b1a89bb032ac9c1792bc2744147ba263b5d0c4bb49d2e3efb556e94a82c85e3a80e2db9b9d7f9b364ab36b483e1d9cdcd667a62f499025e7d71d4160d788845e796ee21dde8c443046a0616daeee588c5cefa49686ba8d6dc9b7b6a74e4914b8a1e7be867a119fb19a0f2650e66fcd526680d1dd416551192b17b16249ae21db9cd07125ca1fc06c20d7adef558150acea29993a7fdb4594dbdfe7349d101648d17857a381261e8aeeb4884a44c2e035dc8860626a8ee74d75d66a21d77152afd39a6163b168dea62b6dda583ec97e2958c87dab5d6be9c35062cd36bd2fd79fba3feb7399d820b54ceb1d7cbb8496225b1abfaa77af74b81951d8c771b66d32e6678e86469843838a49f055be8e6821992ebc17cf3fc1d979a0a7d3652315527b8cc2aa33143caf4e34ed1bb35c2d537cd25c5a19243a83b5ca5e21de645c60d92d1914323eb46963a87625138c628066afc368bce6d478bf418aa48ecf1377ee157c2745378299d0e1a8d474195ccbb92e42841c1ee5cc507e80d0547c564983bb62b1e3cd59babd109d401ae213bc203e47254d3be287a26966e8cfa54059678b1959675b222b5da855609a592ca38064b9b791a24d3a139c31cb486333a0d735e24e81136acfa4b03f4d1054d97aa99940414b766d4721872152d33de3ba63d417d5d06aac8322d4ba1b379a86c943b712773c68af46e0b981c3df7384514e842d2ddfca9aeaad5b15cde68ca6384ba1a0701856a8e11630abe6953e3eccb35de39a368c8bcdd091a9c52556e761e896c2e9d671dad59394cb2fbc18ec7e66de1f867194625034121d4a5a13944992664277c82b5462a82e82732f76db7f63ebeebe8e571dac5a2bdf9d2783d8abda2129a9356e13ce857e51a6e53b2c502d291da5712360bc384e6150ba40ec9b521d4c787c505511bf8fa0acbbbdeddad719864f25d7124e2c6488d0957b7ad089b74feff0960fbf2c9872d9646eba42704f82862d85be42db4d2177b9854f524b8f484b2c48114ac9742a3ccbd5674a2bdab941667e7448bc7fb185130fc0478f177bad487de020da1945b4df9de71186a843dd35a035e326cf6f22c7365b5d3ec7196f4cea802decb6d3da5ac1d4d1781eb597a8d381bfa9e1cb7f2635ce4de5d0ad40c2345fbddb399f44e3821c638abaeb419d7be95563c3be7ae19bb0d6726c2543917510739798a08a21a5de9c6ed8c6125abf51ae891e2f7aa2d05f23437550bdd4493f7ad2c8ede47cda88dbb95dd71a2b37b99e3ed127c9a877d5dcd534a8b86ed03a47a736333218ac15c218ddc62d1b8ebc4267cc1a1e52d8e4361c9bd8737321ac2940c84549834b13842fcaa2335f655eb74061bf8348b2a3555c8ab2c0946dd3c544271eb05b22437bd5cf974343e6e46d56b2d98f738bceb81c8f80a1e5627630727dd1be881b406cdbc89826b58b84124c6c92b0e16778eedfe997d3521cecb582cc8219d1ab76bb7a15ca3e925d41cfb3bc87a32bf09819e03ede4143d1e7aead70b8852a35478d3c21bcbf6fe69529a92bbdc5225dc81184ad43b18d31 readom bytes(1528 字节)

S2 (= C1)

5f9916c3 time(4 bytes)
00000000 zero(4 bytes)
249f942f5c3acbd1d355495627a42ca1bf0f7aa2a872e77bd7e052a47f74d18c226cac67907f476ac57ab1d62dcf86d5c70f7e7e7275ea515c43e6c4a8bf58b33a132ab37b5a2d48bdcf2ddba59cc07b9c4deb15abdc570f2f45c4c0ed2b832e2896d38cd90fbda6c7d3887c7e4fe82186da2840c66838de96e6a592182fb229b68ca7978c6b4c5a4ec5c7bd24b7d09398e1bc6550e652d8dbe171e41f3215c7a7ad653a27a2865e6e5c2b7b1ae41da4cccb182bc05412a2446d8d54909322474778725821e1a78145bbe550a612dd81c6df9e8d42993e6f15b4ac8f4fc0bf7f3f38c04a2977b45f39a898d1a385597873e8149e893b1c8fd9b9253780d59fa9156fe42fcf9f7717561ed1eb8c3a6af0297095a394a2427c63509ccc354b843ba36f53811dbb895dc2624f5e8daa55a721d45aa77d852ad1c6b0a5e4e4302696916a26972c98ddd8eb3b3d7fcf7b36e15e798fcdefaba5bc6a59a85d7bbfdc133111934692802d8da45b1382c03a732d9c11eb92a5a05e16e2155c64bd4768df41e52dc5744b591f905d935f81ef7d2ce970b09e1715a5e2131156c141afa874a3c6481e188a2f99d8abe160a9667ea1c73546c73bd5b83fcf1de91fb6a0846075b5707f4e881f2e3a107fd467e67c352ab4ed4e90ac7e6ebb777e781eecc985b040ede8b91b1de41485bf6c7b4b8a8ee886ce874253e6e6bb6b6dcb6645571e7753ef37571b235d91cbb2131d4c9314bb6884e6ac71d36fc64f413b7e8142debd401c23442869bfe523c311605d0f22b67c106adfd4c2b43312d89a842a8750538c5c81a6b74f9acb19943268943d25203e78e82249a33e448ac9b19d57eadacc566a8114a222c8aca0e31b432f324c5f933b6acecf99196169bcefa9b5d0841249ef17dc18c890a9ba9cd6d3bf29395a5694372c34397e86e67536ab54a3a687a1af6aab7eeb5b4897402a5d5b4ca8a2d1c8bfee114583e0aba292e854487edfe8da9175ccdda66a2db9b979146822ce38cacb321e5521b2e8a5aa4cde2f3acd10bc49cea0e147bea1e93ea759497c822357a52a9db7c68d6377c25097ed2c99b05f6e5f4f9e25d9975487e18f136a9b5b16aee1be837531eb466a8a428032dbd0914a263e60f0be9d87a6338b17b7cf1e75b7cee13ce8d473616d9fca8889a920bcc04723c0efb24ea4d6caad9da0b4196691e39380c616cb3aa6a4b3365dbce4241316d511b9329e97e5523b94163dec902f8618e78dd4283a7fc562c5904ddb8c54bf8615db3495c76fc16b6eef5ef02dd50f1b6ad4358d5aebd82f8234191e72c19578a3b21c7a29c6ce88bc3b7fda177fdf6a5a1be9a6efd0c680eed0876f9824d84bc7ddb6d9aa937175b7d95eb7684431b35021604eda35b8d7ee4e55966334ca32188f1ab3297437c95d7f87aeb4a970eeb3ba439de0ec83d642c27396e74cb9e9ccbdabde40d4b68e5a44431ddf9d12996647454d3ab2326d8396ed71d3ad69a6791c93abd95040428675486c214cee707c43aea7ded21c706f18ca52b63be137487cd328b51a5b4278949782d195e354c999edb67a102dd219e02bb82a1ce05b89ba7445beb879455c1fb134a59b7a75436e3aa66f50887140a43053a9209839c3137090bddabf20e27f459721a81b56253fe57d8074d7b12817eeba2095e5d49964746545427636aaa5b6bc5cc3196bebf0d17a6bb83384b83046c9ae3aa4568727a5b55222dcedb09ab11464bb705eb250c92d0fe59ab01cd188bb123c198a4caf4e90ba328472b5447728e9d877aa2f47c0283c62c9494259143e7e16b1bbaee952772ac8dac81b60e1133f67a758977671c4c94915138b12421819dcc5b8d41e36e7d718bee469aee0921c96dba5145b70c68d76c22871ed297bd9df3abce762b3cd6b80b8bd36a856434540d14284511821b0cb3231c84c95b033b97b292a35e77ea7a742ce5e8a188cbbd3c04f33c959cc9b7ce672b18329d54b8eef5eb4decd6a941e3fdb99417664233d9c3fefe61a9a69ea13297c26e8b0a5e61d68cbdbbc66e2e4488334a8d048d67b78d5687c76c26d7ad4d291cb913db99f978b815ae36a4d3ade73d3bda4b13f2c9598911a61ef7d45d0161f7044c116c45c802d4ed36471c1c84c857beeb6908a5d308da8 readom bytes(1528 字节)

(C->S) Handshake C2

C2 (= S1)

5f9916c3 time(4 bytes)
5f9916c3 zero(4 bytes)
4e164635f0e722301b36a6c6e7265c79a57fdb8a4fa5e5ec43a6b0132c7c43637c738a7b6195956db44a3baa61882beff0ef8146a47541d022dad43f5d1e8bca82244dcda3d34166246d186fde2c65dd2ad732b75b64966e4571969481316dec3eabc8d2851940937741115d5e5f49714665388ab2bfeae940878caaa9eaa5d19d75b2297fdba5df2b9f4b72f07ed545d41cc08dc4b185ed4820a6da1253ba98b974aa3f565f2573ef5aceeec1aa3a9cb7e438839caf7fcdb82db7b369785229ddee5143545f9f52aa7448722e6b1dce564760e4dfc9c09edf7e614fe89c69cc99a316de11a638a522712641c52d162b5d68164b38c7d21e4d425e44c8b01f705a1f565cae7feac1d918ebad3611c1846ac8b88b97999ad5c5e1209c982813e3385a46d8ca40a0aa419b5f609d2fcdf0e1948a7f342b5be2136c8d9c85928ea7d5c586afee356036c1b08765c95b64b1d8d73f1ceb8befefe0849a6c1d2f22e3de9199d3b8eb1980a289d77ad64a32bd3162c22bd6b922bd4ca5395ac6444cabc7d78d86c98f157a20dddedf2f1fa3516b7565483d7015722537bdd46c108e3ad022b1a89bb032ac9c1792bc2744147ba263b5d0c4bb49d2e3efb556e94a82c85e3a80e2db9b9d7f9b364ab36b483e1d9cdcd667a62f499025e7d71d4160d788845e796ee21dde8c443046a0616daeee588c5cefa49686ba8d6dc9b7b6a74e4914b8a1e7be867a119fb19a0f2650e66fcd526680d1dd416551192b17b16249ae21db9cd07125ca1fc06c20d7adef558150acea29993a7fdb4594dbdfe7349d101648d17857a381261e8aeeb4884a44c2e035dc8860626a8ee74d75d66a21d77152afd39a6163b168dea62b6dda583ec97e2958c87dab5d6be9c35062cd36bd2fd79fba3feb7399d820b54ceb1d7cbb8496225b1abfaa77af74b81951d8c771b66d32e6678e86469843838a49f055be8e6821992ebc17cf3fc1d979a0a7d3652315527b8cc2aa33143caf4e34ed1bb35c2d537cd25c5a19243a83b5ca5e21de645c60d92d1914323eb46963a87625138c628066afc368bce6d478bf418aa48ecf1377ee157c2745378299d0e1a8d474195ccbb92e42841c1ee5cc507e80d0547c564983bb62b1e3cd59babd109d401ae213bc203e47254d3be287a26966e8cfa54059678b1959675b222b5da855609a592ca38064b9b791a24d3a139c31cb486333a0d735e24e81136acfa4b03f4d1054d97aa99940414b766d4721872152d33de3ba63d417d5d06aac8322d4ba1b379a86c943b712773c68af46e0b981c3df7384514e842d2ddfca9aeaad5b15cde68ca6384ba1a0701856a8e11630abe6953e3eccb35de39a368c8bcdd091a9c52556e761e896c2e9d671dad59394cb2fbc18ec7e66de1f867194625034121d4a5a13944992664277c82b5462a82e82732f76db7f63ebeebe8e571dac5a2bdf9d2783d8abda2129a9356e13ce857e51a6e53b2c502d291da5712360bc384e6150ba40ec9b521d4c787c505511bf8fa0acbbbdeddad719864f25d7124e2c6488d0957b7ad089b74feff0960fbf2c9872d9646eba42704f82862d85be42db4d2177b9854f524b8f484b2c48114ac9742a3ccbd5674a2bdab941667e7448bc7fb185130fc0478f177bad487de020da1945b4df9de71186a843dd35a035e326cf6f22c7365b5d3ec7196f4cea802decb6d3da5ac1d4d1781eb597a8d381bfa9e1cb7f2635ce4de5d0ad40c2345fbddb399f44e3821c638abaeb419d7be95563c3be7ae19bb0d6726c2543917510739798a08a21a5de9c6ed8c6125abf51ae891e2f7aa2d05f23437550bdd4493f7ad2c8ede47cda88dbb95dd71a2b37b99e3ed127c9a877d5dcd534a8b86ed03a47a736333218ac15c218ddc62d1b8ebc4267cc1a1e52d8e4361c9bd8737321ac2940c84549834b13842fcaa2335f655eb74061bf8348b2a3555c8ab2c0946dd3c544271eb05b22437bd5cf974343e6e46d56b2d98f738bceb81c8f80a1e5627630727dd1be881b406cdbc89826b58b84124c6c92b0e16778eedfe997d3521cecb582cc8219d1ab76bb7a15ca3e925d41cfb3bc87a32bf09819e03ede4143d1e7aead70b8852a35478d3c21bcbf6fe69529a92bbdc5225dc81184ad43b18d31 readom bytes(1528 字节)

Connect 连接

(C->S) connect(‘cam_remote’) 建立一个 rtmp 连接

RTMP Header

03 chunk stream ID: 3
000000 timestamp: 0
000100 Body size: 256
14 Type ID: AMF0 Command(0x14)
00000000 StreamId: 0

RTMP Body

02 AMF0 type: String(0x02)
0007 String length: 7
636f6e6e656374 String: connect

00 AMF0 type: Number(0x00)
3ff0000000000000 Number: 1

03 AMF0 type: Object (0x03)

app:“cam_remote”
0003 String length: 3
617070 String: app
02 AMF0 type: String(0x02)
000a String length: 10
63616d5f72656d6f7465 String: cam_remote

flashVer:“WIN 15.0.0.239”
0008 String length: 8
666c617368566572 String: flashVer
02 AMF0 type: String(0x02)
000e String length: 14
57494e2031352c302c302c323339 String: WIN 15,0,0,239

swfUrl:""
0006 String length: 6
73776655726c String: swfUrl
02 AMF0 type: String(0x02)
0000 String length: 0

tcUrl:rtmp://192.168.1.229/cam_remote
0005 746355726c 02 001f 72746d703a2f2f3139322e3136382e312e3232392f63616d5f72656d6f7465

fpad:false
0004 66706164 01 00

capabilities:239
000c 63c361706162696c6974696573 00 406de00000000000

audioCodecs:3575
000b 617564696f436f64656373 00 40abee0000000000

videoCodecs:252
000b 766964656f436f64656373 00 406f800000000000

videoFunction:1
000d 766964656f46756e6374696f6e 00 3ff0000000000000

pageUrl:""
0007 7061676555726c 02 0000

objectEncoding:0
000e 6f626a656374456e636f64696e67 00 0000000000000000

000009 End Of Object Marker

(S->C) Window Acknowledgement Size 2500000 窗口大小带宽

RTMP Header

02 chunk stream ID: 2
000000 timestamp: 0
000004 Body size: 4
05 Type ID: Window Acknowledgement Size (0x05)
00000000 StreamId: 0

RTMP Body

002625a0 2500000

(C->S) Window Acknowledgement Size 2500000 窗口大小带宽

RTMP Header

02 chunk stream ID: 2
000000 timestamp: 0
000004 Body size: 4
05 Type ID: Window Acknowledgement Size (0x05)
00000000 StreamId: 0

RTMP Body

002625a0 2500000

(S->C) Set Peer Bandwidth 2500000,Dynamic|Set Chunk Size 60000

RTMP Header

02 000000 000005 06 00000000 Set peer bandwidth (0x06)

RTMP Body

002625a0 2500000
02 limit type: Dynamic(2)

RTMP Header

02 000000 000004 01 00000000 Set Chunk Size (0x01)

RTMP Body

0000ea60 60000

unknow 未知

03 000000 00028f 14 00000000

02 0007 5f726573756c74(_result)

00 3ff0000000000000

03(object)
0006 666d73566572(fmsVer) 02 000d 464d532f332c352c332c383838(FMS/3,5,3,888)
000c 6361706162696c6974696573(capabilities) 00 405fc00000000000
0004 6d6f6465(mode) 00 3ff0000000000000
000009

03(object)
0005 6c6576656c(level) 02 0006 737461747573(status)
0004 636f6465(code) 02 001d 4e6574436f6e6e656374696f6e2e436f6e6e6563742e53756363657373(NetConnection.Connect.Success)
000b 6465736372697074696f6e(description) 02 0014 436f6e6e656374696f6e20737563636565646564
000e 6f626a656374456e636f64696e67 00 0000000000000000
0004 64617461 08 00000000000776657273696f6e020009332c352c332c38383800077372735f736967020003535253000a7372735f7365727665720200175352532f322e302e323633285a686f7547756f77656e29000b7372735f6c6963656e7365020015546865204d4954204c6963656e736520284d49542900087372735f726f6c65020007636c757374657200077372735f75726c02001c68747470733a2f2f6769746875622e636f6d2f6f737372732f737273000b7372735f76657273696f6e020007322e302e32363300087372735f73697465020010687474703a2f2f6f737372732e6e657400097372735f656d61696c02001277696e6c696e407669702e3132362e636f6d000d7372735f636f70797269676874020022436f707972696768742028632920323031332d3230313520535253286f7373727329000b7372735f7072696d61727902000e5352532f322e3072656c65617365000b7372735f617574686f727302001277696e6c696e2c77656e6a69652e7a68616f000d7372735f7365727665725f697002000d3139322e3136382e312e32323900077372735f70696400408618000000000000067372735f69640040e32720000000000000090 00009

03 000000 000015 14 00000000 0200086f6e4257446f6e6500000000000000000005

Create Stream 创建流

(C->S) releaseStream(41010299111317000001?vhost=192.168.1.229)

03 00000000 004514 00000000 02 000d7 2656c6561736553747265616d0040000000000000000502002834313031303239393131313331373030303030313f76686f73743d3139322e3136382e312e323239

(C->S) FCPublish(41010299111317000001?vhost=192.168.1.229) | createStream()

03000000000041140000000002000946435075626c6973680040080000000000000502002834313031303239393131313331373030303030313f76686f73743d3139322e3136382e312e32323903000000000019140000000002000c63726561746553747265616d00401000000000000005

(S->C) _result()

030000000000151400000000020007 5f726573756c74(_result) 0040000000000000000506

(S->C) _result()|_result()

030000000000151400000000020007 5f726573756c74(_result) 00400800000000000005060300000000001d1400000000020007 5f726573756c74(_result) 00401000000000000005003ff0000000000000

publishing 推送

(C->S) publish(41010299111317000001?vhost=192.168.1.229)

0500000000004614010000000200077075626c6973680000000000000000000502002834313031303239393131313331373030303030313f76686f73743d3139322e3136382e312e3232390200046c697665

(S->C) onFCPublish()

05000000000066140100000002000b6f6e46435075626c69736800000000000000000005030004636f64650200174e657453747265616d2e5075626c6973682e5374617274000b6465736372697074696f6e02001a53746172746564207075626c697368696e672073747265616d2e000009

未知

FIN ??

0500000000008814010000000200086f6e537461747573000000000000000000050300056c6576656c0200067374617475730004636f64650200174e657453747265616d2e5075626c6973682e5374617274000b6465736372697074696f6e02001a53746172746564207075626c697368696e672073747265616d2e0008636c69656e7469640200084153414943697373000009

你可能感兴趣的:(流媒体)