{"_id":"@api.video/browser-to-rtmp-client","_rev":"16-ddef73fb494e14a174ba9e088ff01d09","name":"@api.video/browser-to-rtmp-client","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.0":{"name":"@api.video/browser-to-rtmp-client","version":"0.1.0","author":"","license":"MIT","_id":"@api.video/browser-to-rtmp-client@0.1.0","maintainers":[{"name":"anthony.dantard","email":"hello@api.video"},{"name":"olivierapivideo","email":"olivier@api.video"},{"name":"lutangar","email":"johan.dufour@gmail.com"}],"dist":{"shasum":"42ea8b441530b602965fd0a9917e417f7ef5d63a","tarball":"https://registry.npmjs.org/@api.video/browser-to-rtmp-client/-/browser-to-rtmp-client-0.1.0.tgz","fileCount":10,"integrity":"sha512-Aa7+A6+sg6COvCi8FdtFpeSGZ6xy9XntVBWymT0xLpwAprG0Zv1nG2lRQxP9BD8jpQIs4fHG5eLJSxgu3u7R3w==","signatures":[{"sig":"MEUCIQCnFUgNTHMBm0vyYqHzk+ILRL13Uc7iXW0pZ2wvc40PSQIgdAxktwS3pZHLKnM5OaL8nXC9XZ5KlQisJtY/YiNdaiI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0w85CRA9TVsSAnZWagAAxY0QAIdKrHmjcz0S7bSrBEtf\nG3fmK4DgAyfH9Qa9PE6CS8a7RXeaqGu++yE//XedDDOAg06T4lOAR5Ijr4+5\nnqjj8q3BbLF/W625aPRYd6nCoM0mWzjl330Z0SH8m0SQOxMlajhVkWdnJ4kf\nAPMQdYD1rNEdjhIfIvFMTndYkMLdGe1w2zFpkOTQ/jydhCLSuyFbwuWGXsmv\nWzb1xNdhqadG3TUMWHdCvY4g78WAygdXoL8I0QOd/fa4E3sJfYxUo5MNqpiw\nHAfD3vidpDTTf+pWGFIgK4v9ybcuhtWxi1Jr+7SXzmeB4js53VLjrUnQuukh\noiNfc4s7d6xqC+FzlvVwL1wHKJB6NNYaw8NVwzToetnT0uJYfZVqPs7FDbWU\nnzdWveWHwCfj27aATZv0xt+oNl8ZuxQVLIUIfbK61g5sD34D4NZhGvjYhpLi\nduuf48QeTFJz526joRQnNQ88MQgA29hlDTUhMKTQyJwa007bmrKeH64mrNOt\nNjepBxHqz53O4dZSsAgpMwCsyYYv6mZ67cZqrScP6gh05FKlBt5wV+c2/w4s\nn6ifnG0HODfAHh9PCyoU/yN42B4L6WYhkcVsJ58bU4Of2K/fNWD3+xbQvgrG\nEj0hKeHns8I51RHCeJWos1+NALTPi85oHEnyGZqm/L+2KUi9kCmuRbqVWMgd\nw8cg\r\n=MWQO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/src/index.d.ts","module":"dist/index.js","scripts":{"test":"npm run build && mocha -r ts-node/register -r jsdom-global/register 'test/**/*.ts'","build":"npm run tslint && webpack --mode production","tslint":"tslint --project .","postpublish":"rm README.md","prepublishOnly":"npm run build && cp ../README.md ./"},"_npmUser":{"name":"olivierapivideo","email":"olivier@api.video"},"_npmVersion":"7.19.1","description":"[![badge](https://img.shields.io/twitter/follow/api_video?style=social)](https://twitter.com/intent/follow?screen_name=api_video) &nbsp; [![badge](https://img.shields.io/github/stars/apivideo/api.video-browser-to-rtmp?style=social)](https://github.com/api","directories":{},"_nodeVersion":"16.6.0","dependencies":{"core-js":"^3.8.3","socket.io-client":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^16.4.0","core-js":"^3.19.3","webpack":"^5.60.0","ts-loader":"^8.0.3","webpack-cli":"^4.9.1","@types/jsdom":"^16.2.6","jsdom-global":"^3.0.2","socket.io-client":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-to-rtmp-client_0.1.0_1641221945831_0.8006265072276018","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@api.video/browser-to-rtmp-client","version":"0.1.1","author":"","license":"MIT","_id":"@api.video/browser-to-rtmp-client@0.1.1","maintainers":[{"name":"anthony.dantard","email":"hello@api.video"},{"name":"olivierapivideo","email":"olivier@api.video"},{"name":"lutangar","email":"johan.dufour@gmail.com"}],"dist":{"shasum":"fd859f886a4e5cb293b0e624fc14325dcb446348","tarball":"https://registry.npmjs.org/@api.video/browser-to-rtmp-client/-/browser-to-rtmp-client-0.1.1.tgz","fileCount":12,"integrity":"sha512-FlGQMzNz0EkPRL+kAeDOV0wKQ3xjc6poLnIKsz03hGktwWrmWpqwm7rZQ6f//7r6csTjFgR3t4BQRKhRh7bi4A==","signatures":[{"sig":"MEYCIQC3rC9oxNE3McRY5kFGswUYqLs4VvHwYlr158yZF9V3PgIhANn75qwA765RTP9yOas89kDUHDDcCxL/nqzkA8R8eIMH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0zUFCRA9TVsSAnZWagAA/YAP/3BW52wX0ZN867xVHXb+\n8PzU1S3Cf912lZJ+sbX+N+4l49LepfP+to9TpmBXdMo5PvR4SNLzWaMg7qQK\ne5vb/8M5nqOsRU/+rbap+trRn8GVXG3Oo8YwIn8ZsQ6C2U43IuiqiGWSnDcD\nw2ySrF0IbA6Gf/VP8aSMOOuQ2h8E5fGuI5RlH8tum7LKzaKBonNGgisfBmif\nSXR7jtLHl7yDj4dWVRiNEFUpeP5udcj81303Oxl75dZDox0hp9xly/BBsJ6w\n95Ts1125AShFlZFDzzNdy3uujiCLnJpmWrvXYPy1KQgZpmj0XVGTV2UKQ4+F\nV3PQ9dild39ofmNG4MrBsarebIoIUp64QA5HGaTVM6Wl64lk5OFnvun3+xH7\nU0LaNtneBmnx4gWeLmFLqFGWykB6qJnIIvz8JKOqX7l6STAr1doqtvtcMIT8\nMNSpV6CXlxBvWGNtOXC/8I4iU+ctiWYHAARRjep11yx9CDEAoKwc9BmictKm\nCrh0/VQNwZ8BIe2H4Gb3dS5BsN24u8dpqXCWgAsAXT2aQ8LElrKNsSrf1N7I\nOhxk8KhmBM0BT/Efvdvv2vJ0/xLmb5wu3TBFpXCmxtoHvzuVYo4BQuDOkfEc\nAsweFP5h16pw1rx789dhIT88NADsSIDlqasexKrN6TTO8n5pDhqGeac59XCi\ngSd+\r\n=+DAF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/src/index.d.ts","module":"dist/index.js","scripts":{"test":"npm run build && mocha -r ts-node/register -r jsdom-global/register 'test/**/*.ts'","build":"npm run tslint && webpack --mode production","tslint":"tslint --project .","postpublish":"rm README.md","prepublishOnly":"npm run build && cp ../README.md ./"},"_npmUser":{"name":"olivierapivideo","email":"olivier@api.video"},"_npmVersion":"7.19.1","description":"[![badge](https://img.shields.io/twitter/follow/api_video?style=social)](https://twitter.com/intent/follow?screen_name=api_video) &nbsp; [![badge](https://img.shields.io/github/stars/apivideo/api.video-browser-to-rtmp?style=social)](https://github.com/api","directories":{},"_nodeVersion":"16.6.0","dependencies":{"core-js":"^3.8.3","socket.io-client":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^16.4.0","core-js":"^3.19.3","webpack":"^5.60.0","ts-loader":"^8.0.3","webpack-cli":"^4.9.1","@types/jsdom":"^16.2.6","jsdom-global":"^3.0.2","socket.io-client":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-to-rtmp-client_0.1.1_1641231621761_0.4569502615092642","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@api.video/browser-to-rtmp-client","version":"0.1.2","author":"","license":"MIT","_id":"@api.video/browser-to-rtmp-client@0.1.2","maintainers":[{"name":"anthony.dantard","email":"hello@api.video"},{"name":"olivierapivideo","email":"olivier@api.video"},{"name":"lutangar","email":"johan.dufour@gmail.com"}],"dist":{"shasum":"15c56d15af6abc41ebc759cb2eb71078b332963d","tarball":"https://registry.npmjs.org/@api.video/browser-to-rtmp-client/-/browser-to-rtmp-client-0.1.2.tgz","fileCount":12,"integrity":"sha512-iH+q8hmwYVB3PBTR4bOE9HTSmsNs62T8SSBRtoLSC4rDXMim5ZF82yQdbLGFgUsC8cE5lAlMauUW4+vhR5T7tw==","signatures":[{"sig":"MEUCIGwWCsSbXyhOzIvFe5npQQdvE6Wv3Ht4m6l+uSoejS5eAiEAk2lK+j5Sd2W6NNpl77BA64G0ZPmJuwae9OzsmII04N4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0zZ3CRA9TVsSAnZWagAA6+QP/3DHraFamvN1y9EPnE+R\nz7TgJVTvPQXW7vdMJuYXtFgbsTX2LhR18iEXPc7hUbfi390d4RCEVKSyGQYO\novmkrj9wqUTFqPinbGhnjFJldQfaLItfNSRPBtSbIBUfDdrWi2T00K71otmG\nEzq2xa+pVVDwdRju2zOiB0ThmMLT6Q+H1fD73mvXsbcratQU3QsrnMVifmEg\nfTYew9BLEdVYLlBPYSotmeMRlSahwvIVaqFFaEi66OAzJR6aOLl/zrAhKywh\ntw0ECYyTw/CDNRrZCz/7vzWPM1x0ILK5lc5g/ysXLxdRFg8KMl+L72gAdlod\nZpb/xWCljJTKJ7CwoCEUYTvQyGWuKRva7j3K6TAkP3CSOz3qjIBuQGYAq0lo\nvyfIVwRA+hLqDCHvhazRABP7ZYczLgr4cWqczP9BcbFZVBNUHKSfLEy5P84D\ncc1hpy1HSXUOk9JKz7xWvk0wR1HmALzQTBp8aGrgiSjvqJzbTLUtl/NilaCW\nOupDb4cmYjL0ZsvMLCQjflf0vnfHxzWwtegqcLmxcwA/NwPBT95gcR16zALS\nrIRHgjIB/CwpOYo8UQS0Y+i0G0fmNE9vlXkX33LdDyDmWJ02qBAm4qUKKPXF\nAuTTT0XmU8WC5+rtoNPGc+kUZRzZOlG4DiPaWS4tJezKVeWZfXhphKPwCKLK\n2If3\r\n=41tq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/src/index.d.ts","module":"dist/index.js","scripts":{"test":"npm run build && mocha -r ts-node/register -r jsdom-global/register 'test/**/*.ts'","build":"npm run tslint && webpack --mode production","tslint":"tslint --project .","postpublish":"rm README.md","prepublishOnly":"npm run build && cp ../README.md ./"},"_npmUser":{"name":"olivierapivideo","email":"olivier@api.video"},"_npmVersion":"7.19.1","description":"[![badge](https://img.shields.io/twitter/follow/api_video?style=social)](https://twitter.com/intent/follow?screen_name=api_video) &nbsp; [![badge](https://img.shields.io/github/stars/apivideo/api.video-browser-to-rtmp?style=social)](https://github.com/api","directories":{},"_nodeVersion":"16.6.0","dependencies":{"core-js":"^3.8.3","socket.io-client":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^16.4.0","core-js":"^3.19.3","webpack":"^5.60.0","ts-loader":"^8.0.3","webpack-cli":"^4.9.1","@types/jsdom":"^16.2.6","jsdom-global":"^3.0.2","socket.io-client":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-to-rtmp-client_0.1.2_1641231991852_0.4112074475275074","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@api.video/browser-to-rtmp-client","version":"0.2.0","author":"","license":"MIT","_id":"@api.video/browser-to-rtmp-client@0.2.0","maintainers":[{"name":"anthony.dantard","email":"hello@api.video"},{"name":"olivierapivideo","email":"olivier@api.video"},{"name":"lutangar","email":"johan.dufour@gmail.com"}],"dist":{"shasum":"bd377675018f93d35a15002e844fb41c61dd363e","tarball":"https://registry.npmjs.org/@api.video/browser-to-rtmp-client/-/browser-to-rtmp-client-0.2.0.tgz","fileCount":12,"integrity":"sha512-LyeWC7YTjcr9A7Blerso9PqzNgiJWF2SVeMdcs1f9pFQpLATQRIDSpT16fmrL+WM+uE8w19aF4nNRsgyGp7kwA==","signatures":[{"sig":"MEUCIHqr83NzPLTjw4eLdx5W+092fGNrl9ScMnsGAMNllHgsAiEAoR0vb/XmWKBrwLpJWuwmhPK06BFX6yM28r0i7CCAQTg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1AgICRA9TVsSAnZWagAAJtIP/3gAr35NV9PGci1WZgfs\n03H72EAzovYowswuqMy8ihVRj/PLj9QcfNk8y6uKQcV3kaB1o9KJfqpd3AXk\n1Jdo4O6hkU5+/qiCMN5S/x9jVOwlavOpkrLuPWII2YhRG6q2rzbQKoIQUS1b\nyyGDJ51GL0TOABXkeNGCIdyrL1OqIYFJZhMqftSqYHr8Fn4b0TQBJskM5LHd\nrGKpvMYo0AROJyThRyDw2eUdXHlKwobeDQhxNF22CJMSVO5U5DqYvT9v+y7c\nGSs4aXCSu/QnNF9WqYimJeW8NPnpD89AInuBgATOkoX7nmOWeoIBaycLZXCQ\nbp9I4S0s0rbBSGAspFk6Bo60HNac1YgRHwQQJsgkgSjJpbhVk6HjOynTwx4U\neifNrxvq2awh3YqIHGvGxYTSM39n5NKTZ0D6X+30uR1JeID8J3fQjiYtDn3Y\n6jHfwvy5NO4gvOEvEnKUic99ZEgZQ3lQwx9CTDLjZ6K3KHo+1fdkl1+zfjCv\nXwlZHpra4tPs4Uoh0LXBkDyT8C+g6AiTPBqTfSrQvNDYntLGvJyGuckjJTqv\nbiADiOr3O+IoBUOEkgggMGqiXb65Y0dG/1KKlKK4paWS5rcNvd2tcmvGAEyk\nJZIQ7cCI9N0Z1Dunq+/wG8lHw7UlGeS1zNsZpmsrlnZqD1vwyZQ6+pxvV9Re\n+wYw\r\n=2sHB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/src/index.d.ts","module":"dist/index.js","gitHead":"087dddd94b012f31bfc9d88e6f8bea599ed7d685","scripts":{"test":"npm run build && mocha -r ts-node/register -r jsdom-global/register 'test/**/*.ts'","build":"npm run tslint && webpack --mode production","tslint":"tslint --project .","postpublish":"rm README.md","prepublishOnly":"npm run build && cp ../README.md ./"},"_npmUser":{"name":"olivierapivideo","email":"olivier@api.video"},"_npmVersion":"8.1.2","description":"Library to broadcast the stream of a webcam from the browser to an RTMP server (client part).","directories":{},"_nodeVersion":"16.13.1","dependencies":{"core-js":"^3.8.3","socket.io-client":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^16.4.0","core-js":"^3.19.3","webpack":"^5.60.0","ts-loader":"^8.0.3","webpack-cli":"^4.9.1","@types/jsdom":"^16.2.6","jsdom-global":"^3.0.2","socket.io-client":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-to-rtmp-client_0.2.0_1641285639859_0.7201712718993238","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@api.video/browser-to-rtmp-client","version":"0.2.1","author":"","license":"MIT","_id":"@api.video/browser-to-rtmp-client@0.2.1","maintainers":[{"name":"anthony.dantard","email":"hello@api.video"},{"name":"olivierapivideo","email":"olivier@api.video"},{"name":"lutangar","email":"johan.dufour@gmail.com"}],"dist":{"shasum":"2f229e3a658a0f25d05df05a9823502d380868f5","tarball":"https://registry.npmjs.org/@api.video/browser-to-rtmp-client/-/browser-to-rtmp-client-0.2.1.tgz","fileCount":12,"integrity":"sha512-nkL8Z+FfloJf3Piy6JP+piCgUD7OkhHxfbdQvWLjapYSG60TfJEfKsNMmf74oO8Qu4vpgf6QuCjsDnUrbOz/WQ==","signatures":[{"sig":"MEQCIDvQRB3ODXCLXeAttPiCNd0fkefyPAjutIsytKg0vNKdAiBbqMmPcbqKZU33zCWhINzmPZaj0/xc9J9PtFsn58Nmtw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1EkqCRA9TVsSAnZWagAAhkwQAJoCpuPBZ9OANeXybwN6\nuPPylmUP0R2oBbLCNtaCd8EUTblRvH9zbCD9Q2SRfpNy544+W6QCWg8APOC5\nxaL1YauYLEwsynw0UU1NbQ1TdtIkCFKVA6By91djbiqkQgXztFGxhs3X1c+R\n0t4GTKXFJMg1aRj/f+hW6/6TdRkocrU5nbFRtbqX20ECvSqt5zeOBpoRQ5TJ\nAxhOKcUXKvlfcxKCiLVLVy3vO6tNAi+aUSs1n6rkjVW9WZwAXxZlE1gQnDlB\nEvbzHMVT0G+MwvzIUViN/8Y3C6+kl1yYoEWX47Zw6VCjOjnSU6ONUGr2vO11\ns+ls4ZhqEBwpmCUYptTg5K7mjPqN2dMMeuBaYz3MpZL7Jn577ayBdMc+fP2x\n1+Y7R0/8WDivCx7Ry366vQie85kjVU8+qO9n2iLcmaCMUabjObVkf8izzCto\nOR3+f1tKeJsnrRZelI+Z1auW5gFXhoxD0/yT0J6t+1T77bYSqTgU/U1rXXtu\njx8RHJ05WKVls0Od2EVIfDL+IIzt8vwFo5d0yR/eQiP7S1QnXXmLkFH7DIuE\nikGMQdvQ8KtOMnVJwPcYQjtnsucWXRPnGfkXZsiPgGInkQtoXW2rxJN9b33a\ns/ZjrHAnCF8d0+AzviIMO8XmvpbUOccSS3wKUJGYVkVwvQVNrrvdiIJkn3vh\nA+Wx\r\n=kpdX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/src/index.d.ts","module":"dist/index.js","gitHead":"48db18104c2a59959a27a2827d60b43729b1791d","scripts":{"test":"npm run build && mocha -r ts-node/register -r jsdom-global/register 'test/**/*.ts'","build":"npm run tslint && webpack --mode production","tslint":"tslint --project .","postpublish":"rm README.md","prepublishOnly":"npm run build && cp ../README.md ./"},"_npmUser":{"name":"olivierapivideo","email":"olivier@api.video"},"_npmVersion":"8.1.2","description":"Library to broadcast the stream of a webcam from the browser to an RTMP server (client part).","directories":{},"_nodeVersion":"16.13.1","dependencies":{"core-js":"^3.8.3","socket.io-client":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^16.4.0","core-js":"^3.19.3","webpack":"^5.60.0","ts-loader":"^8.0.3","webpack-cli":"^4.9.1","@types/jsdom":"^16.2.6","jsdom-global":"^3.0.2","socket.io-client":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-to-rtmp-client_0.2.1_1641302314713_0.3320219395904691","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@api.video/browser-to-rtmp-client","version":"0.2.2","author":"","license":"MIT","_id":"@api.video/browser-to-rtmp-client@0.2.2","maintainers":[{"name":"anthony.dantard","email":"hello@api.video"},{"name":"olivierapivideo","email":"olivier@api.video"},{"name":"lutangar","email":"johan.dufour@gmail.com"}],"dist":{"shasum":"ea24b3754ca8cbcec03ad99cd1b6e863c1fe4e2f","tarball":"https://registry.npmjs.org/@api.video/browser-to-rtmp-client/-/browser-to-rtmp-client-0.2.2.tgz","fileCount":12,"integrity":"sha512-OgVv0fgMbpNlrYc3wRJ2V6vREoZZkJGHUTKUIYspPsio/7uJL9+o3UH3TbdM9poF3RMMRlOlNG6aiX9DsxnAiw==","signatures":[{"sig":"MEQCIG/JzHqO7zxK6uxjXPeYAGN8a6nFYXbn0Wlm6dXbOCZnAiAJzrJD6ZbrVjFReC3+TMbTHj3RAAOYD7j+YI3VjrnXEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111902,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6XbjCRA9TVsSAnZWagAA/wkP/3jgToIcArjnwqXX38Ak\ny+QjOdHjrT+XZMGvF74wkaRq7m6G5zmj03615qsUwKYUQBOVo4NlFoDlJtnc\nOpXfuMGpdiqmwe5wit8wU6CQvifpTVfkUUE1+YZweypcnnqU5VhpPPCXzIqh\nkik5kJSR2InlsnrRFCR2iSHviimSOOSUw/C4/hS9hkTzUumQ9+jMzGGEWgD0\n4qO8ZgbtyyUW19lXyDtuXEY29tFCfJhfPD6GSkLjodxyrDQxPz+coe7Xyx2W\nFBrdFDQeyavD/AN69fBsrX4BynORP9X0yKNyMfp2j5xHxaX5nKO5/6vy2tUH\nVPqgOQ4Ag2bGsIZSnP/xku4xobmtKk51tOicVpjcy0vGkAU6rZc2GOLUiDWI\nQwkwuJ88XwAOagTFtK1P1Bp/lHazKAv/sYSrmubN8v6XNA+W6+Hti7TrtcBa\niJkBk14uycHk8JYhjIfw3NBOrqGXlOdPFO9HDK8JkiRXnCEvqWV/4iQ2qvEr\nW6t2dYq/SkGQgEyq6NLax/Z6n7UFA5QtcvWtCzcwQOXS9wLMC3azckBtcLQx\nTqw1yb2O1c+M9hp7MOEAeAUh3DKmPl/1JvTSkRsUw0a3KzVrOOTtKXx4e2Ro\nJcNoNF94ngAV+DuMRIrwUDJjccurqrEtWTnoEHzMcHgQIZN9ZNSGYtqO/zYI\nOaGb\r\n=ijN8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/src/index.d.ts","module":"dist/index.js","gitHead":"17387f55013aa43b2a1a822112abb2b2679bd50f","scripts":{"test":"npm run build && mocha -r ts-node/register -r jsdom-global/register 'test/**/*.ts'","build":"npm run tslint && webpack --mode production","tslint":"tslint --project .","postpublish":"rm README.md","prepublishOnly":"npm run build && cp ../README.md ./"},"_npmUser":{"name":"olivierapivideo","email":"olivier@api.video"},"_npmVersion":"8.1.2","description":"Library to broadcast the stream of a webcam from the browser to an RTMP server (client part).","directories":{},"_nodeVersion":"16.13.2","dependencies":{"core-js":"^3.8.3","socket.io-client":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^16.4.0","core-js":"^3.19.3","webpack":"^5.60.0","ts-loader":"^8.0.3","webpack-cli":"^4.9.1","@types/jsdom":"^16.2.6","jsdom-global":"^3.0.2","socket.io-client":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-to-rtmp-client_0.2.2_1642690275792_0.6282967410300162","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@api.video/browser-to-rtmp-client","version":"0.2.3","author":"","license":"MIT","_id":"@api.video/browser-to-rtmp-client@0.2.3","maintainers":[{"name":"anthony.dantard","email":"hello@api.video"},{"name":"olivierapivideo","email":"olivier@api.video"},{"name":"lutangar","email":"johan.dufour@gmail.com"}],"dist":{"shasum":"60cc3e4e244de7950a2426930554bbc5d0b77120","tarball":"https://registry.npmjs.org/@api.video/browser-to-rtmp-client/-/browser-to-rtmp-client-0.2.3.tgz","fileCount":12,"integrity":"sha512-eoCV2v3v2cvISX2tvyLmw6ZfSE298jUvj/WKzGg1a3nY0CBEsP8ftM+o8WHfjoEB1kI3ZIIJTB2yREJtksFl/g==","signatures":[{"sig":"MEQCIDJQe1PFbGPTDYOQDSVfNNSuL0VKswhDfgl7spE98IClAiB0mEJM2rV+4gHxsjlJnPCbuSlQgvO5n/LQHNk9m2V0OA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":112355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8YqaCRA9TVsSAnZWagAAue4P/2BSPU9t+UL4hSSC/wWo\nYZrym0Ar5P+XpDNs+XyjlalgLxOwehmhxYZ1wdOi6GbLoaFDviGIEyULAvi2\nRbrVGbbQp9lpFviz2m8+5z6nyQCurL/AhKOzhQnEiEFXQeyYWjdiec0WFkuf\nZZzMcJIe8vNk8aFyaJ5weFD0DYvfKqXjEuENI2gFqXQjPfnsRpFBpd9yvkLt\nj1oh/ZRah6H2dijD/JrC9w2f0eCYfGo94q1kyV5xp685mvj8o3AzWhqOXPph\nKfi8KSNqzhipLJVf66USI3TgOpP/9D5StQPJBcZXCXI6cZE6Qk4iZnV2Yc02\nQK+TPtaLP0S3fFdb4oPqIpL+YGndV2FPteB47eh4gVGUb6qbGnyS+q1ze94m\nSkcfzNNkpvqRIERNp6vwiC9CCci4xkr7q1vELQYOaJIvJdWMSdE3mdywLvHE\nYwF2QXVwIlQt3pyEvsSVwpES4oR34U/+qVENhS0uSM0xt8rweVS+qpz199mP\n94NifSs88qcXiOJQKTK3g+gxtV3pTFyg7gf729dBCTkjEMT1WTFzMaS70MT2\nMeEhA8/bKJl+GnXT+AP+d78srb+9tLtl0K797w9og8F6jOi63PbeTuUcQ/CB\nFdJFxDtVHfSyeltPF6N3ffG5573VI9wEvFfujGzLq0VWijOBWOVDktu6KH0p\nnqMA\r\n=mkKU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/src/index.d.ts","module":"dist/index.js","scripts":{"test":"npm run build && mocha -r ts-node/register -r jsdom-global/register 'test/**/*.ts'","build":"npm run tslint && webpack --mode production","tslint":"tslint --project .","postpublish":"rm README.md","prepublishOnly":"npm run build && cp ../README.md ./"},"_npmUser":{"name":"olivierapivideo","email":"olivier@api.video"},"_npmVersion":"7.19.1","description":"Library to broadcast the stream of a webcam from the browser to an RTMP server (client part).","directories":{},"_nodeVersion":"16.6.0","dependencies":{"core-js":"^3.8.3","socket.io-client":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^16.4.0","core-js":"^3.19.3","webpack":"^5.60.0","ts-loader":"^8.0.3","webpack-cli":"^4.9.1","@types/jsdom":"^16.2.6","jsdom-global":"^3.0.2","socket.io-client":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-to-rtmp-client_0.2.3_1643219610465_0.296687973111194","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"@api.video/browser-to-rtmp-client","version":"0.2.4","author":"","license":"MIT","_id":"@api.video/browser-to-rtmp-client@0.2.4","maintainers":[{"name":"apivideo-ecosystem","email":"ecosystem@api.video"},{"name":"anthony.dantard","email":"hello@api.video"},{"name":"olivierapivideo","email":"olivier@api.video"}],"dist":{"shasum":"213426b89ab863185bae7783d1321daefb6c4612","tarball":"https://registry.npmjs.org/@api.video/browser-to-rtmp-client/-/browser-to-rtmp-client-0.2.4.tgz","fileCount":12,"integrity":"sha512-aVq7cUSNv00CwLs5aQgzS7VtXWBV8YHg2x4F9zRpMK4IuvhHusVFwQJE6HQYdgBDhrRq+fWHPEieYCDTYutSEw==","signatures":[{"sig":"MEUCIQC6TLhSq0y4MNim3Szzwxu/NyK2+lhqt6FVNIZ2Z9jZxwIgTQw7JucMHd9E6464mzGAI79xVbUxEa3JE3VKLcTUaUE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":112386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDLmOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqhnw//b7rz57yEx6JLzxPwvFKqL5igCUzytzrN9gkTQnNw0QQZ3iHp\r\n5NLuchqh8Bq7wytpFHZHJH7rkxizmyZ30XpyQCSK8KpQigq4UXDgIzIVgT2U\r\nIjC1gtS2p53cr4+YpzGGUChGyIHAeh06mp7Hqai6CA3ZRjg6vbqwCeI0zM0U\r\nu15mTZiN8D7ic0xH1xzqaEQVus50bhSDSgbuViiQPWt7Hxgx//P/dxza8Lt6\r\nGYWs5s9pyjqJH5tktYzWfO97ifSP75iduDindUIJWZfDQM2IqvY9FP4wujd+\r\nHjBW9FzxL+889v9ndFL+T4IswfWjFUJA7N4xx4llGbpm5dZoe+WjaTmHiY8V\r\nFy8u7YDoTrrLjkAowVsRBXqyFhl9tcoJJeZb1SxDXENrgZSquLGV5hI8j2kI\r\npz2emQ0vAufJzCp5m8MPJihDbd5OBf6tczCkKrQB1aPDN1rRmIeSJU7A0IWV\r\nYfJ51Zhlwn2Hkl8Zk71qGbLo4Cidps77QXE9M4ImiIbF9kz0EKTQK4lXtNRM\r\nY3je9Gnp2KgvZvOHF9xu6f2BnTUXLfQfs8s39g8HvlTCejF60e+Bi01Seuzy\r\nOQR8nLVszFoaI1CcyyuD3t65Wvn9lCLH2tM+vcPcgnmrM18nP5J7WWYOU6ar\r\nlayl7NQXexFelsNZXQ+Mg1gBnXkXyWo+U8I=\r\n=Hp3q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/src/index.d.ts","module":"dist/index.js","gitHead":"0cb97daea2ccb9d5cfbe5f7ae377933125bff8fb","scripts":{"test":"npm run build && mocha -r ts-node/register -r jsdom-global/register 'test/**/*.ts'","build":"npm run tslint && webpack --mode production","tslint":"tslint --project .","postpublish":"rm README.md","prepublishOnly":"npm run build && cp ../README.md ./"},"_npmUser":{"name":"apivideo-ecosystem","email":"ecosystem@api.video"},"_npmVersion":"8.15.0","description":"Library to broadcast the stream of a webcam from the browser to an RTMP server (client part).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"core-js":"^3.8.3","typed-emitter":"^1.4.0","socket.io-client":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^16.4.0","core-js":"^3.19.3","webpack":"^5.60.0","ts-loader":"^8.0.3","webpack-cli":"^4.9.1","@types/jsdom":"^16.2.6","jsdom-global":"^3.0.2","socket.io-client":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-to-rtmp-client_0.2.4_1661778318549_0.6239150974891867","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-01-03T14:59:05.831Z","modified":"2025-05-22T12:54:28.751Z","0.1.0":"2022-01-03T14:59:05.989Z","0.1.1":"2022-01-03T17:40:21.919Z","0.1.2":"2022-01-03T17:46:31.972Z","0.2.0":"2022-01-04T08:40:40.043Z","0.2.1":"2022-01-04T13:18:34.960Z","0.2.2":"2022-01-20T14:51:15.991Z","0.2.3":"2022-01-26T17:53:30.616Z","0.2.4":"2022-08-29T13:05:18.702Z"},"license":"MIT","description":"Library to broadcast the stream of a webcam from the browser to an RTMP server (client part).","maintainers":[{"email":"ecosystem@api.video","name":"apivideo-ecosystem"}],"readme":"[![badge](https://img.shields.io/twitter/follow/api_video?style=social)](https://twitter.com/intent/follow?screen_name=api_video) &nbsp; [![badge](https://img.shields.io/github/stars/apivideo/api.video-browser-to-rtmp?style=social)](https://github.com/apivideo/api.video-browser-to-rtmp) &nbsp; [![badge](https://img.shields.io/discourse/topics?server=https%3A%2F%2Fcommunity.api.video)](https://community.api.video)\n![](https://github.com/apivideo/API_OAS_file/blob/master/apivideo_banner.png)\n<h1 align=\"center\">api.video browser to RTMP</h1>\n\n![npm](https://img.shields.io/npm/v/@api.video/@api.video/browser-to-rtmp-server) ![npm](https://img.shields.io/npm/v/@api.video/@api.video/browser-to-rtmp-client)  ![ts](https://badgen.net/badge/-/TypeScript/blue?icon=typescript&label)\n\n\n[api.video](https://api.video) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand & low latency live streaming features in your app.\n\n**WARNING: this project is still in beta version. Use it with care and do not hesitate to report any problem you may encounter.**\n\n# Table of contents\n- [Table of contents](#table-of-contents)\n- [Project description](#project-description)\n- [Getting started](#getting-started)\n  - [Server-side part](#server-side-part)\n  - [Client-side part](#client-side-part)\n- [Documentation](#documentation)\n  - [How it works](#how-it-works)\n  - [The server part](#the-server-part)\n    - [Instanciation](#instanciation)\n    - [Options](#options)\n      - [Overriding the livestream settings sent by the client](#overriding-the-livestream-settings-sent-by-the-client)\n    - [Methods](#methods)\n      - [`getConnections()`](#getconnections)\n    - [Events](#events)\n      - [`connection` event](#connection-event)\n      - [`ffmpegOutput` event](#ffmpegoutput-event)\n      - [`error` event](#error-event)\n    - [Security considerations](#security-considerations)\n  - [The client part](#the-client-part)\n    - [Instanciation](#instanciation-1)\n    - [Options](#options-1)\n    - [Events](#events-1)\n      - [`error` event](#error-event-1)\n      - [`destroyed` event](#destroyed-event)\n      - [`ffmpegOutput` event](#ffmpegoutput-event-1)\n    - [Methods](#methods-1)\n      - [`start()`](#start)\n      - [`pause()`](#pause)\n      - [`stop()`](#stop)\n  \n# Project description\n\nThis project aims to make easy streaming a video from your browser to a RTMP server. Any MediaSource can be used (webcam, screencast, …). \n\nThe project is composed of three npm workspaces:\n- [server](https://github.com/apivideo/api.video-browser-to-rtmp/tree/main/src/server) (npm package: **@api.video/browser-to-rtmp-server**): typescript package to include in a nodejs application that uses ffmpeg in order to stream to a RTMP server\n- [client](https://github.com/apivideo/api.video-browser-to-rtmp/tree/main/src/client) (npm package: **@api.video/browser-to-rtmp-client**): JS library to include in a website that will stream a MediaSource to the server using socket.io\n- [example](https://github.com/apivideo/api.video-browser-to-rtmp/tree/main/src/example): a very simple sample app to demonstrate how to use the server & the client\n\n\n# Getting started\n\n## Server-side part\n\nFirst make sure that `ffmpeg`is properly installed on your server. \n\nThen add the dependancy to your nodejs project: \n```\nnpm install --save @api.video/browser-to-rtmp-server\n```\n\nYou can finally instanciate the server:\n\n```typescript\nimport http from 'http';\nimport BrowserToRtmpServer from '@api.video/browser-to-rtmp-server';\n\n// ...\n\n\nconst server = http.createServer();\nconst browserToRtmpClient = new BrowserToRtmpServer(server, {\n    cors: {\n        origin: \"*\",\n        methods: [\"GET\", \"POST\"],\n        credentials: true\n    }\n});\nserver.listen(1234);\n\n```\n\n## Client-side part\n\n```html\n<html>\n    <head>\n        ...\n        <script src=\"https://unpkg.com/@api.video/browser-to-rtmp-client\" defer></script>\n    </head>\n    <body>\n        <script>\n            navigator.mediaDevices.getUserMedia({\n                audio: true,\n                video: true\n            }).then((stream) => {\n                const client = new BrowserToRtmpClient(stream, {\n                    host: \"localhost\", \n                    rtmpUrl: \"rtmp://0.0.0.0:1935/s/abcd\", // RTMP endpoint\n                    port: 1234\n                });\n\n                client.start();\n            });\n        </script>\n    </body>\n</html>\n```\n\n\n# Documentation\n\n## How it works\n\nUnfortunately, the browser cannot communicate directly with an RTMP server (due to network restrictions inherent in web browsers). \n\nTo overcome this problem, we added a layer between the browser and the RTMP server. It is a nodejs server that has the task of transforming a websocket video stream from the browser to an RTMP stream. \n\nThis mechanism is summarized in the following diagram:\n\n![](./doc/how-it-works.png)\n\n## The server part\n\n### Instanciation\n\nThe `BrowserToRtmpServer` constructor takes 2 parameters: \n- an instance of `http.Server` (the server that will handle the WebSocket connections)\n- a `BrowserToRtmpServerOptions` (an object that contains the options of the instance to create)\n\nLeaving it up to the developer to provide an http server provides great flexibility. You can for example decide to use https instead of http with a code like this:\n\n```typescript\nimport fs from \"fs\";\nimport https from \"https\";\nimport BrowserToRtmpServer from '@api.video/browser-to-rtmp-server';\n\nconst httpsServer = https.createServer({\n  key: fs.readFileSync(\"/tmp/key.pem\"),\n  cert: fs.readFileSync(\"/tmp/cert.pem\")\n});\nconst options  = { /* ... */ }; // BrowserToRtmpServerOptions\nconst browserToRtmpServer = new BrowserToRtmpServer(httpsServer, options);\n\nhttpsServer.listen(3000);\n```\n\n### Options \n\nThe BrowserToRtmpServerOptions has the following attributes:\n\n```typescript\n{\n  serverLogs?: {\n    minLevel?: 'silly' | 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal'; // log level (default: info)\n  }\n  clientLogs?: {\n    sendErrorDetails?: boolean,  // weither detailed error messages should be sent to the client or not (default: false) \n    sendFfmpegOutput?: boolean,  // weither ffmpeg output should be sent to the client or not (default: false) \n  }\n  maxFfmpegInstances?: number;   // the maximum number of ffmpeg instances that can be run in parallel (if this limit is reached, connections will be refused) (default: empty, ie no limit)\n  rtmpUrlRegexp?: RegExp;        // the template of allowed rtmp endpoints, in the form of a regular expression (example: /https:\\/\\/rtmp:\\/\\/broadcast.api.video\\/s\\/.*/, default: empty)\n  socketio?: Partial<ServerOptions>,  // socket.io options (see https://socket.io/docs/v4/server-options/)\n  hooks?: {\n    // a function that will be called each time a client starts a livestream, can be use to override the livestream settings sent by the client (see bellow)\n    start?: (socket: Socket<ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData>, event: FfmpegConfig) => FfmpegConfig;\n  }\n}\n```\n\n#### Overriding the livestream settings sent by the client\n\nAll settings sent from the client when starting the livestream can be overwritten server-side using the `hooks.start` hook. For instance, the client can omit prividing the RTMP endpoint, leaving the server part filling it:\n\n```typescript\nconst browserToRtmpServer = new BrowserToRtmpServer(server, {\n  // ...\n  hooks: {\n    start: (socket, config) => {\n      // for instance, you can here access the socket associated to the current request:\n      // const token = socket.handshake.auth.token; // retrieve the auth token\n      // ...\n      const rtmpEndpoint = \"rtmp://0.0.0.0:1234/s/abcd\" // you can generate here the RTMP endpoint url according to your need:\n      return {\n        ...config,\n        rtmp: rtmpEndpoint\n      }\n    }\n  }\n});\n```\n\n### Methods\n\n#### `getConnections()`\n\nRetrieve the list of all active connections. It returns a list of `ConnectionStatus`:\n\n```typescript\n{\n  uuid: string;          // unique identifier for the connection\n  remoteAddress: string; // remote ip address\n  ffmpeg?: {            // details about the ffmpeg instance associated to the connection (can be undefined if ffmpeg is not yet running or if it has stopped)\n    status: 'RUNNING' | 'ENDED' | 'ENDING' | 'CREATED'; // ffmpeg status\n    framesSent: number;         // number of frame that has been sent to the RTMP server\n    lastFrameSentTime?: number; // timestamp of the last sent frame\n    pid?: number;               // pid of the ffmpeg process\n    options: {                  // options that has been used to start ffmpeg\n        framerate?: number;\n        audioSampleRate?: number;\n        rtmp?: string;\n        audioBitsPerSecond?: number;\n        videoBitsPerSecond?: number;\n    }\n  }\n}\n```\n\n### Events\n\nYou can listen to events that emitted are by using the `on(eventName: string)` method.\n\n#### `connection` event\n\nThe `connection` event is sent each time a new connection arrives. It contains the connection status associated to the connection. \n\n\nExample:\n```typescript\nbrowserToRtmpServer.on(\"connection\", (c) => {\n    console.log(`New connection uuid: ${c.uuid}`);\n});\n```\n\n#### `ffmpegOutput` event\n\nThis event is sent each time one of the ffmpeg instances write something to its output stream.  It contains the uuid of the connection and the output message itself.\n\n\nExample:\n```typescript\nbrowserToRtmpServer.on(\"ffmpegOutput\", (uuid, message) => {\n    console.log(`Ffmpeg output for connection ${uuid}: ${message}`);\n});\n```\n\n#### `error` event\n\nThis event is sent each time a error occurs for a given connection.  It contains the uuid of the connection and the error.\n\n\nExample:\n```typescript\nbrowserToRtmpServer.on(\"error\", (uuid, error) => {\n    console.log(`Error for connection ${uuid}: ${message}`);\n});\n```\n\n### Security considerations\n\n- We strongly recommend that you use https rather than http when instantiating the http server provided to the BrowserToRtmpServer\n- You should always pay attention to the RTMP termination url when it is sent from the client. Use `rtmpUrlRegexp`, or generate the url from the server with the start hook, as explained before.\n\n## The client part\n\n\n### Instanciation\n\nThe `BrowserToRtmpServer` constructor takes 2 parameters: \n- a MediaStream (you get it using `navigator.mediaDevices.getDisplayMedia()` or `navigator.mediaDevices.getUserMedia()`)\n- a `BrowserToRtmpClientOptions` (an object that contains the options of the instance to create)\n\n\n### Options \n\nThe BrowserToRtmpClientOptions has the following attributes:\n\n```typescript\ntype BrowserToRtmpClientOptions = {\n    host: string;   // host of the server where your BrowserToRtmpServer is waiting for connections\n    port?: number;  // the port associated to the server (default: 8086)\n    framerate?: number;          // the framerate (default: 25)\n    rtmp?: string;               // the RTMP endpoint url (if not providded, it has to be set server-side)\n    audioBitsPerSecond?: number; // audio bits per second (default: 128000)\n    videoBitsPerSecond?: number; // video bits per second (default: 2500000)\n    audioSampleRate?: number;    // the sample rate for audio (default: audioBitsPerSecond / 4)\n    socketio?: Partial<ManagerOptions & SocketOptions>; // socket.io client options (see https://socket.io/docs/v4/client-options/)\n}\n```\n\n### Events\n\nYou can listen to events that emitted are by using the `on(eventName: string)` method.\n\n#### `error` event\n\nThe `error` event is sent each time an error occured. It contains the error itself.\n\nExample:\n```typescript\nbrowserToRtmpClient.on(\"error\", (error) => {\n    console.log(`An error occured: ${error}`);\n});\n```\n\n#### `destroyed` event\n\nThe `destroyed` event is sent when the ffmpeg instance associated to the connection is destroyed.\n\nExample:\n```typescript\nbrowserToRtmpClient.on(\"destroyed\", (error) => {\n    console.log(`Instance destroyed`);\n});\n```\n\n#### `ffmpegOutput` event\n\nThis event is sent each time the ffmpeg instance write something to its output stream. The event is sent only if the `clientLogs.sendFfmpegOutput` param is true on the server side.\n\n\nExample:\n```typescript\nbrowserToRtmpClient.on(\"ffmpegOutput\", (message) => {\n    console.log(`Ffmpeg output: ${message}`);\n});\n```\n\n\n### Methods\n\n#### `start()`\n\nStart the stream.\n\n#### `pause()`\n\nPause the stream.\n\n#### `stop()`\n\nStop the stream.\n","readmeFilename":"README.md"}