diff --git a/.dockerignore b/.dockerignore index ad2e1d5..3a3d6ff 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,6 +3,7 @@ Dockerfile* .editorconfig .gitignore README.md +CHANGELOG.md node_modules/ .yarn/cache .eslintcache diff --git a/.linguirc b/.linguirc index 2ca4430..69ba787 100644 --- a/.linguirc +++ b/.linguirc @@ -1,10 +1,24 @@ { - "catalogs": [{ - "path": "src/locales/{locale}/messages", - "include": ["src/"], - "exclude": ["**/node_modules/**"] - }], + "catalogs": [ + { + "path": "src/locales/{locale}/messages", + "include": [ + "src/" + ], + "exclude": [ + "**/node_modules/**" + ] + } + ], "format": "po", "sourceLocale": "en", - "locales": ["en", "de", "fr", "it", "pt", "es"] -} + "locales": [ + "en", + "de", + "fr", + "it", + "pt", + "es", + "ru" + ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..74fb942 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,28 @@ +# Restreamer-UI + +#### v1.0.0 > v1.1.0 + +- Add "HLS cleanup" as an optional function ([Philipp Trenz](https://github.com/philipptrenz)) +- Add /ui info to / ([#326](https://github.com/datarhei/restreamer/issues/326)) +- Add Russian translation (thx Inthegamelp) +- Add missed VAAPI encoder +- Add missed V4L2_M2M encoder +- Add missed Raspberry Pi 64bit Docker image +- Mod updates VideoJS +- Add option to disable playersites share-button (thx Anders Mellgren) +- Fix hides unset content license on playersite (thx Anders Mellgren) +- Fix updates V4L2 device-list on select +- Fix snapshot interval ([#341](https://github.com/datarhei/restreamer/issues/340)) +- Fix reverse proxy issue ([#340](https://github.com/datarhei/restreamer/issues/340)) +- Fix double escape failer ([#336](https://github.com/datarhei/restreamer/issues/336)) +- Fix type in player plugin ([#336](https://github.com/datarhei/restreamer/issues/336)) +- Fix deletes processes with dependencies (thx Patron Ramakrishna Chillara) +- Fix datarhei Core publication service +- Fix dependabot alerts +- Fix code scanning alerts +- Merge security pr + +Preparation for FFmpeg v5.0 (migration will not work) + +- Add FFmpeg v5.0 commands (preparation) +- Mod allows FFmpeg v5.0 (preparation) diff --git a/Dockerfile b/Dockerfile index 1d53dba..103cde9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,23 @@ -FROM node:17-alpine3.15 +FROM node:17.9.0-alpine3.15 -WORKDIR /ui +ARG NODE_SPACE_SIZE=10240 +ENV NODE_OPTIONS="--openssl-legacy-provider --max-old-space-size=$NODE_SPACE_SIZE" + +ENV PUBLIC_URL "/" COPY . /ui -RUN yarn install && \ +WORKDIR /ui + +RUN cd /ui && \ + npm config set fetch-retries 10 && \ + npm config set fetch-retry-mintimeout 100000 && \ + npm config set fetch-retry-maxtimeout 600000 && \ + npm config set cache-min 3600 && \ + npm config ls -l && \ + npm install && \ npm run build EXPOSE 3000 + CMD [ "npm", "run", "start" ] diff --git a/LICENSE b/LICENSE index 261eeb9..650fec2 100644 --- a/LICENSE +++ b/LICENSE @@ -178,7 +178,7 @@ APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" + boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2022 FOSS GmbH Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/package.json b/package.json index 5306b44..3c27df3 100644 --- a/package.json +++ b/package.json @@ -1,39 +1,37 @@ { "name": "restreamer-ui", - "version": "1.0.0", - "bundle": "restreamer-v2.0.0", + "version": "1.1.0", + "bundle": "restreamer-v2.1.0", "private": false, + "license": "Apache-2.0", "dependencies": { - "@auth0/auth0-spa-js": "^1.21.1", - "@clappr/core": "^0.4.17", - "@clappr/hlsjs-playback": "^0.5.3", - "@clappr/plugins": "^0.4.10", + "@auth0/auth0-spa-js": "^1.22.0", + "@clappr/core": "^0.4.21", + "@clappr/hlsjs-playback": "^0.6.0", + "@clappr/plugins": "^0.4.16", "@clappr/stats-plugin": "^0.2.0", - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@fontsource/dosis": "^4.5.1", - "@fontsource/roboto": "^4.5.5", + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@fontsource/dosis": "^4.5.8", + "@fontsource/roboto": "^4.5.7", "@fortawesome/fontawesome-svg-core": "^6.1.1", - "@fortawesome/free-brands-svg-icons": "^5.15.2", - "@fortawesome/free-solid-svg-icons": "^5.15.2", - "@fortawesome/react-fontawesome": "^0.1.14", - "@lingui/core": "^3.13.2", - "@lingui/macro": "^3.4.0", - "@lingui/react": "^3.4.0", - "@material-ui/core": "^4.11.3", - "@material-ui/icons": "^4.11.2", - "@material-ui/lab": "^4.0.0-alpha.57", - "@mui/icons-material": "^5.0.4", - "@mui/lab": "^5.0.0-alpha.51", - "@mui/material": "^5.0.4", - "@mui/styles": "^5.7.0", - "@testing-library/dom": ">=5", + "@fortawesome/free-brands-svg-icons": "^6.1.1", + "@fortawesome/free-solid-svg-icons": "^6.1.1", + "@fortawesome/react-fontawesome": "^0.1.18", + "@lingui/core": "^3.13.3", + "@lingui/macro": "^3.13.3", + "@lingui/react": "^3.13.3", + "@mui/icons-material": "^5.8.2", + "@mui/lab": "^5.0.0-alpha.84", + "@mui/material": "5.1.1", + "@mui/styles": "^5.1.1", + "@testing-library/dom": "^8.13.0", "@testing-library/jest-dom": "^4.2.4", - "@testing-library/react": "^9.5.0", - "@testing-library/user-event": "^7.2.1", - "babel-plugin-macros": "2 || 3", - "eslint": "^7.19.0", - "handlebars": "^4.7.6", + "@testing-library/react": "^12.1.5", + "@testing-library/user-event": "^13.5.0", + "babel-plugin-macros": "^3.1.0", + "eslint": "^7.32.0", + "handlebars": "^4.7.7", "hls.js": "^0.14.17", "jwt-decode": "^3.1.2", "make-plural": "^7.1.0", @@ -41,9 +39,9 @@ "react-colorful": "^5.5.1", "react-device-detect": "^2.2.2", "react-dom": "^17.0.2", - "react-router-dom": "^6.2.1", - "react-scripts": "4.0.3", - "semver": "^7.3.4", + "react-router-dom": "^6.3.0", + "react-scripts": "^4.0.3", + "semver": "^7.3.7", "typescript": "^3.9.7", "url-parse": "^1.5.10", "uuid": "^8.3.2", @@ -84,10 +82,10 @@ ] }, "devDependencies": { - "@babel/core": "^7.12.10", - "@lingui/cli": "^3.4.0", + "@babel/core": "^7.18.2", + "@lingui/cli": "^3.13.3", "babel-core": "^7.0.0-bridge.0", - "prettier": "2.2.1", + "prettier": "^2.6.2", "react-error-overlay": "^6.0.11" }, "resolutions": { diff --git a/public/_player/videojs/dist/video-js.css b/public/_player/videojs/dist/video-js.css index 4750db9..0bc8016 100644 --- a/public/_player/videojs/dist/video-js.css +++ b/public/_player/videojs/dist/video-js.css @@ -384,26 +384,33 @@ .video-js.vjs-1-1 { width: 100%; max-width: 100%; +} + +.video-js.vjs-fluid:not(.vjs-audio-only-mode), +.video-js.vjs-16-9:not(.vjs-audio-only-mode), +.video-js.vjs-4-3:not(.vjs-audio-only-mode), +.video-js.vjs-9-16:not(.vjs-audio-only-mode), +.video-js.vjs-1-1:not(.vjs-audio-only-mode) { height: 0; } -.video-js.vjs-16-9 { +.video-js.vjs-16-9:not(.vjs-audio-only-mode) { padding-top: 56.25%; } -.video-js.vjs-4-3 { +.video-js.vjs-4-3:not(.vjs-audio-only-mode) { padding-top: 75%; } -.video-js.vjs-9-16 { +.video-js.vjs-9-16:not(.vjs-audio-only-mode) { padding-top: 177.7777777778%; } -.video-js.vjs-1-1 { +.video-js.vjs-1-1:not(.vjs-audio-only-mode) { padding-top: 100%; } -.video-js.vjs-fill { +.video-js.vjs-fill:not(.vjs-audio-only-mode) { width: 100%; height: 100%; } diff --git a/public/_player/videojs/dist/video-js.min.css b/public/_player/videojs/dist/video-js.min.css index 5a2604b..ef93643 100644 --- a/public/_player/videojs/dist/video-js.min.css +++ b/public/_player/videojs/dist/video-js.min.css @@ -1 +1 @@ -@charset "UTF-8";.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.vjs-modal-dialog .vjs-modal-dialog-content{position:absolute;top:0;left:0;width:100%;height:100%}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.vjs-button>.vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABDkAAsAAAAAG6gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPgAAAFZRiV3hY21hcAAAAYQAAADaAAADPv749/pnbHlmAAACYAAAC3AAABHQZg6OcWhlYWQAAA3QAAAAKwAAADYZw251aGhlYQAADfwAAAAdAAAAJA+RCLFobXR4AAAOHAAAABMAAACM744AAGxvY2EAAA4wAAAASAAAAEhF6kqubWF4cAAADngAAAAfAAAAIAE0AIFuYW1lAAAOmAAAASUAAAIK1cf1oHBvc3QAAA/AAAABJAAAAdPExYuNeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGS7wTiBgZWBgaWQ5RkDA8MvCM0cwxDOeI6BgYmBlZkBKwhIc01hcPjI+FGJHcRdyA4RZgQRADK3CxEAAHic7dFZbsMgAEXRS0ycyZnnOeG7y+qC8pU1dHusIOXxuoxaOlwZYWQB0Aea4quIEN4E9LzKbKjzDeM6H/mua6Lmc/p8yhg0lvdYx15ZG8uOLQOGjMp3EzqmzJizYMmKNRu27Nhz4MiJMxeu3Ljz4Ekqm7T8P52G8PP3lnTOVk++Z6iN6QZzNN1F7ptuN7eGOjDUoaGODHVsuvU8MdTO9Hd5aqgzQ50b6sJQl4a6MtS1oW4MdWuoO0PdG+rBUI+GejLUs6FeDPVqqDdDvRvqw1CfhpqM9At0iFLaAAB4nJ1YDXBTVRZ+5/22TUlJ8we0pHlJm7RJf5O8F2j6EymlSPkpxaL8U2xpa3DKj0CBhc2IW4eWKSokIoLsuMqssM64f+jA4HSdWXXXscBq67IOs3FXZ1ZYWVyRFdo899yXtIBQZ90k7717zz3v3HPPOfd854YCCj9cL9dL0RQFOqCbGJnrHb5EayiKIWN8iA/hWBblo6hUWm8TtCDwE80WMJus/irwyxOdxeB0MDb14VNJHnXYoLLSl6FfCUYO9nYPTA8Epg9090LprfbBbZ2hY0UlJUXHQp3/vtWkS6EBv8+rPMq5u9692f/dNxJNiqwC1xPE9TCUgCsSdQWgE3XQD25lkG4CN2xmTcOXWBOyser6RN6KnGbKSbmQ3+d0OI1m2W8QzLLkI2sykrWAgJJEtA8vGGW/2Q+CmT3n8zS9wZwu2DCvtuZKZN3xkrLh36yCZuUomQSqGpY8t/25VfHVhw8z4ebGBtfLb0ya9PCaDc+8dGTvk2dsh6z7WzvowlXKUSWo9MJ15a3KrEP2loOr2Ojhw6iW6hf2BDdEccQvZGpaAy7YovSwq8kr7HGllxpd71rkS6G0Sf11sl9OvMK1+jwPPODxjUwkOim9CU3ix1wNjXDfmJSEn618Bs6lpWwUpU+8PCqLMY650zjq8VhCIP17NEKTx3eaLL+s5Pi6yJWaWjTHLR1jYzPSV9VF/6Ojdb/1kO3Mk3uhHC0x6gc1BjlKQ+nQFxTYdaJkZ7ySVxLBbhR1dsboNXp1tCYKW2LRaEzpYcIx2BKNxaL0ZaUnSqfFoiNhHKR/GkX6PWUSAaJelQaqZL1EpoHNsajSEyPSoJ9IjhIxTdjHLmwZvhRDOiFTY/YeQnvrVZmiTQtGncECXtFTBZLOVwwMRgoXHAkXzMzPn1nAJJ8jYSbMDaqN2waGLzNhih/bZynUBMpIWSg7VYi7DRx2m8ALkIdRCJwI6ArJx2EI8kaDWeTQKeAFk9fjl/1AvwktjQ1P7NjyMGQyfd4vjipX6M/i52D7Cq80kqlcxEcGXRr/FEcgs0u5uGgB4VWuMFfpdn2Re6Hi3PqzmxWKsz6+ae2Pn9hXXw/fqM859UiGC0oKYYILJBqJrsn1Z1E5qOs9rQCiUQRREjm8yJcbHF5cUJufX1vAHlefw0XgUoboS3ETfQlTxBC4SOtuE8VPRJTBSCQSjZCpk7Gqzu+masaZ2y7Zjehho4F3g82BNDkAHpORG4+OCS+f6JTPmtRn/PH1kch6d04sp7AQb25aQ/pqUyXeQ8vrebG8OYQdXOQ+585u0sdW9rqalzRURiJ+9F4MweRFrKUjl1GUYhH1A27WOHw5cTFSFPMo9EeUIGnQTZHIaJ7AHLaOKsOODaNF9jkBjYG2QEsQ2xjMUAx2bBEbeTBWMHwskBjngq56S/yfgkBnWBa4K9sqKtq2t1UI8S9He5XuBRbawAdatrQEAi30Aks2+LM8WeCbalVZkWNylvJ+dqJnzVb+OHlSoKW8nPCP7Rd+CcZ2DdWAGqJ2CBFOphgywFFCFBNtfAbGtNPBCwxvygHeYMZMY9ZboBqwq/pVrsbgN5tkv152ODlbMfiqwGMBgxa4Exz3QhovRIUp6acqZmQzRq0ypDXS2TPLT02YIkQETnOE445oOGxOmXAqUJNNG7XgupMjPq2ua9asrj5yY/yuKteO1Kx0YNJTufrirLe1mZnat7OL6rnUdCWenpW6I8mAnbsY8KWs1PuSovCW9A/Z25PQ24a7cNOqgmTkLmBMgh4THgc4b9k2IVv1/g/F5nGljwPLfOgHAzJzh45V/4+WenTzmMtR5Z7us2Tys909UHqrPY7KbckoxRvRHhmVc3cJGE97uml0R1S0jdULVl7EvZtDFVBF35N9cEdjpgmAiOlFZ+Dtoh93+D3zzHr8RRNZQhnCNMNbcegOvpEwZoL+06cJQ07h+th3fZ/7PVbVC6ngTAV/KoLFuO6+2KFcU651gEb5ugPSIb1D+Xp8V4+k3sEIGnw5mYe4If4k1lFYr6SCzmM2EQ8iWtmwjnBI9kTwe1TlfAmXh7H02by9fW2gsjKwtv0aaURKil4OdV7rDL1MXIFNrhdxohcZXYTnq47WisrKitaObbf5+yvkLi5J6lCNZZ+B6GC38VNBZBDidSS/+mSvh6s+srgC8pyKMvDtt+de3c9fU76ZPfuM8ud4Kv0fyP/LqfepMT/3oZxSqpZaTa1DaQYLY8TFsHYbWYsPoRhRWfL5eSSQbhUGgGC3YLbVMk6PitTFNGpAsNrC6D1VNBKgBHMejaiuRWEWGgsSDBTJjqWIl8kJLlsaLJ2tXDr6xGfT85bM2Q06a46x2HTgvdnV8z5YDy/27J4zt6x2VtkzjoYpkq36kaBr4eQSg7tyiVweWubXZugtadl58ydapfbORfKsDTuZ0OBgx4cfdjCf5tbWNITnL120fdOi1RV1C3uKGzNdwYLcMvZ3BxoPyTOCD1XvXTp7U10gWCVmTV9b3r2z0SkGWovb2hp9I89O8a2smlyaO8muMU+dRmtzp60IzAoFpjLr1n388boLyf0dRvxhsHZ0qbWqDkwqvvpkj4l0fY6EIXRi5sQSrAvsVYwXRy4qJ2EVtD1AN7a0HWth9ymvL1xc3WTUKK/TAHA/bXDVtVWfOMfuGxGZv4Ln/jVr9jc3j1yMv0tndmyt9Vq88Y9gH1wtLX3KWjot5++jWHgAoZZkQ14wGQ20Fli71UmKJAy4xKMSTGbVdybW7FDDAut9XpD5AzWrYO7zQ8qffqF8+Ynd/clrHcdyxGy3a/3+mfNnzC/cBsveTjnTvXf1o6vzOlZw7WtqtdmPK/Errz/6NNtD72zmNOZfbmYdTGHfoofqI79Oc+R2n1lrnL6pOm0Up7kwxhTW12Amm7WYkXR2qYrF2AmgmbAsxZjwy1xpg/m1Je2vrp8v/nz2xpmlBg4E9hrMU341wVpTOh/OfmGvAnra8q6uctr60ZQHV3Q+WMQJykMj8ZsWn2QBOmmHMB+m5pDIpTFonYigiaKAhGEiAHF7EliVnQkjoLVIMPtJpBKHYd3A8GYH9jJzrWwmHx5Qjp7vDAX0suGRym1vtm/9W1/HyR8vczfMs6Sk8DSv855/5dlX9oQq52hT8syyp2rx5Id17IAyAM3wIjQPMOHzytEB64q6D5zT91yNbnx3V/nqnd017S9Y0605k3izoXLpsxde2n38yoOV9s1LcjwzNjbdX6asnBVaBj/6/DwKwPkpcqbDG7BnsXoSqWnUAmottYF6jMSdVyYZh3zVXCjwTiwwHH6sGuRiEHQGzuRX6whZkp123oy1BWE2mEfJ/tvIRtM4ZM5bDXiMsPMaAKOTyc5uL57rqyyc5y5JE5pm1i2S2iUX0CcaQ6lC6Zog7JqSqZmYlosl2K6pwNA84zRnQW6SaALYZQGW5lhCtU/W34N6o+bKfZ8cf3/Cl/+iTX3wBzpOY4mRkeNf3rptycGSshQWgGbYt5jFc2e0+DglIrwl6DVWQ7BuwaJ3Xk1J4VL5urnLl/Wf+gHU/hZoZdKNym6lG+I34FaNeZKcSpJIo2IeCVvpdsDGfKvzJnAwmeD37Ow65ZWwSowpgwX5T69s/rB55dP5BcpgDKFV8p7q2sn/1uc93bVzT/w6UrCqDTWvfCq/oCD/qZXNoUj8BL5Kp6GU017frfNXkAtiiyf/SOCEeLqnd8R/Ql9GlCRfctS6k5chvIBuQ1zCCjoCHL2DHNHIXxMJ3kQeO8lbsUXONeSfA5EjcG6/E+KdhN4bP04vBhdi883+BFBzQbxFbvZzQeY9LNBZc0FNfn5NwfDn6rCTnTw6R8o+gfpf5hCom33cRuiTlss3KHmZjD+BPN+5gXuA2ziS/Q73mLxUkpbKN/eqwz5uK0X9F3h2d1V4nGNgZGBgAOJd776+iue3+crAzc4AAje5Bfcg0xz9YHEOBiYQBQA8FQlFAHicY2BkYGBnAAGOPgaG//85+hkYGVCBMgBGGwNYAAAAeJxjYGBgYB8EmKOPgQEAQ04BfgAAAAAAAA4AaAB+AMwA4AECAUIBbAGYAcICGAJYArQC4AMwA7AD3gQwBJYE3AUkBWYFigYgBmYGtAbqB1gIEghYCG4IhAi2COh4nGNgZGBgUGYoZWBnAAEmIOYCQgaG/2A+AwAYCQG2AHicXZBNaoNAGIZfE5PQCKFQ2lUps2oXBfOzzAESyDKBQJdGR2NQR3QSSE/QE/QEPUUPUHqsvsrXjTMw83zPvPMNCuAWP3DQDAejdm1GjzwS7pMmwi75XngAD4/CQ/oX4TFe4Qt7uMMbOzjuDc0EmXCP/C7cJ38Iu+RP4QEe8CU8pP8WHmOPX2EPz87TPo202ey2OjlnQSXV/6arOjWFmvszMWtd6CqwOlKHq6ovycLaWMWVydXKFFZnmVFlZU46tP7R2nI5ncbi/dDkfDtFBA2DDXbYkhKc+V0Bqs5Zt9JM1HQGBRTm/EezTmZNKtpcAMs9Yu6AK9caF76zoLWIWcfMGOSkVduvSWechqZsz040Ib2PY3urxBJTzriT95lipz+TN1fmAAAAeJxtkMl2wjAMRfOAhABlKm2h80C3+ajgCKKDY6cegP59TYBzukAL+z1Zsq8ctaJTTKPrsUQLbXQQI0EXKXroY4AbDDHCGBNMcYsZ7nCPB8yxwCOe8IwXvOIN7/jAJ76wxHfUqWX+OzgumWAjJMV17i0Ndlr6irLKO+qftdT7i6y4uFSUvCknay+lFYZIZaQcmfH/xIFdYn98bqhra1aKTM/6lWMnyaYirx1rFUQZFBkb2zJUtoXeJCeg0WnLtHeSFc3OtrnozNwqi0TkSpBMDB1nSde5oJXW23hTS2/T0LilglXX7dmFVxLnq5U0vYATHFk3zX3BOisoQHNDFDeZnqKDy9hRNawN7Vh727hFzcJ5c8TILrKZfH7tIPxAFP0BpLeJPA==) format("woff");font-weight:400;font-style:normal}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder,.vjs-icon-play{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.vjs-icon-play:before{content:"\f101"}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:"\f102"}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder,.vjs-icon-pause{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before,.vjs-icon-pause:before{content:"\f103"}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder,.vjs-icon-volume-mute{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before,.vjs-icon-volume-mute:before{content:"\f104"}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder,.vjs-icon-volume-low{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before,.vjs-icon-volume-low:before{content:"\f105"}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder,.vjs-icon-volume-mid{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before,.vjs-icon-volume-mid:before{content:"\f106"}.video-js .vjs-mute-control .vjs-icon-placeholder,.vjs-icon-volume-high{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control .vjs-icon-placeholder:before,.vjs-icon-volume-high:before{content:"\f107"}.video-js .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-enter{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-enter:before{content:"\f108"}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-exit{font-family:VideoJS;font-weight:400;font-style:normal}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-exit:before{content:"\f109"}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:"\f10a"}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:"\f10b"}.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-subtitles{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-subtitles:before{content:"\f10c"}.video-js .vjs-captions-button .vjs-icon-placeholder,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-captions{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-captions-button .vjs-icon-placeholder:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-captions:before{content:"\f10d"}.video-js .vjs-chapters-button .vjs-icon-placeholder,.vjs-icon-chapters{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-chapters-button .vjs-icon-placeholder:before,.vjs-icon-chapters:before{content:"\f10e"}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:"\f10f"}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:"\f110"}.video-js .vjs-play-progress,.video-js .vjs-volume-level,.vjs-icon-circle,.vjs-seek-to-live-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before,.vjs-icon-circle:before,.vjs-seek-to-live-control .vjs-icon-placeholder:before{content:"\f111"}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:"\f112"}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:"\f113"}.vjs-icon-hd{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-hd:before{content:"\f114"}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder,.vjs-icon-cancel{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before,.vjs-icon-cancel:before{content:"\f115"}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder,.vjs-icon-replay{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before,.vjs-icon-replay:before{content:"\f116"}.vjs-icon-facebook{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-facebook:before{content:"\f117"}.vjs-icon-gplus{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-gplus:before{content:"\f118"}.vjs-icon-linkedin{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-linkedin:before{content:"\f119"}.vjs-icon-twitter{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-twitter:before{content:"\f11a"}.vjs-icon-tumblr{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-tumblr:before{content:"\f11b"}.vjs-icon-pinterest{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pinterest:before{content:"\f11c"}.video-js .vjs-descriptions-button .vjs-icon-placeholder,.vjs-icon-audio-description{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-descriptions-button .vjs-icon-placeholder:before,.vjs-icon-audio-description:before{content:"\f11d"}.video-js .vjs-audio-button .vjs-icon-placeholder,.vjs-icon-audio{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-audio-button .vjs-icon-placeholder:before,.vjs-icon-audio:before{content:"\f11e"}.vjs-icon-next-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-next-item:before{content:"\f11f"}.vjs-icon-previous-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-previous-item:before{content:"\f120"}.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder,.vjs-icon-picture-in-picture-enter{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before,.vjs-icon-picture-in-picture-enter:before{content:"\f121"}.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder,.vjs-icon-picture-in-picture-exit{font-family:VideoJS;font-weight:400;font-style:normal}.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before,.vjs-icon-picture-in-picture-exit:before{content:"\f122"}.video-js{display:block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;word-break:initial}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js[tabindex="-1"]{outline:0}.video-js *,.video-js :after,.video-js :before{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.video-js.vjs-1-1,.video-js.vjs-16-9,.video-js.vjs-4-3,.video-js.vjs-9-16,.video-js.vjs-fluid{width:100%;max-width:100%;height:0}.video-js.vjs-16-9{padding-top:56.25%}.video-js.vjs-4-3{padding-top:75%}.video-js.vjs-9-16{padding-top:177.7777777778%}.video-js.vjs-1-1{padding-top:100%}.video-js.vjs-fill{width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}.video-js.vjs-audio-only-mode .vjs-tech{display:none}body.vjs-full-window{padding:0;margin:0;height:100%}.vjs-full-window .video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen:not(.vjs-ios-native-fs){width:100%!important;height:100%!important;padding-top:0!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.vjs-disabled{opacity:.5;cursor:default}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.63332em;width:3em;display:block;position:absolute;top:10px;left:10px;padding:0;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2b333f;background-color:rgba(43,51,63,.7);border-radius:.3em;transition:all .4s}.vjs-big-play-centered .vjs-big-play-button{top:50%;left:50%;margin-top:-.81666em;margin-left:-1.5em}.video-js .vjs-big-play-button:focus,.video-js:hover .vjs-big-play-button{border-color:#fff;background-color:#73859f;background-color:rgba(115,133,159,.5);transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-error .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button{display:block}.video-js button{background:0 0;border:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vjs-control .vjs-button{width:100%;height:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:linear-gradient(180deg,rgba(0,0,0,.8),rgba(255,255,255,0));overflow:auto}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;font-family:Arial,Helvetica,sans-serif;overflow:auto}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.js-focus-visible .vjs-menu li.vjs-menu-item:hover,.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:rgba(115,133,159,.5)}.js-focus-visible .vjs-menu li.vjs-selected:hover,.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.js-focus-visible .vjs-menu :not(.vjs-selected):focus:not(.focus-visible),.video-js .vjs-menu :not(.vjs-selected):focus:not(:focus-visible){background:0 0}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em 0;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0;margin-bottom:1.5em;border-top-color:rgba(43,51,63,.7)}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:rgba(43,51,63,.7);position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:5em}.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:10em}.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:14em}.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:25em}.vjs-menu-button-popup .vjs-menu.vjs-lock-showing,.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu{display:block}.video-js .vjs-menu-button-inline{transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline:hover,.video-js.vjs-no-flex .vjs-menu-button-inline{width:12em}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:4em;top:0;padding:0;margin:0;transition:all .4s}.vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline:hover .vjs-menu{display:block;opacity:1}.vjs-no-flex .vjs-menu-button-inline .vjs-menu{display:block;opacity:1;position:relative;width:auto}.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu{width:auto}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2b333f;background-color:rgba(43,51,63,.7)}.vjs-audio-only-mode .vjs-control-bar,.vjs-has-started .vjs-control-bar{display:flex;visibility:visible;opacity:1;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:visible;opacity:0;pointer-events:none;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-error .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar{display:none!important}.vjs-audio-only-mode.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible}.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;flex:none}.video-js .vjs-control.vjs-visible-text{width:auto;padding-left:1em;padding-right:1em}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.vjs-button>.vjs-icon-placeholder{display:block}.video-js .vjs-control:focus,.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before{text-shadow:0 0 1em #fff}.video-js :not(.vjs-visible-text)>.vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{cursor:pointer;flex:auto;display:flex;align-items:center;min-width:4em;touch-action:none}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-liveui .vjs-progress-control{display:flex;align-items:center}.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-progress-holder{flex:auto;transition:all .2s;height:.3em}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div,.video-js .vjs-progress-holder .vjs-play-progress{position:absolute;display:block;height:100%;margin:0;padding:0;width:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;top:-.3333333333em;z-index:1}.video-js .vjs-load-progress{background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:rgba(115,133,159,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:rgba(255,255,255,.8);border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.vjs-no-flex .vjs-progress-control .vjs-mouse-display{z-index:0}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-time-tooltip{color:#fff;background-color:#000;background-color:rgba(0,0,0,.8)}.video-js .vjs-slider{position:relative;cursor:pointer;padding:0;margin:0 .45em 0 .45em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#73859f;background-color:rgba(115,133,159,.5)}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{text-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.video-js .vjs-mute-control{cursor:pointer;flex:none}.video-js .vjs-volume-control{cursor:pointer;margin-right:1em;display:flex}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{visibility:visible;opacity:0;width:1px;height:1px;margin-left:-1px}.video-js .vjs-volume-panel{transition:width 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active,.video-js .vjs-volume-panel .vjs-volume-control:active,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control,.video-js .vjs-volume-panel:active .vjs-volume-control,.video-js .vjs-volume-panel:focus .vjs-volume-control{visibility:visible;opacity:1;position:relative;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal{width:5em;height:3em;margin-right:0}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical{left:-3.5em;transition:left 0s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active{width:10em;transition:width .1s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only{width:4em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;width:3em;left:-3000em;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{width:5em;height:3em;visibility:visible;opacity:1;position:relative;transition:none}.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{position:absolute;bottom:3em;left:.5em}.video-js .vjs-volume-panel{display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em;margin:1.35em auto}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em;z-index:1}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em;z-index:1}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{top:-.3em;right:-.5em}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{width:3em;height:8em;bottom:8em;background-color:#2b333f;background-color:rgba(43,51,63,.7)}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.video-js .vjs-volume-tooltip{background-color:#fff;background-color:rgba(255,255,255,.8);border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip,.video-js .vjs-volume-control:hover .vjs-volume-tooltip{display:block;font-size:1em;visibility:visible}.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip,.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip{left:1em;top:-12px}.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip{font-size:1em}.video-js .vjs-volume-control .vjs-mouse-display{display:none;position:absolute;width:100%;height:1px;background-color:#000;z-index:1}.video-js .vjs-volume-horizontal .vjs-mouse-display{width:1px;height:100%}.vjs-no-flex .vjs-volume-control .vjs-mouse-display{z-index:0}.video-js .vjs-volume-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-volume-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-volume-tooltip{color:#fff;background-color:#000;background-color:rgba(0,0,0,.8)}.vjs-poster{display:inline-block;vertical-align:middle;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;background-color:#000;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-has-started .vjs-poster,.vjs-using-native-controls .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster,.vjs-has-started.vjs-audio-poster-mode .vjs-poster{display:block}.video-js .vjs-live-control{display:flex;align-items:flex-start;flex:auto;font-size:1em;line-height:3em}.vjs-no-flex .vjs-live-control{display:table-cell;width:auto;text-align:left}.video-js.vjs-liveui .vjs-live-control,.video-js:not(.vjs-live) .vjs-live-control{display:none}.video-js .vjs-seek-to-live-control{align-items:center;cursor:pointer;flex:none;display:inline-flex;height:100%;padding-left:.5em;padding-right:.5em;font-size:1em;line-height:3em;width:auto;min-width:4em}.vjs-no-flex .vjs-seek-to-live-control{display:table-cell;width:auto;text-align:left}.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,.video-js:not(.vjs-live) .vjs-seek-to-live-control{display:none}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge{cursor:auto}.vjs-seek-to-live-control .vjs-icon-placeholder{margin-right:.5em;color:#888}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder{color:red}.video-js .vjs-time-control{flex:none;font-size:1em;line-height:3em;min-width:2em;width:auto;padding-left:1em;padding-right:1em}.vjs-live .vjs-time-control{display:none}.video-js .vjs-current-time,.vjs-no-flex .vjs-current-time{display:none}.video-js .vjs-duration,.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-live .vjs-time-divider{display:none}.video-js .vjs-play-control{cursor:pointer}.video-js .vjs-play-control .vjs-icon-placeholder{flex:none}.vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.video-js.vjs-controls-disabled .vjs-text-track-display,.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{transform:translateY(-3em)}.video-js.vjs-controls-disabled video::-webkit-media-text-track-display,.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{transform:translateY(-1.5em)}.video-js .vjs-picture-in-picture-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-picture-in-picture-control{display:none}.video-js .vjs-fullscreen-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-fullscreen-control{display:none}.vjs-playback-rate .vjs-playback-rate-value,.vjs-playback-rate>.vjs-menu-button{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-playback-rate .vjs-playback-rate-value{pointer-events:none;font-size:1.5em;line-height:2;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-error .vjs-error-display:before{color:#fff;content:"X";font-family:Arial,Helvetica,sans-serif;font-size:4em;left:0;line-height:1;margin-top:-.5em;position:absolute;text-shadow:.05em .05em .1em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;opacity:.85;text-align:left;border:6px solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:50px;height:50px;border-radius:25px;visibility:hidden}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:block;-webkit-animation:vjs-spinner-show 0s linear .3s forwards;animation:vjs-spinner-show 0s linear .3s forwards}.vjs-loading-spinner:after,.vjs-loading-spinner:before{content:"";position:absolute;margin:-6px;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before{-webkit-animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite;animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;-webkit-animation-delay:.44s;animation-delay:.44s}@keyframes vjs-spinner-show{to{visibility:visible}}@-webkit-keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{100%{transform:rotate(360deg)}}@-webkit-keyframes vjs-spinner-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}100%{border-top-color:#73859f}}@-webkit-keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}100%{border-top-color:#73859f}}.video-js.vjs-audio-only-mode .vjs-captions-button{display:none}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js.vjs-audio-only-mode .vjs-descriptions-button{display:none}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:"";font-size:1.5em;line-height:inherit}.video-js.vjs-audio-only-mode .vjs-subs-caps-button{display:none}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:" ";font-size:1.5em;line-height:inherit}.video-js.vjs-layout-small .vjs-current-time,.video-js.vjs-layout-small .vjs-duration,.video-js.vjs-layout-small .vjs-playback-rate,.video-js.vjs-layout-small .vjs-remaining-time,.video-js.vjs-layout-small .vjs-time-divider,.video-js.vjs-layout-small .vjs-volume-control,.video-js.vjs-layout-tiny .vjs-current-time,.video-js.vjs-layout-tiny .vjs-duration,.video-js.vjs-layout-tiny .vjs-playback-rate,.video-js.vjs-layout-tiny .vjs-remaining-time,.video-js.vjs-layout-tiny .vjs-time-divider,.video-js.vjs-layout-tiny .vjs-volume-control,.video-js.vjs-layout-x-small .vjs-current-time,.video-js.vjs-layout-x-small .vjs-duration,.video-js.vjs-layout-x-small .vjs-playback-rate,.video-js.vjs-layout-x-small .vjs-remaining-time,.video-js.vjs-layout-x-small .vjs-time-divider,.video-js.vjs-layout-x-small .vjs-volume-control{display:none}.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover{width:auto;width:initial}.video-js.vjs-layout-tiny .vjs-progress-control,.video-js.vjs-layout-x-small .vjs-progress-control{display:none}.video-js.vjs-layout-x-small .vjs-custom-control-spacer{flex:auto;display:block}.video-js.vjs-layout-x-small.vjs-no-flex .vjs-custom-control-spacer{width:auto}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:rgba(43,51,63,.75);color:#fff;height:70%}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-controls,.vjs-text-track-settings .vjs-track-settings-font{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}@supports (display:grid){.vjs-text-track-settings .vjs-modal-dialog-content{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;padding:20px 24px 0 24px}.vjs-track-settings-controls .vjs-default-button{margin-bottom:20px}.vjs-text-track-settings .vjs-track-settings-controls{grid-column:1/-1}.vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content{grid-template-columns:1fr}}.vjs-track-setting>select{margin-right:1em;margin-bottom:.5em}.vjs-text-track-settings fieldset{margin:5px;padding:3px;border:none}.vjs-text-track-settings fieldset span{display:inline-block}.vjs-text-track-settings fieldset span>select{max-width:7.3em}.vjs-text-track-settings legend{color:#fff;margin:0 0 5px 0}.vjs-text-track-settings .vjs-label{position:absolute;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);display:block;margin:0 0 5px 0;padding:0;border:0;height:1px;width:1px;overflow:hidden}.vjs-track-settings-controls button:active,.vjs-track-settings-controls button:focus{outline-style:solid;outline-width:medium;background-image:linear-gradient(0deg,#fff 88%,#73859f 100%)}.vjs-track-settings-controls button:hover{color:rgba(43,51,63,.75)}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,#73859f 100%);color:#2b333f;cursor:pointer;border-radius:2px}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}@media print{.video-js>:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}.vjs-resize-manager{position:absolute;top:0;left:0;width:100%;height:100%;border:none;z-index:-1000}.js-focus-visible .video-js :focus:not(.focus-visible){outline:0}.video-js :focus:not(:focus-visible){outline:0} \ No newline at end of file +@charset "UTF-8";.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.vjs-modal-dialog .vjs-modal-dialog-content{position:absolute;top:0;left:0;width:100%;height:100%}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.vjs-button>.vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABDkAAsAAAAAG6gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPgAAAFZRiV3hY21hcAAAAYQAAADaAAADPv749/pnbHlmAAACYAAAC3AAABHQZg6OcWhlYWQAAA3QAAAAKwAAADYZw251aGhlYQAADfwAAAAdAAAAJA+RCLFobXR4AAAOHAAAABMAAACM744AAGxvY2EAAA4wAAAASAAAAEhF6kqubWF4cAAADngAAAAfAAAAIAE0AIFuYW1lAAAOmAAAASUAAAIK1cf1oHBvc3QAAA/AAAABJAAAAdPExYuNeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGS7wTiBgZWBgaWQ5RkDA8MvCM0cwxDOeI6BgYmBlZkBKwhIc01hcPjI+FGJHcRdyA4RZgQRADK3CxEAAHic7dFZbsMgAEXRS0ycyZnnOeG7y+qC8pU1dHusIOXxuoxaOlwZYWQB0Aea4quIEN4E9LzKbKjzDeM6H/mua6Lmc/p8yhg0lvdYx15ZG8uOLQOGjMp3EzqmzJizYMmKNRu27Nhz4MiJMxeu3Ljz4Ekqm7T8P52G8PP3lnTOVk++Z6iN6QZzNN1F7ptuN7eGOjDUoaGODHVsuvU8MdTO9Hd5aqgzQ50b6sJQl4a6MtS1oW4MdWuoO0PdG+rBUI+GejLUs6FeDPVqqDdDvRvqw1CfhpqM9At0iFLaAAB4nJ1YDXBTVRZ+5/22TUlJ8we0pHlJm7RJf5O8F2j6EymlSPkpxaL8U2xpa3DKj0CBhc2IW4eWKSokIoLsuMqssM64f+jA4HSdWXXXscBq67IOs3FXZ1ZYWVyRFdo899yXtIBQZ90k7717zz3v3HPPOfd854YCCj9cL9dL0RQFOqCbGJnrHb5EayiKIWN8iA/hWBblo6hUWm8TtCDwE80WMJus/irwyxOdxeB0MDb14VNJHnXYoLLSl6FfCUYO9nYPTA8Epg9090LprfbBbZ2hY0UlJUXHQp3/vtWkS6EBv8+rPMq5u9692f/dNxJNiqwC1xPE9TCUgCsSdQWgE3XQD25lkG4CN2xmTcOXWBOyser6RN6KnGbKSbmQ3+d0OI1m2W8QzLLkI2sykrWAgJJEtA8vGGW/2Q+CmT3n8zS9wZwu2DCvtuZKZN3xkrLh36yCZuUomQSqGpY8t/25VfHVhw8z4ebGBtfLb0ya9PCaDc+8dGTvk2dsh6z7WzvowlXKUSWo9MJ15a3KrEP2loOr2Ojhw6iW6hf2BDdEccQvZGpaAy7YovSwq8kr7HGllxpd71rkS6G0Sf11sl9OvMK1+jwPPODxjUwkOim9CU3ix1wNjXDfmJSEn618Bs6lpWwUpU+8PCqLMY650zjq8VhCIP17NEKTx3eaLL+s5Pi6yJWaWjTHLR1jYzPSV9VF/6Ojdb/1kO3Mk3uhHC0x6gc1BjlKQ+nQFxTYdaJkZ7ySVxLBbhR1dsboNXp1tCYKW2LRaEzpYcIx2BKNxaL0ZaUnSqfFoiNhHKR/GkX6PWUSAaJelQaqZL1EpoHNsajSEyPSoJ9IjhIxTdjHLmwZvhRDOiFTY/YeQnvrVZmiTQtGncECXtFTBZLOVwwMRgoXHAkXzMzPn1nAJJ8jYSbMDaqN2waGLzNhih/bZynUBMpIWSg7VYi7DRx2m8ALkIdRCJwI6ArJx2EI8kaDWeTQKeAFk9fjl/1AvwktjQ1P7NjyMGQyfd4vjipX6M/i52D7Cq80kqlcxEcGXRr/FEcgs0u5uGgB4VWuMFfpdn2Re6Hi3PqzmxWKsz6+ae2Pn9hXXw/fqM859UiGC0oKYYILJBqJrsn1Z1E5qOs9rQCiUQRREjm8yJcbHF5cUJufX1vAHlefw0XgUoboS3ETfQlTxBC4SOtuE8VPRJTBSCQSjZCpk7Gqzu+masaZ2y7Zjehho4F3g82BNDkAHpORG4+OCS+f6JTPmtRn/PH1kch6d04sp7AQb25aQ/pqUyXeQ8vrebG8OYQdXOQ+585u0sdW9rqalzRURiJ+9F4MweRFrKUjl1GUYhH1A27WOHw5cTFSFPMo9EeUIGnQTZHIaJ7AHLaOKsOODaNF9jkBjYG2QEsQ2xjMUAx2bBEbeTBWMHwskBjngq56S/yfgkBnWBa4K9sqKtq2t1UI8S9He5XuBRbawAdatrQEAi30Aks2+LM8WeCbalVZkWNylvJ+dqJnzVb+OHlSoKW8nPCP7Rd+CcZ2DdWAGqJ2CBFOphgywFFCFBNtfAbGtNPBCwxvygHeYMZMY9ZboBqwq/pVrsbgN5tkv152ODlbMfiqwGMBgxa4Exz3QhovRIUp6acqZmQzRq0ypDXS2TPLT02YIkQETnOE445oOGxOmXAqUJNNG7XgupMjPq2ua9asrj5yY/yuKteO1Kx0YNJTufrirLe1mZnat7OL6rnUdCWenpW6I8mAnbsY8KWs1PuSovCW9A/Z25PQ24a7cNOqgmTkLmBMgh4THgc4b9k2IVv1/g/F5nGljwPLfOgHAzJzh45V/4+WenTzmMtR5Z7us2Tys909UHqrPY7KbckoxRvRHhmVc3cJGE97uml0R1S0jdULVl7EvZtDFVBF35N9cEdjpgmAiOlFZ+Dtoh93+D3zzHr8RRNZQhnCNMNbcegOvpEwZoL+06cJQ07h+th3fZ/7PVbVC6ngTAV/KoLFuO6+2KFcU651gEb5ugPSIb1D+Xp8V4+k3sEIGnw5mYe4If4k1lFYr6SCzmM2EQ8iWtmwjnBI9kTwe1TlfAmXh7H02by9fW2gsjKwtv0aaURKil4OdV7rDL1MXIFNrhdxohcZXYTnq47WisrKitaObbf5+yvkLi5J6lCNZZ+B6GC38VNBZBDidSS/+mSvh6s+srgC8pyKMvDtt+de3c9fU76ZPfuM8ud4Kv0fyP/LqfepMT/3oZxSqpZaTa1DaQYLY8TFsHYbWYsPoRhRWfL5eSSQbhUGgGC3YLbVMk6PitTFNGpAsNrC6D1VNBKgBHMejaiuRWEWGgsSDBTJjqWIl8kJLlsaLJ2tXDr6xGfT85bM2Q06a46x2HTgvdnV8z5YDy/27J4zt6x2VtkzjoYpkq36kaBr4eQSg7tyiVweWubXZugtadl58ydapfbORfKsDTuZ0OBgx4cfdjCf5tbWNITnL120fdOi1RV1C3uKGzNdwYLcMvZ3BxoPyTOCD1XvXTp7U10gWCVmTV9b3r2z0SkGWovb2hp9I89O8a2smlyaO8muMU+dRmtzp60IzAoFpjLr1n388boLyf0dRvxhsHZ0qbWqDkwqvvpkj4l0fY6EIXRi5sQSrAvsVYwXRy4qJ2EVtD1AN7a0HWth9ymvL1xc3WTUKK/TAHA/bXDVtVWfOMfuGxGZv4Ln/jVr9jc3j1yMv0tndmyt9Vq88Y9gH1wtLX3KWjot5++jWHgAoZZkQ14wGQ20Fli71UmKJAy4xKMSTGbVdybW7FDDAut9XpD5AzWrYO7zQ8qffqF8+Ynd/clrHcdyxGy3a/3+mfNnzC/cBsveTjnTvXf1o6vzOlZw7WtqtdmPK/Errz/6NNtD72zmNOZfbmYdTGHfoofqI79Oc+R2n1lrnL6pOm0Up7kwxhTW12Amm7WYkXR2qYrF2AmgmbAsxZjwy1xpg/m1Je2vrp8v/nz2xpmlBg4E9hrMU341wVpTOh/OfmGvAnra8q6uctr60ZQHV3Q+WMQJykMj8ZsWn2QBOmmHMB+m5pDIpTFonYigiaKAhGEiAHF7EliVnQkjoLVIMPtJpBKHYd3A8GYH9jJzrWwmHx5Qjp7vDAX0suGRym1vtm/9W1/HyR8vczfMs6Sk8DSv855/5dlX9oQq52hT8syyp2rx5Id17IAyAM3wIjQPMOHzytEB64q6D5zT91yNbnx3V/nqnd017S9Y0605k3izoXLpsxde2n38yoOV9s1LcjwzNjbdX6asnBVaBj/6/DwKwPkpcqbDG7BnsXoSqWnUAmottYF6jMSdVyYZh3zVXCjwTiwwHH6sGuRiEHQGzuRX6whZkp123oy1BWE2mEfJ/tvIRtM4ZM5bDXiMsPMaAKOTyc5uL57rqyyc5y5JE5pm1i2S2iUX0CcaQ6lC6Zog7JqSqZmYlosl2K6pwNA84zRnQW6SaALYZQGW5lhCtU/W34N6o+bKfZ8cf3/Cl/+iTX3wBzpOY4mRkeNf3rptycGSshQWgGbYt5jFc2e0+DglIrwl6DVWQ7BuwaJ3Xk1J4VL5urnLl/Wf+gHU/hZoZdKNym6lG+I34FaNeZKcSpJIo2IeCVvpdsDGfKvzJnAwmeD37Ow65ZWwSowpgwX5T69s/rB55dP5BcpgDKFV8p7q2sn/1uc93bVzT/w6UrCqDTWvfCq/oCD/qZXNoUj8BL5Kp6GU017frfNXkAtiiyf/SOCEeLqnd8R/Ql9GlCRfctS6k5chvIBuQ1zCCjoCHL2DHNHIXxMJ3kQeO8lbsUXONeSfA5EjcG6/E+KdhN4bP04vBhdi883+BFBzQbxFbvZzQeY9LNBZc0FNfn5NwfDn6rCTnTw6R8o+gfpf5hCom33cRuiTlss3KHmZjD+BPN+5gXuA2ziS/Q73mLxUkpbKN/eqwz5uK0X9F3h2d1V4nGNgZGBgAOJd776+iue3+crAzc4AAje5Bfcg0xz9YHEOBiYQBQA8FQlFAHicY2BkYGBnAAGOPgaG//85+hkYGVCBMgBGGwNYAAAAeJxjYGBgYB8EmKOPgQEAQ04BfgAAAAAAAA4AaAB+AMwA4AECAUIBbAGYAcICGAJYArQC4AMwA7AD3gQwBJYE3AUkBWYFigYgBmYGtAbqB1gIEghYCG4IhAi2COh4nGNgZGBgUGYoZWBnAAEmIOYCQgaG/2A+AwAYCQG2AHicXZBNaoNAGIZfE5PQCKFQ2lUps2oXBfOzzAESyDKBQJdGR2NQR3QSSE/QE/QEPUUPUHqsvsrXjTMw83zPvPMNCuAWP3DQDAejdm1GjzwS7pMmwi75XngAD4/CQ/oX4TFe4Qt7uMMbOzjuDc0EmXCP/C7cJ38Iu+RP4QEe8CU8pP8WHmOPX2EPz87TPo202ey2OjlnQSXV/6arOjWFmvszMWtd6CqwOlKHq6ovycLaWMWVydXKFFZnmVFlZU46tP7R2nI5ncbi/dDkfDtFBA2DDXbYkhKc+V0Bqs5Zt9JM1HQGBRTm/EezTmZNKtpcAMs9Yu6AK9caF76zoLWIWcfMGOSkVduvSWechqZsz040Ib2PY3urxBJTzriT95lipz+TN1fmAAAAeJxtkMl2wjAMRfOAhABlKm2h80C3+ajgCKKDY6cegP59TYBzukAL+z1Zsq8ctaJTTKPrsUQLbXQQI0EXKXroY4AbDDHCGBNMcYsZ7nCPB8yxwCOe8IwXvOIN7/jAJ76wxHfUqWX+OzgumWAjJMV17i0Ndlr6irLKO+qftdT7i6y4uFSUvCknay+lFYZIZaQcmfH/xIFdYn98bqhra1aKTM/6lWMnyaYirx1rFUQZFBkb2zJUtoXeJCeg0WnLtHeSFc3OtrnozNwqi0TkSpBMDB1nSde5oJXW23hTS2/T0LilglXX7dmFVxLnq5U0vYATHFk3zX3BOisoQHNDFDeZnqKDy9hRNawN7Vh727hFzcJ5c8TILrKZfH7tIPxAFP0BpLeJPA==) format("woff");font-weight:400;font-style:normal}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder,.vjs-icon-play{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.vjs-icon-play:before{content:"\f101"}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:"\f102"}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder,.vjs-icon-pause{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before,.vjs-icon-pause:before{content:"\f103"}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder,.vjs-icon-volume-mute{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before,.vjs-icon-volume-mute:before{content:"\f104"}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder,.vjs-icon-volume-low{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before,.vjs-icon-volume-low:before{content:"\f105"}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder,.vjs-icon-volume-mid{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before,.vjs-icon-volume-mid:before{content:"\f106"}.video-js .vjs-mute-control .vjs-icon-placeholder,.vjs-icon-volume-high{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control .vjs-icon-placeholder:before,.vjs-icon-volume-high:before{content:"\f107"}.video-js .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-enter{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-enter:before{content:"\f108"}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-exit{font-family:VideoJS;font-weight:400;font-style:normal}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-exit:before{content:"\f109"}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:"\f10a"}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:"\f10b"}.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-subtitles{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-subtitles:before{content:"\f10c"}.video-js .vjs-captions-button .vjs-icon-placeholder,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-captions{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-captions-button .vjs-icon-placeholder:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-captions:before{content:"\f10d"}.video-js .vjs-chapters-button .vjs-icon-placeholder,.vjs-icon-chapters{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-chapters-button .vjs-icon-placeholder:before,.vjs-icon-chapters:before{content:"\f10e"}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:"\f10f"}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:"\f110"}.video-js .vjs-play-progress,.video-js .vjs-volume-level,.vjs-icon-circle,.vjs-seek-to-live-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before,.vjs-icon-circle:before,.vjs-seek-to-live-control .vjs-icon-placeholder:before{content:"\f111"}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:"\f112"}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:"\f113"}.vjs-icon-hd{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-hd:before{content:"\f114"}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder,.vjs-icon-cancel{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before,.vjs-icon-cancel:before{content:"\f115"}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder,.vjs-icon-replay{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before,.vjs-icon-replay:before{content:"\f116"}.vjs-icon-facebook{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-facebook:before{content:"\f117"}.vjs-icon-gplus{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-gplus:before{content:"\f118"}.vjs-icon-linkedin{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-linkedin:before{content:"\f119"}.vjs-icon-twitter{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-twitter:before{content:"\f11a"}.vjs-icon-tumblr{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-tumblr:before{content:"\f11b"}.vjs-icon-pinterest{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pinterest:before{content:"\f11c"}.video-js .vjs-descriptions-button .vjs-icon-placeholder,.vjs-icon-audio-description{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-descriptions-button .vjs-icon-placeholder:before,.vjs-icon-audio-description:before{content:"\f11d"}.video-js .vjs-audio-button .vjs-icon-placeholder,.vjs-icon-audio{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-audio-button .vjs-icon-placeholder:before,.vjs-icon-audio:before{content:"\f11e"}.vjs-icon-next-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-next-item:before{content:"\f11f"}.vjs-icon-previous-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-previous-item:before{content:"\f120"}.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder,.vjs-icon-picture-in-picture-enter{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before,.vjs-icon-picture-in-picture-enter:before{content:"\f121"}.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder,.vjs-icon-picture-in-picture-exit{font-family:VideoJS;font-weight:400;font-style:normal}.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before,.vjs-icon-picture-in-picture-exit:before{content:"\f122"}.video-js{display:block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;word-break:initial}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js[tabindex="-1"]{outline:0}.video-js *,.video-js :after,.video-js :before{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.video-js.vjs-1-1,.video-js.vjs-16-9,.video-js.vjs-4-3,.video-js.vjs-9-16,.video-js.vjs-fluid{width:100%;max-width:100%}.video-js.vjs-1-1:not(.vjs-audio-only-mode),.video-js.vjs-16-9:not(.vjs-audio-only-mode),.video-js.vjs-4-3:not(.vjs-audio-only-mode),.video-js.vjs-9-16:not(.vjs-audio-only-mode),.video-js.vjs-fluid:not(.vjs-audio-only-mode){height:0}.video-js.vjs-16-9:not(.vjs-audio-only-mode){padding-top:56.25%}.video-js.vjs-4-3:not(.vjs-audio-only-mode){padding-top:75%}.video-js.vjs-9-16:not(.vjs-audio-only-mode){padding-top:177.7777777778%}.video-js.vjs-1-1:not(.vjs-audio-only-mode){padding-top:100%}.video-js.vjs-fill:not(.vjs-audio-only-mode){width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}.video-js.vjs-audio-only-mode .vjs-tech{display:none}body.vjs-full-window{padding:0;margin:0;height:100%}.vjs-full-window .video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen:not(.vjs-ios-native-fs){width:100%!important;height:100%!important;padding-top:0!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.vjs-disabled{opacity:.5;cursor:default}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.63332em;width:3em;display:block;position:absolute;top:10px;left:10px;padding:0;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2b333f;background-color:rgba(43,51,63,.7);border-radius:.3em;transition:all .4s}.vjs-big-play-centered .vjs-big-play-button{top:50%;left:50%;margin-top:-.81666em;margin-left:-1.5em}.video-js .vjs-big-play-button:focus,.video-js:hover .vjs-big-play-button{border-color:#fff;background-color:#73859f;background-color:rgba(115,133,159,.5);transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-error .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button{display:block}.video-js button{background:0 0;border:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vjs-control .vjs-button{width:100%;height:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:linear-gradient(180deg,rgba(0,0,0,.8),rgba(255,255,255,0));overflow:auto}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;font-family:Arial,Helvetica,sans-serif;overflow:auto}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.js-focus-visible .vjs-menu li.vjs-menu-item:hover,.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:rgba(115,133,159,.5)}.js-focus-visible .vjs-menu li.vjs-selected:hover,.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.js-focus-visible .vjs-menu :not(.vjs-selected):focus:not(.focus-visible),.video-js .vjs-menu :not(.vjs-selected):focus:not(:focus-visible){background:0 0}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em 0;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0;margin-bottom:1.5em;border-top-color:rgba(43,51,63,.7)}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:rgba(43,51,63,.7);position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:5em}.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:10em}.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:14em}.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:25em}.vjs-menu-button-popup .vjs-menu.vjs-lock-showing,.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu{display:block}.video-js .vjs-menu-button-inline{transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline:hover,.video-js.vjs-no-flex .vjs-menu-button-inline{width:12em}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:4em;top:0;padding:0;margin:0;transition:all .4s}.vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline:hover .vjs-menu{display:block;opacity:1}.vjs-no-flex .vjs-menu-button-inline .vjs-menu{display:block;opacity:1;position:relative;width:auto}.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu{width:auto}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2b333f;background-color:rgba(43,51,63,.7)}.vjs-audio-only-mode .vjs-control-bar,.vjs-has-started .vjs-control-bar{display:flex;visibility:visible;opacity:1;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:visible;opacity:0;pointer-events:none;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-error .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar{display:none!important}.vjs-audio-only-mode.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible}.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;flex:none}.video-js .vjs-control.vjs-visible-text{width:auto;padding-left:1em;padding-right:1em}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.vjs-button>.vjs-icon-placeholder{display:block}.video-js .vjs-control:focus,.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before{text-shadow:0 0 1em #fff}.video-js :not(.vjs-visible-text)>.vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{cursor:pointer;flex:auto;display:flex;align-items:center;min-width:4em;touch-action:none}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-liveui .vjs-progress-control{display:flex;align-items:center}.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-progress-holder{flex:auto;transition:all .2s;height:.3em}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div,.video-js .vjs-progress-holder .vjs-play-progress{position:absolute;display:block;height:100%;margin:0;padding:0;width:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;top:-.3333333333em;z-index:1}.video-js .vjs-load-progress{background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:rgba(115,133,159,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:rgba(255,255,255,.8);border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.vjs-no-flex .vjs-progress-control .vjs-mouse-display{z-index:0}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-time-tooltip{color:#fff;background-color:#000;background-color:rgba(0,0,0,.8)}.video-js .vjs-slider{position:relative;cursor:pointer;padding:0;margin:0 .45em 0 .45em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#73859f;background-color:rgba(115,133,159,.5)}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{text-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.video-js .vjs-mute-control{cursor:pointer;flex:none}.video-js .vjs-volume-control{cursor:pointer;margin-right:1em;display:flex}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{visibility:visible;opacity:0;width:1px;height:1px;margin-left:-1px}.video-js .vjs-volume-panel{transition:width 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active,.video-js .vjs-volume-panel .vjs-volume-control:active,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control,.video-js .vjs-volume-panel:active .vjs-volume-control,.video-js .vjs-volume-panel:focus .vjs-volume-control{visibility:visible;opacity:1;position:relative;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal{width:5em;height:3em;margin-right:0}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical{left:-3.5em;transition:left 0s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active{width:10em;transition:width .1s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only{width:4em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;width:3em;left:-3000em;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{width:5em;height:3em;visibility:visible;opacity:1;position:relative;transition:none}.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{position:absolute;bottom:3em;left:.5em}.video-js .vjs-volume-panel{display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em;margin:1.35em auto}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em;z-index:1}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em;z-index:1}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{top:-.3em;right:-.5em}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{width:3em;height:8em;bottom:8em;background-color:#2b333f;background-color:rgba(43,51,63,.7)}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.video-js .vjs-volume-tooltip{background-color:#fff;background-color:rgba(255,255,255,.8);border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip,.video-js .vjs-volume-control:hover .vjs-volume-tooltip{display:block;font-size:1em;visibility:visible}.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip,.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip{left:1em;top:-12px}.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip{font-size:1em}.video-js .vjs-volume-control .vjs-mouse-display{display:none;position:absolute;width:100%;height:1px;background-color:#000;z-index:1}.video-js .vjs-volume-horizontal .vjs-mouse-display{width:1px;height:100%}.vjs-no-flex .vjs-volume-control .vjs-mouse-display{z-index:0}.video-js .vjs-volume-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-volume-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-volume-tooltip{color:#fff;background-color:#000;background-color:rgba(0,0,0,.8)}.vjs-poster{display:inline-block;vertical-align:middle;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;background-color:#000;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-has-started .vjs-poster,.vjs-using-native-controls .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster,.vjs-has-started.vjs-audio-poster-mode .vjs-poster{display:block}.video-js .vjs-live-control{display:flex;align-items:flex-start;flex:auto;font-size:1em;line-height:3em}.vjs-no-flex .vjs-live-control{display:table-cell;width:auto;text-align:left}.video-js.vjs-liveui .vjs-live-control,.video-js:not(.vjs-live) .vjs-live-control{display:none}.video-js .vjs-seek-to-live-control{align-items:center;cursor:pointer;flex:none;display:inline-flex;height:100%;padding-left:.5em;padding-right:.5em;font-size:1em;line-height:3em;width:auto;min-width:4em}.vjs-no-flex .vjs-seek-to-live-control{display:table-cell;width:auto;text-align:left}.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,.video-js:not(.vjs-live) .vjs-seek-to-live-control{display:none}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge{cursor:auto}.vjs-seek-to-live-control .vjs-icon-placeholder{margin-right:.5em;color:#888}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder{color:red}.video-js .vjs-time-control{flex:none;font-size:1em;line-height:3em;min-width:2em;width:auto;padding-left:1em;padding-right:1em}.vjs-live .vjs-time-control{display:none}.video-js .vjs-current-time,.vjs-no-flex .vjs-current-time{display:none}.video-js .vjs-duration,.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-live .vjs-time-divider{display:none}.video-js .vjs-play-control{cursor:pointer}.video-js .vjs-play-control .vjs-icon-placeholder{flex:none}.vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.video-js.vjs-controls-disabled .vjs-text-track-display,.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{transform:translateY(-3em)}.video-js.vjs-controls-disabled video::-webkit-media-text-track-display,.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{transform:translateY(-1.5em)}.video-js .vjs-picture-in-picture-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-picture-in-picture-control{display:none}.video-js .vjs-fullscreen-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-fullscreen-control{display:none}.vjs-playback-rate .vjs-playback-rate-value,.vjs-playback-rate>.vjs-menu-button{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-playback-rate .vjs-playback-rate-value{pointer-events:none;font-size:1.5em;line-height:2;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-error .vjs-error-display:before{color:#fff;content:"X";font-family:Arial,Helvetica,sans-serif;font-size:4em;left:0;line-height:1;margin-top:-.5em;position:absolute;text-shadow:.05em .05em .1em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;opacity:.85;text-align:left;border:6px solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:50px;height:50px;border-radius:25px;visibility:hidden}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:block;-webkit-animation:vjs-spinner-show 0s linear .3s forwards;animation:vjs-spinner-show 0s linear .3s forwards}.vjs-loading-spinner:after,.vjs-loading-spinner:before{content:"";position:absolute;margin:-6px;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before{-webkit-animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite;animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;-webkit-animation-delay:.44s;animation-delay:.44s}@keyframes vjs-spinner-show{to{visibility:visible}}@-webkit-keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{100%{transform:rotate(360deg)}}@-webkit-keyframes vjs-spinner-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}100%{border-top-color:#73859f}}@-webkit-keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}100%{border-top-color:#73859f}}.video-js.vjs-audio-only-mode .vjs-captions-button{display:none}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js.vjs-audio-only-mode .vjs-descriptions-button{display:none}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:"";font-size:1.5em;line-height:inherit}.video-js.vjs-audio-only-mode .vjs-subs-caps-button{display:none}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:" ";font-size:1.5em;line-height:inherit}.video-js.vjs-layout-small .vjs-current-time,.video-js.vjs-layout-small .vjs-duration,.video-js.vjs-layout-small .vjs-playback-rate,.video-js.vjs-layout-small .vjs-remaining-time,.video-js.vjs-layout-small .vjs-time-divider,.video-js.vjs-layout-small .vjs-volume-control,.video-js.vjs-layout-tiny .vjs-current-time,.video-js.vjs-layout-tiny .vjs-duration,.video-js.vjs-layout-tiny .vjs-playback-rate,.video-js.vjs-layout-tiny .vjs-remaining-time,.video-js.vjs-layout-tiny .vjs-time-divider,.video-js.vjs-layout-tiny .vjs-volume-control,.video-js.vjs-layout-x-small .vjs-current-time,.video-js.vjs-layout-x-small .vjs-duration,.video-js.vjs-layout-x-small .vjs-playback-rate,.video-js.vjs-layout-x-small .vjs-remaining-time,.video-js.vjs-layout-x-small .vjs-time-divider,.video-js.vjs-layout-x-small .vjs-volume-control{display:none}.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover{width:auto;width:initial}.video-js.vjs-layout-tiny .vjs-progress-control,.video-js.vjs-layout-x-small .vjs-progress-control{display:none}.video-js.vjs-layout-x-small .vjs-custom-control-spacer{flex:auto;display:block}.video-js.vjs-layout-x-small.vjs-no-flex .vjs-custom-control-spacer{width:auto}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:rgba(43,51,63,.75);color:#fff;height:70%}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-controls,.vjs-text-track-settings .vjs-track-settings-font{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}@supports (display:grid){.vjs-text-track-settings .vjs-modal-dialog-content{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;padding:20px 24px 0 24px}.vjs-track-settings-controls .vjs-default-button{margin-bottom:20px}.vjs-text-track-settings .vjs-track-settings-controls{grid-column:1/-1}.vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content{grid-template-columns:1fr}}.vjs-track-setting>select{margin-right:1em;margin-bottom:.5em}.vjs-text-track-settings fieldset{margin:5px;padding:3px;border:none}.vjs-text-track-settings fieldset span{display:inline-block}.vjs-text-track-settings fieldset span>select{max-width:7.3em}.vjs-text-track-settings legend{color:#fff;margin:0 0 5px 0}.vjs-text-track-settings .vjs-label{position:absolute;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);display:block;margin:0 0 5px 0;padding:0;border:0;height:1px;width:1px;overflow:hidden}.vjs-track-settings-controls button:active,.vjs-track-settings-controls button:focus{outline-style:solid;outline-width:medium;background-image:linear-gradient(0deg,#fff 88%,#73859f 100%)}.vjs-track-settings-controls button:hover{color:rgba(43,51,63,.75)}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,#73859f 100%);color:#2b333f;cursor:pointer;border-radius:2px}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}@media print{.video-js>:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}.vjs-resize-manager{position:absolute;top:0;left:0;width:100%;height:100%;border:none;z-index:-1000}.js-focus-visible .video-js :focus:not(.focus-visible){outline:0}.video-js :focus:not(:focus-visible){outline:0} \ No newline at end of file diff --git a/public/_player/videojs/dist/video.js b/public/_player/videojs/dist/video.js index 69750e4..66b2402 100644 --- a/public/_player/videojs/dist/video.js +++ b/public/_player/videojs/dist/video.js @@ -1,6 +1,6 @@ /** * @license - * Video.js 7.19.0 + * Video.js 7.19.2 * Copyright Brightcove, Inc. * Available under Apache License Version 2.0 * @@ -16,7 +16,7 @@ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.videojs = factory()); }(this, (function () { 'use strict'; - var version$5 = "7.19.0"; + var version$5 = "7.19.2"; /** * An Object that contains lifecycle hooks as keys which point to an array @@ -18587,8 +18587,10 @@ if (this.items && this.items.length <= this.hideThreshold_) { this.hide(); + this.menu.contentEl_.removeAttribute('role'); } else { this.show(); + this.menu.contentEl_.setAttribute('role', 'menu'); } } /** @@ -25588,7 +25590,7 @@ this.addClass(idClass); - setTextContent(this.styleEl_, "\n ." + idClass + " {\n width: " + width + "px;\n height: " + height + "px;\n }\n\n ." + idClass + ".vjs-fluid {\n padding-top: " + ratioMultiplier * 100 + "%;\n }\n "); + setTextContent(this.styleEl_, "\n ." + idClass + " {\n width: " + width + "px;\n height: " + height + "px;\n }\n\n ." + idClass + ".vjs-fluid:not(.vjs-audio-only-mode) {\n padding-top: " + ratioMultiplier * 100 + "%;\n }\n "); } /** * Load/Create an instance of playback {@link Tech} including element @@ -30889,7 +30891,7 @@ head.insertBefore(style, head.firstChild); } - setTextContent(style, "\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n "); + setTextContent(style, "\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid:not(.vjs-audio-only-mode) {\n padding-top: 56.25%\n }\n "); } } // Run Auto-load players // You have to wait at least once in case this script is loaded after your @@ -31515,7 +31517,7 @@ return array; } - /*! @name m3u8-parser @version 4.7.0 @license Apache-2.0 */ + /*! @name m3u8-parser @version 4.7.1 @license Apache-2.0 */ /** * A stream that buffers string input and generates a `data` event for each * line. @@ -32577,6 +32579,15 @@ attributes: entry.attributes }; return; + } + + if (entry.attributes.KEYFORMAT === 'com.microsoft.playready') { + this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this. + + this.manifest.contentProtection['com.microsoft.playready'] = { + uri: entry.attributes.URI + }; + return; } // check if the content is encrypted for Widevine // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf @@ -33290,6 +33301,193 @@ return null; }; + // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2)); + // we used to do this with log2 but BigInt does not support builtin math + // Math.ceil(log2(x)); + + + var countBits = function countBits(x) { + return x.toString(2).length; + }; // count the number of whole bytes it would take to represent a number + + var countBytes = function countBytes(x) { + return Math.ceil(countBits(x) / 8); + }; + var isArrayBufferView = function isArrayBufferView(obj) { + if (ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(obj); + } + + return obj && obj.buffer instanceof ArrayBuffer; + }; + var isTypedArray = function isTypedArray(obj) { + return isArrayBufferView(obj); + }; + var toUint8 = function toUint8(bytes) { + if (bytes instanceof Uint8Array) { + return bytes; + } + + if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) { + // any non-number or NaN leads to empty uint8array + // eslint-disable-next-line + if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) { + bytes = 0; + } else { + bytes = [bytes]; + } + } + + return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0); + }; + var BigInt = window.BigInt || Number; + var BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')]; + var bytesToNumber = function bytesToNumber(bytes, _temp) { + var _ref = _temp === void 0 ? {} : _temp, + _ref$signed = _ref.signed, + signed = _ref$signed === void 0 ? false : _ref$signed, + _ref$le = _ref.le, + le = _ref$le === void 0 ? false : _ref$le; + + bytes = toUint8(bytes); + var fn = le ? 'reduce' : 'reduceRight'; + var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn]; + var number = obj.call(bytes, function (total, _byte, i) { + var exponent = le ? i : Math.abs(i + 1 - bytes.length); + return total + BigInt(_byte) * BYTE_TABLE[exponent]; + }, BigInt(0)); + + if (signed) { + var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1); + number = BigInt(number); + + if (number > max) { + number -= max; + number -= max; + number -= BigInt(2); + } + } + + return Number(number); + }; + var numberToBytes = function numberToBytes(number, _temp2) { + var _ref2 = _temp2 === void 0 ? {} : _temp2, + _ref2$le = _ref2.le, + le = _ref2$le === void 0 ? false : _ref2$le; // eslint-disable-next-line + + + if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) { + number = 0; + } + + number = BigInt(number); + var byteCount = countBytes(number); + var bytes = new Uint8Array(new ArrayBuffer(byteCount)); + + for (var i = 0; i < byteCount; i++) { + var byteIndex = le ? i : Math.abs(i + 1 - bytes.length); + bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF)); + + if (number < 0) { + bytes[byteIndex] = Math.abs(~bytes[byteIndex]); + bytes[byteIndex] -= i === 0 ? 1 : 2; + } + } + + return bytes; + }; + var stringToBytes = function stringToBytes(string, stringIsBytes) { + if (typeof string !== 'string' && string && typeof string.toString === 'function') { + string = string.toString(); + } + + if (typeof string !== 'string') { + return new Uint8Array(); + } // If the string already is bytes, we don't have to do this + // otherwise we do this so that we split multi length characters + // into individual bytes + + + if (!stringIsBytes) { + string = unescape(encodeURIComponent(string)); + } + + var view = new Uint8Array(string.length); + + for (var i = 0; i < string.length; i++) { + view[i] = string.charCodeAt(i); + } + + return view; + }; + var concatTypedArrays = function concatTypedArrays() { + for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) { + buffers[_key] = arguments[_key]; + } + + buffers = buffers.filter(function (b) { + return b && (b.byteLength || b.length) && typeof b !== 'string'; + }); + + if (buffers.length <= 1) { + // for 0 length we will return empty uint8 + // for 1 length we return the first uint8 + return toUint8(buffers[0]); + } + + var totalLen = buffers.reduce(function (total, buf, i) { + return total + (buf.byteLength || buf.length); + }, 0); + var tempBuffer = new Uint8Array(totalLen); + var offset = 0; + buffers.forEach(function (buf) { + buf = toUint8(buf); + tempBuffer.set(buf, offset); + offset += buf.byteLength; + }); + return tempBuffer; + }; + /** + * Check if the bytes "b" are contained within bytes "a". + * + * @param {Uint8Array|Array} a + * Bytes to check in + * + * @param {Uint8Array|Array} b + * Bytes to check for + * + * @param {Object} options + * options + * + * @param {Array|Uint8Array} [offset=0] + * offset to use when looking at bytes in a + * + * @param {Array|Uint8Array} [mask=[]] + * mask to use on bytes before comparison. + * + * @return {boolean} + * If all bytes in b are inside of a, taking into account + * bit masks. + */ + + var bytesMatch = function bytesMatch(a, b, _temp3) { + var _ref3 = _temp3 === void 0 ? {} : _temp3, + _ref3$offset = _ref3.offset, + offset = _ref3$offset === void 0 ? 0 : _ref3$offset, + _ref3$mask = _ref3.mask, + mask = _ref3$mask === void 0 ? [] : _ref3$mask; + + a = toUint8(a); + b = toUint8(b); // ie 11 does not support uint8 every + + var fn = b.every ? b.every : Array.prototype.every; + return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8 + fn.call(b, function (bByte, i) { + var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i]; + return bByte === aByte; + }); + }; + /** * Loops through all supported media groups in master and calls the provided * callback for each group @@ -36516,7 +36714,7 @@ var DOMParser = domParser.DOMParser; - /*! @name mpd-parser @version 0.21.0 @license Apache-2.0 */ + /*! @name mpd-parser @version 0.21.1 @license Apache-2.0 */ var isObject = function isObject(obj) { return !!obj && typeof obj === 'object'; @@ -38733,7 +38931,15 @@ var generateKeySystemInformation = function generateKeySystemInformation(contentProtectionNodes) { return contentProtectionNodes.reduce(function (acc, node) { - var attributes = parseAttributes(node); + var attributes = parseAttributes(node); // Although it could be argued that according to the UUID RFC spec the UUID string (a-f chars) should be generated + // as a lowercase string it also mentions it should be treated as case-insensitive on input. Since the key system + // UUIDs in the keySystemsMap are hardcoded as lowercase in the codebase there isn't any reason not to do + // .toLowerCase() on the input UUID string from the manifest (at least I could not think of one). + + if (attributes.schemeIdUri) { + attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase(); + } + var keySystem = keySystemsMap[attributes.schemeIdUri]; if (keySystem) { @@ -38744,8 +38950,7 @@ if (psshNode) { var pssh = getContent(psshNode); - var psshBuffer = pssh && decodeB64ToUint8Array(pssh); - acc[keySystem].pssh = psshBuffer; + acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh); } } @@ -39268,186 +39473,6 @@ var parseSidx_1 = parseSidx; - // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2)); - // we used to do this with log2 but BigInt does not support builtin math - // Math.ceil(log2(x)); - - - var countBits = function countBits(x) { - return x.toString(2).length; - }; // count the number of whole bytes it would take to represent a number - - var countBytes = function countBytes(x) { - return Math.ceil(countBits(x) / 8); - }; - var isTypedArray = function isTypedArray(obj) { - return ArrayBuffer.isView(obj); - }; - var toUint8 = function toUint8(bytes) { - if (bytes instanceof Uint8Array) { - return bytes; - } - - if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) { - // any non-number or NaN leads to empty uint8array - // eslint-disable-next-line - if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) { - bytes = 0; - } else { - bytes = [bytes]; - } - } - - return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0); - }; - var BigInt = window.BigInt || Number; - var BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')]; - var bytesToNumber = function bytesToNumber(bytes, _temp) { - var _ref = _temp === void 0 ? {} : _temp, - _ref$signed = _ref.signed, - signed = _ref$signed === void 0 ? false : _ref$signed, - _ref$le = _ref.le, - le = _ref$le === void 0 ? false : _ref$le; - - bytes = toUint8(bytes); - var fn = le ? 'reduce' : 'reduceRight'; - var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn]; - var number = obj.call(bytes, function (total, _byte, i) { - var exponent = le ? i : Math.abs(i + 1 - bytes.length); - return total + BigInt(_byte) * BYTE_TABLE[exponent]; - }, BigInt(0)); - - if (signed) { - var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1); - number = BigInt(number); - - if (number > max) { - number -= max; - number -= max; - number -= BigInt(2); - } - } - - return Number(number); - }; - var numberToBytes = function numberToBytes(number, _temp2) { - var _ref2 = _temp2 === void 0 ? {} : _temp2, - _ref2$le = _ref2.le, - le = _ref2$le === void 0 ? false : _ref2$le; // eslint-disable-next-line - - - if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) { - number = 0; - } - - number = BigInt(number); - var byteCount = countBytes(number); - var bytes = new Uint8Array(new ArrayBuffer(byteCount)); - - for (var i = 0; i < byteCount; i++) { - var byteIndex = le ? i : Math.abs(i + 1 - bytes.length); - bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF)); - - if (number < 0) { - bytes[byteIndex] = Math.abs(~bytes[byteIndex]); - bytes[byteIndex] -= i === 0 ? 1 : 2; - } - } - - return bytes; - }; - var stringToBytes = function stringToBytes(string, stringIsBytes) { - if (typeof string !== 'string' && string && typeof string.toString === 'function') { - string = string.toString(); - } - - if (typeof string !== 'string') { - return new Uint8Array(); - } // If the string already is bytes, we don't have to do this - // otherwise we do this so that we split multi length characters - // into individual bytes - - - if (!stringIsBytes) { - string = unescape(encodeURIComponent(string)); - } - - var view = new Uint8Array(string.length); - - for (var i = 0; i < string.length; i++) { - view[i] = string.charCodeAt(i); - } - - return view; - }; - var concatTypedArrays = function concatTypedArrays() { - for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) { - buffers[_key] = arguments[_key]; - } - - buffers = buffers.filter(function (b) { - return b && (b.byteLength || b.length) && typeof b !== 'string'; - }); - - if (buffers.length <= 1) { - // for 0 length we will return empty uint8 - // for 1 length we return the first uint8 - return toUint8(buffers[0]); - } - - var totalLen = buffers.reduce(function (total, buf, i) { - return total + (buf.byteLength || buf.length); - }, 0); - var tempBuffer = new Uint8Array(totalLen); - var offset = 0; - buffers.forEach(function (buf) { - buf = toUint8(buf); - tempBuffer.set(buf, offset); - offset += buf.byteLength; - }); - return tempBuffer; - }; - /** - * Check if the bytes "b" are contained within bytes "a". - * - * @param {Uint8Array|Array} a - * Bytes to check in - * - * @param {Uint8Array|Array} b - * Bytes to check for - * - * @param {Object} options - * options - * - * @param {Array|Uint8Array} [offset=0] - * offset to use when looking at bytes in a - * - * @param {Array|Uint8Array} [mask=[]] - * mask to use on bytes before comparison. - * - * @return {boolean} - * If all bytes in b are inside of a, taking into account - * bit masks. - */ - - var bytesMatch = function bytesMatch(a, b, _temp3) { - var _ref3 = _temp3 === void 0 ? {} : _temp3, - _ref3$offset = _ref3.offset, - offset = _ref3$offset === void 0 ? 0 : _ref3$offset, - _ref3$mask = _ref3.mask, - mask = _ref3$mask === void 0 ? [] : _ref3$mask; - - a = toUint8(a); - b = toUint8(b); // ie 11 does not support uint8 every - - var fn = b.every ? b.every : Array.prototype.every; - return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8 - fn.call(b, function (bByte, i) { - var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i]; - return bByte === aByte; - }); - }; - var ID3 = toUint8([0x49, 0x44, 0x33]); var getId3Size = function getId3Size(bytes, offset) { if (offset === void 0) { @@ -40130,7 +40155,7 @@ }; var clock_1 = clock.ONE_SECOND_IN_TS; - /*! @name @videojs/http-streaming @version 2.14.0 @license Apache-2.0 */ + /*! @name @videojs/http-streaming @version 2.14.2 @license Apache-2.0 */ /** * @file resolve-url.js - Handling how URLs are resolved and manipulated */ @@ -41964,7 +41989,7 @@ for (var _i2 = 0; _i2 < properties.playlists.length; _i2++) { if (newMedia.id === properties.playlists[_i2].id) { - properties.playlists[_i2] = newMedia; + properties.playlists[_i2] = mergedPlaylist; } } }); @@ -42747,7 +42772,7 @@ Object.keys(message).forEach(function (key) { var value = message[key]; - if (ArrayBuffer.isView(value)) { + if (isArrayBufferView(value)) { transferable[key] = { bytes: value.buffer, byteOffset: value.byteOffset, @@ -44241,7 +44266,7 @@ var getWorkerString = function getWorkerString(fn) { return fn.toString().replace(/^function.+?{/, '').slice(0, -1); }; - /* rollup-plugin-worker-factory start for worker!/Users/poneill/dev/http-streaming/src/transmuxer-worker.js */ + /* rollup-plugin-worker-factory start for worker!/Users/bclifford/Code/vhs-release-test/src/transmuxer-worker.js */ var workerCode$1 = transform(getWorkerString(function () { @@ -53047,7 +53072,7 @@ }; })); var TransmuxWorker = factory(workerCode$1); - /* rollup-plugin-worker-factory end for worker!/Users/poneill/dev/http-streaming/src/transmuxer-worker.js */ + /* rollup-plugin-worker-factory end for worker!/Users/bclifford/Code/vhs-release-test/src/transmuxer-worker.js */ var handleData_ = function handleData_(event, transmuxedData, callback) { var _event$data$segment = event.data.segment, @@ -60834,10 +60859,12 @@ return TimelineChangeController; }(videojs.EventTarget); - /* rollup-plugin-worker-factory start for worker!/Users/poneill/dev/http-streaming/src/decrypter-worker.js */ + /* rollup-plugin-worker-factory start for worker!/Users/bclifford/Code/vhs-release-test/src/decrypter-worker.js */ var workerCode = transform(getWorkerString(function () { + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + function createCommonjsModule(fn, basedir, module) { return module = { path: basedir, @@ -61030,7 +61057,7 @@ function unpad(padded) { return padded.subarray(0, padded.byteLength - padded[padded.byteLength - 1]); } - /*! @name aes-decrypter @version 3.1.2 @license Apache-2.0 */ + /*! @name aes-decrypter @version 3.1.3 @license Apache-2.0 */ /** * @file aes.js @@ -61455,10 +61482,31 @@ }]); return Decrypter; }(); - /** - * @file bin-utils.js - */ + var win; + + if (typeof window !== "undefined") { + win = window; + } else if (typeof commonjsGlobal !== "undefined") { + win = commonjsGlobal; + } else if (typeof self !== "undefined") { + win = self; + } else { + win = {}; + } + + var window_1 = win; + + var isArrayBufferView = function isArrayBufferView(obj) { + if (ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(obj); + } + + return obj && obj.buffer instanceof ArrayBuffer; + }; + + var BigInt = window_1.BigInt || Number; + [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')]; /** * Creates an object for sending to a web worker modifying properties that are TypedArrays * into a new object with seperated properties for the buffer, byteOffset, and byteLength. @@ -61476,7 +61524,7 @@ Object.keys(message).forEach(function (key) { var value = message[key]; - if (ArrayBuffer.isView(value)) { + if (isArrayBufferView(value)) { transferable[key] = { bytes: value.buffer, byteOffset: value.byteOffset, @@ -61514,7 +61562,7 @@ }; })); var Decrypter = factory(workerCode); - /* rollup-plugin-worker-factory end for worker!/Users/poneill/dev/http-streaming/src/decrypter-worker.js */ + /* rollup-plugin-worker-factory end for worker!/Users/bclifford/Code/vhs-release-test/src/decrypter-worker.js */ /** * Convert the properties of an HLS track into an audioTrackKind. @@ -65350,11 +65398,11 @@ initPlugin(this, options); }; - var version$4 = "2.14.0"; + var version$4 = "2.14.2"; var version$3 = "6.0.1"; - var version$2 = "0.21.0"; - var version$1 = "4.7.0"; - var version = "3.1.2"; + var version$2 = "0.21.1"; + var version$1 = "4.7.1"; + var version = "3.1.3"; var Vhs = { PlaylistLoader: PlaylistLoader, Playlist: Playlist, diff --git a/public/_player/videojs/dist/video.min.js b/public/_player/videojs/dist/video.min.js index fd9202d..e6fddc2 100644 --- a/public/_player/videojs/dist/video.min.js +++ b/public/_player/videojs/dist/video.min.js @@ -1,6 +1,6 @@ /** * @license - * Video.js 7.19.0 + * Video.js 7.19.2 * Copyright Brightcove, Inc. * Available under Apache License Version 2.0 * @@ -9,11 +9,7 @@ * Available under Apache License Version 2.0 * */ -!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global="undefined"!=typeof globalThis?globalThis:global||self).videojs=factory()}(this,(function(){"use strict";for(var version$5="7.19.0",hooks_={},hooks=function hooks(type,fn){return hooks_[type]=hooks_[type]||[],fn&&(hooks_[type]=hooks_[type].concat(fn)),hooks_[type]},hook=function hook(type,fn){hooks(type,fn)},removeHook=function removeHook(type,fn){var index=hooks(type).indexOf(fn);return!(index<=-1)&&(hooks_[type]=hooks_[type].slice(),hooks_[type].splice(index,1),!0)},hookOnce=function hookOnce(type,fn){hooks(type,[].concat(fn).map((function(original){var wrapper;return function wrapper(){return removeHook(type,wrapper),original.apply(void 0,arguments)}})))},FullscreenApi={prefixed:!0},apiMap=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror","fullscreen"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror","-webkit-full-screen"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror","-moz-full-screen"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError","-ms-fullscreen"]],specApi=apiMap[0],browserApi,i=0;i0?splice:0)}if(window.console){var fn=window.console[type];fn||"debug"!==type||(fn=window.console.info||window.console.log),fn&&lvl&&lvlRegExp.test(type)&&fn[Array.isArray(args)?"apply":"call"](window.console,args)}}};function createLogger$1(name){var level="info",logByType,log=function log(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];logByType("log",level,args)};return logByType=LogByTypeFactory(name,log),log.createLogger=function(subname){return createLogger$1(name+": "+subname)},log.levels={all:"debug|log|warn|error",off:"",debug:"debug|log|warn|error",info:"log|warn|error",warn:"warn|error",error:"error",DEFAULT:level},log.level=function(lvl){if("string"==typeof lvl){if(!log.levels.hasOwnProperty(lvl))throw new Error('"'+lvl+'" in not a valid log level');level=lvl}return level},(log.history=function(){return history?[].concat(history):[]}).filter=function(fname){return(history||[]).filter((function(historyItem){return new RegExp(".*"+fname+".*").test(historyItem[0])}))},log.history.clear=function(){history&&(history.length=0)},log.history.disable=function(){null!==history&&(history.length=0,history=null)},log.history.enable=function(){null===history&&(history=[])},log.error=function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];return logByType("error",level,args)},log.warn=function(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];return logByType("warn",level,args)},log.debug=function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];return logByType("debug",level,args)},log}var log$1=createLogger$1("VIDEOJS"),createLogger=log$1.createLogger,commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,module){return fn(module={exports:{}},module.exports),module.exports}var _extends_1=createCommonjsModule((function(module){function _extends(){return module.exports=_extends=Object.assign||function(target){for(var i=1;i1?_len-1:0),_key=1;_key<_len;_key++)sources[_key-1]=arguments[_key];return Object.assign?_extends_1.apply(void 0,[target].concat(sources)):(sources.forEach((function(source){source&&each(source,(function(value,key){target[key]=value}))})),target)}function isObject$1(value){return!!value&&"object"==typeof value}function isPlain(value){return isObject$1(value)&&"[object Object]"===toString$1.call(value)&&value.constructor===Object}function computedStyle(el,prop){if(!el||!prop)return"";if("function"==typeof window.getComputedStyle){var computedStyleValue;try{computedStyleValue=window.getComputedStyle(el)}catch(e){return""}return computedStyleValue?computedStyleValue.getPropertyValue(prop)||computedStyleValue[prop]:""}return""}var USER_AGENT=window.navigator&&window.navigator.userAgent||"",webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT),appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap.pop()):null,IS_IPOD=/iPod/i.test(USER_AGENT),IOS_VERSION=(match=USER_AGENT.match(/OS (\d+)_/i))&&match[1]?match[1]:null,match,IS_ANDROID=/Android/i.test(USER_AGENT),ANDROID_VERSION=function(){var match=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!match)return null;var major=match[1]&&parseFloat(match[1]),minor=match[2]&&parseFloat(match[2]);return major&&minor?parseFloat(match[1]+"."+match[2]):major||null}(),IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537,IS_FIREFOX=/Firefox/i.test(USER_AGENT),IS_EDGE=/Edg/i.test(USER_AGENT),IS_CHROME=!IS_EDGE&&(/Chrome/i.test(USER_AGENT)||/CriOS/i.test(USER_AGENT)),CHROME_VERSION=function(){var match=USER_AGENT.match(/(Chrome|CriOS)\/(\d+)/);return match&&match[2]?parseFloat(match[2]):null}(),IE_VERSION=function(){var result=/MSIE\s(\d+)\.\d/.exec(USER_AGENT),version=result&&parseFloat(result[1]);return!version&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)&&(version=11),version}(),IS_SAFARI=/Safari/i.test(USER_AGENT)&&!IS_CHROME&&!IS_ANDROID&&!IS_EDGE,IS_WINDOWS=/Windows/i.test(USER_AGENT),TOUCH_ENABLED=Boolean(isReal()&&("ontouchstart"in window||window.navigator.maxTouchPoints||window.DocumentTouch&&window.document instanceof window.DocumentTouch)),IS_IPAD=/iPad/i.test(USER_AGENT)||IS_SAFARI&&TOUCH_ENABLED&&!/iPhone/i.test(USER_AGENT),IS_IPHONE=/iPhone/i.test(USER_AGENT)&&!IS_IPAD,IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD,IS_ANY_SAFARI=(IS_SAFARI||IS_IOS)&&!IS_CHROME,browser=Object.freeze({__proto__:null,IS_IPOD:IS_IPOD,IOS_VERSION:IOS_VERSION,IS_ANDROID:IS_ANDROID,ANDROID_VERSION:ANDROID_VERSION,IS_NATIVE_ANDROID:IS_NATIVE_ANDROID,IS_FIREFOX:IS_FIREFOX,IS_EDGE:IS_EDGE,IS_CHROME:IS_CHROME,CHROME_VERSION:CHROME_VERSION,IE_VERSION:IE_VERSION,IS_SAFARI:IS_SAFARI,IS_WINDOWS:IS_WINDOWS,TOUCH_ENABLED:TOUCH_ENABLED,IS_IPAD:IS_IPAD,IS_IPHONE:IS_IPHONE,IS_IOS:IS_IOS,IS_ANY_SAFARI:IS_ANY_SAFARI});function isNonBlankString(str){return"string"==typeof str&&Boolean(str.trim())}function throwIfWhitespace(str){if(str.indexOf(" ")>=0)throw new Error("class has illegal whitespace characters")}function classRegExp(className){return new RegExp("(^|\\s)"+className+"($|\\s)")}function isReal(){return document===window.document}function isEl(value){return isObject$1(value)&&1===value.nodeType}function isInFrame(){try{return window.parent!==window.self}catch(x){return!0}}function createQuerier(method){return function(selector,context){if(!isNonBlankString(selector))return document[method](null);isNonBlankString(context)&&(context=document.querySelector(context));var ctx=isEl(context)?context:document;return ctx[method]&&ctx[method](selector)}}function createEl(tagName,properties,attributes,content){void 0===tagName&&(tagName="div"),void 0===properties&&(properties={}),void 0===attributes&&(attributes={});var el=document.createElement(tagName);return Object.getOwnPropertyNames(properties).forEach((function(propName){var val=properties[propName];-1!==propName.indexOf("aria-")||"role"===propName||"type"===propName?(log$1.warn("Setting attributes in the second argument of createEl()\nhas been deprecated. Use the third argument instead.\ncreateEl(type, properties, attributes). Attempting to set "+propName+" to "+val+"."),el.setAttribute(propName,val)):"textContent"===propName?textContent(el,val):el[propName]===val&&"tabIndex"!==propName||(el[propName]=val)})),Object.getOwnPropertyNames(attributes).forEach((function(attrName){el.setAttribute(attrName,attributes[attrName])})),content&&appendContent(el,content),el}function textContent(el,text){return void 0===el.textContent?el.innerText=text:el.textContent=text,el}function prependTo(child,parent){parent.firstChild?parent.insertBefore(child,parent.firstChild):parent.appendChild(child)}function hasClass(element,classToCheck){return throwIfWhitespace(classToCheck),element.classList?element.classList.contains(classToCheck):classRegExp(classToCheck).test(element.className)}function addClass(element,classToAdd){return element.classList?element.classList.add(classToAdd):hasClass(element,classToAdd)||(element.className=(element.className+" "+classToAdd).trim()),element}function removeClass(element,classToRemove){return element?(element.classList?element.classList.remove(classToRemove):(throwIfWhitespace(classToRemove),element.className=element.className.split(/\s+/).filter((function(c){return c!==classToRemove})).join(" ")),element):(log$1.warn("removeClass was called with an element that doesn't exist"),null)}function toggleClass(element,classToToggle,predicate){var has=hasClass(element,classToToggle);if("function"==typeof predicate&&(predicate=predicate(element,classToToggle)),"boolean"!=typeof predicate&&(predicate=!has),predicate!==has)return predicate?addClass(element,classToToggle):removeClass(element,classToToggle),element}function setAttributes(el,attributes){Object.getOwnPropertyNames(attributes).forEach((function(attrName){var attrValue=attributes[attrName];null==attrValue||!1===attrValue?el.removeAttribute(attrName):el.setAttribute(attrName,!0===attrValue?"":attrValue)}))}function getAttributes(tag){var obj={},knownBooleans=",autoplay,controls,playsinline,loop,muted,default,defaultMuted,";if(tag&&tag.attributes&&tag.attributes.length>0)for(var attrs=tag.attributes,i=attrs.length-1;i>=0;i--){var attrName=attrs[i].name,attrVal=attrs[i].value;"boolean"!=typeof tag[attrName]&&-1===knownBooleans.indexOf(","+attrName+",")||(attrVal=null!==attrVal),obj[attrName]=attrVal}return obj}function getAttribute(el,attribute){return el.getAttribute(attribute)}function setAttribute(el,attribute,value){el.setAttribute(attribute,value)}function removeAttribute(el,attribute){el.removeAttribute(attribute)}function blockTextSelection(){document.body.focus(),document.onselectstart=function(){return!1}}function unblockTextSelection(){document.onselectstart=function(){return!0}}function getBoundingClientRect(el){if(el&&el.getBoundingClientRect&&el.parentNode){var rect=el.getBoundingClientRect(),result={};return["bottom","height","left","right","top","width"].forEach((function(k){void 0!==rect[k]&&(result[k]=rect[k])})),result.height||(result.height=parseFloat(computedStyle(el,"height"))),result.width||(result.width=parseFloat(computedStyle(el,"width"))),result}}function findPosition(el){if(!el||el&&!el.offsetParent)return{left:0,top:0,width:0,height:0};for(var width=el.offsetWidth,height=el.offsetHeight,left=0,top=0;el.offsetParent&&el!==document[FullscreenApi.fullscreenElement];)left+=el.offsetLeft,top+=el.offsetTop,el=el.offsetParent;return{left:left,top:top,width:width,height:height}}function getPointerPosition(el,event){var translated={x:0,y:0};if(IS_IOS)for(var item=el;item&&"html"!==item.nodeName.toLowerCase();){var transform=computedStyle(item,"transform");if(/^matrix/.test(transform)){var values=transform.slice(7,-1).split(/,\s/).map(Number);translated.x+=values[4],translated.y+=values[5]}else if(/^matrix3d/.test(transform)){var _values=transform.slice(9,-1).split(/,\s/).map(Number);translated.x+=_values[12],translated.y+=_values[13]}item=item.parentNode}var position={},boxTarget=findPosition(event.target),box=findPosition(el),boxW=box.width,boxH=box.height,offsetY=event.offsetY-(box.top-boxTarget.top),offsetX=event.offsetX-(box.left-boxTarget.left);return event.changedTouches&&(offsetX=event.changedTouches[0].pageX-box.left,offsetY=event.changedTouches[0].pageY+box.top,IS_IOS&&(offsetX-=translated.x,offsetY-=translated.y)),position.y=1-Math.max(0,Math.min(1,offsetY/boxH)),position.x=Math.max(0,Math.min(1,offsetX/boxW)),position}function isTextNode(value){return isObject$1(value)&&3===value.nodeType}function emptyEl(el){for(;el.firstChild;)el.removeChild(el.firstChild);return el}function normalizeContent(content){return"function"==typeof content&&(content=content()),(Array.isArray(content)?content:[content]).map((function(value){return"function"==typeof value&&(value=value()),isEl(value)||isTextNode(value)?value:"string"==typeof value&&/\S/.test(value)?document.createTextNode(value):void 0})).filter((function(value){return value}))}function appendContent(el,content){return normalizeContent(content).forEach((function(node){return el.appendChild(node)})),el}function insertContent(el,content){return appendContent(emptyEl(el),content)}function isSingleLeftClick(event){return void 0===event.button&&void 0===event.buttons||(0===event.button&&void 0===event.buttons||("mouseup"===event.type&&0===event.button&&0===event.buttons||0===event.button&&1===event.buttons))}var $=createQuerier("querySelector"),$$=createQuerier("querySelectorAll"),Dom=Object.freeze({__proto__:null,isReal:isReal,isEl:isEl,isInFrame:isInFrame,createEl:createEl,textContent:textContent,prependTo:prependTo,hasClass:hasClass,addClass:addClass,removeClass:removeClass,toggleClass:toggleClass,setAttributes:setAttributes,getAttributes:getAttributes,getAttribute:getAttribute,setAttribute:setAttribute,removeAttribute:removeAttribute,blockTextSelection:blockTextSelection,unblockTextSelection:unblockTextSelection,getBoundingClientRect:getBoundingClientRect,findPosition:findPosition,getPointerPosition:getPointerPosition,isTextNode:isTextNode,emptyEl:emptyEl,normalizeContent:normalizeContent,appendContent:appendContent,insertContent:insertContent,isSingleLeftClick:isSingleLeftClick,$:$,$$:$$}),_windowLoaded=!1,videojs$1,autoSetup=function autoSetup(){if(!1!==videojs$1.options.autoSetup){var vids=Array.prototype.slice.call(document.getElementsByTagName("video")),audios=Array.prototype.slice.call(document.getElementsByTagName("audio")),divs=Array.prototype.slice.call(document.getElementsByTagName("video-js")),mediaEls=vids.concat(audios,divs);if(mediaEls&&mediaEls.length>0)for(var i=0,e=mediaEls.length;i-1&&(options={passive:!0}),elem.addEventListener(type,data.dispatcher,options)}else elem.attachEvent&&elem.attachEvent("on"+type,data.dispatcher)}function off(elem,type,fn){if(DomData.has(elem)){var data=DomData.get(elem);if(data.handlers){if(Array.isArray(type))return _handleMultipleEvents(off,elem,type,fn);var removeType=function removeType(el,t){data.handlers[t]=[],_cleanUpEvents(el,t)};if(void 0!==type){var handlers=data.handlers[type];if(handlers)if(fn){if(fn.guid)for(var n=0;n=wait&&(fn.apply(void 0,arguments),last=now)}},debounce=function debounce(func,wait,immediate,context){var timeout;void 0===context&&(context=window);var cancel,debounced=function debounced(){var self=this,args=arguments,_later=function later(){timeout=null,_later=null,immediate||func.apply(self,args)};!timeout&&immediate&&func.apply(self,args),context.clearTimeout(timeout),timeout=context.setTimeout(_later,wait)};return debounced.cancel=function cancel(){context.clearTimeout(timeout),timeout=null},debounced},EventTarget$2=function EventTarget(){},EVENT_MAP;EventTarget$2.prototype.allowedEvents_={},EventTarget$2.prototype.on=function(type,fn){var ael=this.addEventListener;this.addEventListener=function(){},on(this,type,fn),this.addEventListener=ael},EventTarget$2.prototype.addEventListener=EventTarget$2.prototype.on,EventTarget$2.prototype.off=function(type,fn){off(this,type,fn)},EventTarget$2.prototype.removeEventListener=EventTarget$2.prototype.off,EventTarget$2.prototype.one=function(type,fn){var ael=this.addEventListener;this.addEventListener=function(){},one(this,type,fn),this.addEventListener=ael},EventTarget$2.prototype.any=function(type,fn){var ael=this.addEventListener;this.addEventListener=function(){},any(this,type,fn),this.addEventListener=ael},EventTarget$2.prototype.trigger=function(event){var type=event.type||event;"string"==typeof event&&(event={type:type}),event=fixEvent(event),this.allowedEvents_[type]&&this["on"+type]&&this["on"+type](event),trigger(this,event)},EventTarget$2.prototype.dispatchEvent=EventTarget$2.prototype.trigger,EventTarget$2.prototype.queueTrigger=function(event){var _this=this;EVENT_MAP||(EVENT_MAP=new Map);var type=event.type||event,map=EVENT_MAP.get(this);map||(map=new Map,EVENT_MAP.set(this,map));var oldTimeout=map.get(type);map.delete(type),window.clearTimeout(oldTimeout);var timeout=window.setTimeout((function(){0===map.size&&(map=null,EVENT_MAP.delete(_this)),_this.trigger(event)}),0);map.set(type,timeout)};var objName=function objName(obj){return"function"==typeof obj.name?obj.name():"string"==typeof obj.name?obj.name:obj.name_?obj.name_:obj.constructor&&obj.constructor.name?obj.constructor.name:typeof obj},isEvented=function isEvented(object){return object instanceof EventTarget$2||!!object.eventBusEl_&&["on","one","off","trigger"].every((function(k){return"function"==typeof object[k]}))},addEventedCallback=function addEventedCallback(target,callback){isEvented(target)?callback():(target.eventedCallbacks||(target.eventedCallbacks=[]),target.eventedCallbacks.push(callback))},isValidEventType=function isValidEventType(type){return"string"==typeof type&&/\S/.test(type)||Array.isArray(type)&&!!type.length},validateTarget=function validateTarget(target,obj,fnName){if(!target||!target.nodeName&&!isEvented(target))throw new Error("Invalid target for "+objName(obj)+"#"+fnName+"; must be a DOM node or evented object.")},validateEventType=function validateEventType(type,obj,fnName){if(!isValidEventType(type))throw new Error("Invalid event type for "+objName(obj)+"#"+fnName+"; must be a non-empty string or array.")},validateListener=function validateListener(listener,obj,fnName){if("function"!=typeof listener)throw new Error("Invalid listener for "+objName(obj)+"#"+fnName+"; must be a function.")},normalizeListenArgs=function normalizeListenArgs(self,args,fnName){var isTargetingSelf=args.length<3||args[0]===self||args[0]===self.eventBusEl_,target,type,listener;return isTargetingSelf?(target=self.eventBusEl_,args.length>=3&&args.shift(),type=args[0],listener=args[1]):(target=args[0],type=args[1],listener=args[2]),validateTarget(target,self,fnName),validateEventType(type,self,fnName),validateListener(listener,self,fnName),{isTargetingSelf:isTargetingSelf,target:target,type:type,listener:listener=bind(self,listener)}},listen=function listen(target,method,type,listener){validateTarget(target,target,method),target.nodeName?Events[method](target,type,listener):target[method](type,listener)},EventedMixin={on:function on(){for(var _this=this,_len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];var _normalizeListenArgs=normalizeListenArgs(this,args,"on"),isTargetingSelf=_normalizeListenArgs.isTargetingSelf,target=_normalizeListenArgs.target,type=_normalizeListenArgs.type,listener=_normalizeListenArgs.listener;if(listen(target,"on",type,listener),!isTargetingSelf){var removeListenerOnDispose=function removeListenerOnDispose(){return _this.off(target,type,listener)};removeListenerOnDispose.guid=listener.guid;var removeRemoverOnTargetDispose=function removeRemoverOnTargetDispose(){return _this.off("dispose",removeListenerOnDispose)};removeRemoverOnTargetDispose.guid=listener.guid,listen(this,"on","dispose",removeListenerOnDispose),listen(target,"on","dispose",removeRemoverOnTargetDispose)}},one:function one(){for(var _this2=this,_len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];var _normalizeListenArgs2=normalizeListenArgs(this,args,"one"),isTargetingSelf=_normalizeListenArgs2.isTargetingSelf,target=_normalizeListenArgs2.target,type=_normalizeListenArgs2.type,listener=_normalizeListenArgs2.listener;if(isTargetingSelf)listen(target,"one",type,listener);else{var wrapper=function wrapper(){_this2.off(target,type,wrapper);for(var _len3=arguments.length,largs=new Array(_len3),_key3=0;_key3<_len3;_key3++)largs[_key3]=arguments[_key3];listener.apply(null,largs)};wrapper.guid=listener.guid,listen(target,"one",type,wrapper)}},any:function any(){for(var _this3=this,_len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];var _normalizeListenArgs3=normalizeListenArgs(this,args,"any"),isTargetingSelf=_normalizeListenArgs3.isTargetingSelf,target=_normalizeListenArgs3.target,type=_normalizeListenArgs3.type,listener=_normalizeListenArgs3.listener;if(isTargetingSelf)listen(target,"any",type,listener);else{var wrapper=function wrapper(){_this3.off(target,type,wrapper);for(var _len5=arguments.length,largs=new Array(_len5),_key5=0;_key5<_len5;_key5++)largs[_key5]=arguments[_key5];listener.apply(null,largs)};wrapper.guid=listener.guid,listen(target,"any",type,wrapper)}},off:function off$1(targetOrType,typeOrListener,listener){if(!targetOrType||isValidEventType(targetOrType))off(this.eventBusEl_,targetOrType,typeOrListener);else{var target=targetOrType,type=typeOrListener;validateTarget(target,this,"off"),validateEventType(type,this,"off"),validateListener(listener,this,"off"),listener=bind(this,listener),this.off("dispose",listener),target.nodeName?(off(target,type,listener),off(target,"dispose",listener)):isEvented(target)&&(target.off(type,listener),target.off("dispose",listener))}},trigger:function trigger$1(event,hash){validateTarget(this.eventBusEl_,this,"trigger");var type=event&&"string"!=typeof event?event.type:event;if(!isValidEventType(type)){var error="Invalid event type for "+objName(this)+"#trigger; must be a non-empty string or object with a type key that has a non-empty value.";if(!event)throw new Error(error);(this.log||log$1).error(error)}return trigger(this.eventBusEl_,event,hash)}};function evented(target,options){void 0===options&&(options={});var _options,eventBusKey=options.eventBusKey;if(eventBusKey){if(!target[eventBusKey].nodeName)throw new Error('The eventBusKey "'+eventBusKey+'" does not refer to an element.');target.eventBusEl_=target[eventBusKey]}else target.eventBusEl_=createEl("span",{className:"vjs-event-bus"});return assign(target,EventedMixin),target.eventedCallbacks&&target.eventedCallbacks.forEach((function(callback){callback()})),target.on("dispose",(function(){target.off(),[target,target.el_,target.eventBusEl_].forEach((function(val){val&&DomData.has(val)&&DomData.delete(val)})),window.setTimeout((function(){target.eventBusEl_=null}),0)})),target}var StatefulMixin={state:{},setState:function setState(stateUpdates){var _this=this,changes;return"function"==typeof stateUpdates&&(stateUpdates=stateUpdates()),each(stateUpdates,(function(value,key){_this.state[key]!==value&&((changes=changes||{})[key]={from:_this.state[key],to:value}),_this.state[key]=value})),changes&&isEvented(this)&&this.trigger({changes:changes,type:"statechanged"}),changes}};function stateful(target,defaultState){return assign(target,StatefulMixin),target.state=assign({},target.state,defaultState),"function"==typeof target.handleStateChanged&&isEvented(target)&&target.on("statechanged",target.handleStateChanged),target}var toLowerCase=function toLowerCase(string){return"string"!=typeof string?string:string.replace(/./,(function(w){return w.toLowerCase()}))},toTitleCase$1=function toTitleCase(string){return"string"!=typeof string?string:string.replace(/./,(function(w){return w.toUpperCase()}))},titleCaseEquals=function titleCaseEquals(str1,str2){return toTitleCase$1(str1)===toTitleCase$1(str2)};function mergeOptions$3(){for(var result={},_len=arguments.length,sources=new Array(_len),_key=0;_key<_len;_key++)sources[_key]=arguments[_key];return sources.forEach((function(source){source&&each(source,(function(value,key){isPlain(value)?(isPlain(result[key])||(result[key]={}),result[key]=mergeOptions$3(result[key],value)):result[key]=value}))})),result}var MapSham=function(){function MapSham(){this.map_={}}var _proto=MapSham.prototype;return _proto.has=function has(key){return key in this.map_},_proto.delete=function _delete(key){var has=this.has(key);return delete this.map_[key],has},_proto.set=function set(key,value){return this.map_[key]=value,this},_proto.forEach=function forEach(callback,thisArg){for(var key in this.map_)callback.call(thisArg,this.map_[key],key,this)},MapSham}(),Map$1=window.Map?window.Map:MapSham,SetSham=function(){function SetSham(){this.set_={}}var _proto=SetSham.prototype;return _proto.has=function has(key){return key in this.set_},_proto.delete=function _delete(key){var has=this.has(key);return delete this.set_[key],has},_proto.add=function add(key){return this.set_[key]=1,this},_proto.forEach=function forEach(callback,thisArg){for(var key in this.set_)callback.call(thisArg,key,key,this)},SetSham}(),Set$1=window.Set?window.Set:SetSham,keycode=createCommonjsModule((function(module,exports){function keyCode(searchInput){if(searchInput&&"object"==typeof searchInput){var hasKeyCode=searchInput.which||searchInput.keyCode||searchInput.charCode;hasKeyCode&&(searchInput=hasKeyCode)}if("number"==typeof searchInput)return names[searchInput];var search=String(searchInput),foundNamedKey,foundNamedKey;return(foundNamedKey=codes[search.toLowerCase()])?foundNamedKey:(foundNamedKey=aliases[search.toLowerCase()])||(1===search.length?search.charCodeAt(0):void 0)}keyCode.isEventKey=function isEventKey(event,nameOrCode){if(event&&"object"==typeof event){var keyCode=event.which||event.keyCode||event.charCode;if(null==keyCode)return!1;if("string"==typeof nameOrCode){var foundNamedKey,foundNamedKey;if(foundNamedKey=codes[nameOrCode.toLowerCase()])return foundNamedKey===keyCode;if(foundNamedKey=aliases[nameOrCode.toLowerCase()])return foundNamedKey===keyCode}else if("number"==typeof nameOrCode)return nameOrCode===keyCode;return!1}};var codes=(exports=module.exports=keyCode).code=exports.codes={backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,"pause/break":19,"caps lock":20,esc:27,space:32,"page up":33,"page down":34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,delete:46,command:91,"left command":91,"right command":93,"numpad *":106,"numpad +":107,"numpad -":109,"numpad .":110,"numpad /":111,"num lock":144,"scroll lock":145,"my computer":182,"my calculator":183,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222},aliases=exports.aliases={windows:91,"⇧":16,"⌥":18,"⌃":17,"⌘":91,ctl:17,control:17,option:18,pause:19,break:19,caps:20,return:13,escape:27,spc:32,spacebar:32,pgup:33,pgdn:34,ins:45,del:46,cmd:91}; -/*! - * Programatically add the following - */ -for(i=97;i<123;i++)codes[String.fromCharCode(i)]=i-32;for(var i=48;i<58;i++)codes[i-48]=i;for(i=1;i<13;i++)codes["f"+i]=i+111;for(i=0;i<10;i++)codes["numpad "+i]=i+96;var names=exports.names=exports.title={};for(i in codes)names[codes[i]]=i;for(var alias in aliases)codes[alias]=aliases[alias]}));keycode.code,keycode.codes,keycode.aliases,keycode.names,keycode.title;var Component$1=function(){function Component(player,options,ready){var _this=this;if(!player&&this.play?this.player_=player=this:this.player_=player,this.isDisposed_=!1,this.parentComponent_=null,this.options_=mergeOptions$3({},this.options_),options=this.options_=mergeOptions$3(this.options_,options),this.id_=options.id||options.el&&options.el.id,!this.id_){var id=player&&player.id&&player.id()||"no_player";this.id_=id+"_component_"+newGUID()}this.name_=options.name||null,options.el?this.el_=options.el:!1!==options.createEl&&(this.el_=this.createEl()),options.className&&this.el_&&options.className.split(" ").forEach((function(c){return _this.addClass(c)})),!1!==options.evented&&(evented(this,{eventBusKey:this.el_?"el_":null}),this.handleLanguagechange=this.handleLanguagechange.bind(this),this.on(this.player_,"languagechange",this.handleLanguagechange)),stateful(this,this.constructor.defaultState),this.children_=[],this.childIndex_={},this.childNameIndex_={},this.setTimeoutIds_=new Set$1,this.setIntervalIds_=new Set$1,this.rafIds_=new Set$1,this.namedRafs_=new Map$1,this.clearingTimersOnDispose_=!1,!1!==options.initChildren&&this.initChildren(),this.ready(ready),!1!==options.reportTouchActivity&&this.enableTouchActivity()}var _proto=Component.prototype;return _proto.dispose=function dispose(){if(!this.isDisposed_){if(this.readyQueue_&&(this.readyQueue_.length=0),this.trigger({type:"dispose",bubbles:!1}),this.isDisposed_=!0,this.children_)for(var i=this.children_.length-1;i>=0;i--)this.children_[i].dispose&&this.children_[i].dispose();this.children_=null,this.childIndex_=null,this.childNameIndex_=null,this.parentComponent_=null,this.el_&&(this.el_.parentNode&&this.el_.parentNode.removeChild(this.el_),this.el_=null),this.player_=null}},_proto.isDisposed=function isDisposed(){return Boolean(this.isDisposed_)},_proto.player=function player(){return this.player_},_proto.options=function options(obj){return obj?(this.options_=mergeOptions$3(this.options_,obj),this.options_):this.options_},_proto.el=function el(){return this.el_},_proto.createEl=function createEl$1(tagName,properties,attributes){return createEl(tagName,properties,attributes)},_proto.localize=function localize(string,tokens,defaultValue){void 0===defaultValue&&(defaultValue=string);var code=this.player_.language&&this.player_.language(),languages=this.player_.languages&&this.player_.languages(),language=languages&&languages[code],primaryCode=code&&code.split("-")[0],primaryLang=languages&&languages[primaryCode],localizedString=defaultValue;return language&&language[string]?localizedString=language[string]:primaryLang&&primaryLang[string]&&(localizedString=primaryLang[string]),tokens&&(localizedString=localizedString.replace(/\{(\d+)\}/g,(function(match,index){var value=tokens[index-1],ret=value;return void 0===value&&(ret=match),ret}))),localizedString},_proto.handleLanguagechange=function handleLanguagechange(){},_proto.contentEl=function contentEl(){return this.contentEl_||this.el_},_proto.id=function id(){return this.id_},_proto.name=function name(){return this.name_},_proto.children=function children(){return this.children_},_proto.getChildById=function getChildById(id){return this.childIndex_[id]},_proto.getChild=function getChild(name){if(name)return this.childNameIndex_[name]},_proto.getDescendant=function getDescendant(){for(var _len=arguments.length,names=new Array(_len),_key=0;_key<_len;_key++)names[_key]=arguments[_key];names=names.reduce((function(acc,n){return acc.concat(n)}),[]);for(var currentChild=this,i=0;i=0;i--)if(this.children_[i]===component){childFound=!0,this.children_.splice(i,1);break}if(childFound){component.parentComponent_=null,this.childIndex_[component.id()]=null,this.childNameIndex_[toTitleCase$1(component.name())]=null,this.childNameIndex_[toLowerCase(component.name())]=null;var compEl=component.el();compEl&&compEl.parentNode===this.contentEl()&&this.contentEl().removeChild(component.el())}}},_proto.initChildren=function initChildren(){var _this2=this,children=this.options_.children;if(children){var parentOptions=this.options_,handleAdd=function handleAdd(child){var name=child.name,opts=child.opts;if(void 0!==parentOptions[name]&&(opts=parentOptions[name]),!1!==opts){!0===opts&&(opts={}),opts.playerOptions=_this2.options_.playerOptions;var newChild=_this2.addChild(name,opts);newChild&&(_this2[name]=newChild)}},workingChildren,Tech=Component.getComponent("Tech");(workingChildren=Array.isArray(children)?children:Object.keys(children)).concat(Object.keys(this.options_).filter((function(child){return!workingChildren.some((function(wchild){return"string"==typeof wchild?child===wchild:child===wchild.name}))}))).map((function(child){var name,opts;return"string"==typeof child?opts=children[name=child]||_this2.options_[name]||{}:(name=child.name,opts=child),{name:name,opts:opts}})).filter((function(child){var c=Component.getComponent(child.opts.componentClass||toTitleCase$1(child.name));return c&&!Tech.isTech(c)})).forEach(handleAdd)}},_proto.buildCSSClass=function buildCSSClass(){return""},_proto.ready=function ready(fn,sync){if(void 0===sync&&(sync=!1),fn)return this.isReady_?void(sync?fn.call(this):this.setTimeout(fn,1)):(this.readyQueue_=this.readyQueue_||[],void this.readyQueue_.push(fn))},_proto.triggerReady=function triggerReady(){this.isReady_=!0,this.setTimeout((function(){var readyQueue=this.readyQueue_;this.readyQueue_=[],readyQueue&&readyQueue.length>0&&readyQueue.forEach((function(fn){fn.call(this)}),this),this.trigger("ready")}),1)},_proto.$=function $$1(selector,context){return $(selector,context||this.contentEl())},_proto.$$=function $$$1(selector,context){return $$(selector,context||this.contentEl())},_proto.hasClass=function hasClass$1(classToCheck){return hasClass(this.el_,classToCheck)},_proto.addClass=function addClass$1(classToAdd){addClass(this.el_,classToAdd)},_proto.removeClass=function removeClass$1(classToRemove){removeClass(this.el_,classToRemove)},_proto.toggleClass=function toggleClass$1(classToToggle,predicate){toggleClass(this.el_,classToToggle,predicate)},_proto.show=function show(){this.removeClass("vjs-hidden")},_proto.hide=function hide(){this.addClass("vjs-hidden")},_proto.lockShowing=function lockShowing(){this.addClass("vjs-lock-showing")},_proto.unlockShowing=function unlockShowing(){this.removeClass("vjs-lock-showing")},_proto.getAttribute=function getAttribute$1(attribute){return getAttribute(this.el_,attribute)},_proto.setAttribute=function setAttribute$1(attribute,value){setAttribute(this.el_,attribute,value)},_proto.removeAttribute=function removeAttribute$1(attribute){removeAttribute(this.el_,attribute)},_proto.width=function width(num,skipListeners){return this.dimension("width",num,skipListeners)},_proto.height=function height(num,skipListeners){return this.dimension("height",num,skipListeners)},_proto.dimensions=function dimensions(width,height){this.width(width,!0),this.height(height)},_proto.dimension=function dimension(widthOrHeight,num,skipListeners){if(void 0!==num)return null!==num&&num==num||(num=0),-1!==(""+num).indexOf("%")||-1!==(""+num).indexOf("px")?this.el_.style[widthOrHeight]=num:this.el_.style[widthOrHeight]="auto"===num?"":num+"px",void(skipListeners||this.trigger("componentresize"));if(!this.el_)return 0;var val=this.el_.style[widthOrHeight],pxIndex=val.indexOf("px");return-1!==pxIndex?parseInt(val.slice(0,pxIndex),10):parseInt(this.el_["offset"+toTitleCase$1(widthOrHeight)],10)},_proto.currentDimension=function currentDimension(widthOrHeight){var computedWidthOrHeight=0;if("width"!==widthOrHeight&&"height"!==widthOrHeight)throw new Error("currentDimension only accepts width or height value");if(computedWidthOrHeight=computedStyle(this.el_,widthOrHeight),0===(computedWidthOrHeight=parseFloat(computedWidthOrHeight))||isNaN(computedWidthOrHeight)){var rule="offset"+toTitleCase$1(widthOrHeight);computedWidthOrHeight=this.el_[rule]}return computedWidthOrHeight},_proto.currentDimensions=function currentDimensions(){return{width:this.currentDimension("width"),height:this.currentDimension("height")}},_proto.currentWidth=function currentWidth(){return this.currentDimension("width")},_proto.currentHeight=function currentHeight(){return this.currentDimension("height")},_proto.focus=function focus(){this.el_.focus()},_proto.blur=function blur(){this.el_.blur()},_proto.handleKeyDown=function handleKeyDown(event){this.player_&&(keycode.isEventKey(event,"Tab")||event.stopPropagation(),this.player_.handleKeyDown(event))},_proto.handleKeyPress=function handleKeyPress(event){this.handleKeyDown(event)},_proto.emitTapEvents=function emitTapEvents(){var touchStart=0,firstTouch=null,tapMovementThreshold=10,touchTimeThreshold=200,couldBeTap;this.on("touchstart",(function(event){1===event.touches.length&&(firstTouch={pageX:event.touches[0].pageX,pageY:event.touches[0].pageY},touchStart=window.performance.now(),couldBeTap=!0)})),this.on("touchmove",(function(event){if(event.touches.length>1)couldBeTap=!1;else if(firstTouch){var xdiff=event.touches[0].pageX-firstTouch.pageX,ydiff=event.touches[0].pageY-firstTouch.pageY,touchDistance;Math.sqrt(xdiff*xdiff+ydiff*ydiff)>10&&(couldBeTap=!1)}}));var noTap=function noTap(){couldBeTap=!1};this.on("touchleave",noTap),this.on("touchcancel",noTap),this.on("touchend",(function(event){var touchTime;(firstTouch=null,!0===couldBeTap)&&(window.performance.now()-touchStart<200&&(event.preventDefault(),this.trigger("tap")))}))},_proto.enableTouchActivity=function enableTouchActivity(){if(this.player()&&this.player().reportUserActivity){var report=bind(this.player(),this.player().reportUserActivity),touchHolding;this.on("touchstart",(function(){report(),this.clearInterval(touchHolding),touchHolding=this.setInterval(report,250)}));var touchEnd=function touchEnd(event){report(),this.clearInterval(touchHolding)};this.on("touchmove",report),this.on("touchend",touchEnd),this.on("touchcancel",touchEnd)}},_proto.setTimeout=function setTimeout(fn,timeout){var _this3=this,timeoutId;return fn=bind(this,fn),this.clearTimersOnDispose_(),timeoutId=window.setTimeout((function(){_this3.setTimeoutIds_.has(timeoutId)&&_this3.setTimeoutIds_.delete(timeoutId),fn()}),timeout),this.setTimeoutIds_.add(timeoutId),timeoutId},_proto.clearTimeout=function clearTimeout(timeoutId){return this.setTimeoutIds_.has(timeoutId)&&(this.setTimeoutIds_.delete(timeoutId),window.clearTimeout(timeoutId)),timeoutId},_proto.setInterval=function setInterval(fn,interval){fn=bind(this,fn),this.clearTimersOnDispose_();var intervalId=window.setInterval(fn,interval);return this.setIntervalIds_.add(intervalId),intervalId},_proto.clearInterval=function clearInterval(intervalId){return this.setIntervalIds_.has(intervalId)&&(this.setIntervalIds_.delete(intervalId),window.clearInterval(intervalId)),intervalId},_proto.requestAnimationFrame=function requestAnimationFrame(fn){var _this4=this,id;return this.supportsRaf_?(this.clearTimersOnDispose_(),fn=bind(this,fn),id=window.requestAnimationFrame((function(){_this4.rafIds_.has(id)&&_this4.rafIds_.delete(id),fn()})),this.rafIds_.add(id),id):this.setTimeout(fn,1e3/60)},_proto.requestNamedAnimationFrame=function requestNamedAnimationFrame(name,fn){var _this5=this;if(!this.namedRafs_.has(name)){this.clearTimersOnDispose_(),fn=bind(this,fn);var id=this.requestAnimationFrame((function(){fn(),_this5.namedRafs_.has(name)&&_this5.namedRafs_.delete(name)}));return this.namedRafs_.set(name,id),name}},_proto.cancelNamedAnimationFrame=function cancelNamedAnimationFrame(name){this.namedRafs_.has(name)&&(this.cancelAnimationFrame(this.namedRafs_.get(name)),this.namedRafs_.delete(name))},_proto.cancelAnimationFrame=function cancelAnimationFrame(id){return this.supportsRaf_?(this.rafIds_.has(id)&&(this.rafIds_.delete(id),window.cancelAnimationFrame(id)),id):this.clearTimeout(id)},_proto.clearTimersOnDispose_=function clearTimersOnDispose_(){var _this6=this;this.clearingTimersOnDispose_||(this.clearingTimersOnDispose_=!0,this.one("dispose",(function(){[["namedRafs_","cancelNamedAnimationFrame"],["rafIds_","cancelAnimationFrame"],["setTimeoutIds_","clearTimeout"],["setIntervalIds_","clearInterval"]].forEach((function(_ref){var idName=_ref[0],cancelName=_ref[1];_this6[idName].forEach((function(val,key){return _this6[cancelName](key)}))})),_this6.clearingTimersOnDispose_=!1})))},Component.registerComponent=function registerComponent(name,ComponentToRegister){if("string"!=typeof name||!name)throw new Error('Illegal component name, "'+name+'"; must be a non-empty string.');var Tech=Component.getComponent("Tech"),isTech=Tech&&Tech.isTech(ComponentToRegister),isComp=Component===ComponentToRegister||Component.prototype.isPrototypeOf(ComponentToRegister.prototype),reason;if(isTech||!isComp)throw reason=isTech?"techs must be registered using Tech.registerTech()":"must be a Component subclass",new Error('Illegal component, "'+name+'"; '+reason+".");name=toTitleCase$1(name),Component.components_||(Component.components_={});var Player=Component.getComponent("Player");if("Player"===name&&Player&&Player.players){var players=Player.players,playerNames=Object.keys(players);if(players&&playerNames.length>0&&playerNames.map((function(pname){return players[pname]})).every(Boolean))throw new Error("Can not register Player component after player has been created.")}return Component.components_[name]=ComponentToRegister,Component.components_[toLowerCase(name)]=ComponentToRegister,ComponentToRegister},Component.getComponent=function getComponent(name){if(name&&Component.components_)return Component.components_[name]},Component}();function _assertThisInitialized(self){if(void 0===self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return self}Component$1.prototype.supportsRaf_="function"==typeof window.requestAnimationFrame&&"function"==typeof window.cancelAnimationFrame,Component$1.registerComponent("Component",Component$1);var assertThisInitialized=_assertThisInitialized;function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype),subClass.prototype.constructor=subClass,subClass.__proto__=superClass}var inheritsLoose=_inheritsLoose;function rangeCheck(fnName,index,maxIndex){if("number"!=typeof index||index<0||index>maxIndex)throw new Error("Failed to execute '"+fnName+"' on 'TimeRanges': The index provided ("+index+") is non-numeric or out of bounds (0-"+maxIndex+").")}function getRange(fnName,valueIndex,ranges,rangeIndex){return rangeCheck(fnName,rangeIndex,ranges.length-1),ranges[rangeIndex][valueIndex]}function createTimeRangesObj(ranges){var timeRangesObj;return timeRangesObj=void 0===ranges||0===ranges.length?{length:0,start:function start(){throw new Error("This TimeRanges object is empty")},end:function end(){throw new Error("This TimeRanges object is empty")}}:{length:ranges.length,start:getRange.bind(null,"start",0,ranges),end:getRange.bind(null,"end",1,ranges)},window.Symbol&&window.Symbol.iterator&&(timeRangesObj[window.Symbol.iterator]=function(){return(ranges||[]).values()}),timeRangesObj}function createTimeRanges(start,end){return Array.isArray(start)?createTimeRangesObj(start):void 0===start||void 0===end?createTimeRangesObj():createTimeRangesObj([[start,end]])}function bufferedPercent(buffered,duration){var bufferedDuration=0,start,end;if(!duration)return 0;buffered&&buffered.length||(buffered=createTimeRanges(0,0));for(var i=0;iduration&&(end=duration),bufferedDuration+=end-start;return bufferedDuration/duration}function MediaError(value){if(value instanceof MediaError)return value;"number"==typeof value?this.code=value:"string"==typeof value?this.message=value:isObject$1(value)&&("number"==typeof value.code&&(this.code=value.code),assign(this,value)),this.message||(this.message=MediaError.defaultMessages[this.code]||"")}MediaError.prototype.code=0,MediaError.prototype.message="",MediaError.prototype.status=null,MediaError.errorTypes=["MEDIA_ERR_CUSTOM","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","MEDIA_ERR_ENCRYPTED"],MediaError.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail part-way.",3:"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.",4:"The media could not be loaded, either because the server or network failed or because the format is not supported.",5:"The media is encrypted and we do not have the keys to decrypt it."};for(var errNum=0;errNum=0;i--)if(tracks[i].enabled){disableOthers$1(tracks,tracks[i]);break}return(_this=_TrackList.call(this,tracks)||this).changing_=!1,_this}inheritsLoose(AudioTrackList,_TrackList);var _proto=AudioTrackList.prototype;return _proto.addTrack=function addTrack(track){var _this2=this;track.enabled&&disableOthers$1(this,track),_TrackList.prototype.addTrack.call(this,track),track.addEventListener&&(track.enabledChange_=function(){_this2.changing_||(_this2.changing_=!0,disableOthers$1(_this2,track),_this2.changing_=!1,_this2.trigger("change"))},track.addEventListener("enabledchange",track.enabledChange_))},_proto.removeTrack=function removeTrack(rtrack){_TrackList.prototype.removeTrack.call(this,rtrack),rtrack.removeEventListener&&rtrack.enabledChange_&&(rtrack.removeEventListener("enabledchange",rtrack.enabledChange_),rtrack.enabledChange_=null)},AudioTrackList}(TrackList),disableOthers=function disableOthers(list,track){for(var i=0;i=0;i--)if(tracks[i].selected){disableOthers(tracks,tracks[i]);break}return(_this=_TrackList.call(this,tracks)||this).changing_=!1,Object.defineProperty(assertThisInitialized(_this),"selectedIndex",{get:function get(){for(var _i=0;_i=400&&response.statusCode<=599){var cause=responseBody;if(decodeResponseBody)if(window_1.TextDecoder){var charset=getCharset(response.headers&&response.headers["content-type"]);try{cause=new TextDecoder(charset).decode(responseBody)}catch(e){}}else cause=String.fromCharCode.apply(null,new Uint8Array(responseBody));callback({cause:cause})}else callback(null,responseBody)}};createXHR.httpHandler=httpHandler; +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).videojs=t()}(this,function(){"use strict";for(var e,u="7.19.2",i={},a=function(e,t){return i[e]=i[e]||[],t&&(i[e]=i[e].concat(t)),i[e]},n=function(e,t){t=a(e).indexOf(t);return!(t<=-1)&&(i[e]=i[e].slice(),i[e].splice(t,1),!0)},l={prefixed:!0},t=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror","fullscreen"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror","-webkit-full-screen"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror","-moz-full-screen"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError","-ms-fullscreen"]],r=t[0],s=0;s @@ -21,8 +17,9 @@ for(i=97;i<123;i++)codes[String.fromCharCode(i)]=i-32;for(var i=48;i<58;i++)code * Available under the MIT license * */ -var parseHeaders=function parseHeaders(headers){var result={};return headers?(headers.trim().split("\n").forEach((function(row){var index=row.indexOf(":"),key=row.slice(0,index).trim().toLowerCase(),value=row.slice(index+1).trim();void 0===result[key]?result[key]=value:Array.isArray(result[key])?result[key].push(value):result[key]=[result[key],value]})),result):result},lib=createXHR,default_1=createXHR;function forEachArray(array,iterator){for(var i=0;i0&&(timeoutTimer=setTimeout((function(){if(!aborted){aborted=!0,xhr.abort("timeout");var e=new Error("XMLHttpRequest timeout");e.code="ETIMEDOUT",errorFunc(e)}}),options.timeout)),xhr.setRequestHeader)for(key in headers)headers.hasOwnProperty(key)&&xhr.setRequestHeader(key,headers[key]);else if(options.headers&&!isEmpty(options.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in options&&(xhr.responseType=options.responseType),"beforeSend"in options&&"function"==typeof options.beforeSend&&options.beforeSend(xhr),xhr.send(body||null),xhr}function getXml(xhr){try{if("document"===xhr.responseType)return xhr.responseXML;var firefoxBugTakenEffect=xhr.responseXML&&"parsererror"===xhr.responseXML.documentElement.nodeName;if(""===xhr.responseType&&!firefoxBugTakenEffect)return xhr.responseXML}catch(e){}return null}function noop$1(){}createXHR.XMLHttpRequest=window_1.XMLHttpRequest||noop$1,createXHR.XDomainRequest="withCredentials"in new createXHR.XMLHttpRequest?createXHR.XMLHttpRequest:window_1.XDomainRequest,forEachArray(["get","put","post","patch","head","delete"],(function(method){createXHR["delete"===method?"del":method]=function(uri,options,callback){return(options=initParams(uri,options,callback)).method=method.toUpperCase(),_createXHR(options)}})),lib.default=default_1;var parseCues=function parseCues(srcContent,track){var parser=new window.WebVTT.Parser(window,window.vttjs,window.WebVTT.StringDecoder()),errors=[];parser.oncue=function(cue){track.addCue(cue)},parser.onparsingerror=function(error){errors.push(error)},parser.onflush=function(){track.trigger({type:"loadeddata",target:track})},parser.parse(srcContent),errors.length>0&&(window.console&&window.console.groupCollapsed&&window.console.groupCollapsed("Text Track parsing errors for "+track.src),errors.forEach((function(error){return log$1.error(error)})),window.console&&window.console.groupEnd&&window.console.groupEnd()),parser.flush()},loadTrack=function loadTrack(src,track){var opts={uri:src},crossOrigin=isCrossOrigin(src);crossOrigin&&(opts.cors=crossOrigin);var withCredentials="use-credentials"===track.tech_.crossOrigin();withCredentials&&(opts.withCredentials=withCredentials),lib(opts,bind(this,(function(err,response,responseBody){if(err)return log$1.error(err,response);track.loaded_=!0,"function"!=typeof window.WebVTT?track.tech_&&track.tech_.any(["vttjsloaded","vttjserror"],(function(event){if("vttjserror"!==event.type)return parseCues(responseBody,track);log$1.error("vttjs failed to load, stopping trying to process "+track.src)})):parseCues(responseBody,track)})))},TextTrack=function(_Track){function TextTrack(options){var _this;if(void 0===options&&(options={}),!options.tech)throw new Error("A tech was not provided.");var settings=mergeOptions$3(options,{kind:TextTrackKind[options.kind]||"subtitles",language:options.language||options.srclang||""}),mode=TextTrackMode[settings.mode]||"disabled",default_=settings.default;"metadata"!==settings.kind&&"chapters"!==settings.kind||(mode="hidden"),(_this=_Track.call(this,settings)||this).tech_=settings.tech,_this.cues_=[],_this.activeCues_=[],_this.preload_=!1!==_this.tech_.preloadTextTracks;var cues=new TextTrackCueList(_this.cues_),activeCues=new TextTrackCueList(_this.activeCues_),changed=!1;_this.timeupdateHandler=bind(assertThisInitialized(_this),(function(){this.tech_.isDisposed()||(this.tech_.isReady_?(this.activeCues=this.activeCues,changed&&(this.trigger("cuechange"),changed=!1),this.rvf_=this.tech_.requestVideoFrameCallback(this.timeupdateHandler)):this.rvf_=this.tech_.requestVideoFrameCallback(this.timeupdateHandler))}));var disposeHandler=function disposeHandler(){_this.stopTracking()};return _this.tech_.one("dispose",disposeHandler),"disabled"!==mode&&_this.startTracking(),Object.defineProperties(assertThisInitialized(_this),{default:{get:function get(){return default_},set:function set(){}},mode:{get:function get(){return mode},set:function set(newMode){TextTrackMode[newMode]&&mode!==newMode&&(mode=newMode,this.preload_||"disabled"===mode||0!==this.cues.length||loadTrack(this.src,this),this.stopTracking(),"disabled"!==mode&&this.startTracking(),this.trigger("modechange"))}},cues:{get:function get(){return this.loaded_?cues:null},set:function set(){}},activeCues:{get:function get(){if(!this.loaded_)return null;if(0===this.cues.length)return activeCues;for(var ct=this.tech_.currentTime(),active=[],i=0,l=this.cues.length;i=ct?active.push(cue):cue.startTime===cue.endTime&&cue.startTime<=ct&&cue.startTime+.5>=ct&&active.push(cue)}if(changed=!1,active.length!==this.activeCues_.length)changed=!0;else for(var _i=0;_i59?computeSeconds(m[1],m[2],0,m[4]):computeSeconds(0,m[1],m[2],m[4]):null}function Settings(){this.values=_objCreate(null)}function parseOptions(input,callback,keyValueDelim,groupDelim){var groups=groupDelim?input.split(groupDelim):[input];for(var i in groups)if("string"==typeof groups[i]){var kv=groups[i].split(keyValueDelim),k,v;if(2===kv.length)callback(kv[0],kv[1])}}function parseCue(input,cue,regionList){var oInput=input;function consumeTimeStamp(){var ts=parseTimeStamp(input);if(null===ts)throw new ParsingError(ParsingError.Errors.BadTimeStamp,"Malformed timestamp: "+oInput);return input=input.replace(/^[^\sa-zA-Z-]+/,""),ts}function consumeCueSettings(input,cue){var settings=new Settings;parseOptions(input,(function(k,v){switch(k){case"region":for(var i=regionList.length-1;i>=0;i--)if(regionList[i].id===v){settings.set(k,regionList[i].region);break}break;case"vertical":settings.alt(k,v,["rl","lr"]);break;case"line":var vals=v.split(","),vals0=vals[0];settings.integer(k,vals0),settings.percent(k,vals0)&&settings.set("snapToLines",!1),settings.alt(k,vals0,["auto"]),2===vals.length&&settings.alt("lineAlign",vals[1],["start","center","end"]);break;case"position":vals=v.split(","),settings.percent(k,vals[0]),2===vals.length&&settings.alt("positionAlign",vals[1],["start","center","end"]);break;case"size":settings.percent(k,v);break;case"align":settings.alt(k,v,["start","center","end","left","right"])}}),/:/,/\s/),cue.region=settings.get("region",null),cue.vertical=settings.get("vertical","");try{cue.line=settings.get("line","auto")}catch(e){}cue.lineAlign=settings.get("lineAlign","start"),cue.snapToLines=settings.get("snapToLines",!0),cue.size=settings.get("size",100);try{cue.align=settings.get("align","center")}catch(e){cue.align=settings.get("align","middle")}try{cue.position=settings.get("position","auto")}catch(e){cue.position=settings.get("position",{start:0,left:0,center:50,middle:50,end:100,right:100},cue.align)}cue.positionAlign=settings.get("positionAlign",{start:"start",left:"start",center:"center",middle:"center",end:"end",right:"end"},cue.align)}function skipWhitespace(){input=input.replace(/^\s+/,"")}if(skipWhitespace(),cue.startTime=consumeTimeStamp(),skipWhitespace(),"--\x3e"!==input.substr(0,3))throw new ParsingError(ParsingError.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '--\x3e'): "+oInput);input=input.substr(3),skipWhitespace(),cue.endTime=consumeTimeStamp(),skipWhitespace(),consumeCueSettings(input,cue)}ParsingError.prototype=_objCreate(Error.prototype),ParsingError.prototype.constructor=ParsingError,ParsingError.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}},Settings.prototype={set:function set(k,v){this.get(k)||""===v||(this.values[k]=v)},get:function get(k,dflt,defaultKey){return defaultKey?this.has(k)?this.values[k]:dflt[defaultKey]:this.has(k)?this.values[k]:dflt},has:function has(k){return k in this.values},alt:function alt(k,v,a){for(var n=0;n=0&&v<=100)&&(this.set(k,v),!0)}};var TEXTAREA_ELEMENT=document_1.createElement&&document_1.createElement("textarea"),TAG_NAME={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"},DEFAULT_COLOR_CLASS={white:"rgba(255,255,255,1)",lime:"rgba(0,255,0,1)",cyan:"rgba(0,255,255,1)",red:"rgba(255,0,0,1)",yellow:"rgba(255,255,0,1)",magenta:"rgba(255,0,255,1)",blue:"rgba(0,0,255,1)",black:"rgba(0,0,0,1)"},TAG_ANNOTATION={v:"title",lang:"lang"},NEEDS_PARENT={rt:"ruby"};function parseContent(window,input){function nextToken(){if(!input)return null;function consume(result){return input=input.substr(result.length),result}var m=input.match(/^([^<]*)(<[^>]*>?)?/);return consume(m[1]?m[1]:m[2])}function unescape(s){return TEXTAREA_ELEMENT.innerHTML=s,s=TEXTAREA_ELEMENT.textContent,TEXTAREA_ELEMENT.textContent="",s}function shouldAdd(current,element){return!NEEDS_PARENT[element.localName]||NEEDS_PARENT[element.localName]===current.localName}function createElement(type,annotation){var tagName=TAG_NAME[type];if(!tagName)return null;var element=window.document.createElement(tagName),name=TAG_ANNOTATION[type];return name&&annotation&&(element[name]=annotation.trim()),element}for(var rootDiv=window.document.createElement("div"),current=rootDiv,t,tagStack=[];null!==(t=nextToken());)if("<"!==t[0])current.appendChild(window.document.createTextNode(unescape(t)));else{if("/"===t[1]){tagStack.length&&tagStack[tagStack.length-1]===t.substr(2).replace(">","")&&(tagStack.pop(),current=current.parentNode);continue}var ts=parseTimeStamp(t.substr(1,t.length-2)),node;if(ts){node=window.document.createProcessingInstruction("timestamp",ts),current.appendChild(node);continue}var m=t.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!m)continue;if(!(node=createElement(m[1],m[3])))continue;if(!shouldAdd(current,node))continue;if(m[2]){var classes=m[2].split(".");classes.forEach((function(cl){var bgColor=/^bg_/.test(cl),colorName=bgColor?cl.slice(3):cl;if(DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)){var propName=bgColor?"background-color":"color",propValue=DEFAULT_COLOR_CLASS[colorName];node.style[propName]=propValue}})),node.className=classes.join(" ")}tagStack.push(m[1]),current.appendChild(node),current=node}return rootDiv}var strongRTLRanges=[[1470,1470],[1472,1472],[1475,1475],[1478,1478],[1488,1514],[1520,1524],[1544,1544],[1547,1547],[1549,1549],[1563,1563],[1566,1610],[1645,1647],[1649,1749],[1765,1766],[1774,1775],[1786,1805],[1807,1808],[1810,1839],[1869,1957],[1969,1969],[1984,2026],[2036,2037],[2042,2042],[2048,2069],[2074,2074],[2084,2084],[2088,2088],[2096,2110],[2112,2136],[2142,2142],[2208,2208],[2210,2220],[8207,8207],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64449],[64467,64829],[64848,64911],[64914,64967],[65008,65020],[65136,65140],[65142,65276],[67584,67589],[67592,67592],[67594,67637],[67639,67640],[67644,67644],[67647,67669],[67671,67679],[67840,67867],[67872,67897],[67903,67903],[67968,68023],[68030,68031],[68096,68096],[68112,68115],[68117,68119],[68121,68147],[68160,68167],[68176,68184],[68192,68223],[68352,68405],[68416,68437],[68440,68466],[68472,68479],[68608,68680],[126464,126467],[126469,126495],[126497,126498],[126500,126500],[126503,126503],[126505,126514],[126516,126519],[126521,126521],[126523,126523],[126530,126530],[126535,126535],[126537,126537],[126539,126539],[126541,126543],[126545,126546],[126548,126548],[126551,126551],[126553,126553],[126555,126555],[126557,126557],[126559,126559],[126561,126562],[126564,126564],[126567,126570],[126572,126578],[126580,126583],[126585,126588],[126590,126590],[126592,126601],[126603,126619],[126625,126627],[126629,126633],[126635,126651],[1114109,1114109]];function isStrongRTLChar(charCode){for(var i=0;i=currentRange[0]&&charCode<=currentRange[1])return!0}return!1}function determineBidi(cueDiv){var nodeStack=[],text="",charCode;if(!cueDiv||!cueDiv.childNodes)return"ltr";function pushNodes(nodeStack,node){for(var i=node.childNodes.length-1;i>=0;i--)nodeStack.push(node.childNodes[i])}function nextTextNode(nodeStack){if(!nodeStack||!nodeStack.length)return null;var node=nodeStack.pop(),text=node.textContent||node.innerText;if(text){var m=text.match(/^.*(\n|\r)/);return m?(nodeStack.length=0,m[0]):text}return"ruby"===node.tagName?nextTextNode(nodeStack):node.childNodes?(pushNodes(nodeStack,node),nextTextNode(nodeStack)):void 0}for(pushNodes(nodeStack,cueDiv);text=nextTextNode(nodeStack);)for(var i=0;i=0&&cue.line<=100))return cue.line;if(!cue.track||!cue.track.textTrackList||!cue.track.textTrackList.mediaElement)return-1;for(var track=cue.track,trackList=track.textTrackList,count=0,i=0;ip&&(bestPosition=new BoxPosition(b),percentage=p),b=new BoxPosition(specifiedPosition)}return bestPosition||specifiedPosition}var boxPosition=new BoxPosition(styleBox),cue=styleBox.cue,linePos=computeLinePos(cue),axis=[];if(cue.snapToLines){var size;switch(cue.vertical){case"":axis=["+y","-y"],size="height";break;case"rl":axis=["+x","-x"],size="width";break;case"lr":axis=["-x","+x"],size="width"}var step=boxPosition.lineHeight,position=step*Math.round(linePos),maxPosition=containerBox[size]+step,initialAxis=axis[0];Math.abs(position)>maxPosition&&(position=position<0?-1:1,position*=Math.ceil(maxPosition/step)*step),linePos<0&&(position+=""===cue.vertical?containerBox.height:containerBox.width,axis=axis.reverse()),boxPosition.move(initialAxis,position)}else{var calculatedPercentage=boxPosition.lineHeight/containerBox.height*100;switch(cue.lineAlign){case"center":linePos-=calculatedPercentage/2;break;case"end":linePos-=calculatedPercentage}switch(cue.vertical){case"":styleBox.applyStyles({top:styleBox.formatStyle(linePos,"%")});break;case"rl":styleBox.applyStyles({left:styleBox.formatStyle(linePos,"%")});break;case"lr":styleBox.applyStyles({right:styleBox.formatStyle(linePos,"%")})}axis=["+y","-x","+x","-y"],boxPosition=new BoxPosition(styleBox)}var bestPosition=findBestPosition(boxPosition,axis);styleBox.move(bestPosition.toCSSCompatValues(containerBox))}function WebVTT$1(){}StyleBox.prototype.applyStyles=function(styles,div){for(var prop in div=div||this.div,styles)styles.hasOwnProperty(prop)&&(div.style[prop]=styles[prop])},StyleBox.prototype.formatStyle=function(val,unit){return 0===val?0:val+unit},CueStyleBox.prototype=_objCreate(StyleBox.prototype),CueStyleBox.prototype.constructor=CueStyleBox,BoxPosition.prototype.move=function(axis,toMove){switch(toMove=void 0!==toMove?toMove:this.lineHeight,axis){case"+x":this.left+=toMove,this.right+=toMove;break;case"-x":this.left-=toMove,this.right-=toMove;break;case"+y":this.top+=toMove,this.bottom+=toMove;break;case"-y":this.top-=toMove,this.bottom-=toMove}},BoxPosition.prototype.overlaps=function(b2){return this.leftb2.left&&this.topb2.top},BoxPosition.prototype.overlapsAny=function(boxes){for(var i=0;i=container.top&&this.bottom<=container.bottom&&this.left>=container.left&&this.right<=container.right},BoxPosition.prototype.overlapsOppositeAxis=function(container,axis){switch(axis){case"+x":return this.leftcontainer.right;case"+y":return this.topcontainer.bottom}},BoxPosition.prototype.intersectPercentage=function(b2){var x,y,intersectArea;return Math.max(0,Math.min(this.right,b2.right)-Math.max(this.left,b2.left))*Math.max(0,Math.min(this.bottom,b2.bottom)-Math.max(this.top,b2.top))/(this.height*this.width)},BoxPosition.prototype.toCSSCompatValues=function(reference){return{top:this.top-reference.top,bottom:reference.bottom-this.bottom,left:this.left-reference.left,right:reference.right-this.right,height:this.height,width:this.width}},BoxPosition.getSimpleBoxPosition=function(obj){var height=obj.div?obj.div.offsetHeight:obj.tagName?obj.offsetHeight:0,width=obj.div?obj.div.offsetWidth:obj.tagName?obj.offsetWidth:0,top=obj.div?obj.div.offsetTop:obj.tagName?obj.offsetTop:0,ret;return{left:(obj=obj.div?obj.div.getBoundingClientRect():obj.tagName?obj.getBoundingClientRect():obj).left,right:obj.right,top:obj.top||top,height:obj.height||height,bottom:obj.bottom||top+(obj.height||height),width:obj.width||width}},WebVTT$1.StringDecoder=function(){return{decode:function decode(data){if(!data)return"";if("string"!=typeof data)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(data))}}},WebVTT$1.convertCueToDOMTree=function(window,cuetext){return window&&cuetext?parseContent(window,cuetext):null};var FONT_SIZE_PERCENT=.05,FONT_STYLE="sans-serif",CUE_BACKGROUND_PADDING="1.5%";WebVTT$1.processCues=function(window,cues,overlay){if(!window||!cues||!overlay)return null;for(;overlay.firstChild;)overlay.removeChild(overlay.firstChild);var paddedOverlay=window.document.createElement("div");function shouldCompute(cues){for(var i=0;i100)throw new Error("Position must be between 0 and 100.");_position=value,this.hasBeenReset=!0}},positionAlign:{enumerable:!0,get:function get(){return _positionAlign},set:function set(value){var setting=findAlignSetting(value);setting?(_positionAlign=setting,this.hasBeenReset=!0):console.warn("positionAlign: an invalid or illegal string was specified.")}},size:{enumerable:!0,get:function get(){return _size},set:function set(value){if(value<0||value>100)throw new Error("Size must be between 0 and 100.");_size=value,this.hasBeenReset=!0}},align:{enumerable:!0,get:function get(){return _align},set:function set(value){var setting=findAlignSetting(value);if(!setting)throw new SyntaxError("align: an invalid or illegal alignment string was specified.");_align=setting,this.hasBeenReset=!0}}}),this.displayState=void 0}VTTCue.prototype.getCueAsHTML=function(){return WebVTT.convertCueToDOMTree(window,this.text)};var vttcue=VTTCue,scrollSetting={"":!0,up:!0};function findScrollSetting(value){return"string"==typeof value&&(!!scrollSetting[value.toLowerCase()]&&value.toLowerCase());var scroll}function isValidPercentValue(value){return"number"==typeof value&&value>=0&&value<=100}function VTTRegion(){var _width=100,_lines=3,_regionAnchorX=0,_regionAnchorY=100,_viewportAnchorX=0,_viewportAnchorY=100,_scroll="";Object.defineProperties(this,{width:{enumerable:!0,get:function get(){return _width},set:function set(value){if(!isValidPercentValue(value))throw new Error("Width must be between 0 and 100.");_width=value}},lines:{enumerable:!0,get:function get(){return _lines},set:function set(value){if("number"!=typeof value)throw new TypeError("Lines must be set to a number.");_lines=value}},regionAnchorY:{enumerable:!0,get:function get(){return _regionAnchorY},set:function set(value){if(!isValidPercentValue(value))throw new Error("RegionAnchorX must be between 0 and 100.");_regionAnchorY=value}},regionAnchorX:{enumerable:!0,get:function get(){return _regionAnchorX},set:function set(value){if(!isValidPercentValue(value))throw new Error("RegionAnchorY must be between 0 and 100.");_regionAnchorX=value}},viewportAnchorY:{enumerable:!0,get:function get(){return _viewportAnchorY},set:function set(value){if(!isValidPercentValue(value))throw new Error("ViewportAnchorY must be between 0 and 100.");_viewportAnchorY=value}},viewportAnchorX:{enumerable:!0,get:function get(){return _viewportAnchorX},set:function set(value){if(!isValidPercentValue(value))throw new Error("ViewportAnchorX must be between 0 and 100.");_viewportAnchorX=value}},scroll:{enumerable:!0,get:function get(){return _scroll},set:function set(value){var setting=findScrollSetting(value);!1===setting?console.warn("Scroll: an invalid or illegal string was specified."):_scroll=setting}}})}var vttregion=VTTRegion,browserIndex=createCommonjsModule((function(module){var vttjs=module.exports={WebVTT:vtt,VTTCue:vttcue,VTTRegion:vttregion};window_1.vttjs=vttjs,window_1.WebVTT=vttjs.WebVTT;var cueShim=vttjs.VTTCue,regionShim=vttjs.VTTRegion,nativeVTTCue=window_1.VTTCue,nativeVTTRegion=window_1.VTTRegion;vttjs.shim=function(){window_1.VTTCue=cueShim,window_1.VTTRegion=regionShim},vttjs.restore=function(){window_1.VTTCue=nativeVTTCue,window_1.VTTRegion=nativeVTTRegion},window_1.VTTCue||vttjs.shim()}));function createTrackHelper(self,kind,label,language,options){void 0===options&&(options={});var tracks=self.textTracks();options.kind=kind,label&&(options.label=label),language&&(options.language=language),options.tech=self;var track=new ALL.text.TrackClass(options);return tracks.addTrack(track),track}browserIndex.WebVTT,browserIndex.VTTCue,browserIndex.VTTRegion;var Tech=function(_Component){function Tech(options,ready){var _this;return void 0===options&&(options={}),void 0===ready&&(ready=function ready(){}),options.reportTouchActivity=!1,(_this=_Component.call(this,null,options,ready)||this).onDurationChange_=function(e){return _this.onDurationChange(e)},_this.trackProgress_=function(e){return _this.trackProgress(e)},_this.trackCurrentTime_=function(e){return _this.trackCurrentTime(e)},_this.stopTrackingCurrentTime_=function(e){return _this.stopTrackingCurrentTime(e)},_this.disposeSourceHandler_=function(e){return _this.disposeSourceHandler(e)},_this.queuedHanders_=new Set,_this.hasStarted_=!1,_this.on("playing",(function(){this.hasStarted_=!0})),_this.on("loadstart",(function(){this.hasStarted_=!1})),ALL.names.forEach((function(name){var props=ALL[name];options&&options[props.getterName]&&(_this[props.privateName]=options[props.getterName])})),_this.featuresProgressEvents||_this.manualProgressOn(),_this.featuresTimeupdateEvents||_this.manualTimeUpdatesOn(),["Text","Audio","Video"].forEach((function(track){!1===options["native"+track+"Tracks"]&&(_this["featuresNative"+track+"Tracks"]=!1)})),!1===options.nativeCaptions||!1===options.nativeTextTracks?_this.featuresNativeTextTracks=!1:!0!==options.nativeCaptions&&!0!==options.nativeTextTracks||(_this.featuresNativeTextTracks=!0),_this.featuresNativeTextTracks||_this.emulateTextTracks(),_this.preloadTextTracks=!1!==options.preloadTextTracks,_this.autoRemoteTextTracks_=new ALL.text.ListClass,_this.initTrackListeners(),options.nativeControlsForTouch||_this.emitTapEvents(),_this.constructor&&(_this.name_=_this.constructor.name||"Unknown Tech"),_this}inheritsLoose(Tech,_Component);var _proto=Tech.prototype;return _proto.triggerSourceset=function triggerSourceset(src){var _this2=this;this.isReady_||this.one("ready",(function(){return _this2.setTimeout((function(){return _this2.triggerSourceset(src)}),1)})),this.trigger({src:src,type:"sourceset"})},_proto.manualProgressOn=function manualProgressOn(){this.on("durationchange",this.onDurationChange_),this.manualProgress=!0,this.one("ready",this.trackProgress_)},_proto.manualProgressOff=function manualProgressOff(){this.manualProgress=!1,this.stopTrackingProgress(),this.off("durationchange",this.onDurationChange_)},_proto.trackProgress=function trackProgress(event){this.stopTrackingProgress(),this.progressInterval=this.setInterval(bind(this,(function(){var numBufferedPercent=this.bufferedPercent();this.bufferedPercent_!==numBufferedPercent&&this.trigger("progress"),this.bufferedPercent_=numBufferedPercent,1===numBufferedPercent&&this.stopTrackingProgress()})),500)},_proto.onDurationChange=function onDurationChange(event){this.duration_=this.duration()},_proto.buffered=function buffered(){return createTimeRanges(0,0)},_proto.bufferedPercent=function bufferedPercent$1(){return bufferedPercent(this.buffered(),this.duration_)},_proto.stopTrackingProgress=function stopTrackingProgress(){this.clearInterval(this.progressInterval)},_proto.manualTimeUpdatesOn=function manualTimeUpdatesOn(){this.manualTimeUpdates=!0,this.on("play",this.trackCurrentTime_),this.on("pause",this.stopTrackingCurrentTime_)},_proto.manualTimeUpdatesOff=function manualTimeUpdatesOff(){this.manualTimeUpdates=!1,this.stopTrackingCurrentTime(),this.off("play",this.trackCurrentTime_),this.off("pause",this.stopTrackingCurrentTime_)},_proto.trackCurrentTime=function trackCurrentTime(){this.currentTimeInterval&&this.stopTrackingCurrentTime(),this.currentTimeInterval=this.setInterval((function(){this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})}),250)},_proto.stopTrackingCurrentTime=function stopTrackingCurrentTime(){this.clearInterval(this.currentTimeInterval),this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},_proto.dispose=function dispose(){this.clearTracks(NORMAL.names),this.manualProgress&&this.manualProgressOff(),this.manualTimeUpdates&&this.manualTimeUpdatesOff(),_Component.prototype.dispose.call(this)},_proto.clearTracks=function clearTracks(types){var _this3=this;(types=[].concat(types)).forEach((function(type){for(var list=_this3[type+"Tracks"]()||[],i=list.length;i--;){var track=list[i];"text"===type&&_this3.removeRemoteTextTrack(track),list.removeTrack(track)}}))},_proto.cleanupAutoTextTracks=function cleanupAutoTextTracks(){for(var list=this.autoRemoteTextTracks_||[],i=list.length;i--;){var track=list[i];this.removeRemoteTextTrack(track)}},_proto.reset=function reset(){},_proto.crossOrigin=function crossOrigin(){},_proto.setCrossOrigin=function setCrossOrigin(){},_proto.error=function error(err){return void 0!==err&&(this.error_=new MediaError(err),this.trigger("error")),this.error_},_proto.played=function played(){return this.hasStarted_?createTimeRanges(0,0):createTimeRanges()},_proto.play=function play(){},_proto.setScrubbing=function setScrubbing(){},_proto.scrubbing=function scrubbing(){},_proto.setCurrentTime=function setCurrentTime(){this.manualTimeUpdates&&this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},_proto.initTrackListeners=function initTrackListeners(){var _this4=this;NORMAL.names.forEach((function(name){var props=NORMAL[name],trackListChanges=function trackListChanges(){_this4.trigger(name+"trackchange")},tracks=_this4[props.getterName]();tracks.addEventListener("removetrack",trackListChanges),tracks.addEventListener("addtrack",trackListChanges),_this4.on("dispose",(function(){tracks.removeEventListener("removetrack",trackListChanges),tracks.removeEventListener("addtrack",trackListChanges)}))}))},_proto.addWebVttScript_=function addWebVttScript_(){var _this5=this;if(!window.WebVTT)if(document.body.contains(this.el())){if(!this.options_["vtt.js"]&&isPlain(browserIndex)&&Object.keys(browserIndex).length>0)return void this.trigger("vttjsloaded");var script=document.createElement("script");script.src=this.options_["vtt.js"]||"https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js",script.onload=function(){_this5.trigger("vttjsloaded")},script.onerror=function(){_this5.trigger("vttjserror")},this.on("dispose",(function(){script.onload=null,script.onerror=null})),window.WebVTT=!0,this.el().parentNode.appendChild(script)}else this.ready(this.addWebVttScript_)},_proto.emulateTextTracks=function emulateTextTracks(){var _this6=this,tracks=this.textTracks(),remoteTracks=this.remoteTextTracks(),handleAddTrack=function handleAddTrack(e){return tracks.addTrack(e.track)},handleRemoveTrack=function handleRemoveTrack(e){return tracks.removeTrack(e.track)};remoteTracks.on("addtrack",handleAddTrack),remoteTracks.on("removetrack",handleRemoveTrack),this.addWebVttScript_();var updateDisplay=function updateDisplay(){return _this6.trigger("texttrackchange")},textTracksChanges=function textTracksChanges(){updateDisplay();for(var i=0;i=0;i--){var mw=mws[i];mw[method]&&mw[method](terminated,value)}}function clearCacheForPlayer(player){middlewareInstances[player.id()]=null}function getOrCreateFactory(player,mwFactory){var mws=middlewareInstances[player.id()],mw=null;if(null==mws)return mw=mwFactory(player),middlewareInstances[player.id()]=[[mwFactory,mw]],mw;for(var i=0;i0;!this.player_.tech(!0)||(IE_VERSION||IS_EDGE)&&sourceIsEncrypted||this.player_.tech(!0).focus(),this.player_.paused()?silencePromise(this.player_.play()):this.player_.pause()}},PosterImage}(ClickableComponent);Component$1.registerComponent("PosterImage",PosterImage);var darkGray="#222",lightGray="#ccc",fontMap={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'};function constructColor(color,opacity){var hex;if(4===color.length)hex=color[1]+color[1]+color[2]+color[2]+color[3]+color[3];else{if(7!==color.length)throw new Error("Invalid color code provided, "+color+"; must be formatted as e.g. #f0e or #f604e2.");hex=color.slice(1)}return"rgba("+parseInt(hex.slice(0,2),16)+","+parseInt(hex.slice(2,4),16)+","+parseInt(hex.slice(4,6),16)+","+opacity+")"}function tryUpdateStyle(el,style,rule){try{el.style[style]=rule}catch(e){return}}var TextTrackDisplay=function(_Component){function TextTrackDisplay(player,options,ready){var _this;_this=_Component.call(this,player,options,ready)||this;var updateDisplayHandler=function updateDisplayHandler(e){return _this.updateDisplay(e)};return player.on("loadstart",(function(e){return _this.toggleDisplay(e)})),player.on("texttrackchange",updateDisplayHandler),player.on("loadedmetadata",(function(e){return _this.preselectTrack(e)})),player.ready(bind(assertThisInitialized(_this),(function(){if(player.tech_&&player.tech_.featuresNativeTextTracks)this.hide();else{player.on("fullscreenchange",updateDisplayHandler),player.on("playerresize",updateDisplayHandler),window.addEventListener("orientationchange",updateDisplayHandler),player.on("dispose",(function(){return window.removeEventListener("orientationchange",updateDisplayHandler)}));for(var tracks=this.options_.playerOptions.tracks||[],i=0;i0;return silencePromise(playPromise),void(!this.player_.tech(!0)||(IE_VERSION||IS_EDGE)&&sourceIsEncrypted||this.player_.tech(!0).focus())}var cb=this.player_.getChild("controlBar"),playToggle=cb&&cb.getChild("playToggle");if(playToggle){var playFocus=function playFocus(){return playToggle.focus()};isPromise(playPromise)?playPromise.then(playFocus,(function(){})):this.setTimeout(playFocus,1)}else this.player_.tech(!0).focus()},_proto.handleKeyDown=function handleKeyDown(event){this.mouseused_=!1,_Button.prototype.handleKeyDown.call(this,event)},_proto.handleMouseDown=function handleMouseDown(event){this.mouseused_=!0},BigPlayButton}(Button);BigPlayButton.prototype.controlText_="Play Video",Component$1.registerComponent("BigPlayButton",BigPlayButton);var CloseButton=function(_Button){function CloseButton(player,options){var _this;return(_this=_Button.call(this,player,options)||this).controlText(options&&options.controlText||_this.localize("Close")),_this}inheritsLoose(CloseButton,_Button);var _proto=CloseButton.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-close-button "+_Button.prototype.buildCSSClass.call(this)},_proto.handleClick=function handleClick(event){this.trigger({type:"close",bubbles:!1})},_proto.handleKeyDown=function handleKeyDown(event){keycode.isEventKey(event,"Esc")?(event.preventDefault(),event.stopPropagation(),this.trigger("click")):_Button.prototype.handleKeyDown.call(this,event)},CloseButton}(Button);Component$1.registerComponent("CloseButton",CloseButton);var PlayToggle=function(_Button){function PlayToggle(player,options){var _this;return void 0===options&&(options={}),_this=_Button.call(this,player,options)||this,options.replay=void 0===options.replay||options.replay,_this.on(player,"play",(function(e){return _this.handlePlay(e)})),_this.on(player,"pause",(function(e){return _this.handlePause(e)})),options.replay&&_this.on(player,"ended",(function(e){return _this.handleEnded(e)})),_this}inheritsLoose(PlayToggle,_Button);var _proto=PlayToggle.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-play-control "+_Button.prototype.buildCSSClass.call(this)},_proto.handleClick=function handleClick(event){this.player_.paused()?silencePromise(this.player_.play()):this.player_.pause()},_proto.handleSeeked=function handleSeeked(event){this.removeClass("vjs-ended"),this.player_.paused()?this.handlePause(event):this.handlePlay(event)},_proto.handlePlay=function handlePlay(event){this.removeClass("vjs-ended"),this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.controlText("Pause")},_proto.handlePause=function handlePause(event){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.controlText("Play")},_proto.handleEnded=function handleEnded(event){var _this2=this;this.removeClass("vjs-playing"),this.addClass("vjs-ended"),this.controlText("Replay"),this.one(this.player_,"seeked",(function(e){return _this2.handleSeeked(e)}))},PlayToggle}(Button);PlayToggle.prototype.controlText_="Play",Component$1.registerComponent("PlayToggle",PlayToggle);var defaultImplementation=function defaultImplementation(seconds,guide){seconds=seconds<0?0:seconds;var s=Math.floor(seconds%60),m=Math.floor(seconds/60%60),h=Math.floor(seconds/3600),gm=Math.floor(guide/60%60),gh=Math.floor(guide/3600);return(isNaN(seconds)||seconds===1/0)&&(h=m=s="-"),(h=h>0||gh>0?h+":":"")+(m=((h||gm>=10)&&m<10?"0"+m:m)+":")+(s=s<10?"0"+s:s)},implementation=defaultImplementation;function setFormatTime(customImplementation){implementation=customImplementation}function resetFormatTime(){implementation=defaultImplementation}function formatTime(seconds,guide){return void 0===guide&&(guide=seconds),implementation(seconds,guide)}var TimeDisplay=function(_Component){function TimeDisplay(player,options){var _this;return(_this=_Component.call(this,player,options)||this).on(player,["timeupdate","ended"],(function(e){return _this.updateContent(e)})),_this.updateTextNode_(),_this}inheritsLoose(TimeDisplay,_Component);var _proto=TimeDisplay.prototype;return _proto.createEl=function createEl$1(){var className=this.buildCSSClass(),el=_Component.prototype.createEl.call(this,"div",{className:className+" vjs-time-control vjs-control"}),span=createEl("span",{className:"vjs-control-text",textContent:this.localize(this.labelText_)+" "},{role:"presentation"});return el.appendChild(span),this.contentEl_=createEl("span",{className:className+"-display"},{"aria-live":"off",role:"presentation"}),el.appendChild(this.contentEl_),el},_proto.dispose=function dispose(){this.contentEl_=null,this.textNode_=null,_Component.prototype.dispose.call(this)},_proto.updateTextNode_=function updateTextNode_(time){var _this2=this;void 0===time&&(time=0),time=formatTime(time),this.formattedTime_!==time&&(this.formattedTime_=time,this.requestNamedAnimationFrame("TimeDisplay#updateTextNode_",(function(){if(_this2.contentEl_){var oldNode=_this2.textNode_;oldNode&&_this2.contentEl_.firstChild!==oldNode&&(oldNode=null,log$1.warn("TimeDisplay#updateTextnode_: Prevented replacement of text node element since it was no longer a child of this node. Appending a new node instead.")),_this2.textNode_=document.createTextNode(_this2.formattedTime_),_this2.textNode_&&(oldNode?_this2.contentEl_.replaceChild(_this2.textNode_,oldNode):_this2.contentEl_.appendChild(_this2.textNode_))}})))},_proto.updateContent=function updateContent(event){},TimeDisplay}(Component$1);TimeDisplay.prototype.labelText_="Time",TimeDisplay.prototype.controlText_="Time",Component$1.registerComponent("TimeDisplay",TimeDisplay);var CurrentTimeDisplay=function(_TimeDisplay){function CurrentTimeDisplay(){return _TimeDisplay.apply(this,arguments)||this}inheritsLoose(CurrentTimeDisplay,_TimeDisplay);var _proto=CurrentTimeDisplay.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-current-time"},_proto.updateContent=function updateContent(event){var time;time=this.player_.ended()?this.player_.duration():this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime(),this.updateTextNode_(time)},CurrentTimeDisplay}(TimeDisplay);CurrentTimeDisplay.prototype.labelText_="Current Time",CurrentTimeDisplay.prototype.controlText_="Current Time",Component$1.registerComponent("CurrentTimeDisplay",CurrentTimeDisplay);var DurationDisplay=function(_TimeDisplay){function DurationDisplay(player,options){var _this,updateContent=function updateContent(e){return _this.updateContent(e)};return(_this=_TimeDisplay.call(this,player,options)||this).on(player,"durationchange",updateContent),_this.on(player,"loadstart",updateContent),_this.on(player,"loadedmetadata",updateContent),_this}inheritsLoose(DurationDisplay,_TimeDisplay);var _proto=DurationDisplay.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-duration"},_proto.updateContent=function updateContent(event){var duration=this.player_.duration();this.updateTextNode_(duration)},DurationDisplay}(TimeDisplay);DurationDisplay.prototype.labelText_="Duration",DurationDisplay.prototype.controlText_="Duration",Component$1.registerComponent("DurationDisplay",DurationDisplay);var TimeDivider=function(_Component){function TimeDivider(){return _Component.apply(this,arguments)||this}var _proto;return inheritsLoose(TimeDivider,_Component),TimeDivider.prototype.createEl=function createEl(){var el=_Component.prototype.createEl.call(this,"div",{className:"vjs-time-control vjs-time-divider"},{"aria-hidden":!0}),div=_Component.prototype.createEl.call(this,"div"),span=_Component.prototype.createEl.call(this,"span",{textContent:"/"});return div.appendChild(span),el.appendChild(div),el},TimeDivider}(Component$1);Component$1.registerComponent("TimeDivider",TimeDivider);var RemainingTimeDisplay=function(_TimeDisplay){function RemainingTimeDisplay(player,options){var _this;return(_this=_TimeDisplay.call(this,player,options)||this).on(player,"durationchange",(function(e){return _this.updateContent(e)})),_this}inheritsLoose(RemainingTimeDisplay,_TimeDisplay);var _proto=RemainingTimeDisplay.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-remaining-time"},_proto.createEl=function createEl$1(){var el=_TimeDisplay.prototype.createEl.call(this);return!1!==this.options_.displayNegative&&el.insertBefore(createEl("span",{},{"aria-hidden":!0},"-"),this.contentEl_),el},_proto.updateContent=function updateContent(event){var time;"number"==typeof this.player_.duration()&&(time=this.player_.ended()?0:this.player_.remainingTimeDisplay?this.player_.remainingTimeDisplay():this.player_.remainingTime(),this.updateTextNode_(time))},RemainingTimeDisplay}(TimeDisplay);RemainingTimeDisplay.prototype.labelText_="Remaining Time",RemainingTimeDisplay.prototype.controlText_="Remaining Time",Component$1.registerComponent("RemainingTimeDisplay",RemainingTimeDisplay);var LiveDisplay=function(_Component){function LiveDisplay(player,options){var _this;return(_this=_Component.call(this,player,options)||this).updateShowing(),_this.on(_this.player(),"durationchange",(function(e){return _this.updateShowing(e)})),_this}inheritsLoose(LiveDisplay,_Component);var _proto=LiveDisplay.prototype;return _proto.createEl=function createEl$1(){var el=_Component.prototype.createEl.call(this,"div",{className:"vjs-live-control vjs-control"});return this.contentEl_=createEl("div",{className:"vjs-live-display"},{"aria-live":"off"}),this.contentEl_.appendChild(createEl("span",{className:"vjs-control-text",textContent:this.localize("Stream Type")+" "})),this.contentEl_.appendChild(document.createTextNode(this.localize("LIVE"))),el.appendChild(this.contentEl_),el},_proto.dispose=function dispose(){this.contentEl_=null,_Component.prototype.dispose.call(this)},_proto.updateShowing=function updateShowing(event){this.player().duration()===1/0?this.show():this.hide()},LiveDisplay}(Component$1);Component$1.registerComponent("LiveDisplay",LiveDisplay);var SeekToLive=function(_Button){function SeekToLive(player,options){var _this;return(_this=_Button.call(this,player,options)||this).updateLiveEdgeStatus(),_this.player_.liveTracker&&(_this.updateLiveEdgeStatusHandler_=function(e){return _this.updateLiveEdgeStatus(e)},_this.on(_this.player_.liveTracker,"liveedgechange",_this.updateLiveEdgeStatusHandler_)),_this}inheritsLoose(SeekToLive,_Button);var _proto=SeekToLive.prototype;return _proto.createEl=function createEl$1(){var el=_Button.prototype.createEl.call(this,"button",{className:"vjs-seek-to-live-control vjs-control"});return this.textEl_=createEl("span",{className:"vjs-seek-to-live-text",textContent:this.localize("LIVE")},{"aria-hidden":"true"}),el.appendChild(this.textEl_),el},_proto.updateLiveEdgeStatus=function updateLiveEdgeStatus(){!this.player_.liveTracker||this.player_.liveTracker.atLiveEdge()?(this.setAttribute("aria-disabled",!0),this.addClass("vjs-at-live-edge"),this.controlText("Seek to live, currently playing live")):(this.setAttribute("aria-disabled",!1),this.removeClass("vjs-at-live-edge"),this.controlText("Seek to live, currently behind live"))},_proto.handleClick=function handleClick(){this.player_.liveTracker.seekToLiveEdge()},_proto.dispose=function dispose(){this.player_.liveTracker&&this.off(this.player_.liveTracker,"liveedgechange",this.updateLiveEdgeStatusHandler_),this.textEl_=null,_Button.prototype.dispose.call(this)},SeekToLive}(Button);SeekToLive.prototype.controlText_="Seek to live, currently playing live",Component$1.registerComponent("SeekToLive",SeekToLive);var clamp=function clamp(number,min,max){return number=Number(number),Math.min(max,Math.max(min,isNaN(number)?min:number))},Slider=function(_Component){function Slider(player,options){var _this;return(_this=_Component.call(this,player,options)||this).handleMouseDown_=function(e){return _this.handleMouseDown(e)},_this.handleMouseUp_=function(e){return _this.handleMouseUp(e)},_this.handleKeyDown_=function(e){return _this.handleKeyDown(e)},_this.handleClick_=function(e){return _this.handleClick(e)},_this.handleMouseMove_=function(e){return _this.handleMouseMove(e)},_this.update_=function(e){return _this.update(e)},_this.bar=_this.getChild(_this.options_.barName),_this.vertical(!!_this.options_.vertical),_this.enable(),_this}inheritsLoose(Slider,_Component);var _proto=Slider.prototype;return _proto.enabled=function enabled(){return this.enabled_},_proto.enable=function enable(){this.enabled()||(this.on("mousedown",this.handleMouseDown_),this.on("touchstart",this.handleMouseDown_),this.on("keydown",this.handleKeyDown_),this.on("click",this.handleClick_),this.on(this.player_,"controlsvisible",this.update),this.playerEvent&&this.on(this.player_,this.playerEvent,this.update),this.removeClass("disabled"),this.setAttribute("tabindex",0),this.enabled_=!0)},_proto.disable=function disable(){if(this.enabled()){var doc=this.bar.el_.ownerDocument;this.off("mousedown",this.handleMouseDown_),this.off("touchstart",this.handleMouseDown_),this.off("keydown",this.handleKeyDown_),this.off("click",this.handleClick_),this.off(this.player_,"controlsvisible",this.update_),this.off(doc,"mousemove",this.handleMouseMove_),this.off(doc,"mouseup",this.handleMouseUp_),this.off(doc,"touchmove",this.handleMouseMove_),this.off(doc,"touchend",this.handleMouseUp_),this.removeAttribute("tabindex"),this.addClass("disabled"),this.playerEvent&&this.off(this.player_,this.playerEvent,this.update),this.enabled_=!1}},_proto.createEl=function createEl(type,props,attributes){return void 0===props&&(props={}),void 0===attributes&&(attributes={}),props.className=props.className+" vjs-slider",props=assign({tabIndex:0},props),attributes=assign({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},attributes),_Component.prototype.createEl.call(this,type,props,attributes)},_proto.handleMouseDown=function handleMouseDown(event){var doc=this.bar.el_.ownerDocument;"mousedown"===event.type&&event.preventDefault(),"touchstart"!==event.type||IS_CHROME||event.preventDefault(),blockTextSelection(),this.addClass("vjs-sliding"),this.trigger("slideractive"),this.on(doc,"mousemove",this.handleMouseMove_),this.on(doc,"mouseup",this.handleMouseUp_),this.on(doc,"touchmove",this.handleMouseMove_),this.on(doc,"touchend",this.handleMouseUp_),this.handleMouseMove(event,!0)},_proto.handleMouseMove=function handleMouseMove(event){},_proto.handleMouseUp=function handleMouseUp(){var doc=this.bar.el_.ownerDocument;unblockTextSelection(),this.removeClass("vjs-sliding"),this.trigger("sliderinactive"),this.off(doc,"mousemove",this.handleMouseMove_),this.off(doc,"mouseup",this.handleMouseUp_),this.off(doc,"touchmove",this.handleMouseMove_),this.off(doc,"touchend",this.handleMouseUp_),this.update()},_proto.update=function update(){var _this2=this;if(this.el_&&this.bar){var progress=this.getProgress();return progress===this.progress_?progress:(this.progress_=progress,this.requestNamedAnimationFrame("Slider#update",(function(){var sizeKey=_this2.vertical()?"height":"width";_this2.bar.el().style[sizeKey]=(100*progress).toFixed(2)+"%"})),progress)}},_proto.getProgress=function getProgress(){return Number(clamp(this.getPercent(),0,1).toFixed(4))},_proto.calculateDistance=function calculateDistance(event){var position=getPointerPosition(this.el_,event);return this.vertical()?position.y:position.x},_proto.handleKeyDown=function handleKeyDown(event){keycode.isEventKey(event,"Left")||keycode.isEventKey(event,"Down")?(event.preventDefault(),event.stopPropagation(),this.stepBack()):keycode.isEventKey(event,"Right")||keycode.isEventKey(event,"Up")?(event.preventDefault(),event.stopPropagation(),this.stepForward()):_Component.prototype.handleKeyDown.call(this,event)},_proto.handleClick=function handleClick(event){event.stopPropagation(),event.preventDefault()},_proto.vertical=function vertical(bool){if(void 0===bool)return this.vertical_||!1;this.vertical_=!!bool,this.vertical_?this.addClass("vjs-slider-vertical"):this.addClass("vjs-slider-horizontal")},Slider}(Component$1);Component$1.registerComponent("Slider",Slider);var percentify=function percentify(time,end){return clamp(time/end*100,0,100).toFixed(2)+"%"},LoadProgressBar=function(_Component){function LoadProgressBar(player,options){var _this;return(_this=_Component.call(this,player,options)||this).partEls_=[],_this.on(player,"progress",(function(e){return _this.update(e)})),_this}inheritsLoose(LoadProgressBar,_Component);var _proto=LoadProgressBar.prototype;return _proto.createEl=function createEl$1(){var el=_Component.prototype.createEl.call(this,"div",{className:"vjs-load-progress"}),wrapper=createEl("span",{className:"vjs-control-text"}),loadedText=createEl("span",{textContent:this.localize("Loaded")}),separator=document.createTextNode(": ");return this.percentageEl_=createEl("span",{className:"vjs-control-text-loaded-percentage",textContent:"0%"}),el.appendChild(wrapper),wrapper.appendChild(loadedText),wrapper.appendChild(separator),wrapper.appendChild(this.percentageEl_),el},_proto.dispose=function dispose(){this.partEls_=null,this.percentageEl_=null,_Component.prototype.dispose.call(this)},_proto.update=function update(event){var _this2=this;this.requestNamedAnimationFrame("LoadProgressBar#update",(function(){var liveTracker=_this2.player_.liveTracker,buffered=_this2.player_.buffered(),duration=liveTracker&&liveTracker.isLive()?liveTracker.seekableEnd():_this2.player_.duration(),bufferedEnd=_this2.player_.bufferedEnd(),children=_this2.partEls_,percent=percentify(bufferedEnd,duration);_this2.percent_!==percent&&(_this2.el_.style.width=percent,textContent(_this2.percentageEl_,percent),_this2.percent_=percent);for(var i=0;ibuffered.length;_i--)_this2.el_.removeChild(children[_i-1]);children.length=buffered.length}))},LoadProgressBar}(Component$1);Component$1.registerComponent("LoadProgressBar",LoadProgressBar);var TimeTooltip=function(_Component){function TimeTooltip(player,options){var _this;return(_this=_Component.call(this,player,options)||this).update=throttle(bind(assertThisInitialized(_this),_this.update),30),_this}inheritsLoose(TimeTooltip,_Component);var _proto=TimeTooltip.prototype;return _proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,"div",{className:"vjs-time-tooltip"},{"aria-hidden":"true"})},_proto.update=function update(seekBarRect,seekBarPoint,content){var tooltipRect=findPosition(this.el_),playerRect=getBoundingClientRect(this.player_.el()),seekBarPointPx=seekBarRect.width*seekBarPoint;if(playerRect&&tooltipRect){var spaceLeftOfPoint=seekBarRect.left-playerRect.left+seekBarPointPx,spaceRightOfPoint=seekBarRect.width-seekBarPointPx+(playerRect.right-seekBarRect.right),pullTooltipBy=tooltipRect.width/2;spaceLeftOfPointtooltipRect.width&&(pullTooltipBy=tooltipRect.width),pullTooltipBy=Math.round(pullTooltipBy),this.el_.style.right="-"+pullTooltipBy+"px",this.write(content)}},_proto.write=function write(content){textContent(this.el_,content)},_proto.updateTime=function updateTime(seekBarRect,seekBarPoint,time,cb){var _this2=this;this.requestNamedAnimationFrame("TimeTooltip#updateTime",(function(){var content,duration=_this2.player_.duration();if(_this2.player_.liveTracker&&_this2.player_.liveTracker.isLive()){var liveWindow=_this2.player_.liveTracker.liveWindow(),secondsBehind=liveWindow-seekBarPoint*liveWindow;content=(secondsBehind<1?"":"-")+formatTime(secondsBehind,liveWindow)}else content=formatTime(time,duration);_this2.update(seekBarRect,seekBarPoint,content),cb&&cb()}))},TimeTooltip}(Component$1);Component$1.registerComponent("TimeTooltip",TimeTooltip);var PlayProgressBar=function(_Component){function PlayProgressBar(player,options){var _this;return(_this=_Component.call(this,player,options)||this).update=throttle(bind(assertThisInitialized(_this),_this.update),30),_this}inheritsLoose(PlayProgressBar,_Component);var _proto=PlayProgressBar.prototype;return _proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,"div",{className:"vjs-play-progress vjs-slider-bar"},{"aria-hidden":"true"})},_proto.update=function update(seekBarRect,seekBarPoint){var timeTooltip=this.getChild("timeTooltip");if(timeTooltip){var time=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();timeTooltip.updateTime(seekBarRect,seekBarPoint,time)}},PlayProgressBar}(Component$1);PlayProgressBar.prototype.options_={children:[]},IS_IOS||IS_ANDROID||PlayProgressBar.prototype.options_.children.push("timeTooltip"),Component$1.registerComponent("PlayProgressBar",PlayProgressBar);var MouseTimeDisplay=function(_Component){function MouseTimeDisplay(player,options){var _this;return(_this=_Component.call(this,player,options)||this).update=throttle(bind(assertThisInitialized(_this),_this.update),30),_this}inheritsLoose(MouseTimeDisplay,_Component);var _proto=MouseTimeDisplay.prototype;return _proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,"div",{className:"vjs-mouse-display"})},_proto.update=function update(seekBarRect,seekBarPoint){var _this2=this,time=seekBarPoint*this.player_.duration();this.getChild("timeTooltip").updateTime(seekBarRect,seekBarPoint,time,(function(){_this2.el_.style.left=seekBarRect.width*seekBarPoint+"px"}))},MouseTimeDisplay}(Component$1);MouseTimeDisplay.prototype.options_={children:["timeTooltip"]},Component$1.registerComponent("MouseTimeDisplay",MouseTimeDisplay);var STEP_SECONDS=5,PAGE_KEY_MULTIPLIER=12,SeekBar=function(_Slider){function SeekBar(player,options){var _this;return(_this=_Slider.call(this,player,options)||this).setEventHandlers_(),_this}inheritsLoose(SeekBar,_Slider);var _proto=SeekBar.prototype;return _proto.setEventHandlers_=function setEventHandlers_(){var _this2=this;this.update_=bind(this,this.update),this.update=throttle(this.update_,30),this.on(this.player_,["ended","durationchange","timeupdate"],this.update),this.player_.liveTracker&&this.on(this.player_.liveTracker,"liveedgechange",this.update),this.updateInterval=null,this.enableIntervalHandler_=function(e){return _this2.enableInterval_(e)},this.disableIntervalHandler_=function(e){return _this2.disableInterval_(e)},this.on(this.player_,["playing"],this.enableIntervalHandler_),this.on(this.player_,["ended","pause","waiting"],this.disableIntervalHandler_),"hidden"in document&&"visibilityState"in document&&this.on(document,"visibilitychange",this.toggleVisibility_)},_proto.toggleVisibility_=function toggleVisibility_(e){"hidden"===document.visibilityState?(this.cancelNamedAnimationFrame("SeekBar#update"),this.cancelNamedAnimationFrame("Slider#update"),this.disableInterval_(e)):(this.player_.ended()||this.player_.paused()||this.enableInterval_(),this.update())},_proto.enableInterval_=function enableInterval_(){this.updateInterval||(this.updateInterval=this.setInterval(this.update,30))},_proto.disableInterval_=function disableInterval_(e){this.player_.liveTracker&&this.player_.liveTracker.isLive()&&e&&"ended"!==e.type||this.updateInterval&&(this.clearInterval(this.updateInterval),this.updateInterval=null)},_proto.createEl=function createEl(){return _Slider.prototype.createEl.call(this,"div",{className:"vjs-progress-holder"},{"aria-label":this.localize("Progress Bar")})},_proto.update=function update(event){var _this3=this;if("hidden"!==document.visibilityState){var percent=_Slider.prototype.update.call(this);return this.requestNamedAnimationFrame("SeekBar#update",(function(){var currentTime=_this3.player_.ended()?_this3.player_.duration():_this3.getCurrentTime_(),liveTracker=_this3.player_.liveTracker,duration=_this3.player_.duration();liveTracker&&liveTracker.isLive()&&(duration=_this3.player_.liveTracker.liveCurrentTime()),_this3.percent_!==percent&&(_this3.el_.setAttribute("aria-valuenow",(100*percent).toFixed(2)),_this3.percent_=percent),_this3.currentTime_===currentTime&&_this3.duration_===duration||(_this3.el_.setAttribute("aria-valuetext",_this3.localize("progress bar timing: currentTime={1} duration={2}",[formatTime(currentTime,duration),formatTime(duration,duration)],"{1} of {2}")),_this3.currentTime_=currentTime,_this3.duration_=duration),_this3.bar&&_this3.bar.update(getBoundingClientRect(_this3.el()),_this3.getProgress())})),percent}},_proto.userSeek_=function userSeek_(ct){this.player_.liveTracker&&this.player_.liveTracker.isLive()&&this.player_.liveTracker.nextSeekedFromUser(),this.player_.currentTime(ct)},_proto.getCurrentTime_=function getCurrentTime_(){return this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime()},_proto.getPercent=function getPercent(){var currentTime=this.getCurrentTime_(),percent,liveTracker=this.player_.liveTracker;return liveTracker&&liveTracker.isLive()?(percent=(currentTime-liveTracker.seekableStart())/liveTracker.liveWindow(),liveTracker.atLiveEdge()&&(percent=1)):percent=currentTime/this.player_.duration(),percent},_proto.handleMouseDown=function handleMouseDown(event){isSingleLeftClick(event)&&(event.stopPropagation(),this.videoWasPlaying=!this.player_.paused(),this.player_.pause(),_Slider.prototype.handleMouseDown.call(this,event))},_proto.handleMouseMove=function handleMouseMove(event,mouseDown){if(void 0===mouseDown&&(mouseDown=!1),isSingleLeftClick(event)){var newTime;mouseDown||this.player_.scrubbing()||this.player_.scrubbing(!0);var distance=this.calculateDistance(event),liveTracker=this.player_.liveTracker;if(liveTracker&&liveTracker.isLive()){if(distance>=.99)return void liveTracker.seekToLiveEdge();var seekableStart=liveTracker.seekableStart(),seekableEnd=liveTracker.liveCurrentTime();if((newTime=seekableStart+distance*liveTracker.liveWindow())>=seekableEnd&&(newTime=seekableEnd),newTime<=seekableStart&&(newTime=seekableStart+.1),newTime===1/0)return}else(newTime=distance*this.player_.duration())===this.player_.duration()&&(newTime-=.1);this.userSeek_(newTime)}},_proto.enable=function enable(){_Slider.prototype.enable.call(this);var mouseTimeDisplay=this.getChild("mouseTimeDisplay");mouseTimeDisplay&&mouseTimeDisplay.show()},_proto.disable=function disable(){_Slider.prototype.disable.call(this);var mouseTimeDisplay=this.getChild("mouseTimeDisplay");mouseTimeDisplay&&mouseTimeDisplay.hide()},_proto.handleMouseUp=function handleMouseUp(event){_Slider.prototype.handleMouseUp.call(this,event),event&&event.stopPropagation(),this.player_.scrubbing(!1),this.player_.trigger({type:"timeupdate",target:this,manuallyTriggered:!0}),this.videoWasPlaying?silencePromise(this.player_.play()):this.update_()},_proto.stepForward=function stepForward(){this.userSeek_(this.player_.currentTime()+5)},_proto.stepBack=function stepBack(){this.userSeek_(this.player_.currentTime()-5)},_proto.handleAction=function handleAction(event){this.player_.paused()?this.player_.play():this.player_.pause()},_proto.handleKeyDown=function handleKeyDown(event){var liveTracker=this.player_.liveTracker;if(keycode.isEventKey(event,"Space")||keycode.isEventKey(event,"Enter"))event.preventDefault(),event.stopPropagation(),this.handleAction(event);else if(keycode.isEventKey(event,"Home"))event.preventDefault(),event.stopPropagation(),this.userSeek_(0);else if(keycode.isEventKey(event,"End"))event.preventDefault(),event.stopPropagation(),liveTracker&&liveTracker.isLive()?this.userSeek_(liveTracker.liveCurrentTime()):this.userSeek_(this.player_.duration());else if(/^[0-9]$/.test(keycode(event))){event.preventDefault(),event.stopPropagation();var gotoFraction=10*(keycode.codes[keycode(event)]-keycode.codes[0])/100;liveTracker&&liveTracker.isLive()?this.userSeek_(liveTracker.seekableStart()+liveTracker.liveWindow()*gotoFraction):this.userSeek_(this.player_.duration()*gotoFraction)}else keycode.isEventKey(event,"PgDn")?(event.preventDefault(),event.stopPropagation(),this.userSeek_(this.player_.currentTime()-60)):keycode.isEventKey(event,"PgUp")?(event.preventDefault(),event.stopPropagation(),this.userSeek_(this.player_.currentTime()+60)):_Slider.prototype.handleKeyDown.call(this,event)},_proto.dispose=function dispose(){this.disableInterval_(),this.off(this.player_,["ended","durationchange","timeupdate"],this.update),this.player_.liveTracker&&this.off(this.player_.liveTracker,"liveedgechange",this.update),this.off(this.player_,["playing"],this.enableIntervalHandler_),this.off(this.player_,["ended","pause","waiting"],this.disableIntervalHandler_),"hidden"in document&&"visibilityState"in document&&this.off(document,"visibilitychange",this.toggleVisibility_),_Slider.prototype.dispose.call(this)},SeekBar}(Slider);SeekBar.prototype.options_={children:["loadProgressBar","playProgressBar"],barName:"playProgressBar"},IS_IOS||IS_ANDROID||SeekBar.prototype.options_.children.splice(1,0,"mouseTimeDisplay"),Component$1.registerComponent("SeekBar",SeekBar);var ProgressControl=function(_Component){function ProgressControl(player,options){var _this;return(_this=_Component.call(this,player,options)||this).handleMouseMove=throttle(bind(assertThisInitialized(_this),_this.handleMouseMove),30),_this.throttledHandleMouseSeek=throttle(bind(assertThisInitialized(_this),_this.handleMouseSeek),30),_this.handleMouseUpHandler_=function(e){return _this.handleMouseUp(e)},_this.handleMouseDownHandler_=function(e){return _this.handleMouseDown(e)},_this.enable(),_this}inheritsLoose(ProgressControl,_Component);var _proto=ProgressControl.prototype;return _proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,"div",{className:"vjs-progress-control vjs-control"})},_proto.handleMouseMove=function handleMouseMove(event){var seekBar=this.getChild("seekBar");if(seekBar){var playProgressBar=seekBar.getChild("playProgressBar"),mouseTimeDisplay=seekBar.getChild("mouseTimeDisplay");if(playProgressBar||mouseTimeDisplay){var seekBarEl=seekBar.el(),seekBarRect=findPosition(seekBarEl),seekBarPoint=getPointerPosition(seekBarEl,event).x;seekBarPoint=clamp(seekBarPoint,0,1),mouseTimeDisplay&&mouseTimeDisplay.update(seekBarRect,seekBarPoint),playProgressBar&&playProgressBar.update(seekBarRect,seekBar.getProgress())}}},_proto.handleMouseSeek=function handleMouseSeek(event){var seekBar=this.getChild("seekBar");seekBar&&seekBar.handleMouseMove(event)},_proto.enabled=function enabled(){return this.enabled_},_proto.disable=function disable(){if(this.children().forEach((function(child){return child.disable&&child.disable()})),this.enabled()&&(this.off(["mousedown","touchstart"],this.handleMouseDownHandler_),this.off(this.el_,"mousemove",this.handleMouseMove),this.removeListenersAddedOnMousedownAndTouchstart(),this.addClass("disabled"),this.enabled_=!1,this.player_.scrubbing())){var seekBar=this.getChild("seekBar");this.player_.scrubbing(!1),seekBar.videoWasPlaying&&silencePromise(this.player_.play())}},_proto.enable=function enable(){this.children().forEach((function(child){return child.enable&&child.enable()})),this.enabled()||(this.on(["mousedown","touchstart"],this.handleMouseDownHandler_),this.on(this.el_,"mousemove",this.handleMouseMove),this.removeClass("disabled"),this.enabled_=!0)},_proto.removeListenersAddedOnMousedownAndTouchstart=function removeListenersAddedOnMousedownAndTouchstart(){var doc=this.el_.ownerDocument;this.off(doc,"mousemove",this.throttledHandleMouseSeek),this.off(doc,"touchmove",this.throttledHandleMouseSeek),this.off(doc,"mouseup",this.handleMouseUpHandler_),this.off(doc,"touchend",this.handleMouseUpHandler_)},_proto.handleMouseDown=function handleMouseDown(event){var doc=this.el_.ownerDocument,seekBar=this.getChild("seekBar");seekBar&&seekBar.handleMouseDown(event),this.on(doc,"mousemove",this.throttledHandleMouseSeek),this.on(doc,"touchmove",this.throttledHandleMouseSeek),this.on(doc,"mouseup",this.handleMouseUpHandler_),this.on(doc,"touchend",this.handleMouseUpHandler_)},_proto.handleMouseUp=function handleMouseUp(event){var seekBar=this.getChild("seekBar");seekBar&&seekBar.handleMouseUp(event),this.removeListenersAddedOnMousedownAndTouchstart()},ProgressControl}(Component$1);ProgressControl.prototype.options_={children:["seekBar"]},Component$1.registerComponent("ProgressControl",ProgressControl);var PictureInPictureToggle=function(_Button){function PictureInPictureToggle(player,options){var _this;return(_this=_Button.call(this,player,options)||this).on(player,["enterpictureinpicture","leavepictureinpicture"],(function(e){return _this.handlePictureInPictureChange(e)})),_this.on(player,["disablepictureinpicturechanged","loadedmetadata"],(function(e){return _this.handlePictureInPictureEnabledChange(e)})),_this.on(player,["loadedmetadata","audioonlymodechange","audiopostermodechange"],(function(){var isSourceAudio;"audio"===player.currentType().substring(0,5)||player.audioPosterMode()||player.audioOnlyMode()?(player.isInPictureInPicture()&&player.exitPictureInPicture(),_this.hide()):_this.show()})),_this.disable(),_this}inheritsLoose(PictureInPictureToggle,_Button);var _proto=PictureInPictureToggle.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-picture-in-picture-control "+_Button.prototype.buildCSSClass.call(this)},_proto.handlePictureInPictureEnabledChange=function handlePictureInPictureEnabledChange(){document.pictureInPictureEnabled&&!1===this.player_.disablePictureInPicture()?this.enable():this.disable()},_proto.handlePictureInPictureChange=function handlePictureInPictureChange(event){this.player_.isInPictureInPicture()?this.controlText("Exit Picture-in-Picture"):this.controlText("Picture-in-Picture"),this.handlePictureInPictureEnabledChange()},_proto.handleClick=function handleClick(event){this.player_.isInPictureInPicture()?this.player_.exitPictureInPicture():this.player_.requestPictureInPicture()},PictureInPictureToggle}(Button);PictureInPictureToggle.prototype.controlText_="Picture-in-Picture",Component$1.registerComponent("PictureInPictureToggle",PictureInPictureToggle);var FullscreenToggle=function(_Button){function FullscreenToggle(player,options){var _this;return(_this=_Button.call(this,player,options)||this).on(player,"fullscreenchange",(function(e){return _this.handleFullscreenChange(e)})),!1===document[player.fsApi_.fullscreenEnabled]&&_this.disable(),_this}inheritsLoose(FullscreenToggle,_Button);var _proto=FullscreenToggle.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-fullscreen-control "+_Button.prototype.buildCSSClass.call(this)},_proto.handleFullscreenChange=function handleFullscreenChange(event){this.player_.isFullscreen()?this.controlText("Non-Fullscreen"):this.controlText("Fullscreen")},_proto.handleClick=function handleClick(event){this.player_.isFullscreen()?this.player_.exitFullscreen():this.player_.requestFullscreen()},FullscreenToggle}(Button);FullscreenToggle.prototype.controlText_="Fullscreen",Component$1.registerComponent("FullscreenToggle",FullscreenToggle);var checkVolumeSupport=function checkVolumeSupport(self,player){player.tech_&&!player.tech_.featuresVolumeControl&&self.addClass("vjs-hidden"),self.on(player,"loadstart",(function(){player.tech_.featuresVolumeControl?self.removeClass("vjs-hidden"):self.addClass("vjs-hidden")}))},VolumeLevel=function(_Component){function VolumeLevel(){return _Component.apply(this,arguments)||this}var _proto;return inheritsLoose(VolumeLevel,_Component),VolumeLevel.prototype.createEl=function createEl(){var el=_Component.prototype.createEl.call(this,"div",{className:"vjs-volume-level"});return el.appendChild(_Component.prototype.createEl.call(this,"span",{className:"vjs-control-text"})),el},VolumeLevel}(Component$1);Component$1.registerComponent("VolumeLevel",VolumeLevel);var VolumeLevelTooltip=function(_Component){function VolumeLevelTooltip(player,options){var _this;return(_this=_Component.call(this,player,options)||this).update=throttle(bind(assertThisInitialized(_this),_this.update),30),_this}inheritsLoose(VolumeLevelTooltip,_Component);var _proto=VolumeLevelTooltip.prototype;return _proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,"div",{className:"vjs-volume-tooltip"},{"aria-hidden":"true"})},_proto.update=function update(rangeBarRect,rangeBarPoint,vertical,content){if(!vertical){var tooltipRect=getBoundingClientRect(this.el_),playerRect=getBoundingClientRect(this.player_.el()),volumeBarPointPx=rangeBarRect.width*rangeBarPoint;if(!playerRect||!tooltipRect)return;var spaceLeftOfPoint=rangeBarRect.left-playerRect.left+volumeBarPointPx,spaceRightOfPoint=rangeBarRect.width-volumeBarPointPx+(playerRect.right-rangeBarRect.right),pullTooltipBy=tooltipRect.width/2;spaceLeftOfPointtooltipRect.width&&(pullTooltipBy=tooltipRect.width),this.el_.style.right="-"+pullTooltipBy+"px"}this.write(content+"%")},_proto.write=function write(content){textContent(this.el_,content)},_proto.updateVolume=function updateVolume(rangeBarRect,rangeBarPoint,vertical,volume,cb){var _this2=this;this.requestNamedAnimationFrame("VolumeLevelTooltip#updateVolume",(function(){_this2.update(rangeBarRect,rangeBarPoint,vertical,volume.toFixed(0)),cb&&cb()}))},VolumeLevelTooltip}(Component$1);Component$1.registerComponent("VolumeLevelTooltip",VolumeLevelTooltip);var MouseVolumeLevelDisplay=function(_Component){function MouseVolumeLevelDisplay(player,options){var _this;return(_this=_Component.call(this,player,options)||this).update=throttle(bind(assertThisInitialized(_this),_this.update),30),_this}inheritsLoose(MouseVolumeLevelDisplay,_Component);var _proto=MouseVolumeLevelDisplay.prototype;return _proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,"div",{className:"vjs-mouse-display"})},_proto.update=function update(rangeBarRect,rangeBarPoint,vertical){var _this2=this,volume=100*rangeBarPoint;this.getChild("volumeLevelTooltip").updateVolume(rangeBarRect,rangeBarPoint,vertical,volume,(function(){vertical?_this2.el_.style.bottom=rangeBarRect.height*rangeBarPoint+"px":_this2.el_.style.left=rangeBarRect.width*rangeBarPoint+"px"}))},MouseVolumeLevelDisplay}(Component$1);MouseVolumeLevelDisplay.prototype.options_={children:["volumeLevelTooltip"]},Component$1.registerComponent("MouseVolumeLevelDisplay",MouseVolumeLevelDisplay);var VolumeBar=function(_Slider){function VolumeBar(player,options){var _this;return(_this=_Slider.call(this,player,options)||this).on("slideractive",(function(e){return _this.updateLastVolume_(e)})),_this.on(player,"volumechange",(function(e){return _this.updateARIAAttributes(e)})),player.ready((function(){return _this.updateARIAAttributes()})),_this}inheritsLoose(VolumeBar,_Slider);var _proto=VolumeBar.prototype;return _proto.createEl=function createEl(){return _Slider.prototype.createEl.call(this,"div",{className:"vjs-volume-bar vjs-slider-bar"},{"aria-label":this.localize("Volume Level"),"aria-live":"polite"})},_proto.handleMouseDown=function handleMouseDown(event){isSingleLeftClick(event)&&_Slider.prototype.handleMouseDown.call(this,event)},_proto.handleMouseMove=function handleMouseMove(event){var mouseVolumeLevelDisplay=this.getChild("mouseVolumeLevelDisplay");if(mouseVolumeLevelDisplay){var volumeBarEl=this.el(),volumeBarRect=getBoundingClientRect(volumeBarEl),vertical=this.vertical(),volumeBarPoint=getPointerPosition(volumeBarEl,event);volumeBarPoint=vertical?volumeBarPoint.y:volumeBarPoint.x,volumeBarPoint=clamp(volumeBarPoint,0,1),mouseVolumeLevelDisplay.update(volumeBarRect,volumeBarPoint,vertical)}isSingleLeftClick(event)&&(this.checkMuted(),this.player_.volume(this.calculateDistance(event)))},_proto.checkMuted=function checkMuted(){this.player_.muted()&&this.player_.muted(!1)},_proto.getPercent=function getPercent(){return this.player_.muted()?0:this.player_.volume()},_proto.stepForward=function stepForward(){this.checkMuted(),this.player_.volume(this.player_.volume()+.1)},_proto.stepBack=function stepBack(){this.checkMuted(),this.player_.volume(this.player_.volume()-.1)},_proto.updateARIAAttributes=function updateARIAAttributes(event){var ariaValue=this.player_.muted()?0:this.volumeAsPercentage_();this.el_.setAttribute("aria-valuenow",ariaValue),this.el_.setAttribute("aria-valuetext",ariaValue+"%")},_proto.volumeAsPercentage_=function volumeAsPercentage_(){return Math.round(100*this.player_.volume())},_proto.updateLastVolume_=function updateLastVolume_(){var _this2=this,volumeBeforeDrag=this.player_.volume();this.one("sliderinactive",(function(){0===_this2.player_.volume()&&_this2.player_.lastVolume_(volumeBeforeDrag)}))},VolumeBar}(Slider);VolumeBar.prototype.options_={children:["volumeLevel"],barName:"volumeLevel"},IS_IOS||IS_ANDROID||VolumeBar.prototype.options_.children.splice(0,0,"mouseVolumeLevelDisplay"),VolumeBar.prototype.playerEvent="volumechange",Component$1.registerComponent("VolumeBar",VolumeBar);var VolumeControl=function(_Component){function VolumeControl(player,options){var _this;return void 0===options&&(options={}),options.vertical=options.vertical||!1,(void 0===options.volumeBar||isPlain(options.volumeBar))&&(options.volumeBar=options.volumeBar||{},options.volumeBar.vertical=options.vertical),_this=_Component.call(this,player,options)||this,checkVolumeSupport(assertThisInitialized(_this),player),_this.throttledHandleMouseMove=throttle(bind(assertThisInitialized(_this),_this.handleMouseMove),30),_this.handleMouseUpHandler_=function(e){return _this.handleMouseUp(e)},_this.on("mousedown",(function(e){return _this.handleMouseDown(e)})),_this.on("touchstart",(function(e){return _this.handleMouseDown(e)})),_this.on("mousemove",(function(e){return _this.handleMouseMove(e)})),_this.on(_this.volumeBar,["focus","slideractive"],(function(){_this.volumeBar.addClass("vjs-slider-active"),_this.addClass("vjs-slider-active"),_this.trigger("slideractive")})),_this.on(_this.volumeBar,["blur","sliderinactive"],(function(){_this.volumeBar.removeClass("vjs-slider-active"),_this.removeClass("vjs-slider-active"),_this.trigger("sliderinactive")})),_this}inheritsLoose(VolumeControl,_Component);var _proto=VolumeControl.prototype;return _proto.createEl=function createEl(){var orientationClass="vjs-volume-horizontal";return this.options_.vertical&&(orientationClass="vjs-volume-vertical"),_Component.prototype.createEl.call(this,"div",{className:"vjs-volume-control vjs-control "+orientationClass})},_proto.handleMouseDown=function handleMouseDown(event){var doc=this.el_.ownerDocument;this.on(doc,"mousemove",this.throttledHandleMouseMove),this.on(doc,"touchmove",this.throttledHandleMouseMove),this.on(doc,"mouseup",this.handleMouseUpHandler_),this.on(doc,"touchend",this.handleMouseUpHandler_)},_proto.handleMouseUp=function handleMouseUp(event){var doc=this.el_.ownerDocument;this.off(doc,"mousemove",this.throttledHandleMouseMove),this.off(doc,"touchmove",this.throttledHandleMouseMove),this.off(doc,"mouseup",this.handleMouseUpHandler_),this.off(doc,"touchend",this.handleMouseUpHandler_)},_proto.handleMouseMove=function handleMouseMove(event){this.volumeBar.handleMouseMove(event)},VolumeControl}(Component$1);VolumeControl.prototype.options_={children:["volumeBar"]},Component$1.registerComponent("VolumeControl",VolumeControl);var checkMuteSupport=function checkMuteSupport(self,player){player.tech_&&!player.tech_.featuresMuteControl&&self.addClass("vjs-hidden"),self.on(player,"loadstart",(function(){player.tech_.featuresMuteControl?self.removeClass("vjs-hidden"):self.addClass("vjs-hidden")}))},MuteToggle=function(_Button){function MuteToggle(player,options){var _this;return _this=_Button.call(this,player,options)||this,checkMuteSupport(assertThisInitialized(_this),player),_this.on(player,["loadstart","volumechange"],(function(e){return _this.update(e)})),_this}inheritsLoose(MuteToggle,_Button);var _proto=MuteToggle.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-mute-control "+_Button.prototype.buildCSSClass.call(this)},_proto.handleClick=function handleClick(event){var vol=this.player_.volume(),lastVolume=this.player_.lastVolume_();if(0===vol){var volumeToSet=lastVolume<.1?.1:lastVolume;this.player_.volume(volumeToSet),this.player_.muted(!1)}else this.player_.muted(!this.player_.muted())},_proto.update=function update(event){this.updateIcon_(),this.updateControlText_()},_proto.updateIcon_=function updateIcon_(){var vol=this.player_.volume(),level=3;IS_IOS&&this.player_.tech_&&this.player_.tech_.el_&&this.player_.muted(this.player_.tech_.el_.muted),0===vol||this.player_.muted()?level=0:vol<.33?level=1:vol<.67&&(level=2);for(var i=0;i<4;i++)removeClass(this.el_,"vjs-vol-"+i);addClass(this.el_,"vjs-vol-"+level)},_proto.updateControlText_=function updateControlText_(){var soundOff,text=this.player_.muted()||0===this.player_.volume()?"Unmute":"Mute";this.controlText()!==text&&this.controlText(text)},MuteToggle}(Button);MuteToggle.prototype.controlText_="Mute",Component$1.registerComponent("MuteToggle",MuteToggle);var VolumePanel=function(_Component){function VolumePanel(player,options){var _this;return void 0===options&&(options={}),void 0!==options.inline?options.inline=options.inline:options.inline=!0,(void 0===options.volumeControl||isPlain(options.volumeControl))&&(options.volumeControl=options.volumeControl||{},options.volumeControl.vertical=!options.inline),(_this=_Component.call(this,player,options)||this).handleKeyPressHandler_=function(e){return _this.handleKeyPress(e)},_this.on(player,["loadstart"],(function(e){return _this.volumePanelState_(e)})),_this.on(_this.muteToggle,"keyup",(function(e){return _this.handleKeyPress(e)})),_this.on(_this.volumeControl,"keyup",(function(e){return _this.handleVolumeControlKeyUp(e)})),_this.on("keydown",(function(e){return _this.handleKeyPress(e)})),_this.on("mouseover",(function(e){return _this.handleMouseOver(e)})),_this.on("mouseout",(function(e){return _this.handleMouseOut(e)})),_this.on(_this.volumeControl,["slideractive"],_this.sliderActive_),_this.on(_this.volumeControl,["sliderinactive"],_this.sliderInactive_),_this}inheritsLoose(VolumePanel,_Component);var _proto=VolumePanel.prototype;return _proto.sliderActive_=function sliderActive_(){this.addClass("vjs-slider-active")},_proto.sliderInactive_=function sliderInactive_(){this.removeClass("vjs-slider-active")},_proto.volumePanelState_=function volumePanelState_(){this.volumeControl.hasClass("vjs-hidden")&&this.muteToggle.hasClass("vjs-hidden")&&this.addClass("vjs-hidden"),this.volumeControl.hasClass("vjs-hidden")&&!this.muteToggle.hasClass("vjs-hidden")&&this.addClass("vjs-mute-toggle-only")},_proto.createEl=function createEl(){var orientationClass="vjs-volume-panel-horizontal";return this.options_.inline||(orientationClass="vjs-volume-panel-vertical"),_Component.prototype.createEl.call(this,"div",{className:"vjs-volume-panel vjs-control "+orientationClass})},_proto.dispose=function dispose(){this.handleMouseOut(),_Component.prototype.dispose.call(this)},_proto.handleVolumeControlKeyUp=function handleVolumeControlKeyUp(event){keycode.isEventKey(event,"Esc")&&this.muteToggle.focus()},_proto.handleMouseOver=function handleMouseOver(event){this.addClass("vjs-hover"),on(document,"keyup",this.handleKeyPressHandler_)},_proto.handleMouseOut=function handleMouseOut(event){this.removeClass("vjs-hover"),off(document,"keyup",this.handleKeyPressHandler_)},_proto.handleKeyPress=function handleKeyPress(event){keycode.isEventKey(event,"Esc")&&this.handleMouseOut()},VolumePanel}(Component$1);VolumePanel.prototype.options_={children:["muteToggle","volumeControl"]},Component$1.registerComponent("VolumePanel",VolumePanel);var Menu=function(_Component){function Menu(player,options){var _this;return _this=_Component.call(this,player,options)||this,options&&(_this.menuButton_=options.menuButton),_this.focusedChild_=-1,_this.on("keydown",(function(e){return _this.handleKeyDown(e)})),_this.boundHandleBlur_=function(e){return _this.handleBlur(e)},_this.boundHandleTapClick_=function(e){return _this.handleTapClick(e)},_this}inheritsLoose(Menu,_Component);var _proto=Menu.prototype;return _proto.addEventListenerForItem=function addEventListenerForItem(component){component instanceof Component$1&&(this.on(component,"blur",this.boundHandleBlur_),this.on(component,["tap","click"],this.boundHandleTapClick_))},_proto.removeEventListenerForItem=function removeEventListenerForItem(component){component instanceof Component$1&&(this.off(component,"blur",this.boundHandleBlur_),this.off(component,["tap","click"],this.boundHandleTapClick_))},_proto.removeChild=function removeChild(component){"string"==typeof component&&(component=this.getChild(component)),this.removeEventListenerForItem(component),_Component.prototype.removeChild.call(this,component)},_proto.addItem=function addItem(component){var childComponent=this.addChild(component);childComponent&&this.addEventListenerForItem(childComponent)},_proto.createEl=function createEl$1(){var contentElType=this.options_.contentElType||"ul";this.contentEl_=createEl(contentElType,{className:"vjs-menu-content"}),this.contentEl_.setAttribute("role","menu");var el=_Component.prototype.createEl.call(this,"div",{append:this.contentEl_,className:"vjs-menu"});return el.appendChild(this.contentEl_),on(el,"click",(function(event){event.preventDefault(),event.stopImmediatePropagation()})),el},_proto.dispose=function dispose(){this.contentEl_=null,this.boundHandleBlur_=null,this.boundHandleTapClick_=null,_Component.prototype.dispose.call(this)},_proto.handleBlur=function handleBlur(event){var relatedTarget=event.relatedTarget||document.activeElement;if(!this.children().some((function(element){return element.el()===relatedTarget}))){var btn=this.menuButton_;btn&&btn.buttonPressed_&&relatedTarget!==btn.el().firstChild&&btn.unpressButton()}},_proto.handleTapClick=function handleTapClick(event){if(this.menuButton_){this.menuButton_.unpressButton();var childComponents=this.children();if(!Array.isArray(childComponents))return;var foundComponent=childComponents.filter((function(component){return component.el()===event.target}))[0];if(!foundComponent)return;"CaptionSettingsMenuItem"!==foundComponent.name()&&this.menuButton_.focus()}},_proto.handleKeyDown=function handleKeyDown(event){keycode.isEventKey(event,"Left")||keycode.isEventKey(event,"Down")?(event.preventDefault(),event.stopPropagation(),this.stepForward()):(keycode.isEventKey(event,"Right")||keycode.isEventKey(event,"Up"))&&(event.preventDefault(),event.stopPropagation(),this.stepBack())},_proto.stepForward=function stepForward(){var stepChild=0;void 0!==this.focusedChild_&&(stepChild=this.focusedChild_+1),this.focus(stepChild)},_proto.stepBack=function stepBack(){var stepChild=0;void 0!==this.focusedChild_&&(stepChild=this.focusedChild_-1),this.focus(stepChild)},_proto.focus=function focus(item){void 0===item&&(item=0);var children=this.children().slice(),haveTitle;children.length&&children[0].hasClass("vjs-menu-title")&&children.shift(),children.length>0&&(item<0?item=0:item>=children.length&&(item=children.length-1),this.focusedChild_=item,children[item].el_.focus())},Menu}(Component$1);Component$1.registerComponent("Menu",Menu);var MenuButton=function(_Component){function MenuButton(player,options){var _this;void 0===options&&(options={}),(_this=_Component.call(this,player,options)||this).menuButton_=new Button(player,options),_this.menuButton_.controlText(_this.controlText_),_this.menuButton_.el_.setAttribute("aria-haspopup","true");var buttonClass=Button.prototype.buildCSSClass();_this.menuButton_.el_.className=_this.buildCSSClass()+" "+buttonClass,_this.menuButton_.removeClass("vjs-control"),_this.addChild(_this.menuButton_),_this.update(),_this.enabled_=!0;var handleClick=function handleClick(e){return _this.handleClick(e)};return _this.handleMenuKeyUp_=function(e){return _this.handleMenuKeyUp(e)},_this.on(_this.menuButton_,"tap",handleClick),_this.on(_this.menuButton_,"click",handleClick),_this.on(_this.menuButton_,"keydown",(function(e){return _this.handleKeyDown(e)})),_this.on(_this.menuButton_,"mouseenter",(function(){_this.addClass("vjs-hover"),_this.menu.show(),on(document,"keyup",_this.handleMenuKeyUp_)})),_this.on("mouseleave",(function(e){return _this.handleMouseLeave(e)})),_this.on("keydown",(function(e){return _this.handleSubmenuKeyDown(e)})),_this}inheritsLoose(MenuButton,_Component);var _proto=MenuButton.prototype;return _proto.update=function update(){var menu=this.createMenu();this.menu&&(this.menu.dispose(),this.removeChild(this.menu)),this.menu=menu,this.addChild(menu),this.buttonPressed_=!1,this.menuButton_.el_.setAttribute("aria-expanded","false"),this.items&&this.items.length<=this.hideThreshold_?this.hide():this.show()},_proto.createMenu=function createMenu(){var menu=new Menu(this.player_,{menuButton:this});if(this.hideThreshold_=0,this.options_.title){var titleEl=createEl("li",{className:"vjs-menu-title",textContent:toTitleCase$1(this.options_.title),tabIndex:-1}),titleComponent=new Component$1(this.player_,{el:titleEl});menu.addItem(titleComponent)}if(this.items=this.createItems(),this.items)for(var i=0;i-1&&"showing"===track.mode){shouldBeSelected=!1;break}}shouldBeSelected!==this.isSelected_&&this.selected(shouldBeSelected)},_proto.handleSelectedLanguageChange=function handleSelectedLanguageChange(event){for(var tracks=this.player().textTracks(),allHidden=!0,i=0,l=tracks.length;i-1&&"showing"===track.mode){allHidden=!1;break}}allHidden&&(this.player_.cache_.selectedLanguage={enabled:!1})},OffTextTrackMenuItem}(TextTrackMenuItem);Component$1.registerComponent("OffTextTrackMenuItem",OffTextTrackMenuItem);var TextTrackButton=function(_TrackButton){function TextTrackButton(player,options){return void 0===options&&(options={}),options.tracks=player.textTracks(),_TrackButton.call(this,player,options)||this}var _proto;return inheritsLoose(TextTrackButton,_TrackButton),TextTrackButton.prototype.createItems=function createItems(items,TrackMenuItem){var label;void 0===items&&(items=[]),void 0===TrackMenuItem&&(TrackMenuItem=TextTrackMenuItem),this.label_&&(label=this.label_+" off"),items.push(new OffTextTrackMenuItem(this.player_,{kinds:this.kinds_,kind:this.kind_,label:label})),this.hideThreshold_+=1;var tracks=this.player_.textTracks();Array.isArray(this.kinds_)||(this.kinds_=[this.kind_]);for(var i=0;i-1){var item=new TrackMenuItem(this.player_,{track:track,kinds:this.kinds_,kind:this.kind_,selectable:!0,multiSelectable:!1});item.addClass("vjs-"+track.kind+"-menu-item"),items.push(item)}}return items},TextTrackButton}(TrackButton);Component$1.registerComponent("TextTrackButton",TextTrackButton);var ChaptersTrackMenuItem=function(_MenuItem){function ChaptersTrackMenuItem(player,options){var _this,track=options.track,cue=options.cue,currentTime=player.currentTime();return options.selectable=!0,options.multiSelectable=!1,options.label=cue.text,options.selected=cue.startTime<=currentTime&¤tTime=0;i--){var track=tracks[i];if(track.kind===this.kind_)return track}},_proto.getMenuCaption=function getMenuCaption(){return this.track_&&this.track_.label?this.track_.label:this.localize(toTitleCase$1(this.kind_))},_proto.createMenu=function createMenu(){return this.options_.title=this.getMenuCaption(),_TextTrackButton.prototype.createMenu.call(this)},_proto.createItems=function createItems(){var items=[];if(!this.track_)return items;var cues=this.track_.cues;if(!cues)return items;for(var i=0,l=cues.length;i-1&&(_this.label_="captions"),_this.menuButton_.controlText(toTitleCase$1(_this.label_)),_this}inheritsLoose(SubsCapsButton,_TextTrackButton);var _proto=SubsCapsButton.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-subs-caps-button "+_TextTrackButton.prototype.buildCSSClass.call(this)},_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){return"vjs-subs-caps-button "+_TextTrackButton.prototype.buildWrapperCSSClass.call(this)},_proto.createItems=function createItems(){var items=[];return this.player().tech_&&this.player().tech_.featuresNativeTextTracks||!this.player().getChild("textTrackSettings")||(items.push(new CaptionSettingsMenuItem(this.player_,{kind:this.label_})),this.hideThreshold_+=1),items=_TextTrackButton.prototype.createItems.call(this,items,SubsCapsMenuItem)},SubsCapsButton}(TextTrackButton);SubsCapsButton.prototype.kinds_=["captions","subtitles"],SubsCapsButton.prototype.controlText_="Subtitles",Component$1.registerComponent("SubsCapsButton",SubsCapsButton);var AudioTrackMenuItem=function(_MenuItem){function AudioTrackMenuItem(player,options){var _this,track=options.track,tracks=player.audioTracks();options.label=track.label||track.language||"Unknown",options.selected=track.enabled,(_this=_MenuItem.call(this,player,options)||this).track=track,_this.addClass("vjs-"+track.kind+"-menu-item");var changeHandler=function changeHandler(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];_this.handleTracksChange.apply(assertThisInitialized(_this),args)};return tracks.addEventListener("change",changeHandler),_this.on("dispose",(function(){tracks.removeEventListener("change",changeHandler)})),_this}inheritsLoose(AudioTrackMenuItem,_MenuItem);var _proto=AudioTrackMenuItem.prototype;return _proto.createEl=function createEl$1(type,props,attrs){var el=_MenuItem.prototype.createEl.call(this,type,props,attrs),parentSpan=el.querySelector(".vjs-menu-item-text");return"main-desc"===this.options_.track.kind&&(parentSpan.appendChild(createEl("span",{className:"vjs-icon-placeholder"},{"aria-hidden":!0})),parentSpan.appendChild(createEl("span",{className:"vjs-control-text",textContent:" "+this.localize("Descriptions")}))),el},_proto.handleClick=function handleClick(event){if(_MenuItem.prototype.handleClick.call(this,event),this.track.enabled=!0,this.player_.tech_.featuresNativeAudioTracks)for(var tracks=this.player_.audioTracks(),i=0;i=0;i--)items.push(new PlaybackRateMenuItem(this.player(),{rate:rates[i]+"x"}));return items},_proto.updateARIAAttributes=function updateARIAAttributes(){this.el().setAttribute("aria-valuenow",this.player().playbackRate())},_proto.handleClick=function handleClick(event){var currentRate=this.player().playbackRate(),rates=this.playbackRates(),currentIndex,newIndex=(rates.indexOf(currentRate)+1)%rates.length;this.player().playbackRate(rates[newIndex])},_proto.handlePlaybackRateschange=function handlePlaybackRateschange(event){this.update()},_proto.playbackRates=function playbackRates(){var player=this.player();return player.playbackRates&&player.playbackRates()||[]},_proto.playbackRateSupported=function playbackRateSupported(){return this.player().tech_&&this.player().tech_.featuresPlaybackRate&&this.playbackRates()&&this.playbackRates().length>0},_proto.updateVisibility=function updateVisibility(event){this.playbackRateSupported()?this.removeClass("vjs-hidden"):this.addClass("vjs-hidden")},_proto.updateLabel=function updateLabel(event){this.playbackRateSupported()&&(this.labelEl_.textContent=this.player().playbackRate()+"x")},PlaybackRateMenuButton}(MenuButton);PlaybackRateMenuButton.prototype.controlText_="Playback Rate",Component$1.registerComponent("PlaybackRateMenuButton",PlaybackRateMenuButton);var Spacer=function(_Component){function Spacer(){return _Component.apply(this,arguments)||this}inheritsLoose(Spacer,_Component);var _proto=Spacer.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-spacer "+_Component.prototype.buildCSSClass.call(this)},_proto.createEl=function createEl(tag,props,attributes){return void 0===tag&&(tag="div"),void 0===props&&(props={}),void 0===attributes&&(attributes={}),props.className||(props.className=this.buildCSSClass()),_Component.prototype.createEl.call(this,tag,props,attributes)},Spacer}(Component$1);Component$1.registerComponent("Spacer",Spacer);var CustomControlSpacer=function(_Spacer){function CustomControlSpacer(){return _Spacer.apply(this,arguments)||this}inheritsLoose(CustomControlSpacer,_Spacer);var _proto=CustomControlSpacer.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-custom-control-spacer "+_Spacer.prototype.buildCSSClass.call(this)},_proto.createEl=function createEl(){return _Spacer.prototype.createEl.call(this,"div",{className:this.buildCSSClass(),textContent:" "})},CustomControlSpacer}(Spacer);Component$1.registerComponent("CustomControlSpacer",CustomControlSpacer);var ControlBar=function(_Component){function ControlBar(){return _Component.apply(this,arguments)||this}var _proto;return inheritsLoose(ControlBar,_Component),ControlBar.prototype.createEl=function createEl(){return _Component.prototype.createEl.call(this,"div",{className:"vjs-control-bar",dir:"ltr"})},ControlBar}(Component$1);ControlBar.prototype.options_={children:["playToggle","volumePanel","currentTimeDisplay","timeDivider","durationDisplay","progressControl","liveDisplay","seekToLive","remainingTimeDisplay","customControlSpacer","playbackRateMenuButton","chaptersButton","descriptionsButton","subsCapsButton","audioTrackButton","fullscreenToggle"]},"exitPictureInPicture"in document&&ControlBar.prototype.options_.children.splice(ControlBar.prototype.options_.children.length-1,0,"pictureInPictureToggle"),Component$1.registerComponent("ControlBar",ControlBar);var ErrorDisplay=function(_ModalDialog){function ErrorDisplay(player,options){var _this;return(_this=_ModalDialog.call(this,player,options)||this).on(player,"error",(function(e){return _this.open(e)})),_this}inheritsLoose(ErrorDisplay,_ModalDialog);var _proto=ErrorDisplay.prototype;return _proto.buildCSSClass=function buildCSSClass(){return"vjs-error-display "+_ModalDialog.prototype.buildCSSClass.call(this)},_proto.content=function content(){var error=this.player().error();return error?this.localize(error.message):""},ErrorDisplay}(ModalDialog);ErrorDisplay.prototype.options_=_extends_1({},ModalDialog.prototype.options_,{pauseOnOpen:!1,fillAlways:!0,temporary:!1,uncloseable:!0}),Component$1.registerComponent("ErrorDisplay",ErrorDisplay);var LOCAL_STORAGE_KEY$1="vjs-text-track-settings",COLOR_BLACK=["#000","Black"],COLOR_BLUE=["#00F","Blue"],COLOR_CYAN=["#0FF","Cyan"],COLOR_GREEN=["#0F0","Green"],COLOR_MAGENTA=["#F0F","Magenta"],COLOR_RED=["#F00","Red"],COLOR_WHITE=["#FFF","White"],COLOR_YELLOW=["#FF0","Yellow"],OPACITY_OPAQUE=["1","Opaque"],OPACITY_SEMI=["0.5","Semi-Transparent"],OPACITY_TRANS=["0","Transparent"],selectConfigs={backgroundColor:{selector:".vjs-bg-color > select",id:"captions-background-color-%s",label:"Color",options:[COLOR_BLACK,COLOR_WHITE,COLOR_RED,COLOR_GREEN,COLOR_BLUE,COLOR_YELLOW,COLOR_MAGENTA,COLOR_CYAN]},backgroundOpacity:{selector:".vjs-bg-opacity > select",id:"captions-background-opacity-%s",label:"Transparency",options:[OPACITY_OPAQUE,OPACITY_SEMI,OPACITY_TRANS]},color:{selector:".vjs-fg-color > select",id:"captions-foreground-color-%s",label:"Color",options:[COLOR_WHITE,COLOR_BLACK,COLOR_RED,COLOR_GREEN,COLOR_BLUE,COLOR_YELLOW,COLOR_MAGENTA,COLOR_CYAN]},edgeStyle:{selector:".vjs-edge-style > select",id:"%s",label:"Text Edge Style",options:[["none","None"],["raised","Raised"],["depressed","Depressed"],["uniform","Uniform"],["dropshadow","Dropshadow"]]},fontFamily:{selector:".vjs-font-family > select",id:"captions-font-family-%s",label:"Font Family",options:[["proportionalSansSerif","Proportional Sans-Serif"],["monospaceSansSerif","Monospace Sans-Serif"],["proportionalSerif","Proportional Serif"],["monospaceSerif","Monospace Serif"],["casual","Casual"],["script","Script"],["small-caps","Small Caps"]]},fontPercent:{selector:".vjs-font-percent > select",id:"captions-font-size-%s",label:"Font Size",options:[["0.50","50%"],["0.75","75%"],["1.00","100%"],["1.25","125%"],["1.50","150%"],["1.75","175%"],["2.00","200%"],["3.00","300%"],["4.00","400%"]],default:2,parser:function parser(v){return"1.00"===v?null:Number(v)}},textOpacity:{selector:".vjs-text-opacity > select",id:"captions-foreground-opacity-%s",label:"Transparency",options:[OPACITY_OPAQUE,OPACITY_SEMI]},windowColor:{selector:".vjs-window-color > select",id:"captions-window-color-%s",label:"Color"},windowOpacity:{selector:".vjs-window-opacity > select",id:"captions-window-opacity-%s",label:"Transparency",options:[OPACITY_TRANS,OPACITY_SEMI,OPACITY_OPAQUE]}};function parseOptionValue(value,parser){if(parser&&(value=parser(value)),value&&"none"!==value)return value}function getSelectedOptionValue(el,parser){var value;return parseOptionValue(el.options[el.options.selectedIndex].value,parser)}function setSelectedOption(el,value,parser){if(value)for(var i=0;i',this.localize(config.label),"",'").join("")},_proto.createElFgColor_=function createElFgColor_(){var legendId="captions-text-legend-"+this.id_;return['
','',this.localize("Text"),"",this.createElSelect_("color",legendId),'',this.createElSelect_("textOpacity",legendId),"","
"].join("")},_proto.createElBgColor_=function createElBgColor_(){var legendId="captions-background-"+this.id_;return['
','',this.localize("Background"),"",this.createElSelect_("backgroundColor",legendId),'',this.createElSelect_("backgroundOpacity",legendId),"","
"].join("")},_proto.createElWinColor_=function createElWinColor_(){var legendId="captions-window-"+this.id_;return['
','',this.localize("Window"),"",this.createElSelect_("windowColor",legendId),'',this.createElSelect_("windowOpacity",legendId),"","
"].join("")},_proto.createElColors_=function createElColors_(){return createEl("div",{className:"vjs-track-settings-colors",innerHTML:[this.createElFgColor_(),this.createElBgColor_(),this.createElWinColor_()].join("")})},_proto.createElFont_=function createElFont_(){return createEl("div",{className:"vjs-track-settings-font",innerHTML:['
',this.createElSelect_("fontPercent","","legend"),"
",'
',this.createElSelect_("edgeStyle","","legend"),"
",'
',this.createElSelect_("fontFamily","","legend"),"
"].join("")})},_proto.createElControls_=function createElControls_(){var defaultsDescription=this.localize("restore all settings to the default values");return createEl("div",{className:"vjs-track-settings-controls",innerHTML:['",'"].join("")})},_proto.content=function content(){return[this.createElColors_(),this.createElFont_(),this.createElControls_()]},_proto.label=function label(){return this.localize("Caption Settings Dialog")},_proto.description=function description(){return this.localize("Beginning of dialog window. Escape will cancel and close the window.")},_proto.buildCSSClass=function buildCSSClass(){return _ModalDialog.prototype.buildCSSClass.call(this)+" vjs-text-track-settings"},_proto.getValues=function getValues(){var _this3=this;return reduce(selectConfigs,(function(accum,config,key){var value=getSelectedOptionValue(_this3.$(config.selector),config.parser);return void 0!==value&&(accum[key]=value),accum}),{})},_proto.setValues=function setValues(values){var _this4=this;each(selectConfigs,(function(config,key){setSelectedOption(_this4.$(config.selector),values[key],config.parser)}))},_proto.setDefaults=function setDefaults(){var _this5=this;each(selectConfigs,(function(config){var index=config.hasOwnProperty("default")?config.default:0;_this5.$(config.selector).selectedIndex=index}))},_proto.restoreSettings=function restoreSettings(){var values;try{values=JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY$1))}catch(err){log$1.warn(err)}values&&this.setValues(values)},_proto.saveSettings=function saveSettings(){if(this.options_.persistTextTrackSettings){var values=this.getValues();try{Object.keys(values).length?window.localStorage.setItem(LOCAL_STORAGE_KEY$1,JSON.stringify(values)):window.localStorage.removeItem(LOCAL_STORAGE_KEY$1)}catch(err){log$1.warn(err)}}},_proto.updateDisplay=function updateDisplay(){var ttDisplay=this.player_.getChild("textTrackDisplay");ttDisplay&&ttDisplay.updateDisplay()},_proto.conditionalBlur_=function conditionalBlur_(){this.previouslyActiveEl_=null;var cb=this.player_.controlBar,subsCapsBtn=cb&&cb.subsCapsButton,ccBtn=cb&&cb.captionsButton;subsCapsBtn?subsCapsBtn.focus():ccBtn&&ccBtn.focus()},TextTrackSettings}(ModalDialog);Component$1.registerComponent("TextTrackSettings",TextTrackSettings);var ResizeManager=function(_Component){function ResizeManager(player,options){var _this,RESIZE_OBSERVER_AVAILABLE=options.ResizeObserver||window.ResizeObserver;null===options.ResizeObserver&&(RESIZE_OBSERVER_AVAILABLE=!1);var options_=mergeOptions$3({createEl:!RESIZE_OBSERVER_AVAILABLE,reportTouchActivity:!1},options);return(_this=_Component.call(this,player,options_)||this).ResizeObserver=options.ResizeObserver||window.ResizeObserver,_this.loadListener_=null,_this.resizeObserver_=null,_this.debouncedHandler_=debounce((function(){_this.resizeHandler()}),100,!1,assertThisInitialized(_this)),RESIZE_OBSERVER_AVAILABLE?(_this.resizeObserver_=new _this.ResizeObserver(_this.debouncedHandler_),_this.resizeObserver_.observe(player.el())):(_this.loadListener_=function(){if(_this.el_&&_this.el_.contentWindow){var debouncedHandler_=_this.debouncedHandler_,unloadListener_=_this.unloadListener_=function(){off(this,"resize",debouncedHandler_),off(this,"unload",unloadListener_),unloadListener_=null};on(_this.el_.contentWindow,"unload",unloadListener_),on(_this.el_.contentWindow,"resize",debouncedHandler_)}},_this.one("load",_this.loadListener_)),_this}inheritsLoose(ResizeManager,_Component);var _proto=ResizeManager.prototype;return _proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,"iframe",{className:"vjs-resize-manager",tabIndex:-1},{"aria-hidden":"true"})},_proto.resizeHandler=function resizeHandler(){this.player_&&this.player_.trigger&&this.player_.trigger("playerresize")},_proto.dispose=function dispose(){this.debouncedHandler_&&this.debouncedHandler_.cancel(),this.resizeObserver_&&(this.player_.el()&&this.resizeObserver_.unobserve(this.player_.el()),this.resizeObserver_.disconnect()),this.loadListener_&&this.off("load",this.loadListener_),this.el_&&this.el_.contentWindow&&this.unloadListener_&&this.unloadListener_.call(this.el_.contentWindow),this.ResizeObserver=null,this.resizeObserver=null,this.debouncedHandler_=null,this.loadListener_=null,_Component.prototype.dispose.call(this)},ResizeManager}(Component$1);Component$1.registerComponent("ResizeManager",ResizeManager);var defaults={trackingThreshold:20,liveTolerance:15},LiveTracker=function(_Component){function LiveTracker(player,options){var _this,options_=mergeOptions$3(defaults,options,{createEl:!1});return(_this=_Component.call(this,player,options_)||this).handleVisibilityChange_=function(e){return _this.handleVisibilityChange(e)},_this.trackLiveHandler_=function(){return _this.trackLive_()},_this.handlePlay_=function(e){return _this.handlePlay(e)},_this.handleFirstTimeupdate_=function(e){return _this.handleFirstTimeupdate(e)},_this.handleSeeked_=function(e){return _this.handleSeeked(e)},_this.seekToLiveEdge_=function(e){return _this.seekToLiveEdge(e)},_this.reset_(),_this.on(_this.player_,"durationchange",(function(e){return _this.handleDurationchange(e)})),_this.on(_this.player_,"canplay",(function(){return _this.toggleTracking()})),IE_VERSION&&"hidden"in document&&"visibilityState"in document&&_this.on(document,"visibilitychange",_this.handleVisibilityChange_),_this}inheritsLoose(LiveTracker,_Component);var _proto=LiveTracker.prototype;return _proto.handleVisibilityChange=function handleVisibilityChange(){this.player_.duration()===1/0&&(document.hidden?this.stopTracking():this.startTracking())},_proto.trackLive_=function trackLive_(){var seekable=this.player_.seekable();if(seekable&&seekable.length){var newTime=Number(window.performance.now().toFixed(4)),deltaTime=-1===this.lastTime_?0:(newTime-this.lastTime_)/1e3;this.lastTime_=newTime,this.pastSeekEnd_=this.pastSeekEnd()+deltaTime;var liveCurrentTime=this.liveCurrentTime(),currentTime=this.player_.currentTime(),isBehind=this.player_.paused()||this.seekedBehindLive_||Math.abs(liveCurrentTime-currentTime)>this.options_.liveTolerance;this.timeupdateSeen_&&liveCurrentTime!==1/0||(isBehind=!1),isBehind!==this.behindLiveEdge_&&(this.behindLiveEdge_=isBehind,this.trigger("liveedgechange"))}},_proto.handleDurationchange=function handleDurationchange(){this.toggleTracking()},_proto.toggleTracking=function toggleTracking(){this.player_.duration()===1/0&&this.liveWindow()>=this.options_.trackingThreshold?(this.player_.options_.liveui&&this.player_.addClass("vjs-liveui"),this.startTracking()):(this.player_.removeClass("vjs-liveui"),this.stopTracking())},_proto.startTracking=function startTracking(){this.isTracking()||(this.timeupdateSeen_||(this.timeupdateSeen_=this.player_.hasStarted()),this.trackingInterval_=this.setInterval(this.trackLiveHandler_,30),this.trackLive_(),this.on(this.player_,["play","pause"],this.trackLiveHandler_),this.timeupdateSeen_?this.on(this.player_,"seeked",this.handleSeeked_):(this.one(this.player_,"play",this.handlePlay_),this.one(this.player_,"timeupdate",this.handleFirstTimeupdate_)))},_proto.handleFirstTimeupdate=function handleFirstTimeupdate(){this.timeupdateSeen_=!0,this.on(this.player_,"seeked",this.handleSeeked_)},_proto.handleSeeked=function handleSeeked(){var timeDiff=Math.abs(this.liveCurrentTime()-this.player_.currentTime());this.seekedBehindLive_=this.nextSeekedFromUser_&&timeDiff>2,this.nextSeekedFromUser_=!1,this.trackLive_()},_proto.handlePlay=function handlePlay(){this.one(this.player_,"timeupdate",this.seekToLiveEdge_)},_proto.reset_=function reset_(){this.lastTime_=-1,this.pastSeekEnd_=0,this.lastSeekEnd_=-1,this.behindLiveEdge_=!0,this.timeupdateSeen_=!1,this.seekedBehindLive_=!1,this.nextSeekedFromUser_=!1,this.clearInterval(this.trackingInterval_),this.trackingInterval_=null,this.off(this.player_,["play","pause"],this.trackLiveHandler_),this.off(this.player_,"seeked",this.handleSeeked_),this.off(this.player_,"play",this.handlePlay_),this.off(this.player_,"timeupdate",this.handleFirstTimeupdate_),this.off(this.player_,"timeupdate",this.seekToLiveEdge_)},_proto.nextSeekedFromUser=function nextSeekedFromUser(){this.nextSeekedFromUser_=!0},_proto.stopTracking=function stopTracking(){this.isTracking()&&(this.reset_(),this.trigger("liveedgechange"))},_proto.seekableEnd=function seekableEnd(){for(var seekable=this.player_.seekable(),seekableEnds=[],i=seekable?seekable.length:0;i--;)seekableEnds.push(seekable.end(i));return seekableEnds.length?seekableEnds.sort()[seekableEnds.length-1]:1/0},_proto.seekableStart=function seekableStart(){for(var seekable=this.player_.seekable(),seekableStarts=[],i=seekable?seekable.length:0;i--;)seekableStarts.push(seekable.start(i));return seekableStarts.length?seekableStarts.sort()[0]:0},_proto.liveWindow=function liveWindow(){var liveCurrentTime=this.liveCurrentTime();return liveCurrentTime===1/0?0:liveCurrentTime-this.seekableStart()},_proto.isLive=function isLive(){return this.isTracking()},_proto.atLiveEdge=function atLiveEdge(){return!this.behindLiveEdge()},_proto.liveCurrentTime=function liveCurrentTime(){return this.pastSeekEnd()+this.seekableEnd()},_proto.pastSeekEnd=function pastSeekEnd(){var seekableEnd=this.seekableEnd();return-1!==this.lastSeekEnd_&&seekableEnd!==this.lastSeekEnd_&&(this.pastSeekEnd_=0),this.lastSeekEnd_=seekableEnd,this.pastSeekEnd_},_proto.behindLiveEdge=function behindLiveEdge(){return this.behindLiveEdge_},_proto.isTracking=function isTracking(){return"number"==typeof this.trackingInterval_},_proto.seekToLiveEdge=function seekToLiveEdge(){this.seekedBehindLive_=!1,this.atLiveEdge()||(this.nextSeekedFromUser_=!1,this.player_.currentTime(this.liveCurrentTime()))},_proto.dispose=function dispose(){this.off(document,"visibilitychange",this.handleVisibilityChange_),this.stopTracking(),_Component.prototype.dispose.call(this)},LiveTracker}(Component$1);Component$1.registerComponent("LiveTracker",LiveTracker);var sourcesetLoad=function sourcesetLoad(tech){var el=tech.el();if(el.hasAttribute("src"))return tech.triggerSourceset(el.src),!0;var sources=tech.$$("source"),srcUrls=[],src="";if(!sources.length)return!1;for(var i=0;i=2&&eventsToTrigger.push("loadeddata"),el.readyState>=3&&eventsToTrigger.push("canplay"),el.readyState>=4&&eventsToTrigger.push("canplaythrough"),this.ready((function(){eventsToTrigger.forEach((function(type){this.trigger(type)}),this)}))}},_proto.setScrubbing=function setScrubbing(isScrubbing){this.isScrubbing_=isScrubbing},_proto.scrubbing=function scrubbing(){return this.isScrubbing_},_proto.setCurrentTime=function setCurrentTime(seconds){try{this.isScrubbing_&&this.el_.fastSeek&&IS_ANY_SAFARI?this.el_.fastSeek(seconds):this.el_.currentTime=seconds}catch(e){log$1(e,"Video is not ready. (Video.js)")}},_proto.duration=function duration(){var _this5=this;if(this.el_.duration===1/0&&IS_ANDROID&&IS_CHROME&&0===this.el_.currentTime){var checkProgress=function checkProgress(){_this5.el_.currentTime>0&&(_this5.el_.duration===1/0&&_this5.trigger("durationchange"),_this5.off("timeupdate",checkProgress))};return this.on("timeupdate",checkProgress),NaN}return this.el_.duration||NaN},_proto.width=function width(){return this.el_.offsetWidth},_proto.height=function height(){return this.el_.offsetHeight},_proto.proxyWebkitFullscreen_=function proxyWebkitFullscreen_(){var _this6=this;if("webkitDisplayingFullscreen"in this.el_){var endFn=function endFn(){this.trigger("fullscreenchange",{isFullscreen:!1}),this.el_.controls&&!this.options_.nativeControlsForTouch&&this.controls()&&(this.el_.controls=!1)},beginFn=function beginFn(){"webkitPresentationMode"in this.el_&&"picture-in-picture"!==this.el_.webkitPresentationMode&&(this.one("webkitendfullscreen",endFn),this.trigger("fullscreenchange",{isFullscreen:!0,nativeIOSFullscreen:!0}))};this.on("webkitbeginfullscreen",beginFn),this.on("dispose",(function(){_this6.off("webkitbeginfullscreen",beginFn),_this6.off("webkitendfullscreen",endFn)}))}},_proto.supportsFullScreen=function supportsFullScreen(){if("function"==typeof this.el_.webkitEnterFullScreen){var userAgent=window.navigator&&window.navigator.userAgent||"";if(/Android/.test(userAgent)||!/Chrome|Mac OS X 10.5/.test(userAgent))return!0}return!1},_proto.enterFullScreen=function enterFullScreen(){var video=this.el_;if(video.paused&&video.networkState<=video.HAVE_METADATA)silencePromise(this.el_.play()),this.setTimeout((function(){video.pause();try{video.webkitEnterFullScreen()}catch(e){this.trigger("fullscreenerror",e)}}),0);else try{video.webkitEnterFullScreen()}catch(e){this.trigger("fullscreenerror",e)}},_proto.exitFullScreen=function exitFullScreen(){this.el_.webkitDisplayingFullscreen?this.el_.webkitExitFullScreen():this.trigger("fullscreenerror",new Error("The video is not fullscreen"))},_proto.requestPictureInPicture=function requestPictureInPicture(){return this.el_.requestPictureInPicture()},_proto.requestVideoFrameCallback=function requestVideoFrameCallback(cb){return this.featuresVideoFrameCallback?this.el_.requestVideoFrameCallback(cb):_Tech.prototype.requestVideoFrameCallback.call(this,cb)},_proto.cancelVideoFrameCallback=function cancelVideoFrameCallback(id){this.featuresVideoFrameCallback?this.el_.cancelVideoFrameCallback(id):_Tech.prototype.cancelVideoFrameCallback.call(this,id)},_proto.src=function src(_src){if(void 0===_src)return this.el_.src;this.setSrc(_src)},_proto.reset=function reset(){Html5.resetMediaElement(this.el_)},_proto.currentSrc=function currentSrc(){return this.currentSource_?this.currentSource_.src:this.el_.currentSrc},_proto.setControls=function setControls(val){this.el_.controls=!!val},_proto.addTextTrack=function addTextTrack(kind,label,language){return this.featuresNativeTextTracks?this.el_.addTextTrack(kind,label,language):_Tech.prototype.addTextTrack.call(this,kind,label,language)},_proto.createRemoteTextTrack=function createRemoteTextTrack(options){if(!this.featuresNativeTextTracks)return _Tech.prototype.createRemoteTextTrack.call(this,options);var htmlTrackElement=document.createElement("track");return options.kind&&(htmlTrackElement.kind=options.kind),options.label&&(htmlTrackElement.label=options.label),(options.language||options.srclang)&&(htmlTrackElement.srclang=options.language||options.srclang),options.default&&(htmlTrackElement.default=options.default),options.id&&(htmlTrackElement.id=options.id),options.src&&(htmlTrackElement.src=options.src),htmlTrackElement},_proto.addRemoteTextTrack=function addRemoteTextTrack(options,manualCleanup){var htmlTrackElement=_Tech.prototype.addRemoteTextTrack.call(this,options,manualCleanup);return this.featuresNativeTextTracks&&this.el().appendChild(htmlTrackElement),htmlTrackElement},_proto.removeRemoteTextTrack=function removeRemoteTextTrack(track){if(_Tech.prototype.removeRemoteTextTrack.call(this,track),this.featuresNativeTextTracks)for(var tracks=this.$$("track"),i=tracks.length;i--;)track!==tracks[i]&&track!==tracks[i].track||this.el().removeChild(tracks[i])},_proto.getVideoPlaybackQuality=function getVideoPlaybackQuality(){if("function"==typeof this.el().getVideoPlaybackQuality)return this.el().getVideoPlaybackQuality();var videoPlaybackQuality={};return void 0!==this.el().webkitDroppedFrameCount&&void 0!==this.el().webkitDecodedFrameCount&&(videoPlaybackQuality.droppedVideoFrames=this.el().webkitDroppedFrameCount,videoPlaybackQuality.totalVideoFrames=this.el().webkitDecodedFrameCount),window.performance&&"function"==typeof window.performance.now?videoPlaybackQuality.creationTime=window.performance.now():window.performance&&window.performance.timing&&"number"==typeof window.performance.timing.navigationStart&&(videoPlaybackQuality.creationTime=window.Date.now()-window.performance.timing.navigationStart),videoPlaybackQuality},Html5}(Tech),canPlayType;defineLazyProperty(Html5,"TEST_VID",(function(){if(isReal()){var video=document.createElement("video"),track=document.createElement("track");return track.kind="captions",track.srclang="en",track.label="English",video.appendChild(track),video}})),Html5.isSupported=function(){try{Html5.TEST_VID.volume=.5}catch(e){return!1}return!(!Html5.TEST_VID||!Html5.TEST_VID.canPlayType)},Html5.canPlayType=function(type){return Html5.TEST_VID.canPlayType(type)},Html5.canPlaySource=function(srcObj,options){return Html5.canPlayType(srcObj.type)},Html5.canControlVolume=function(){try{var volume=Html5.TEST_VID.volume;Html5.TEST_VID.volume=volume/2+.1;var canControl=volume!==Html5.TEST_VID.volume;return canControl&&IS_IOS?(window.setTimeout((function(){Html5&&Html5.prototype&&(Html5.prototype.featuresVolumeControl=volume!==Html5.TEST_VID.volume)})),!1):canControl}catch(e){return!1}},Html5.canMuteVolume=function(){try{var muted=Html5.TEST_VID.muted;return Html5.TEST_VID.muted=!muted,Html5.TEST_VID.muted?setAttribute(Html5.TEST_VID,"muted","muted"):removeAttribute(Html5.TEST_VID,"muted","muted"),muted!==Html5.TEST_VID.muted}catch(e){return!1}},Html5.canControlPlaybackRate=function(){if(IS_ANDROID&&IS_CHROME&&CHROME_VERSION<58)return!1;try{var playbackRate=Html5.TEST_VID.playbackRate;return Html5.TEST_VID.playbackRate=playbackRate/2+.1,playbackRate!==Html5.TEST_VID.playbackRate}catch(e){return!1}},Html5.canOverrideAttributes=function(){try{var noop=function noop(){};Object.defineProperty(document.createElement("video"),"src",{get:noop,set:noop}),Object.defineProperty(document.createElement("audio"),"src",{get:noop,set:noop}),Object.defineProperty(document.createElement("video"),"innerHTML",{get:noop,set:noop}),Object.defineProperty(document.createElement("audio"),"innerHTML",{get:noop,set:noop})}catch(e){return!1}return!0},Html5.supportsNativeTextTracks=function(){return IS_ANY_SAFARI||IS_IOS&&IS_CHROME},Html5.supportsNativeVideoTracks=function(){return!(!Html5.TEST_VID||!Html5.TEST_VID.videoTracks)},Html5.supportsNativeAudioTracks=function(){return!(!Html5.TEST_VID||!Html5.TEST_VID.audioTracks)},Html5.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","resize","volumechange"],[["featuresMuteControl","canMuteVolume"],["featuresPlaybackRate","canControlPlaybackRate"],["featuresSourceset","canOverrideAttributes"],["featuresNativeTextTracks","supportsNativeTextTracks"],["featuresNativeVideoTracks","supportsNativeVideoTracks"],["featuresNativeAudioTracks","supportsNativeAudioTracks"]].forEach((function(_ref){var key=_ref[0],fn=_ref[1];defineLazyProperty(Html5.prototype,key,(function(){return Html5[fn]()}),!0)})),Html5.prototype.featuresVolumeControl=Html5.canControlVolume(),Html5.prototype.movingMediaElementInDOM=!IS_IOS,Html5.prototype.featuresFullscreenResize=!0,Html5.prototype.featuresProgressEvents=!0,Html5.prototype.featuresTimeupdateEvents=!0,Html5.prototype.featuresVideoFrameCallback=!(!Html5.TEST_VID||!Html5.TEST_VID.requestVideoFrameCallback),Html5.patchCanPlayType=function(){ANDROID_VERSION>=4&&!IS_FIREFOX&&!IS_CHROME&&(canPlayType=Html5.TEST_VID&&Html5.TEST_VID.constructor.prototype.canPlayType,Html5.TEST_VID.constructor.prototype.canPlayType=function(type){var mpegurlRE;return type&&/^application\/(?:x-|vnd\.apple\.)mpegurl/i.test(type)?"maybe":canPlayType.call(this,type)})},Html5.unpatchCanPlayType=function(){var r=Html5.TEST_VID.constructor.prototype.canPlayType;return canPlayType&&(Html5.TEST_VID.constructor.prototype.canPlayType=canPlayType),r},Html5.patchCanPlayType(),Html5.disposeMediaElement=function(el){if(el){for(el.parentNode&&el.parentNode.removeChild(el);el.hasChildNodes();)el.removeChild(el.firstChild);el.removeAttribute("src"),"function"==typeof el.load&&function(){try{el.load()}catch(e){}}()}},Html5.resetMediaElement=function(el){if(el){for(var sources=el.querySelectorAll("source"),i=sources.length;i--;)el.removeChild(sources[i]);el.removeAttribute("src"),"function"==typeof el.load&&function(){try{el.load()}catch(e){}}()}},["muted","defaultMuted","autoplay","controls","loop","playsinline"].forEach((function(prop){Html5.prototype[prop]=function(){return this.el_[prop]||this.el_.hasAttribute(prop)}})),["muted","defaultMuted","autoplay","loop","playsinline"].forEach((function(prop){Html5.prototype["set"+toTitleCase$1(prop)]=function(v){this.el_[prop]=v,v?this.el_.setAttribute(prop,prop):this.el_.removeAttribute(prop)}})),["paused","currentTime","buffered","volume","poster","preload","error","seeking","seekable","ended","playbackRate","defaultPlaybackRate","disablePictureInPicture","played","networkState","readyState","videoWidth","videoHeight","crossOrigin"].forEach((function(prop){Html5.prototype[prop]=function(){return this.el_[prop]}})),["volume","src","poster","preload","playbackRate","defaultPlaybackRate","disablePictureInPicture","crossOrigin"].forEach((function(prop){Html5.prototype["set"+toTitleCase$1(prop)]=function(v){this.el_[prop]=v}})),["pause","load","play"].forEach((function(prop){Html5.prototype[prop]=function(){return this.el_[prop]()}})),Tech.withSourceHandlers(Html5),Html5.nativeSourceHandler={},Html5.nativeSourceHandler.canPlayType=function(type){try{return Html5.TEST_VID.canPlayType(type)}catch(e){return""}},Html5.nativeSourceHandler.canHandleSource=function(source,options){if(source.type)return Html5.nativeSourceHandler.canPlayType(source.type);if(source.src){var ext=getFileExtension(source.src);return Html5.nativeSourceHandler.canPlayType("video/"+ext)}return""},Html5.nativeSourceHandler.handleSource=function(source,tech,options){tech.setSrc(source.src)},Html5.nativeSourceHandler.dispose=function(){},Html5.registerSourceHandler(Html5.nativeSourceHandler),Tech.registerTech("Html5",Html5);var TECH_EVENTS_RETRIGGER=["progress","abort","suspend","emptied","stalled","loadedmetadata","loadeddata","timeupdate","resize","volumechange","texttrackchange"],TECH_EVENTS_QUEUE={canplay:"CanPlay",canplaythrough:"CanPlayThrough",playing:"Playing",seeked:"Seeked"},BREAKPOINT_ORDER=["tiny","xsmall","small","medium","large","xlarge","huge"],BREAKPOINT_CLASSES={};BREAKPOINT_ORDER.forEach((function(k){var v="x"===k.charAt(0)?"x-"+k.substring(1):k;BREAKPOINT_CLASSES[k]="vjs-layout-"+v}));var DEFAULT_BREAKPOINTS={tiny:210,xsmall:320,small:425,medium:768,large:1440,xlarge:2560,huge:1/0},Player=function(_Component){function Player(tag,options,ready){var _this;if(tag.id=tag.id||options.id||"vjs_video_"+newGUID(),(options=assign(Player.getTagSettings(tag),options)).initChildren=!1,options.createEl=!1,options.evented=!1,options.reportTouchActivity=!1,!options.language)if("function"==typeof tag.closest){var closest=tag.closest("[lang]");closest&&closest.getAttribute&&(options.language=closest.getAttribute("lang"))}else for(var element=tag;element&&1===element.nodeType;){if(getAttributes(element).hasOwnProperty("lang")){options.language=element.getAttribute("lang");break}element=element.parentNode}if((_this=_Component.call(this,null,options,ready)||this).boundDocumentFullscreenChange_=function(e){return _this.documentFullscreenChange_(e)},_this.boundFullWindowOnEscKey_=function(e){return _this.fullWindowOnEscKey(e)},_this.boundUpdateStyleEl_=function(e){return _this.updateStyleEl_(e)},_this.boundApplyInitTime_=function(e){return _this.applyInitTime_(e)},_this.boundUpdateCurrentBreakpoint_=function(e){return _this.updateCurrentBreakpoint_(e)},_this.boundHandleTechClick_=function(e){return _this.handleTechClick_(e)},_this.boundHandleTechDoubleClick_=function(e){return _this.handleTechDoubleClick_(e)},_this.boundHandleTechTouchStart_=function(e){return _this.handleTechTouchStart_(e)},_this.boundHandleTechTouchMove_=function(e){return _this.handleTechTouchMove_(e)},_this.boundHandleTechTouchEnd_=function(e){return _this.handleTechTouchEnd_(e)},_this.boundHandleTechTap_=function(e){return _this.handleTechTap_(e)},_this.isFullscreen_=!1,_this.log=createLogger(_this.id_),_this.fsApi_=FullscreenApi,_this.isPosterFromTech_=!1,_this.queuedCallbacks_=[],_this.isReady_=!1,_this.hasStarted_=!1,_this.userActive_=!1,_this.debugEnabled_=!1,_this.audioOnlyMode_=!1,_this.audioPosterMode_=!1,_this.audioOnlyCache_={playerHeight:null,hiddenChildren:[]},!_this.options_||!_this.options_.techOrder||!_this.options_.techOrder.length)throw new Error("No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?");if(_this.tag=tag,_this.tagAttributes=tag&&getAttributes(tag),_this.language(_this.options_.language),options.languages){var languagesToLower={};Object.getOwnPropertyNames(options.languages).forEach((function(name){languagesToLower[name.toLowerCase()]=options.languages[name]})),_this.languages_=languagesToLower}else _this.languages_=Player.prototype.options_.languages;_this.resetCache_(),_this.poster_=options.poster||"",_this.controls_=!!options.controls,tag.controls=!1,tag.removeAttribute("controls"),_this.changingSrc_=!1,_this.playCallbacks_=[],_this.playTerminatedQueue_=[],tag.hasAttribute("autoplay")?_this.autoplay(!0):_this.autoplay(_this.options_.autoplay),options.plugins&&Object.keys(options.plugins).forEach((function(name){if("function"!=typeof _this[name])throw new Error('plugin "'+name+'" does not exist')})),_this.scrubbing_=!1,_this.el_=_this.createEl(),evented(assertThisInitialized(_this),{eventBusKey:"el_"}),_this.fsApi_.requestFullscreen&&(on(document,_this.fsApi_.fullscreenchange,_this.boundDocumentFullscreenChange_),_this.on(_this.fsApi_.fullscreenchange,_this.boundDocumentFullscreenChange_)),_this.fluid_&&_this.on(["playerreset","resize"],_this.boundUpdateStyleEl_);var playerOptionsCopy=mergeOptions$3(_this.options_);options.plugins&&Object.keys(options.plugins).forEach((function(name){_this[name](options.plugins[name])})),options.debug&&_this.debug(!0),_this.options_.playerOptions=playerOptionsCopy,_this.middleware_=[],_this.playbackRates(options.playbackRates),_this.initChildren(),_this.isAudio("audio"===tag.nodeName.toLowerCase()),_this.controls()?_this.addClass("vjs-controls-enabled"):_this.addClass("vjs-controls-disabled"),_this.el_.setAttribute("role","region"),_this.isAudio()?_this.el_.setAttribute("aria-label",_this.localize("Audio Player")):_this.el_.setAttribute("aria-label",_this.localize("Video Player")),_this.isAudio()&&_this.addClass("vjs-audio"),_this.flexNotSupported_()&&_this.addClass("vjs-no-flex"),TOUCH_ENABLED&&_this.addClass("vjs-touch-enabled"),IS_IOS||_this.addClass("vjs-workinghover"),Player.players[_this.id_]=assertThisInitialized(_this);var majorVersion="7.19.0".split(".")[0];return _this.addClass("vjs-v"+majorVersion),_this.userActive(!0),_this.reportUserActivity(),_this.one("play",(function(e){return _this.listenForUserActivity_(e)})),_this.on("stageclick",(function(e){return _this.handleStageClick_(e)})),_this.on("keydown",(function(e){return _this.handleKeyDown(e)})),_this.on("languagechange",(function(e){return _this.handleLanguagechange(e)})),_this.breakpoints(_this.options_.breakpoints),_this.responsive(_this.options_.responsive),_this.on("ready",(function(){_this.audioPosterMode(_this.options_.audioPosterMode),_this.audioOnlyMode(_this.options_.audioOnlyMode)})),_this}inheritsLoose(Player,_Component);var _proto=Player.prototype;return _proto.dispose=function dispose(){var _this2=this;this.trigger("dispose"),this.off("dispose"),off(document,this.fsApi_.fullscreenchange,this.boundDocumentFullscreenChange_),off(document,"keydown",this.boundFullWindowOnEscKey_),this.styleEl_&&this.styleEl_.parentNode&&(this.styleEl_.parentNode.removeChild(this.styleEl_),this.styleEl_=null),Player.players[this.id_]=null,this.tag&&this.tag.player&&(this.tag.player=null),this.el_&&this.el_.player&&(this.el_.player=null),this.tech_&&(this.tech_.dispose(),this.isPosterFromTech_=!1,this.poster_=""),this.playerElIngest_&&(this.playerElIngest_=null),this.tag&&(this.tag=null),clearCacheForPlayer(this),ALL.names.forEach((function(name){var props=ALL[name],list=_this2[props.getterName]();list&&list.off&&list.off()})),_Component.prototype.dispose.call(this)},_proto.createEl=function createEl(){var tag=this.tag,el,playerElIngest=this.playerElIngest_=tag.parentNode&&tag.parentNode.hasAttribute&&tag.parentNode.hasAttribute("data-vjs-player"),divEmbed="video-js"===this.tag.tagName.toLowerCase();playerElIngest?el=this.el_=tag.parentNode:divEmbed||(el=this.el_=_Component.prototype.createEl.call(this,"div"));var attrs=getAttributes(tag);if(divEmbed){for(el=this.el_=tag,tag=this.tag=document.createElement("video");el.children.length;)tag.appendChild(el.firstChild);hasClass(el,"video-js")||addClass(el,"video-js"),el.appendChild(tag),playerElIngest=this.playerElIngest_=el,Object.keys(el).forEach((function(k){try{tag[k]=el[k]}catch(e){}}))}if(tag.setAttribute("tabindex","-1"),attrs.tabindex="-1",(IE_VERSION||IS_CHROME&&IS_WINDOWS)&&(tag.setAttribute("role","application"),attrs.role="application"),tag.removeAttribute("width"),tag.removeAttribute("height"),"width"in attrs&&delete attrs.width,"height"in attrs&&delete attrs.height,Object.getOwnPropertyNames(attrs).forEach((function(attr){divEmbed&&"class"===attr||el.setAttribute(attr,attrs[attr]),divEmbed&&tag.setAttribute(attr,attrs[attr])})),tag.playerId=tag.id,tag.id+="_html5_api",tag.className="vjs-tech",tag.player=el.player=this,this.addClass("vjs-paused"),!0!==window.VIDEOJS_NO_DYNAMIC_STYLE){this.styleEl_=createStyleElement("vjs-styles-dimensions");var defaultsStyleEl=$(".vjs-styles-defaults"),head=$("head");head.insertBefore(this.styleEl_,defaultsStyleEl?defaultsStyleEl.nextSibling:head.firstChild)}this.fill_=!1,this.fluid_=!1,this.width(this.options_.width),this.height(this.options_.height),this.fill(this.options_.fill),this.fluid(this.options_.fluid),this.aspectRatio(this.options_.aspectRatio),this.crossOrigin(this.options_.crossOrigin||this.options_.crossorigin);for(var links=tag.getElementsByTagName("a"),i=0;i0?this.videoWidth()+":"+this.videoHeight():"16:9").split(":"),ratioMultiplier=ratioParts[1]/ratioParts[0];width=void 0!==this.width_?this.width_:void 0!==this.height_?this.height_/ratioMultiplier:this.videoWidth()||300,height=void 0!==this.height_?this.height_:width*ratioMultiplier,idClass=/^[^a-zA-Z]/.test(this.id())?"dimensions-"+this.id():this.id()+"-dimensions",this.addClass(idClass),setTextContent(this.styleEl_,"\n ."+idClass+" {\n width: "+width+"px;\n height: "+height+"px;\n }\n\n ."+idClass+".vjs-fluid {\n padding-top: "+100*ratioMultiplier+"%;\n }\n ")}else{var _width="number"==typeof this.width_?this.width_:this.options_.width,_height="number"==typeof this.height_?this.height_:this.options_.height,techEl=this.tech_&&this.tech_.el();techEl&&(_width>=0&&(techEl.width=_width),_height>=0&&(techEl.height=_height))}},_proto.loadTech_=function loadTech_(techName,source){var _this4=this;this.tech_&&this.unloadTech_();var titleTechName=toTitleCase$1(techName),camelTechName=techName.charAt(0).toLowerCase()+techName.slice(1);"Html5"!==titleTechName&&this.tag&&(Tech.getTech("Html5").disposeMediaElement(this.tag),this.tag.player=null,this.tag=null),this.techName_=titleTechName,this.isReady_=!1;var autoplay=this.autoplay();("string"==typeof this.autoplay()||!0===this.autoplay()&&this.options_.normalizeAutoplay)&&(autoplay=!1);var techOptions={source:source,autoplay:autoplay,nativeControlsForTouch:this.options_.nativeControlsForTouch,playerId:this.id(),techId:this.id()+"_"+camelTechName+"_api",playsinline:this.options_.playsinline,preload:this.options_.preload,loop:this.options_.loop,disablePictureInPicture:this.options_.disablePictureInPicture,muted:this.options_.muted,poster:this.poster(),language:this.language(),playerElIngest:this.playerElIngest_||!1,"vtt.js":this.options_["vtt.js"],canOverridePoster:!!this.options_.techCanOverridePoster,enableSourceset:this.options_.enableSourceset,Promise:this.options_.Promise};ALL.names.forEach((function(name){var props=ALL[name];techOptions[props.getterName]=_this4[props.privateName]})),assign(techOptions,this.options_[titleTechName]),assign(techOptions,this.options_[camelTechName]),assign(techOptions,this.options_[techName.toLowerCase()]),this.tag&&(techOptions.tag=this.tag),source&&source.src===this.cache_.src&&this.cache_.currentTime>0&&(techOptions.startTime=this.cache_.currentTime);var TechClass=Tech.getTech(techName);if(!TechClass)throw new Error("No Tech named '"+titleTechName+"' exists! '"+titleTechName+"' should be registered using videojs.registerTech()'");this.tech_=new TechClass(techOptions),this.tech_.ready(bind(this,this.handleTechReady_),!0),textTrackConverter_jsonToTextTracks(this.textTracksJson_||[],this.tech_),TECH_EVENTS_RETRIGGER.forEach((function(event){_this4.on(_this4.tech_,event,(function(e){return _this4["handleTech"+toTitleCase$1(event)+"_"](e)}))})),Object.keys(TECH_EVENTS_QUEUE).forEach((function(event){_this4.on(_this4.tech_,event,(function(eventObj){0===_this4.tech_.playbackRate()&&_this4.tech_.seeking()?_this4.queuedCallbacks_.push({callback:_this4["handleTech"+TECH_EVENTS_QUEUE[event]+"_"].bind(_this4),event:eventObj}):_this4["handleTech"+TECH_EVENTS_QUEUE[event]+"_"](eventObj)}))})),this.on(this.tech_,"loadstart",(function(e){return _this4.handleTechLoadStart_(e)})),this.on(this.tech_,"sourceset",(function(e){return _this4.handleTechSourceset_(e)})),this.on(this.tech_,"waiting",(function(e){return _this4.handleTechWaiting_(e)})),this.on(this.tech_,"ended",(function(e){return _this4.handleTechEnded_(e)})),this.on(this.tech_,"seeking",(function(e){return _this4.handleTechSeeking_(e)})),this.on(this.tech_,"play",(function(e){return _this4.handleTechPlay_(e)})),this.on(this.tech_,"firstplay",(function(e){return _this4.handleTechFirstPlay_(e)})),this.on(this.tech_,"pause",(function(e){return _this4.handleTechPause_(e)})),this.on(this.tech_,"durationchange",(function(e){return _this4.handleTechDurationChange_(e)})),this.on(this.tech_,"fullscreenchange",(function(e,data){return _this4.handleTechFullscreenChange_(e,data)})),this.on(this.tech_,"fullscreenerror",(function(e,err){return _this4.handleTechFullscreenError_(e,err)})),this.on(this.tech_,"enterpictureinpicture",(function(e){return _this4.handleTechEnterPictureInPicture_(e)})),this.on(this.tech_,"leavepictureinpicture",(function(e){return _this4.handleTechLeavePictureInPicture_(e)})),this.on(this.tech_,"error",(function(e){return _this4.handleTechError_(e)})),this.on(this.tech_,"posterchange",(function(e){return _this4.handleTechPosterChange_(e)})),this.on(this.tech_,"textdata",(function(e){return _this4.handleTechTextData_(e)})),this.on(this.tech_,"ratechange",(function(e){return _this4.handleTechRateChange_(e)})),this.on(this.tech_,"loadedmetadata",this.boundUpdateStyleEl_),this.usingNativeControls(this.techGet_("controls")),this.controls()&&!this.usingNativeControls()&&this.addTechControlsListeners_(),this.tech_.el().parentNode===this.el()||"Html5"===titleTechName&&this.tag||prependTo(this.tech_.el(),this.el()),this.tag&&(this.tag.player=null,this.tag=null)},_proto.unloadTech_=function unloadTech_(){var _this5=this;ALL.names.forEach((function(name){var props=ALL[name];_this5[props.privateName]=_this5[props.getterName]()})),this.textTracksJson_=textTrackConverter_textTracksToJson(this.tech_),this.isReady_=!1,this.tech_.dispose(),this.tech_=!1,this.isPosterFromTech_&&(this.poster_="",this.trigger("posterchange")),this.isPosterFromTech_=!1},_proto.tech=function tech(safety){return void 0===safety&&log$1.warn("Using the tech directly can be dangerous. I hope you know what you're doing.\nSee https://github.com/videojs/video.js/issues/2617 for more info.\n"),this.tech_},_proto.addTechControlsListeners_=function addTechControlsListeners_(){this.removeTechControlsListeners_(),this.on(this.tech_,"click",this.boundHandleTechClick_),this.on(this.tech_,"dblclick",this.boundHandleTechDoubleClick_),this.on(this.tech_,"touchstart",this.boundHandleTechTouchStart_),this.on(this.tech_,"touchmove",this.boundHandleTechTouchMove_),this.on(this.tech_,"touchend",this.boundHandleTechTouchEnd_),this.on(this.tech_,"tap",this.boundHandleTechTap_)},_proto.removeTechControlsListeners_=function removeTechControlsListeners_(){this.off(this.tech_,"tap",this.boundHandleTechTap_),this.off(this.tech_,"touchstart",this.boundHandleTechTouchStart_),this.off(this.tech_,"touchmove",this.boundHandleTechTouchMove_),this.off(this.tech_,"touchend",this.boundHandleTechTouchEnd_),this.off(this.tech_,"click",this.boundHandleTechClick_),this.off(this.tech_,"dblclick",this.boundHandleTechDoubleClick_)},_proto.handleTechReady_=function handleTechReady_(){this.triggerReady(),this.cache_.volume&&this.techCall_("setVolume",this.cache_.volume),this.handleTechPosterChange_(),this.handleTechDurationChange_()},_proto.handleTechLoadStart_=function handleTechLoadStart_(){this.removeClass("vjs-ended"),this.removeClass("vjs-seeking"),this.error(null),this.handleTechDurationChange_(),this.paused()?(this.hasStarted(!1),this.trigger("loadstart")):(this.trigger("loadstart"),this.trigger("firstplay")),this.manualAutoplay_(!0===this.autoplay()&&this.options_.normalizeAutoplay?"play":this.autoplay())},_proto.manualAutoplay_=function manualAutoplay_(type){var _this6=this;if(this.tech_&&"string"==typeof type){var resolveMuted=function resolveMuted(){var previouslyMuted=_this6.muted();_this6.muted(!0);var restoreMuted=function restoreMuted(){_this6.muted(previouslyMuted)};_this6.playTerminatedQueue_.push(restoreMuted);var mutedPromise=_this6.play();if(isPromise(mutedPromise))return mutedPromise.catch((function(err){throw restoreMuted(),new Error("Rejection at manualAutoplay. Restoring muted value. "+(err||""))}))},promise;if("any"!==type||this.muted()?promise="muted"!==type||this.muted()?this.play():resolveMuted():isPromise(promise=this.play())&&(promise=promise.catch(resolveMuted)),isPromise(promise))return promise.then((function(){_this6.trigger({type:"autoplay-success",autoplay:type})})).catch((function(){_this6.trigger({type:"autoplay-failure",autoplay:type})}))}},_proto.updateSourceCaches_=function updateSourceCaches_(srcObj){void 0===srcObj&&(srcObj="");var src=srcObj,type="";"string"!=typeof src&&(src=srcObj.src,type=srcObj.type),this.cache_.source=this.cache_.source||{},this.cache_.sources=this.cache_.sources||[],src&&!type&&(type=findMimetype(this,src)),this.cache_.source=mergeOptions$3({},srcObj,{src:src,type:type});for(var matchingSources=this.cache_.sources.filter((function(s){return s.src&&s.src===src})),sourceElSources=[],sourceEls=this.$$("source"),matchingSourceEls=[],i=0;i0&&0===this.cache_.lastPlaybackRate&&(this.queuedCallbacks_.forEach((function(queued){return queued.callback(queued.event)})),this.queuedCallbacks_=[]),this.cache_.lastPlaybackRate=this.tech_.playbackRate(),this.trigger("ratechange")},_proto.handleTechWaiting_=function handleTechWaiting_(){var _this8=this;this.addClass("vjs-waiting"),this.trigger("waiting");var timeWhenWaiting=this.currentTime(),timeUpdateListener=function timeUpdateListener(){timeWhenWaiting!==_this8.currentTime()&&(_this8.removeClass("vjs-waiting"),_this8.off("timeupdate",timeUpdateListener))};this.on("timeupdate",timeUpdateListener)},_proto.handleTechCanPlay_=function handleTechCanPlay_(){this.removeClass("vjs-waiting"),this.trigger("canplay")},_proto.handleTechCanPlayThrough_=function handleTechCanPlayThrough_(){this.removeClass("vjs-waiting"),this.trigger("canplaythrough")},_proto.handleTechPlaying_=function handleTechPlaying_(){this.removeClass("vjs-waiting"),this.trigger("playing")},_proto.handleTechSeeking_=function handleTechSeeking_(){this.addClass("vjs-seeking"),this.trigger("seeking")},_proto.handleTechSeeked_=function handleTechSeeked_(){this.removeClass("vjs-seeking"),this.removeClass("vjs-ended"),this.trigger("seeked")},_proto.handleTechFirstPlay_=function handleTechFirstPlay_(){this.options_.starttime&&(log$1.warn("Passing the `starttime` option to the player will be deprecated in 6.0"),this.currentTime(this.options_.starttime)),this.addClass("vjs-has-started"),this.trigger("firstplay")},_proto.handleTechPause_=function handleTechPause_(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.trigger("pause")},_proto.handleTechEnded_=function handleTechEnded_(){this.addClass("vjs-ended"),this.removeClass("vjs-waiting"),this.options_.loop?(this.currentTime(0),this.play()):this.paused()||this.pause(),this.trigger("ended")},_proto.handleTechDurationChange_=function handleTechDurationChange_(){this.duration(this.techGet_("duration"))},_proto.handleTechClick_=function handleTechClick_(event){this.controls_&&(void 0!==this.options_&&void 0!==this.options_.userActions&&void 0!==this.options_.userActions.click&&!1===this.options_.userActions.click||(void 0!==this.options_&&void 0!==this.options_.userActions&&"function"==typeof this.options_.userActions.click?this.options_.userActions.click.call(this,event):this.paused()?silencePromise(this.play()):this.pause()))},_proto.handleTechDoubleClick_=function handleTechDoubleClick_(event){var inAllowedEls;this.controls_&&(Array.prototype.some.call(this.$$(".vjs-control-bar, .vjs-modal-dialog"),(function(el){return el.contains(event.target)}))||void 0!==this.options_&&void 0!==this.options_.userActions&&void 0!==this.options_.userActions.doubleClick&&!1===this.options_.userActions.doubleClick||(void 0!==this.options_&&void 0!==this.options_.userActions&&"function"==typeof this.options_.userActions.doubleClick?this.options_.userActions.doubleClick.call(this,event):this.isFullscreen()?this.exitFullscreen():this.requestFullscreen()))},_proto.handleTechTap_=function handleTechTap_(){this.userActive(!this.userActive())},_proto.handleTechTouchStart_=function handleTechTouchStart_(){this.userWasActive=this.userActive()},_proto.handleTechTouchMove_=function handleTechTouchMove_(){this.userWasActive&&this.reportUserActivity()},_proto.handleTechTouchEnd_=function handleTechTouchEnd_(event){event.cancelable&&event.preventDefault()},_proto.handleStageClick_=function handleStageClick_(){this.reportUserActivity()},_proto.toggleFullscreenClass_=function toggleFullscreenClass_(){this.isFullscreen()?this.addClass("vjs-fullscreen"):this.removeClass("vjs-fullscreen")},_proto.documentFullscreenChange_=function documentFullscreenChange_(e){var targetPlayer=e.target.player;if(!targetPlayer||targetPlayer===this){var el=this.el(),isFs=document[this.fsApi_.fullscreenElement]===el;!isFs&&el.matches?isFs=el.matches(":"+this.fsApi_.fullscreen):!isFs&&el.msMatchesSelector&&(isFs=el.msMatchesSelector(":"+this.fsApi_.fullscreen)),this.isFullscreen(isFs)}},_proto.handleTechFullscreenChange_=function handleTechFullscreenChange_(event,data){var _this9=this;data&&(data.nativeIOSFullscreen&&(this.addClass("vjs-ios-native-fs"),this.tech_.one("webkitendfullscreen",(function(){_this9.removeClass("vjs-ios-native-fs")}))),this.isFullscreen(data.isFullscreen))},_proto.handleTechFullscreenError_=function handleTechFullscreenError_(event,err){this.trigger("fullscreenerror",err)},_proto.togglePictureInPictureClass_=function togglePictureInPictureClass_(){this.isInPictureInPicture()?this.addClass("vjs-picture-in-picture"):this.removeClass("vjs-picture-in-picture")},_proto.handleTechEnterPictureInPicture_=function handleTechEnterPictureInPicture_(event){this.isInPictureInPicture(!0)},_proto.handleTechLeavePictureInPicture_=function handleTechLeavePictureInPicture_(event){this.isInPictureInPicture(!1)},_proto.handleTechError_=function handleTechError_(){var error=this.tech_.error();this.error(error)},_proto.handleTechTextData_=function handleTechTextData_(){var data=null;arguments.length>1&&(data=arguments[1]),this.trigger("textdata",data)},_proto.getCache=function getCache(){return this.cache_},_proto.resetCache_=function resetCache_(){this.cache_={currentTime:0,initTime:0,inactivityTimeout:this.options_.inactivityTimeout,duration:NaN,lastVolume:1,lastPlaybackRate:this.defaultPlaybackRate(),media:null,src:"",source:{},sources:[],playbackRates:[],volume:1}},_proto.techCall_=function techCall_(method,arg){this.ready((function(){if(method in allowedSetters)return set(this.middleware_,this.tech_,method,arg);if(method in allowedMediators)return mediate(this.middleware_,this.tech_,method,arg);try{this.tech_&&this.tech_[method](arg)}catch(e){throw log$1(e),e}}),!0)},_proto.techGet_=function techGet_(method){if(this.tech_&&this.tech_.isReady_){if(method in allowedGetters)return get(this.middleware_,this.tech_,method);if(method in allowedMediators)return mediate(this.middleware_,this.tech_,method);try{return this.tech_[method]()}catch(e){if(void 0===this.tech_[method])throw log$1("Video.js: "+method+" method not defined for "+this.techName_+" playback technology.",e),e;if("TypeError"===e.name)throw log$1("Video.js: "+method+" unavailable on "+this.techName_+" playback technology element.",e),this.tech_.isReady_=!1,e;throw log$1(e),e}}},_proto.play=function play(){var _this10=this,PromiseClass=this.options_.Promise||window.Promise;return PromiseClass?new PromiseClass((function(resolve){_this10.play_(resolve)})):this.play_()},_proto.play_=function play_(callback){var _this11=this;void 0===callback&&(callback=silencePromise),this.playCallbacks_.push(callback);var isSrcReady=Boolean(!this.changingSrc_&&(this.src()||this.currentSrc()));if(this.waitToPlay_&&(this.off(["ready","loadstart"],this.waitToPlay_),this.waitToPlay_=null),!this.isReady_||!isSrcReady)return this.waitToPlay_=function(e){_this11.play_()},this.one(["ready","loadstart"],this.waitToPlay_),void(isSrcReady||!IS_ANY_SAFARI&&!IS_IOS||this.load());var val=this.techGet_("play");null===val?this.runPlayTerminatedQueue_():this.runPlayCallbacks_(val)},_proto.runPlayTerminatedQueue_=function runPlayTerminatedQueue_(){var queue=this.playTerminatedQueue_.slice(0);this.playTerminatedQueue_=[],queue.forEach((function(q){q()}))},_proto.runPlayCallbacks_=function runPlayCallbacks_(val){var callbacks=this.playCallbacks_.slice(0);this.playCallbacks_=[],this.playTerminatedQueue_=[],callbacks.forEach((function(cb){cb(val)}))},_proto.pause=function pause(){this.techCall_("pause")},_proto.paused=function paused(){return!1!==this.techGet_("paused")},_proto.played=function played(){return this.techGet_("played")||createTimeRanges(0,0)},_proto.scrubbing=function scrubbing(isScrubbing){if(void 0===isScrubbing)return this.scrubbing_;this.scrubbing_=!!isScrubbing,this.techCall_("setScrubbing",this.scrubbing_),isScrubbing?this.addClass("vjs-scrubbing"):this.removeClass("vjs-scrubbing")},_proto.currentTime=function currentTime(seconds){return void 0!==seconds?(seconds<0&&(seconds=0),this.isReady_&&!this.changingSrc_&&this.tech_&&this.tech_.isReady_?(this.techCall_("setCurrentTime",seconds),void(this.cache_.initTime=0)):(this.cache_.initTime=seconds,this.off("canplay",this.boundApplyInitTime_),void this.one("canplay",this.boundApplyInitTime_))):(this.cache_.currentTime=this.techGet_("currentTime")||0,this.cache_.currentTime)},_proto.applyInitTime_=function applyInitTime_(){this.currentTime(this.cache_.initTime)},_proto.duration=function duration(seconds){if(void 0===seconds)return void 0!==this.cache_.duration?this.cache_.duration:NaN;(seconds=parseFloat(seconds))<0&&(seconds=1/0),seconds!==this.cache_.duration&&(this.cache_.duration=seconds,seconds===1/0?this.addClass("vjs-live"):this.removeClass("vjs-live"),isNaN(seconds)||this.trigger("durationchange"))},_proto.remainingTime=function remainingTime(){return this.duration()-this.currentTime()},_proto.remainingTimeDisplay=function remainingTimeDisplay(){return Math.floor(this.duration())-Math.floor(this.currentTime())},_proto.buffered=function buffered(){var buffered=this.techGet_("buffered");return buffered&&buffered.length||(buffered=createTimeRanges(0,0)),buffered},_proto.bufferedPercent=function bufferedPercent$1(){return bufferedPercent(this.buffered(),this.duration())},_proto.bufferedEnd=function bufferedEnd(){var buffered=this.buffered(),duration=this.duration(),end=buffered.end(buffered.length-1);return end>duration&&(end=duration),end},_proto.volume=function volume(percentAsDecimal){var vol;return void 0!==percentAsDecimal?(vol=Math.max(0,Math.min(1,parseFloat(percentAsDecimal))),this.cache_.volume=vol,this.techCall_("setVolume",vol),void(vol>0&&this.lastVolume_(vol))):(vol=parseFloat(this.techGet_("volume")),isNaN(vol)?1:vol)},_proto.muted=function muted(_muted){if(void 0===_muted)return this.techGet_("muted")||!1;this.techCall_("setMuted",_muted)},_proto.defaultMuted=function defaultMuted(_defaultMuted){return void 0!==_defaultMuted?this.techCall_("setDefaultMuted",_defaultMuted):this.techGet_("defaultMuted")||!1},_proto.lastVolume_=function lastVolume_(percentAsDecimal){if(void 0===percentAsDecimal||0===percentAsDecimal)return this.cache_.lastVolume;this.cache_.lastVolume=percentAsDecimal},_proto.supportsFullScreen=function supportsFullScreen(){return this.techGet_("supportsFullScreen")||!1},_proto.isFullscreen=function isFullscreen(isFS){if(void 0!==isFS){var oldValue=this.isFullscreen_;return this.isFullscreen_=Boolean(isFS),this.isFullscreen_!==oldValue&&this.fsApi_.prefixed&&this.trigger("fullscreenchange"),void this.toggleFullscreenClass_()}return this.isFullscreen_},_proto.requestFullscreen=function requestFullscreen(fullscreenOptions){var PromiseClass=this.options_.Promise||window.Promise;if(PromiseClass){var self=this;return new PromiseClass((function(resolve,reject){function offHandler(){self.off("fullscreenerror",errorHandler),self.off("fullscreenchange",changeHandler)}function changeHandler(){offHandler(),resolve()}function errorHandler(e,err){offHandler(),reject(err)}self.one("fullscreenchange",changeHandler),self.one("fullscreenerror",errorHandler);var promise=self.requestFullscreenHelper_(fullscreenOptions);promise&&(promise.then(offHandler,offHandler),promise.then(resolve,reject))}))}return this.requestFullscreenHelper_()},_proto.requestFullscreenHelper_=function requestFullscreenHelper_(fullscreenOptions){var _this12=this,fsOptions;if(this.fsApi_.prefixed||(fsOptions=this.options_.fullscreen&&this.options_.fullscreen.options||{},void 0!==fullscreenOptions&&(fsOptions=fullscreenOptions)),this.fsApi_.requestFullscreen){var promise=this.el_[this.fsApi_.requestFullscreen](fsOptions);return promise&&promise.then((function(){return _this12.isFullscreen(!0)}),(function(){return _this12.isFullscreen(!1)})),promise}this.tech_.supportsFullScreen()&&!0==!this.options_.preferFullWindow?this.techCall_("enterFullScreen"):this.enterFullWindow()},_proto.exitFullscreen=function exitFullscreen(){var PromiseClass=this.options_.Promise||window.Promise;if(PromiseClass){var self=this;return new PromiseClass((function(resolve,reject){function offHandler(){self.off("fullscreenerror",errorHandler),self.off("fullscreenchange",changeHandler)}function changeHandler(){offHandler(),resolve()}function errorHandler(e,err){offHandler(),reject(err)}self.one("fullscreenchange",changeHandler),self.one("fullscreenerror",errorHandler);var promise=self.exitFullscreenHelper_();promise&&(promise.then(offHandler,offHandler),promise.then(resolve,reject))}))}return this.exitFullscreenHelper_()},_proto.exitFullscreenHelper_=function exitFullscreenHelper_(){var _this13=this;if(this.fsApi_.requestFullscreen){var promise=document[this.fsApi_.exitFullscreen]();return promise&&silencePromise(promise.then((function(){return _this13.isFullscreen(!1)}))),promise}this.tech_.supportsFullScreen()&&!0==!this.options_.preferFullWindow?this.techCall_("exitFullScreen"):this.exitFullWindow()},_proto.enterFullWindow=function enterFullWindow(){this.isFullscreen(!0),this.isFullWindow=!0,this.docOrigOverflow=document.documentElement.style.overflow,on(document,"keydown",this.boundFullWindowOnEscKey_),document.documentElement.style.overflow="hidden",addClass(document.body,"vjs-full-window"),this.trigger("enterFullWindow")},_proto.fullWindowOnEscKey=function fullWindowOnEscKey(event){keycode.isEventKey(event,"Esc")&&!0===this.isFullscreen()&&(this.isFullWindow?this.exitFullWindow():this.exitFullscreen())},_proto.exitFullWindow=function exitFullWindow(){this.isFullscreen(!1),this.isFullWindow=!1,off(document,"keydown",this.boundFullWindowOnEscKey_),document.documentElement.style.overflow=this.docOrigOverflow,removeClass(document.body,"vjs-full-window"),this.trigger("exitFullWindow")},_proto.disablePictureInPicture=function disablePictureInPicture(value){if(void 0===value)return this.techGet_("disablePictureInPicture");this.techCall_("setDisablePictureInPicture",value),this.options_.disablePictureInPicture=value,this.trigger("disablepictureinpicturechanged")},_proto.isInPictureInPicture=function isInPictureInPicture(isPiP){return void 0!==isPiP?(this.isInPictureInPicture_=!!isPiP,void this.togglePictureInPictureClass_()):!!this.isInPictureInPicture_},_proto.requestPictureInPicture=function requestPictureInPicture(){if("pictureInPictureEnabled"in document&&!1===this.disablePictureInPicture())return this.techGet_("requestPictureInPicture")},_proto.exitPictureInPicture=function exitPictureInPicture(){if("pictureInPictureEnabled"in document)return document.exitPictureInPicture()},_proto.handleKeyDown=function handleKeyDown(event){var userActions=this.options_.userActions,excludeElement;userActions&&userActions.hotkeys&&(function excludeElement(el){var tagName=el.tagName.toLowerCase(),allowedInputTypes,excludedTags;return!!el.isContentEditable||("input"===tagName?-1===["button","checkbox","hidden","radio","reset","submit"].indexOf(el.type):-1!==["textarea"].indexOf(tagName))}(this.el_.ownerDocument.activeElement)||("function"==typeof userActions.hotkeys?userActions.hotkeys.call(this,event):this.handleHotkeys(event)))},_proto.handleHotkeys=function handleHotkeys(event){var hotkeys=this.options_.userActions?this.options_.userActions.hotkeys:{},_hotkeys$fullscreenKe=hotkeys.fullscreenKey,fullscreenKey=void 0===_hotkeys$fullscreenKe?function(keydownEvent){return keycode.isEventKey(keydownEvent,"f")}:_hotkeys$fullscreenKe,_hotkeys$muteKey=hotkeys.muteKey,muteKey=void 0===_hotkeys$muteKey?function(keydownEvent){return keycode.isEventKey(keydownEvent,"m")}:_hotkeys$muteKey,_hotkeys$playPauseKey=hotkeys.playPauseKey,playPauseKey=void 0===_hotkeys$playPauseKey?function(keydownEvent){return keycode.isEventKey(keydownEvent,"k")||keycode.isEventKey(keydownEvent,"Space")}:_hotkeys$playPauseKey;if(fullscreenKey.call(this,event)){event.preventDefault(),event.stopPropagation();var FSToggle=Component$1.getComponent("FullscreenToggle");!1!==document[this.fsApi_.fullscreenEnabled]&&FSToggle.prototype.handleClick.call(this,event)}else if(muteKey.call(this,event)){var MuteToggle;event.preventDefault(),event.stopPropagation(),Component$1.getComponent("MuteToggle").prototype.handleClick.call(this,event)}else if(playPauseKey.call(this,event)){var PlayToggle;event.preventDefault(),event.stopPropagation(),Component$1.getComponent("PlayToggle").prototype.handleClick.call(this,event)}},_proto.canPlayType=function canPlayType(type){for(var can,i=0,j=this.options_.techOrder;i1?_this15.handleSrc_(sources.slice(1)):(_this15.changingSrc_=!1,_this15.setTimeout((function(){this.error({code:4,message:this.localize(this.options_.notSupportedMessage)})}),0),void _this15.triggerReady());setTech(mws,_this15.tech_)})),this.options_.retryOnError&&sources.length>1){var retry=function retry(){_this15.error(null),_this15.handleSrc_(sources.slice(1),!0)},stopListeningForErrors=function stopListeningForErrors(){_this15.off("error",retry)};this.one("error",retry),this.one("playing",stopListeningForErrors),this.resetRetryOnError_=function(){_this15.off("error",retry),_this15.off("playing",stopListeningForErrors)}}}else this.setTimeout((function(){this.error({code:4,message:this.localize(this.options_.notSupportedMessage)})}),0)},_proto.src=function src(source){return this.handleSrc_(source,!1)},_proto.src_=function src_(source){var _this16=this,sourceTech=this.selectSource([source]);return!sourceTech||(titleCaseEquals(sourceTech.tech,this.techName_)?(this.ready((function(){this.tech_.constructor.prototype.hasOwnProperty("setSource")?this.techCall_("setSource",source):this.techCall_("src",source.src),this.changingSrc_=!1}),!0),!1):(this.changingSrc_=!0,this.loadTech_(sourceTech.tech,sourceTech.source),this.tech_.ready((function(){_this16.changingSrc_=!1})),!1))},_proto.load=function load(){this.techCall_("load")},_proto.reset=function reset(){var _this17=this,PromiseClass=this.options_.Promise||window.Promise,playPromise;this.paused()||!PromiseClass?this.doReset_():silencePromise(this.play().then((function(){return _this17.doReset_()})))},_proto.doReset_=function doReset_(){this.tech_&&this.tech_.clearTracks("text"),this.resetCache_(),this.poster(""),this.loadTech_(this.options_.techOrder[0],null),this.techCall_("reset"),this.resetControlBarUI_(),isEvented(this)&&this.trigger("playerreset")},_proto.resetControlBarUI_=function resetControlBarUI_(){this.resetProgressBar_(),this.resetPlaybackRate_(),this.resetVolumeBar_()},_proto.resetProgressBar_=function resetProgressBar_(){this.currentTime(0);var _this$controlBar=this.controlBar,durationDisplay=_this$controlBar.durationDisplay,remainingTimeDisplay=_this$controlBar.remainingTimeDisplay;durationDisplay&&durationDisplay.updateContent(),remainingTimeDisplay&&remainingTimeDisplay.updateContent()},_proto.resetPlaybackRate_=function resetPlaybackRate_(){this.playbackRate(this.defaultPlaybackRate()),this.handleTechRateChange_()},_proto.resetVolumeBar_=function resetVolumeBar_(){this.volume(1),this.trigger("volumechange")},_proto.currentSources=function currentSources(){var source=this.currentSource(),sources=[];return 0!==Object.keys(source).length&&sources.push(source),this.cache_.sources||sources},_proto.currentSource=function currentSource(){return this.cache_.source||{}},_proto.currentSrc=function currentSrc(){return this.currentSource()&&this.currentSource().src||""},_proto.currentType=function currentType(){return this.currentSource()&&this.currentSource().type||""},_proto.preload=function preload(value){return void 0!==value?(this.techCall_("setPreload",value),void(this.options_.preload=value)):this.techGet_("preload")},_proto.autoplay=function autoplay(value){if(void 0===value)return this.options_.autoplay||!1;var techAutoplay;"string"==typeof value&&/(any|play|muted)/.test(value)||!0===value&&this.options_.normalizeAutoplay?(this.options_.autoplay=value,this.manualAutoplay_("string"==typeof value?value:"play"),techAutoplay=!1):this.options_.autoplay=!!value,techAutoplay=void 0===techAutoplay?this.options_.autoplay:techAutoplay,this.tech_&&this.techCall_("setAutoplay",techAutoplay)},_proto.playsinline=function playsinline(value){return void 0!==value?(this.techCall_("setPlaysinline",value),this.options_.playsinline=value,this):this.techGet_("playsinline")},_proto.loop=function loop(value){return void 0!==value?(this.techCall_("setLoop",value),void(this.options_.loop=value)):this.techGet_("loop")},_proto.poster=function poster(src){if(void 0===src)return this.poster_;src||(src=""),src!==this.poster_&&(this.poster_=src,this.techCall_("setPoster",src),this.isPosterFromTech_=!1,this.trigger("posterchange"))},_proto.handleTechPosterChange_=function handleTechPosterChange_(){if((!this.poster_||this.options_.techCanOverridePoster)&&this.tech_&&this.tech_.poster){var newPoster=this.tech_.poster()||"";newPoster!==this.poster_&&(this.poster_=newPoster,this.isPosterFromTech_=!0,this.trigger("posterchange"))}},_proto.controls=function controls(bool){if(void 0===bool)return!!this.controls_;bool=!!bool,this.controls_!==bool&&(this.controls_=bool,this.usingNativeControls()&&this.techCall_("setControls",bool),this.controls_?(this.removeClass("vjs-controls-disabled"),this.addClass("vjs-controls-enabled"),this.trigger("controlsenabled"),this.usingNativeControls()||this.addTechControlsListeners_()):(this.removeClass("vjs-controls-enabled"),this.addClass("vjs-controls-disabled"),this.trigger("controlsdisabled"),this.usingNativeControls()||this.removeTechControlsListeners_()))},_proto.usingNativeControls=function usingNativeControls(bool){if(void 0===bool)return!!this.usingNativeControls_;bool=!!bool,this.usingNativeControls_!==bool&&(this.usingNativeControls_=bool,this.usingNativeControls_?(this.addClass("vjs-using-native-controls"),this.trigger("usingnativecontrols")):(this.removeClass("vjs-using-native-controls"),this.trigger("usingcustomcontrols")))},_proto.error=function error(err){var _this18=this;if(void 0===err)return this.error_||null;if(hooks("beforeerror").forEach((function(hookFunction){var newErr=hookFunction(_this18,err);isObject$1(newErr)&&!Array.isArray(newErr)||"string"==typeof newErr||"number"==typeof newErr||null===newErr?err=newErr:_this18.log.error("please return a value that MediaError expects in beforeerror hooks")})),this.options_.suppressNotSupportedError&&err&&4===err.code){var triggerSuppressedError=function triggerSuppressedError(){this.error(err)};return this.options_.suppressNotSupportedError=!1,this.any(["click","touchstart"],triggerSuppressedError),void this.one("loadstart",(function(){this.off(["click","touchstart"],triggerSuppressedError)}))}if(null===err)return this.error_=err,this.removeClass("vjs-error"),void(this.errorDisplay&&this.errorDisplay.close());this.error_=new MediaError(err),this.addClass("vjs-error"),log$1.error("(CODE:"+this.error_.code+" "+MediaError.errorTypes[this.error_.code]+")",this.error_.message,this.error_),this.trigger("error"),hooks("error").forEach((function(hookFunction){return hookFunction(_this18,_this18.error_)}))},_proto.reportUserActivity=function reportUserActivity(event){this.userActivity_=!0},_proto.userActive=function userActive(bool){if(void 0===bool)return this.userActive_;if((bool=!!bool)!==this.userActive_){if(this.userActive_=bool,this.userActive_)return this.userActivity_=!0,this.removeClass("vjs-user-inactive"),this.addClass("vjs-user-active"),void this.trigger("useractive");this.tech_&&this.tech_.one("mousemove",(function(e){e.stopPropagation(),e.preventDefault()})),this.userActivity_=!1,this.removeClass("vjs-user-active"),this.addClass("vjs-user-inactive"),this.trigger("userinactive")}},_proto.listenForUserActivity_=function listenForUserActivity_(){var mouseInProgress,lastMoveX,lastMoveY,handleActivity=bind(this,this.reportUserActivity),handleMouseMove=function handleMouseMove(e){e.screenX===lastMoveX&&e.screenY===lastMoveY||(lastMoveX=e.screenX,lastMoveY=e.screenY,handleActivity())},handleMouseDown=function handleMouseDown(){handleActivity(),this.clearInterval(mouseInProgress),mouseInProgress=this.setInterval(handleActivity,250)},handleMouseUpAndMouseLeave=function handleMouseUpAndMouseLeave(event){handleActivity(),this.clearInterval(mouseInProgress)};this.on("mousedown",handleMouseDown),this.on("mousemove",handleMouseMove),this.on("mouseup",handleMouseUpAndMouseLeave),this.on("mouseleave",handleMouseUpAndMouseLeave);var controlBar=this.getChild("controlBar"),inactivityTimeout;!controlBar||IS_IOS||IS_ANDROID||(controlBar.on("mouseenter",(function(event){0!==this.player().options_.inactivityTimeout&&(this.player().cache_.inactivityTimeout=this.player().options_.inactivityTimeout),this.player().options_.inactivityTimeout=0})),controlBar.on("mouseleave",(function(event){this.player().options_.inactivityTimeout=this.player().cache_.inactivityTimeout}))),this.on("keydown",handleActivity),this.on("keyup",handleActivity),this.setInterval((function(){if(this.userActivity_){this.userActivity_=!1,this.userActive(!0),this.clearTimeout(inactivityTimeout);var timeout=this.options_.inactivityTimeout;timeout<=0||(inactivityTimeout=this.setTimeout((function(){this.userActivity_||this.userActive(!1)}),timeout))}}),250)},_proto.playbackRate=function playbackRate(rate){if(void 0===rate)return this.tech_&&this.tech_.featuresPlaybackRate?this.cache_.lastPlaybackRate||this.techGet_("playbackRate"):1;this.techCall_("setPlaybackRate",rate)},_proto.defaultPlaybackRate=function defaultPlaybackRate(rate){return void 0!==rate?this.techCall_("setDefaultPlaybackRate",rate):this.tech_&&this.tech_.featuresPlaybackRate?this.techGet_("defaultPlaybackRate"):1},_proto.isAudio=function isAudio(bool){if(void 0===bool)return!!this.isAudio_;this.isAudio_=!!bool},_proto.enableAudioOnlyUI_=function enableAudioOnlyUI_(){var _this19=this;this.addClass("vjs-audio-only-mode");var playerChildren=this.children(),controlBar=this.getChild("ControlBar"),controlBarHeight=controlBar&&controlBar.currentHeight();playerChildren.forEach((function(child){child!==controlBar&&child.el_&&!child.hasClass("vjs-hidden")&&(child.hide(),_this19.audioOnlyCache_.hiddenChildren.push(child))})),this.audioOnlyCache_.playerHeight=this.currentHeight(),this.height(controlBarHeight),this.trigger("audioonlymodechange")},_proto.disableAudioOnlyUI_=function disableAudioOnlyUI_(){this.removeClass("vjs-audio-only-mode"),this.audioOnlyCache_.hiddenChildren.forEach((function(child){return child.show()})),this.height(this.audioOnlyCache_.playerHeight),this.trigger("audioonlymodechange")},_proto.audioOnlyMode=function audioOnlyMode(value){var _this20=this;if("boolean"!=typeof value||value===this.audioOnlyMode_)return this.audioOnlyMode_;this.audioOnlyMode_=value;var PromiseClass=this.options_.Promise||window.Promise;if(PromiseClass){if(value){var exitPromises=[];return this.isInPictureInPicture()&&exitPromises.push(this.exitPictureInPicture()),this.isFullscreen()&&exitPromises.push(this.exitFullscreen()),this.audioPosterMode()&&exitPromises.push(this.audioPosterMode(!1)),PromiseClass.all(exitPromises).then((function(){return _this20.enableAudioOnlyUI_()}))}return PromiseClass.resolve().then((function(){return _this20.disableAudioOnlyUI_()}))}value?(this.isInPictureInPicture()&&this.exitPictureInPicture(),this.isFullscreen()&&this.exitFullscreen(),this.enableAudioOnlyUI_()):this.disableAudioOnlyUI_()},_proto.enablePosterModeUI_=function enablePosterModeUI_(){var tech;(this.tech_&&this.tech_).hide(),this.addClass("vjs-audio-poster-mode"),this.trigger("audiopostermodechange")},_proto.disablePosterModeUI_=function disablePosterModeUI_(){var tech;(this.tech_&&this.tech_).show(),this.removeClass("vjs-audio-poster-mode"),this.trigger("audiopostermodechange")},_proto.audioPosterMode=function audioPosterMode(value){var _this21=this;if("boolean"!=typeof value||value===this.audioPosterMode_)return this.audioPosterMode_;this.audioPosterMode_=value;var PromiseClass=this.options_.Promise||window.Promise,audioOnlyModePromise;return PromiseClass?value?this.audioOnlyMode()?this.audioOnlyMode(!1).then((function(){_this21.enablePosterModeUI_()})):PromiseClass.resolve().then((function(){_this21.enablePosterModeUI_()})):PromiseClass.resolve().then((function(){_this21.disablePosterModeUI_()})):value?(this.audioOnlyMode()&&this.audioOnlyMode(!1),void this.enablePosterModeUI_()):void this.disablePosterModeUI_()},_proto.addTextTrack=function addTextTrack(kind,label,language){if(this.tech_)return this.tech_.addTextTrack(kind,label,language)},_proto.addRemoteTextTrack=function addRemoteTextTrack(options,manualCleanup){if(this.tech_)return this.tech_.addRemoteTextTrack(options,manualCleanup)},_proto.removeRemoteTextTrack=function removeRemoteTextTrack(obj){void 0===obj&&(obj={});var _obj,track=obj.track;if(track||(track=obj),this.tech_)return this.tech_.removeRemoteTextTrack(track)},_proto.getVideoPlaybackQuality=function getVideoPlaybackQuality(){return this.techGet_("getVideoPlaybackQuality")},_proto.videoWidth=function videoWidth(){return this.tech_&&this.tech_.videoWidth&&this.tech_.videoWidth()||0},_proto.videoHeight=function videoHeight(){return this.tech_&&this.tech_.videoHeight&&this.tech_.videoHeight()||0},_proto.language=function language(code){if(void 0===code)return this.language_;this.language_!==String(code).toLowerCase()&&(this.language_=String(code).toLowerCase(),isEvented(this)&&this.trigger("languagechange"))},_proto.languages=function languages(){return mergeOptions$3(Player.prototype.options_.languages,this.languages_)},_proto.toJSON=function toJSON(){var options=mergeOptions$3(this.options_),tracks=options.tracks;options.tracks=[];for(var i=0;i-1},_proto.trigger=function trigger(type){var callbacks=this.listeners[type];if(callbacks)if(2===arguments.length)for(var length=callbacks.length,i=0;i-1;nextNewline=this.buffer.indexOf("\n"))this.trigger("data",this.buffer.substring(0,nextNewline)),this.buffer=this.buffer.substring(nextNewline+1)},LineStream}(Stream),TAB=String.fromCharCode(9),parseByterange=function parseByterange(byterangeString){var match=/([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString||""),result={};return match[1]&&(result.length=parseInt(match[1],10)),match[2]&&(result.offset=parseInt(match[2],10)),result},attributeSeparator=function attributeSeparator(){var key="[^=]*",value,keyvalue;return new RegExp("(?:^|,)("+("(?:[^=]*)=(?:"+'"[^"]*"|[^,]*'+")")+")")},parseAttributes$1=function parseAttributes(attributes){for(var attrs=attributes.split(attributeSeparator()),result={},i=attrs.length,attr;i--;)""!==attrs[i]&&((attr=/([^=]*)=(.*)/.exec(attrs[i]).slice(1))[0]=attr[0].replace(/^\s+|\s+$/g,""),attr[1]=attr[1].replace(/^\s+|\s+$/g,""),attr[1]=attr[1].replace(/^['"](.*)['"]$/g,"$1"),result[attr[0]]=attr[1]);return result},ParseStream=function(_Stream){function ParseStream(){var _this;return(_this=_Stream.call(this)||this).customParsers=[],_this.tagMappers=[],_this}inheritsLoose(ParseStream,_Stream);var _proto=ParseStream.prototype;return _proto.push=function push(line){var _this2=this,match,event,newLines;0!==(line=line.trim()).length&&("#"===line[0]?this.tagMappers.reduce((function(acc,mapper){var mappedLine=mapper(line);return mappedLine===line?acc:acc.concat([mappedLine])}),[line]).forEach((function(newLine){for(var i=0;i<_this2.customParsers.length;i++)if(_this2.customParsers[i].call(_this2,newLine))return;if(0===newLine.indexOf("#EXT"))if(newLine=newLine.replace("\r",""),match=/^#EXTM3U/.exec(newLine))_this2.trigger("data",{type:"tag",tagType:"m3u"});else{if(match=/^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(newLine))return event={type:"tag",tagType:"inf"},match[1]&&(event.duration=parseFloat(match[1])),match[2]&&(event.title=match[2]),void _this2.trigger("data",event);if(match=/^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine))return event={type:"tag",tagType:"targetduration"},match[1]&&(event.duration=parseInt(match[1],10)),void _this2.trigger("data",event);if(match=/^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine))return event={type:"tag",tagType:"version"},match[1]&&(event.version=parseInt(match[1],10)),void _this2.trigger("data",event);if(match=/^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(newLine))return event={type:"tag",tagType:"media-sequence"},match[1]&&(event.number=parseInt(match[1],10)),void _this2.trigger("data",event);if(match=/^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(newLine))return event={type:"tag",tagType:"discontinuity-sequence"},match[1]&&(event.number=parseInt(match[1],10)),void _this2.trigger("data",event);if(match=/^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine))return event={type:"tag",tagType:"playlist-type"},match[1]&&(event.playlistType=match[1]),void _this2.trigger("data",event);if(match=/^#EXT-X-BYTERANGE:?(.*)?$/.exec(newLine))return event=_extends_1(parseByterange(match[1]),{type:"tag",tagType:"byterange"}),void _this2.trigger("data",event);if(match=/^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine))return event={type:"tag",tagType:"allow-cache"},match[1]&&(event.allowed=!/NO/.test(match[1])),void _this2.trigger("data",event);if(match=/^#EXT-X-MAP:?(.*)$/.exec(newLine)){if(event={type:"tag",tagType:"map"},match[1]){var attributes=parseAttributes$1(match[1]);attributes.URI&&(event.uri=attributes.URI),attributes.BYTERANGE&&(event.byterange=parseByterange(attributes.BYTERANGE))}_this2.trigger("data",event)}else if(match=/^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine)){if(event={type:"tag",tagType:"stream-inf"},match[1]){if(event.attributes=parseAttributes$1(match[1]),event.attributes.RESOLUTION){var split=event.attributes.RESOLUTION.split("x"),resolution={};split[0]&&(resolution.width=parseInt(split[0],10)),split[1]&&(resolution.height=parseInt(split[1],10)),event.attributes.RESOLUTION=resolution}event.attributes.BANDWIDTH&&(event.attributes.BANDWIDTH=parseInt(event.attributes.BANDWIDTH,10)),event.attributes["PROGRAM-ID"]&&(event.attributes["PROGRAM-ID"]=parseInt(event.attributes["PROGRAM-ID"],10))}_this2.trigger("data",event)}else{if(match=/^#EXT-X-MEDIA:?(.*)$/.exec(newLine))return event={type:"tag",tagType:"media"},match[1]&&(event.attributes=parseAttributes$1(match[1])),void _this2.trigger("data",event);if(match=/^#EXT-X-ENDLIST/.exec(newLine))_this2.trigger("data",{type:"tag",tagType:"endlist"});else if(match=/^#EXT-X-DISCONTINUITY/.exec(newLine))_this2.trigger("data",{type:"tag",tagType:"discontinuity"});else{if(match=/^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine))return event={type:"tag",tagType:"program-date-time"},match[1]&&(event.dateTimeString=match[1],event.dateTimeObject=new Date(match[1])),void _this2.trigger("data",event);if(match=/^#EXT-X-KEY:?(.*)$/.exec(newLine))return event={type:"tag",tagType:"key"},match[1]&&(event.attributes=parseAttributes$1(match[1]),event.attributes.IV&&("0x"===event.attributes.IV.substring(0,2).toLowerCase()&&(event.attributes.IV=event.attributes.IV.substring(2)),event.attributes.IV=event.attributes.IV.match(/.{8}/g),event.attributes.IV[0]=parseInt(event.attributes.IV[0],16),event.attributes.IV[1]=parseInt(event.attributes.IV[1],16),event.attributes.IV[2]=parseInt(event.attributes.IV[2],16),event.attributes.IV[3]=parseInt(event.attributes.IV[3],16),event.attributes.IV=new Uint32Array(event.attributes.IV))),void _this2.trigger("data",event);if(match=/^#EXT-X-START:?(.*)$/.exec(newLine))return event={type:"tag",tagType:"start"},match[1]&&(event.attributes=parseAttributes$1(match[1]),event.attributes["TIME-OFFSET"]=parseFloat(event.attributes["TIME-OFFSET"]),event.attributes.PRECISE=/YES/.test(event.attributes.PRECISE)),void _this2.trigger("data",event);if(match=/^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine))return event={type:"tag",tagType:"cue-out-cont"},match[1]?event.data=match[1]:event.data="",void _this2.trigger("data",event);if(match=/^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine))return event={type:"tag",tagType:"cue-out"},match[1]?event.data=match[1]:event.data="",void _this2.trigger("data",event);if(match=/^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine))return event={type:"tag",tagType:"cue-in"},match[1]?event.data=match[1]:event.data="",void _this2.trigger("data",event);if((match=/^#EXT-X-SKIP:(.*)$/.exec(newLine))&&match[1])return(event={type:"tag",tagType:"skip"}).attributes=parseAttributes$1(match[1]),event.attributes.hasOwnProperty("SKIPPED-SEGMENTS")&&(event.attributes["SKIPPED-SEGMENTS"]=parseInt(event.attributes["SKIPPED-SEGMENTS"],10)),event.attributes.hasOwnProperty("RECENTLY-REMOVED-DATERANGES")&&(event.attributes["RECENTLY-REMOVED-DATERANGES"]=event.attributes["RECENTLY-REMOVED-DATERANGES"].split(TAB)),void _this2.trigger("data",event);if((match=/^#EXT-X-PART:(.*)$/.exec(newLine))&&match[1])return(event={type:"tag",tagType:"part"}).attributes=parseAttributes$1(match[1]),["DURATION"].forEach((function(key){event.attributes.hasOwnProperty(key)&&(event.attributes[key]=parseFloat(event.attributes[key]))})),["INDEPENDENT","GAP"].forEach((function(key){event.attributes.hasOwnProperty(key)&&(event.attributes[key]=/YES/.test(event.attributes[key]))})),event.attributes.hasOwnProperty("BYTERANGE")&&(event.attributes.byterange=parseByterange(event.attributes.BYTERANGE)),void _this2.trigger("data",event);if((match=/^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine))&&match[1])return(event={type:"tag",tagType:"server-control"}).attributes=parseAttributes$1(match[1]),["CAN-SKIP-UNTIL","PART-HOLD-BACK","HOLD-BACK"].forEach((function(key){event.attributes.hasOwnProperty(key)&&(event.attributes[key]=parseFloat(event.attributes[key]))})),["CAN-SKIP-DATERANGES","CAN-BLOCK-RELOAD"].forEach((function(key){event.attributes.hasOwnProperty(key)&&(event.attributes[key]=/YES/.test(event.attributes[key]))})),void _this2.trigger("data",event);if((match=/^#EXT-X-PART-INF:(.*)$/.exec(newLine))&&match[1])return(event={type:"tag",tagType:"part-inf"}).attributes=parseAttributes$1(match[1]),["PART-TARGET"].forEach((function(key){event.attributes.hasOwnProperty(key)&&(event.attributes[key]=parseFloat(event.attributes[key]))})),void _this2.trigger("data",event);if((match=/^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine))&&match[1])return(event={type:"tag",tagType:"preload-hint"}).attributes=parseAttributes$1(match[1]),["BYTERANGE-START","BYTERANGE-LENGTH"].forEach((function(key){if(event.attributes.hasOwnProperty(key)){event.attributes[key]=parseInt(event.attributes[key],10);var subkey="BYTERANGE-LENGTH"===key?"length":"offset";event.attributes.byterange=event.attributes.byterange||{},event.attributes.byterange[subkey]=event.attributes[key],delete event.attributes[key]}})),void _this2.trigger("data",event);if((match=/^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine))&&match[1])return(event={type:"tag",tagType:"rendition-report"}).attributes=parseAttributes$1(match[1]),["LAST-MSN","LAST-PART"].forEach((function(key){event.attributes.hasOwnProperty(key)&&(event.attributes[key]=parseInt(event.attributes[key],10))})),void _this2.trigger("data",event);_this2.trigger("data",{type:"tag",data:newLine.slice(4)})}}}else _this2.trigger("data",{type:"comment",text:newLine.slice(1)})})):this.trigger("data",{type:"uri",uri:line}))},_proto.addParser=function addParser(_ref){var _this3=this,expression=_ref.expression,customType=_ref.customType,dataParser=_ref.dataParser,segment=_ref.segment;"function"!=typeof dataParser&&(dataParser=function dataParser(line){return line}),this.customParsers.push((function(line){var match;if(expression.exec(line))return _this3.trigger("data",{type:"custom",data:dataParser(line),customType:customType,segment:segment}),!0}))},_proto.addTagMapper=function addTagMapper(_ref2){var expression=_ref2.expression,map=_ref2.map,mapFn=function mapFn(line){return expression.test(line)?map(line):line};this.tagMappers.push(mapFn)},ParseStream}(Stream),camelCase=function camelCase(str){return str.toLowerCase().replace(/-(\w)/g,(function(a){return a[1].toUpperCase()}))},camelCaseKeys=function camelCaseKeys(attributes){var result={};return Object.keys(attributes).forEach((function(key){result[camelCase(key)]=attributes[key]})),result},setHoldBack=function setHoldBack(manifest){var serverControl=manifest.serverControl,targetDuration=manifest.targetDuration,partTargetDuration=manifest.partTargetDuration;if(serverControl){var tag="#EXT-X-SERVER-CONTROL",hb="holdBack",phb="partHoldBack",minTargetDuration=targetDuration&&3*targetDuration,minPartDuration=partTargetDuration&&2*partTargetDuration;targetDuration&&!serverControl.hasOwnProperty(hb)&&(serverControl[hb]=minTargetDuration,this.trigger("info",{message:tag+" defaulting HOLD-BACK to targetDuration * 3 ("+minTargetDuration+")."})),minTargetDuration&&serverControl[hb]0&&(currentUri.duration=entry.duration),0===entry.duration&&(currentUri.duration=.01,this.trigger("info",{message:"updating zero segment duration to a small value"})),this.manifest.segments=uris},key:function key(){if(entry.attributes)if("NONE"!==entry.attributes.METHOD)if(entry.attributes.URI){if("com.apple.streamingkeydelivery"===entry.attributes.KEYFORMAT)return this.manifest.contentProtection=this.manifest.contentProtection||{},void(this.manifest.contentProtection["com.apple.fps.1_0"]={attributes:entry.attributes});var VALID_METHODS;if(entry.attributes.KEYFORMAT===widevineUuid)return-1===["SAMPLE-AES","SAMPLE-AES-CTR","SAMPLE-AES-CENC"].indexOf(entry.attributes.METHOD)?void this.trigger("warn",{message:"invalid key method provided for Widevine"}):("SAMPLE-AES-CENC"===entry.attributes.METHOD&&this.trigger("warn",{message:"SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead"}),"data:text/plain;base64,"!==entry.attributes.URI.substring(0,23)?void this.trigger("warn",{message:"invalid key URI provided for Widevine"}):entry.attributes.KEYID&&"0x"===entry.attributes.KEYID.substring(0,2)?(this.manifest.contentProtection=this.manifest.contentProtection||{},void(this.manifest.contentProtection["com.widevine.alpha"]={attributes:{schemeIdUri:entry.attributes.KEYFORMAT,keyId:entry.attributes.KEYID.substring(2)},pssh:decodeB64ToUint8Array(entry.attributes.URI.split(",")[1])})):void this.trigger("warn",{message:"invalid key ID provided for Widevine"}));entry.attributes.METHOD||this.trigger("warn",{message:"defaulting key method to AES-128"}),_key={method:entry.attributes.METHOD||"AES-128",uri:entry.attributes.URI},void 0!==entry.attributes.IV&&(_key.iv=entry.attributes.IV)}else this.trigger("warn",{message:"ignoring key declaration without URI"});else _key=null;else this.trigger("warn",{message:"ignoring key declaration without attribute list"})},"media-sequence":function mediaSequence(){isFinite(entry.number)?this.manifest.mediaSequence=entry.number:this.trigger("warn",{message:"ignoring invalid media sequence: "+entry.number})},"discontinuity-sequence":function discontinuitySequence(){isFinite(entry.number)?(this.manifest.discontinuitySequence=entry.number,currentTimeline=entry.number):this.trigger("warn",{message:"ignoring invalid discontinuity sequence: "+entry.number})},"playlist-type":function playlistType(){/VOD|EVENT/.test(entry.playlistType)?this.manifest.playlistType=entry.playlistType:this.trigger("warn",{message:"ignoring unknown playlist type: "+entry.playlist})},map:function map(){currentMap={},entry.uri&&(currentMap.uri=entry.uri),entry.byterange&&(currentMap.byterange=entry.byterange),_key&&(currentMap.key=_key)},"stream-inf":function streamInf(){this.manifest.playlists=uris,this.manifest.mediaGroups=this.manifest.mediaGroups||defaultMediaGroups,entry.attributes?(currentUri.attributes||(currentUri.attributes={}),_extends_1(currentUri.attributes,entry.attributes)):this.trigger("warn",{message:"ignoring empty stream-inf attributes"})},media:function media(){if(this.manifest.mediaGroups=this.manifest.mediaGroups||defaultMediaGroups,entry.attributes&&entry.attributes.TYPE&&entry.attributes["GROUP-ID"]&&entry.attributes.NAME){var mediaGroupType=this.manifest.mediaGroups[entry.attributes.TYPE];mediaGroupType[entry.attributes["GROUP-ID"]]=mediaGroupType[entry.attributes["GROUP-ID"]]||{},mediaGroup=mediaGroupType[entry.attributes["GROUP-ID"]],(rendition={default:/yes/i.test(entry.attributes.DEFAULT)}).default?rendition.autoselect=!0:rendition.autoselect=/yes/i.test(entry.attributes.AUTOSELECT),entry.attributes.LANGUAGE&&(rendition.language=entry.attributes.LANGUAGE),entry.attributes.URI&&(rendition.uri=entry.attributes.URI),entry.attributes["INSTREAM-ID"]&&(rendition.instreamId=entry.attributes["INSTREAM-ID"]),entry.attributes.CHARACTERISTICS&&(rendition.characteristics=entry.attributes.CHARACTERISTICS),entry.attributes.FORCED&&(rendition.forced=/yes/i.test(entry.attributes.FORCED)),mediaGroup[entry.attributes.NAME]=rendition}else this.trigger("warn",{message:"ignoring incomplete or missing media group"})},discontinuity:function discontinuity(){currentTimeline+=1,currentUri.discontinuity=!0,this.manifest.discontinuityStarts.push(uris.length)},"program-date-time":function programDateTime(){void 0===this.manifest.dateTimeString&&(this.manifest.dateTimeString=entry.dateTimeString,this.manifest.dateTimeObject=entry.dateTimeObject),currentUri.dateTimeString=entry.dateTimeString,currentUri.dateTimeObject=entry.dateTimeObject},targetduration:function targetduration(){!isFinite(entry.duration)||entry.duration<0?this.trigger("warn",{message:"ignoring invalid target duration: "+entry.duration}):(this.manifest.targetDuration=entry.duration,setHoldBack.call(this,this.manifest))},start:function start(){entry.attributes&&!isNaN(entry.attributes["TIME-OFFSET"])?this.manifest.start={timeOffset:entry.attributes["TIME-OFFSET"],precise:entry.attributes.PRECISE}:this.trigger("warn",{message:"ignoring start declaration without appropriate attribute list"})},"cue-out":function cueOut(){currentUri.cueOut=entry.data},"cue-out-cont":function cueOutCont(){currentUri.cueOutCont=entry.data},"cue-in":function cueIn(){currentUri.cueIn=entry.data},skip:function skip(){this.manifest.skip=camelCaseKeys(entry.attributes),this.warnOnMissingAttributes_("#EXT-X-SKIP",entry.attributes,["SKIPPED-SEGMENTS"])},part:function part(){var _this2=this;hasParts=!0;var segmentIndex=this.manifest.segments.length,part=camelCaseKeys(entry.attributes);currentUri.parts=currentUri.parts||[],currentUri.parts.push(part),part.byterange&&(part.byterange.hasOwnProperty("offset")||(part.byterange.offset=lastPartByterangeEnd),lastPartByterangeEnd=part.byterange.offset+part.byterange.length);var partIndex=currentUri.parts.length-1;this.warnOnMissingAttributes_("#EXT-X-PART #"+partIndex+" for segment #"+segmentIndex,entry.attributes,["URI","DURATION"]),this.manifest.renditionReports&&this.manifest.renditionReports.forEach((function(r,i){r.hasOwnProperty("lastPart")||_this2.trigger("warn",{message:"#EXT-X-RENDITION-REPORT #"+i+" lacks required attribute(s): LAST-PART"})}))},"server-control":function serverControl(){var attrs=this.manifest.serverControl=camelCaseKeys(entry.attributes);attrs.hasOwnProperty("canBlockReload")||(attrs.canBlockReload=!1,this.trigger("info",{message:"#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false"})),setHoldBack.call(this,this.manifest),attrs.canSkipDateranges&&!attrs.hasOwnProperty("canSkipUntil")&&this.trigger("warn",{message:"#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set"})},"preload-hint":function preloadHint(){var segmentIndex=this.manifest.segments.length,hint=camelCaseKeys(entry.attributes),isPart=hint.type&&"PART"===hint.type;currentUri.preloadHints=currentUri.preloadHints||[],currentUri.preloadHints.push(hint),hint.byterange&&(hint.byterange.hasOwnProperty("offset")||(hint.byterange.offset=isPart?lastPartByterangeEnd:0,isPart&&(lastPartByterangeEnd=hint.byterange.offset+hint.byterange.length)));var index=currentUri.preloadHints.length-1;if(this.warnOnMissingAttributes_("#EXT-X-PRELOAD-HINT #"+index+" for segment #"+segmentIndex,entry.attributes,["TYPE","URI"]),hint.type)for(var i=0;i=0))throw DOMException(NOT_FOUND_ERR,new Error(el.tagName+"@"+attr));for(var lastIndex=list.length-1;i"==c&&">")||"&"==c&&"&"||'"'==c&&"""||"&#"+c.charCodeAt()+";"}function _visitNode(node,callback){if(callback(node))return!0;if(node=node.firstChild)do{if(_visitNode(node,callback))return!0}while(node=node.nextSibling)}function Document(){}function _onAddAttribute(doc,el,newAttr){var ns;doc&&doc._inc++,newAttr.namespaceURI===NAMESPACE$2.XMLNS&&(el._nsMap[newAttr.prefix?newAttr.localName:""]=newAttr.value)}function _onRemoveAttribute(doc,el,newAttr,remove){var ns;doc&&doc._inc++,newAttr.namespaceURI===NAMESPACE$2.XMLNS&&delete el._nsMap[newAttr.prefix?newAttr.localName:""]}function _onUpdateChild(doc,el,newChild){if(doc&&doc._inc){doc._inc++;var cs=el.childNodes;if(newChild)cs[cs.length++]=newChild;else{for(var child=el.firstChild,i=0;child;)cs[i++]=child,child=child.nextSibling;cs.length=i}}}function _removeChild(parentNode,child){var previous=child.previousSibling,next=child.nextSibling;return previous?previous.nextSibling=next:parentNode.firstChild=next,next?next.previousSibling=previous:parentNode.lastChild=previous,_onUpdateChild(parentNode.ownerDocument,parentNode),child}function _insertBefore(parentNode,newChild,nextChild){var cp=newChild.parentNode;if(cp&&cp.removeChild(newChild),newChild.nodeType===DOCUMENT_FRAGMENT_NODE){var newFirst=newChild.firstChild;if(null==newFirst)return newChild;var newLast=newChild.lastChild}else newFirst=newLast=newChild;var pre=nextChild?nextChild.previousSibling:parentNode.lastChild;newFirst.previousSibling=pre,newLast.nextSibling=nextChild,pre?pre.nextSibling=newFirst:parentNode.firstChild=newFirst,null==nextChild?parentNode.lastChild=newLast:nextChild.previousSibling=newLast;do{newFirst.parentNode=parentNode}while(newFirst!==newLast&&(newFirst=newFirst.nextSibling));return _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode),newChild.nodeType==DOCUMENT_FRAGMENT_NODE&&(newChild.firstChild=newChild.lastChild=null),newChild}function _appendSingleChild(parentNode,newChild){var cp=newChild.parentNode;if(cp){var pre=parentNode.lastChild;cp.removeChild(newChild);var pre=parentNode.lastChild}var pre=parentNode.lastChild;return newChild.parentNode=parentNode,newChild.previousSibling=pre,newChild.nextSibling=null,pre?pre.nextSibling=newChild:parentNode.firstChild=newChild,parentNode.lastChild=newChild,_onUpdateChild(parentNode.ownerDocument,parentNode,newChild),newChild}function Element(){this._nsMap={}}function Attr(){}function CharacterData(){}function Text(){}function Comment(){}function CDATASection(){}function DocumentType(){}function Notation(){}function Entity(){}function EntityReference(){}function DocumentFragment(){}function ProcessingInstruction(){}function XMLSerializer$1(){}function nodeSerializeToString(isHtml,nodeFilter){var buf=[],refNode=9==this.nodeType&&this.documentElement||this,prefix=refNode.prefix,uri=refNode.namespaceURI,prefix;if(uri&&null==prefix&&null==(prefix=refNode.lookupPrefix(uri)))var visibleNamespaces=[{namespace:uri,prefix:null}];return serializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces),buf.join("")}function needNamespaceDefine(node,isHTML,visibleNamespaces){var prefix=node.prefix||"",uri=node.namespaceURI;if(!uri)return!1;if("xml"===prefix&&uri===NAMESPACE$2.XML||uri===NAMESPACE$2.XMLNS)return!1;for(var i=visibleNamespaces.length;i--;){var ns=visibleNamespaces[i];if(ns.prefix===prefix)return ns.namespace!==uri}return!0}function addSerializedAttribute(buf,qualifiedName,value){buf.push(" ",qualifiedName,'="',value.replace(/[<&"]/g,_xmlEncoder),'"')}function serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){if(visibleNamespaces||(visibleNamespaces=[]),nodeFilter){if(!(node=nodeFilter(node)))return;if("string"==typeof node)return void buf.push(node)}switch(node.nodeType){case ELEMENT_NODE:var attrs=node.attributes,len=attrs.length,child=node.firstChild,nodeName=node.tagName,prefixedNodeName=nodeName,prefix,uri;if(!(isHTML=NAMESPACE$2.isHTML(node.namespaceURI)||isHTML)&&!node.prefix&&node.namespaceURI){for(var defaultNS,ai=0;ai=0;nsi--){var namespace;if(""===(namespace=visibleNamespaces[nsi]).prefix&&namespace.namespace===node.namespaceURI){defaultNS=namespace.namespace;break}}if(defaultNS!==node.namespaceURI)for(var nsi=visibleNamespaces.length-1;nsi>=0;nsi--){var namespace;if((namespace=visibleNamespaces[nsi]).namespace===node.namespaceURI){namespace.prefix&&(prefixedNodeName=namespace.prefix+":"+nodeName);break}}}buf.push("<",prefixedNodeName);for(var i=0;i"),isHTML&&/^script$/i.test(nodeName))for(;child;)child.data?buf.push(child.data):serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces.slice()),child=child.nextSibling;else for(;child;)serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces.slice()),child=child.nextSibling;buf.push("")}else buf.push("/>");return;case DOCUMENT_NODE:case DOCUMENT_FRAGMENT_NODE:for(var child=node.firstChild;child;)serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces.slice()),child=child.nextSibling;return;case ATTRIBUTE_NODE:return addSerializedAttribute(buf,node.name,node.value);case TEXT_NODE:return buf.push(node.data.replace(/[<&]/g,_xmlEncoder).replace(/]]>/g,"]]>"));case CDATA_SECTION_NODE:return buf.push("");case COMMENT_NODE:return buf.push("\x3c!--",node.data,"--\x3e");case DOCUMENT_TYPE_NODE:var pubid=node.publicId,sysid=node.systemId;if(buf.push("");else if(sysid&&"."!=sysid)buf.push(" SYSTEM ",sysid,">");else{var sub=node.internalSubset;sub&&buf.push(" [",sub,"]"),buf.push(">")}return;case PROCESSING_INSTRUCTION_NODE:return buf.push("");case ENTITY_REFERENCE_NODE:return buf.push("&",node.nodeName,";");default:buf.push("??",node.nodeName)}}function _importNode(doc,node,deep){var node2;switch(node.nodeType){case ELEMENT_NODE:(node2=node.cloneNode(!1)).ownerDocument=doc;case DOCUMENT_FRAGMENT_NODE:break;case ATTRIBUTE_NODE:deep=!0}if(node2||(node2=node.cloneNode(!1)),node2.ownerDocument=doc,node2.parentNode=null,deep)for(var child=node.firstChild;child;)node2.appendChild(_importNode(doc,child,deep)),child=child.nextSibling;return node2}function _cloneNode(doc,node,deep){var node2=new node.constructor;for(var n in node){var v=node[n];"object"!=typeof v&&v!=node2[n]&&(node2[n]=v)}switch(node.childNodes&&(node2.childNodes=new NodeList),node2.ownerDocument=doc,node2.nodeType){case ELEMENT_NODE:var attrs=node.attributes,attrs2=node2.attributes=new NamedNodeMap,len=attrs.length;attrs2._ownerElement=node2;for(var i=0;i0},lookupPrefix:function lookupPrefix(namespaceURI){for(var el=this;el;){var map=el._nsMap;if(map)for(var n in map)if(map[n]==namespaceURI)return n;el=el.nodeType==ATTRIBUTE_NODE?el.ownerDocument:el.parentNode}return null},lookupNamespaceURI:function lookupNamespaceURI(prefix){for(var el=this;el;){var map=el._nsMap;if(map&&prefix in map)return map[prefix];el=el.nodeType==ATTRIBUTE_NODE?el.ownerDocument:el.parentNode}return null},isDefaultNamespace:function isDefaultNamespace(namespaceURI){var prefix;return null==this.lookupPrefix(namespaceURI)}},copy(NodeType,Node),copy(NodeType,Node.prototype),Document.prototype={nodeName:"#document",nodeType:DOCUMENT_NODE,doctype:null,documentElement:null,_inc:1,insertBefore:function insertBefore(newChild,refChild){if(newChild.nodeType==DOCUMENT_FRAGMENT_NODE){for(var child=newChild.firstChild;child;){var next=child.nextSibling;this.insertBefore(child,refChild),child=next}return newChild}return null==this.documentElement&&newChild.nodeType==ELEMENT_NODE&&(this.documentElement=newChild),_insertBefore(this,newChild,refChild),newChild.ownerDocument=this,newChild},removeChild:function removeChild(oldChild){return this.documentElement==oldChild&&(this.documentElement=null),_removeChild(this,oldChild)},importNode:function importNode(importedNode,deep){return _importNode(this,importedNode,deep)},getElementById:function getElementById(id){var rtv=null;return _visitNode(this.documentElement,(function(node){if(node.nodeType==ELEMENT_NODE&&node.getAttribute("id")==id)return rtv=node,!0})),rtv},getElementsByClassName:function getElementsByClassName(classNames){var classNamesSet=toOrderedSet(classNames);return new LiveNodeList(this,(function(base){var ls=[];return classNamesSet.length>0&&_visitNode(base.documentElement,(function(node){if(node!==base&&node.nodeType===ELEMENT_NODE){var nodeClassNames=node.getAttribute("class");if(nodeClassNames){var matches=classNames===nodeClassNames;if(!matches){var nodeClassNamesSet=toOrderedSet(nodeClassNames);matches=classNamesSet.every(arrayIncludes(nodeClassNamesSet))}matches&&ls.push(node)}}})),ls}))},createElement:function createElement(tagName){var node=new Element,attrs;return node.ownerDocument=this,node.nodeName=tagName,node.tagName=tagName,node.localName=tagName,node.childNodes=new NodeList,(node.attributes=new NamedNodeMap)._ownerElement=node,node},createDocumentFragment:function createDocumentFragment(){var node=new DocumentFragment;return node.ownerDocument=this,node.childNodes=new NodeList,node},createTextNode:function createTextNode(data){var node=new Text;return node.ownerDocument=this,node.appendData(data),node},createComment:function createComment(data){var node=new Comment;return node.ownerDocument=this,node.appendData(data),node},createCDATASection:function createCDATASection(data){var node=new CDATASection;return node.ownerDocument=this,node.appendData(data),node},createProcessingInstruction:function createProcessingInstruction(target,data){var node=new ProcessingInstruction;return node.ownerDocument=this,node.tagName=node.target=target,node.nodeValue=node.data=data,node},createAttribute:function createAttribute(name){var node=new Attr;return node.ownerDocument=this,node.name=name,node.nodeName=name,node.localName=name,node.specified=!0,node},createEntityReference:function createEntityReference(name){var node=new EntityReference;return node.ownerDocument=this,node.nodeName=name,node},createElementNS:function createElementNS(namespaceURI,qualifiedName){var node=new Element,pl=qualifiedName.split(":"),attrs=node.attributes=new NamedNodeMap;return node.childNodes=new NodeList,node.ownerDocument=this,node.nodeName=qualifiedName,node.tagName=qualifiedName,node.namespaceURI=namespaceURI,2==pl.length?(node.prefix=pl[0],node.localName=pl[1]):node.localName=qualifiedName,attrs._ownerElement=node,node},createAttributeNS:function createAttributeNS(namespaceURI,qualifiedName){var node=new Attr,pl=qualifiedName.split(":");return node.ownerDocument=this,node.nodeName=qualifiedName,node.name=qualifiedName,node.namespaceURI=namespaceURI,node.specified=!0,2==pl.length?(node.prefix=pl[0],node.localName=pl[1]):node.localName=qualifiedName,node}},_extends(Document,Node),Element.prototype={nodeType:ELEMENT_NODE,hasAttribute:function hasAttribute(name){return null!=this.getAttributeNode(name)},getAttribute:function getAttribute(name){var attr=this.getAttributeNode(name);return attr&&attr.value||""},getAttributeNode:function getAttributeNode(name){return this.attributes.getNamedItem(name)},setAttribute:function setAttribute(name,value){var attr=this.ownerDocument.createAttribute(name);attr.value=attr.nodeValue=""+value,this.setAttributeNode(attr)},removeAttribute:function removeAttribute(name){var attr=this.getAttributeNode(name);attr&&this.removeAttributeNode(attr)},appendChild:function appendChild(newChild){return newChild.nodeType===DOCUMENT_FRAGMENT_NODE?this.insertBefore(newChild,null):_appendSingleChild(this,newChild)},setAttributeNode:function setAttributeNode(newAttr){return this.attributes.setNamedItem(newAttr)},setAttributeNodeNS:function setAttributeNodeNS(newAttr){return this.attributes.setNamedItemNS(newAttr)},removeAttributeNode:function removeAttributeNode(oldAttr){return this.attributes.removeNamedItem(oldAttr.nodeName)},removeAttributeNS:function removeAttributeNS(namespaceURI,localName){var old=this.getAttributeNodeNS(namespaceURI,localName);old&&this.removeAttributeNode(old)},hasAttributeNS:function hasAttributeNS(namespaceURI,localName){return null!=this.getAttributeNodeNS(namespaceURI,localName)},getAttributeNS:function getAttributeNS(namespaceURI,localName){var attr=this.getAttributeNodeNS(namespaceURI,localName);return attr&&attr.value||""},setAttributeNS:function setAttributeNS(namespaceURI,qualifiedName,value){var attr=this.ownerDocument.createAttributeNS(namespaceURI,qualifiedName);attr.value=attr.nodeValue=""+value,this.setAttributeNode(attr)},getAttributeNodeNS:function getAttributeNodeNS(namespaceURI,localName){return this.attributes.getNamedItemNS(namespaceURI,localName)},getElementsByTagName:function getElementsByTagName(tagName){return new LiveNodeList(this,(function(base){var ls=[];return _visitNode(base,(function(node){node===base||node.nodeType!=ELEMENT_NODE||"*"!==tagName&&node.tagName!=tagName||ls.push(node)})),ls}))},getElementsByTagNameNS:function getElementsByTagNameNS(namespaceURI,localName){return new LiveNodeList(this,(function(base){var ls=[];return _visitNode(base,(function(node){node===base||node.nodeType!==ELEMENT_NODE||"*"!==namespaceURI&&node.namespaceURI!==namespaceURI||"*"!==localName&&node.localName!=localName||ls.push(node)})),ls}))}},Document.prototype.getElementsByTagName=Element.prototype.getElementsByTagName,Document.prototype.getElementsByTagNameNS=Element.prototype.getElementsByTagNameNS,_extends(Element,Node),Attr.prototype.nodeType=ATTRIBUTE_NODE,_extends(Attr,Node),CharacterData.prototype={data:"",substringData:function substringData(offset,count){return this.data.substring(offset,offset+count)},appendData:function appendData(text){text=this.data+text,this.nodeValue=this.data=text,this.length=text.length},insertData:function insertData(offset,text){this.replaceData(offset,0,text)},appendChild:function appendChild(newChild){throw new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])},deleteData:function deleteData(offset,count){this.replaceData(offset,count,"")},replaceData:function replaceData(offset,count,text){var start,end;text=this.data.substring(0,offset)+text+this.data.substring(offset+count),this.nodeValue=this.data=text,this.length=text.length}},_extends(CharacterData,Node),Text.prototype={nodeName:"#text",nodeType:TEXT_NODE,splitText:function splitText(offset){var text=this.data,newText=text.substring(offset);text=text.substring(0,offset),this.data=this.nodeValue=text,this.length=text.length;var newNode=this.ownerDocument.createTextNode(newText);return this.parentNode&&this.parentNode.insertBefore(newNode,this.nextSibling),newNode}},_extends(Text,CharacterData),Comment.prototype={nodeName:"#comment",nodeType:COMMENT_NODE},_extends(Comment,CharacterData),CDATASection.prototype={nodeName:"#cdata-section",nodeType:CDATA_SECTION_NODE},_extends(CDATASection,CharacterData),DocumentType.prototype.nodeType=DOCUMENT_TYPE_NODE,_extends(DocumentType,Node),Notation.prototype.nodeType=NOTATION_NODE,_extends(Notation,Node),Entity.prototype.nodeType=ENTITY_NODE,_extends(Entity,Node),EntityReference.prototype.nodeType=ENTITY_REFERENCE_NODE,_extends(EntityReference,Node),DocumentFragment.prototype.nodeName="#document-fragment",DocumentFragment.prototype.nodeType=DOCUMENT_FRAGMENT_NODE,_extends(DocumentFragment,Node),ProcessingInstruction.prototype.nodeType=PROCESSING_INSTRUCTION_NODE,_extends(ProcessingInstruction,Node),XMLSerializer$1.prototype.serializeToString=function(node,isHtml,nodeFilter){return nodeSerializeToString.call(node,isHtml,nodeFilter)},Node.prototype.toString=nodeSerializeToString;try{if(Object.defineProperty){var getTextContent=function getTextContent(node){switch(node.nodeType){case ELEMENT_NODE:case DOCUMENT_FRAGMENT_NODE:var buf=[];for(node=node.firstChild;node;)7!==node.nodeType&&8!==node.nodeType&&buf.push(getTextContent(node)),node=node.nextSibling;return buf.join("");default:return node.nodeValue}};Object.defineProperty(LiveNodeList.prototype,"length",{get:function get(){return _updateLiveList(this),this.$$length}}),Object.defineProperty(Node.prototype,"textContent",{get:function get(){return getTextContent(this)},set:function set(data){switch(this.nodeType){case ELEMENT_NODE:case DOCUMENT_FRAGMENT_NODE:for(;this.firstChild;)this.removeChild(this.firstChild);(data||String(data))&&this.appendChild(this.ownerDocument.createTextNode(data));break;default:this.data=data,this.value=data,this.nodeValue=data}}}),__set__=function __set__(object,key,value){object["$$"+key]=value}}}catch(e){}var DocumentType_1,DOMException_1,DOMImplementation_1$1,Element_1,Node_1,NodeList_1,XMLSerializer_1,dom={DocumentType:DocumentType,DOMException:DOMException,DOMImplementation:DOMImplementation$1,Element:Element,Node:Node,NodeList:NodeList,XMLSerializer:XMLSerializer$1},entities=createCommonjsModule((function(module,exports){var freeze=conventions.freeze;exports.XML_ENTITIES=freeze({amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}),exports.HTML_ENTITIES=freeze({lt:"<",gt:">",amp:"&",quot:'"',apos:"'",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",times:"×",divide:"÷",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",euro:"€",trade:"™",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"}),exports.entityMap=exports.HTML_ENTITIES}));entities.XML_ENTITIES,entities.HTML_ENTITIES,entities.entityMap;var NAMESPACE$1=conventions.NAMESPACE,nameStartChar=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,nameChar=new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),tagNamePattern=new RegExp("^"+nameStartChar.source+nameChar.source+"*(?::"+nameStartChar.source+nameChar.source+"*)?$"),S_TAG=0,S_ATTR=1,S_ATTR_SPACE=2,S_EQ=3,S_ATTR_NOQUOT_VALUE=4,S_ATTR_END=5,S_TAG_SPACE=6,S_TAG_CLOSE=7;function ParseError$1(message,locator){this.message=message,this.locator=locator,Error.captureStackTrace&&Error.captureStackTrace(this,ParseError$1)}function XMLReader$1(){}function _parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){function fixedFromCharCode(code){if(code>65535){var surrogate1=55296+((code-=65536)>>10),surrogate2=56320+(1023&code);return String.fromCharCode(surrogate1,surrogate2)}return String.fromCharCode(code)}function entityReplacer(a){var k=a.slice(1,-1);return k in entityMap?entityMap[k]:"#"===k.charAt(0)?fixedFromCharCode(parseInt(k.substr(1).replace("x","0x"))):(errorHandler.error("entity not found:"+a),a)}function appendText(end){if(end>start){var xt=source.substring(start,end).replace(/&#?\w+;/g,entityReplacer);locator&&position(start),domBuilder.characters(xt,0,end-start),start=end}}function position(p,m){for(;p>=lineEnd&&(m=linePattern.exec(source));)lineStart=m.index,lineEnd=lineStart+m[0].length,locator.lineNumber++;locator.columnNumber=p-lineStart+1}for(var lineStart=0,lineEnd=0,linePattern=/.*(?:\r\n?|\n)|.*$/g,locator=domBuilder.locator,parseStack=[{currentNSMap:defaultNSMapCopy}],closeMap={},start=0;;){try{var tagStart=source.indexOf("<",start);if(tagStart<0){if(!source.substr(start).match(/^\s*$/)){var doc=domBuilder.doc,text=doc.createTextNode(source.substr(start));doc.appendChild(text),domBuilder.currentElement=text}return}switch(tagStart>start&&appendText(tagStart),source.charAt(tagStart+1)){case"/":var end=source.indexOf(">",tagStart+3),tagName=source.substring(tagStart+2,end).replace(/[ \t\n\r]+$/g,""),config=parseStack.pop();end<0?(tagName=source.substring(tagStart+2).replace(/[\s<].*/,""),errorHandler.error("end tag name: "+tagName+" is not complete:"+config.tagName),end=tagStart+1+tagName.length):tagName.match(/\sstart?start=end:appendText(Math.max(tagStart,start)+1)}}function copyLocator(f,t){return t.lineNumber=f.lineNumber,t.columnNumber=f.columnNumber,t}function parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){function addAttribute(qname,value,startIndex){el.attributeNames.hasOwnProperty(qname)&&errorHandler.fatalError("Attribute "+qname+" redefined"),el.addValue(qname,value,startIndex)}for(var attrName,value,p=++start,s=0;;){var c=source.charAt(p);switch(c){case"=":if(1===s)attrName=source.slice(start,p),s=3;else{if(2!==s)throw new Error("attribute equal must after attrName");s=3}break;case"'":case'"':if(3===s||1===s){if(1===s&&(errorHandler.warning('attribute value must after "="'),attrName=source.slice(start,p)),start=p+1,!((p=source.indexOf(c,start))>0))throw new Error("attribute value no end '"+c+"' match");addAttribute(attrName,value=source.slice(start,p).replace(/&#?\w+;/g,entityReplacer),start-1),s=5}else{if(4!=s)throw new Error('attribute value must after "="');addAttribute(attrName,value=source.slice(start,p).replace(/&#?\w+;/g,entityReplacer),start),errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+")!!"),start=p+1,s=5}break;case"/":switch(s){case 0:el.setTagName(source.slice(start,p));case 5:case 6:case 7:s=7,el.closed=!0;case 4:case 1:case 2:break;default:throw new Error("attribute invalid close char('/')")}break;case"":return errorHandler.error("unexpected end of input"),0==s&&el.setTagName(source.slice(start,p)),p;case">":switch(s){case 0:el.setTagName(source.slice(start,p));case 5:case 6:case 7:break;case 4:case 1:"/"===(value=source.slice(start,p)).slice(-1)&&(el.closed=!0,value=value.slice(0,-1));case 2:2===s&&(value=attrName),4==s?(errorHandler.warning('attribute "'+value+'" missed quot(")!'),addAttribute(attrName,value.replace(/&#?\w+;/g,entityReplacer),start)):(NAMESPACE$1.isHTML(currentNSMap[""])&&value.match(/^(?:disabled|checked|selected)$/i)||errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!'),addAttribute(value,value,start));break;case 3:throw new Error("attribute value missed!!")}return p;case"€":c=" ";default:if(c<=" ")switch(s){case 0:el.setTagName(source.slice(start,p)),s=6;break;case 1:attrName=source.slice(start,p),s=2;break;case 4:var value=source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);errorHandler.warning('attribute "'+value+'" missed quot(")!!'),addAttribute(attrName,value,start);case 5:s=6}else switch(s){case 2:el.tagName,NAMESPACE$1.isHTML(currentNSMap[""])&&attrName.match(/^(?:disabled|checked|selected)$/i)||errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead2!!'),addAttribute(attrName,attrName,start),start=p,s=1;break;case 5:errorHandler.warning('attribute space is required"'+attrName+'"!!');case 6:s=1,start=p;break;case 3:s=4,start=p;break;case 7:throw new Error("elements closed character '/' and '>' must be connected to")}}p++}}function appendElement$1(el,domBuilder,currentNSMap){for(var tagName=el.tagName,localNSMap=null,i=el.length;i--;){var a=el[i],qName=a.qName,value=a.value,nsp;if((nsp=qName.indexOf(":"))>0)var prefix=a.prefix=qName.slice(0,nsp),localName=qName.slice(nsp+1),nsPrefix="xmlns"===prefix&&localName;else localName=qName,prefix=null,nsPrefix="xmlns"===qName&&"";a.localName=localName,!1!==nsPrefix&&(null==localNSMap&&(localNSMap={},_copy(currentNSMap,currentNSMap={})),currentNSMap[nsPrefix]=localNSMap[nsPrefix]=value,a.uri=NAMESPACE$1.XMLNS,domBuilder.startPrefixMapping(nsPrefix,value))}for(var i=el.length;i--;){var prefix;(prefix=(a=el[i]).prefix)&&("xml"===prefix&&(a.uri=NAMESPACE$1.XML),"xmlns"!==prefix&&(a.uri=currentNSMap[prefix||""]))}var nsp;(nsp=tagName.indexOf(":"))>0?(prefix=el.prefix=tagName.slice(0,nsp),localName=el.localName=tagName.slice(nsp+1)):(prefix=null,localName=el.localName=tagName);var ns=el.uri=currentNSMap[prefix||""];if(domBuilder.startElement(ns,localName,tagName,el),!el.closed)return el.currentNSMap=currentNSMap,el.localNSMap=localNSMap,!0;if(domBuilder.endElement(ns,localName,tagName),localNSMap)for(prefix in localNSMap)domBuilder.endPrefixMapping(prefix)}function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){if(/^(?:script|textarea)$/i.test(tagName)){var elEndStart=source.indexOf("",elStartEnd),text=source.substring(elStartEnd+1,elEndStart);if(/[&<]/.test(text))return/^script$/i.test(tagName)?(domBuilder.characters(text,0,text.length),elEndStart):(text=text.replace(/&#?\w+;/g,entityReplacer),domBuilder.characters(text,0,text.length),elEndStart)}return elStartEnd+1}function fixSelfClosed(source,elStartEnd,tagName,closeMap){var pos=closeMap[tagName];return null==pos&&((pos=source.lastIndexOf(""))start?(domBuilder.comment(source,start+4,end-start-4),end+3):(errorHandler.error("Unclosed comment"),-1):-1;default:if("CDATA["==source.substr(start+3,6)){var end=source.indexOf("]]>",start+9);return domBuilder.startCDATA(),domBuilder.characters(source,start+9,end-start-9),domBuilder.endCDATA(),end+3}var matchs=split(source,start),len=matchs.length;if(len>1&&/!doctype/i.test(matchs[0][0])){var name=matchs[1][0],pubid=!1,sysid=!1;len>3&&(/^public$/i.test(matchs[2][0])?(pubid=matchs[3][0],sysid=len>4&&matchs[4][0]):/^system$/i.test(matchs[2][0])&&(sysid=matchs[3][0]));var lastMatch=matchs[len-1];return domBuilder.startDTD(name,pubid,sysid),domBuilder.endDTD(),lastMatch.index+lastMatch[0].length}}return-1}function parseInstruction(source,start,domBuilder){var end=source.indexOf("?>",start);if(end){var match=source.substring(start,end).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);return match?(match[0].length,domBuilder.processingInstruction(match[1],match[2]),end+2):-1}return-1}function ElementAttributes(){this.attributeNames={}}function split(source,start){var match,buf=[],reg=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;for(reg.lastIndex=start,reg.exec(source);match=reg.exec(source);)if(buf.push(match),match[1])return buf}ParseError$1.prototype=new Error,ParseError$1.prototype.name=ParseError$1.name,XMLReader$1.prototype={parse:function parse(source,defaultNSMap,entityMap){var domBuilder=this.domBuilder;domBuilder.startDocument(),_copy(defaultNSMap,defaultNSMap={}),_parse(source,defaultNSMap,entityMap,domBuilder,this.errorHandler),domBuilder.endDocument()}},ElementAttributes.prototype={setTagName:function setTagName(tagName){if(!tagNamePattern.test(tagName))throw new Error("invalid tagName:"+tagName);this.tagName=tagName},addValue:function addValue(qName,value,offset){if(!tagNamePattern.test(qName))throw new Error("invalid attribute:"+qName);this.attributeNames[qName]=this.length,this[this.length++]={qName:qName,value:value,offset:offset}},length:0,getLocalName:function getLocalName(i){return this[i].localName},getLocator:function getLocator(i){return this[i].locator},getQName:function getQName(i){return this[i].qName},getURI:function getURI(i){return this[i].uri},getValue:function getValue(i){return this[i].value}};var XMLReader_1,ParseError_1,sax={XMLReader:XMLReader$1,ParseError:ParseError$1},DOMImplementation=dom.DOMImplementation,NAMESPACE=conventions.NAMESPACE,ParseError=sax.ParseError,XMLReader=sax.XMLReader;function DOMParser$1(options){this.options=options||{locator:{}}}function buildErrorHandler(errorImpl,domBuilder,locator){if(!errorImpl){if(domBuilder instanceof DOMHandler)return domBuilder;errorImpl=domBuilder}var errorHandler={},isCallback=errorImpl instanceof Function;function build(key){var fn=errorImpl[key];!fn&&isCallback&&(fn=2==errorImpl.length?function(msg){errorImpl(key,msg)}:errorImpl),errorHandler[key]=fn&&function(msg){fn("[xmldom "+key+"]\t"+msg+_locator(locator))}||function(){}}return locator=locator||{},build("warning"),build("error"),build("fatalError"),errorHandler}function DOMHandler(){this.cdata=!1}function position(locator,node){node.lineNumber=locator.lineNumber,node.columnNumber=locator.columnNumber}function _locator(l){if(l)return"\n@"+(l.systemId||"")+"#[line:"+l.lineNumber+",col:"+l.columnNumber+"]"}function _toString(chars,start,length){return"string"==typeof chars?chars.substr(start,length):chars.length>=start+length||start?new java.lang.String(chars,start,length)+"":chars}function appendElement(hander,node){hander.currentElement?hander.currentElement.appendChild(node):hander.doc.appendChild(node)}DOMParser$1.prototype.parseFromString=function(source,mimeType){var options=this.options,sax=new XMLReader,domBuilder=options.domBuilder||new DOMHandler,errorHandler=options.errorHandler,locator=options.locator,defaultNSMap=options.xmlns||{},isHTML=/\/x?html?$/.test(mimeType),entityMap=isHTML?entities.HTML_ENTITIES:entities.XML_ENTITIES;return locator&&domBuilder.setDocumentLocator(locator),sax.errorHandler=buildErrorHandler(errorHandler,domBuilder,locator),sax.domBuilder=options.domBuilder||domBuilder,isHTML&&(defaultNSMap[""]=NAMESPACE.HTML),defaultNSMap.xml=defaultNSMap.xml||NAMESPACE.XML,source&&"string"==typeof source?sax.parse(source,defaultNSMap,entityMap):sax.errorHandler.error("invalid doc source"),domBuilder.doc},DOMHandler.prototype={startDocument:function startDocument(){this.doc=(new DOMImplementation).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function startElement(namespaceURI,localName,qName,attrs){var doc=this.doc,el=doc.createElementNS(namespaceURI,qName||localName),len=attrs.length;appendElement(this,el),this.currentElement=el,this.locator&&position(this.locator,el);for(var i=0;ib.timeline?1:-1}))},findPlaylistWithName=function findPlaylistWithName(playlists,name){for(var i=0;ioldPlaylist.timeline||oldPlaylist.segments.length&&playlist.timeline>oldPlaylist.segments[oldPlaylist.segments.length-1].timeline)&&playlist.discontinuitySequence--);oldPlaylist.segments[oldMatchingSegmentIndex].discontinuity&&!firstNewSegment.discontinuity&&(firstNewSegment.discontinuity=!0,playlist.discontinuityStarts.unshift(0),playlist.discontinuitySequence--),updateMediaSequenceForPlaylist({playlist:playlist,mediaSequence:oldPlaylist.segments[oldMatchingSegmentIndex].number})}}))},positionManifestOnTimeline=function positionManifestOnTimeline(_ref5){var oldManifest=_ref5.oldManifest,newManifest=_ref5.newManifest,oldPlaylists=oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest)),newPlaylists=newManifest.playlists.concat(getMediaGroupPlaylists(newManifest));return newManifest.timelineStarts=getUniqueTimelineStarts([oldManifest.timelineStarts,newManifest.timelineStarts]),updateSequenceNumbers({oldPlaylists:oldPlaylists,newPlaylists:newPlaylists,timelineStarts:newManifest.timelineStarts}),newManifest},generateSidxKey=function generateSidxKey(sidx){return sidx&&sidx.uri+"-"+byteRangeToString(sidx.byterange)},mergeDiscontiguousPlaylists=function mergeDiscontiguousPlaylists(playlists){var mergedPlaylists;return values(playlists.reduce((function(acc,playlist){var name=playlist.attributes.id+(playlist.attributes.lang||"");if(acc[name]){var _acc$name$segments;if(playlist.segments)playlist.segments[0]&&(playlist.segments[0].discontinuity=!0),(_acc$name$segments=acc[name].segments).push.apply(_acc$name$segments,playlist.segments);playlist.attributes.contentProtection&&(acc[name].attributes.contentProtection=playlist.attributes.contentProtection)}else acc[name]=playlist,acc[name].attributes.timelineStarts=[];return acc[name].attributes.timelineStarts.push({start:playlist.attributes.periodStart,timeline:playlist.attributes.periodStart}),acc}),{})).map((function(playlist){return playlist.discontinuityStarts=findIndexes(playlist.segments||[],"discontinuity"),playlist}))},addSidxSegmentsToPlaylist=function addSidxSegmentsToPlaylist(playlist,sidxMapping){var sidxKey=generateSidxKey(playlist.sidx),sidxMatch=sidxKey&&sidxMapping[sidxKey]&&sidxMapping[sidxKey].sidx;return sidxMatch&&addSidxSegmentsToPlaylist$1(playlist,sidxMatch,playlist.sidx.resolvedUri),playlist},addSidxSegmentsToPlaylists=function addSidxSegmentsToPlaylists(playlists,sidxMapping){if(void 0===sidxMapping&&(sidxMapping={}),!Object.keys(sidxMapping).length)return playlists;for(var i in playlists)playlists[i]=addSidxSegmentsToPlaylist(playlists[i],sidxMapping);return playlists},formatAudioPlaylist=function formatAudioPlaylist(_ref,isAudioOnly){var _attributes,attributes=_ref.attributes,segments=_ref.segments,sidx=_ref.sidx,mediaSequence=_ref.mediaSequence,discontinuitySequence=_ref.discontinuitySequence,discontinuityStarts=_ref.discontinuityStarts,playlist={attributes:(_attributes={NAME:attributes.id,BANDWIDTH:attributes.bandwidth,CODECS:attributes.codecs},_attributes["PROGRAM-ID"]=1,_attributes),uri:"",endList:"static"===attributes.type,timeline:attributes.periodStart,resolvedUri:"",targetDuration:attributes.duration,discontinuitySequence:discontinuitySequence,discontinuityStarts:discontinuityStarts,timelineStarts:attributes.timelineStarts,mediaSequence:mediaSequence,segments:segments};return attributes.contentProtection&&(playlist.contentProtection=attributes.contentProtection),sidx&&(playlist.sidx=sidx),isAudioOnly&&(playlist.attributes.AUDIO="audio",playlist.attributes.SUBTITLES="subs"),playlist},formatVttPlaylist=function formatVttPlaylist(_ref2){var _m3u8Attributes,attributes=_ref2.attributes,segments=_ref2.segments,mediaSequence=_ref2.mediaSequence,discontinuityStarts=_ref2.discontinuityStarts,discontinuitySequence=_ref2.discontinuitySequence;void 0===segments&&(segments=[{uri:attributes.baseUrl,timeline:attributes.periodStart,resolvedUri:attributes.baseUrl||"",duration:attributes.sourceDuration,number:0}],attributes.duration=attributes.sourceDuration);var m3u8Attributes=((_m3u8Attributes={NAME:attributes.id,BANDWIDTH:attributes.bandwidth})["PROGRAM-ID"]=1,_m3u8Attributes);return attributes.codecs&&(m3u8Attributes.CODECS=attributes.codecs),{attributes:m3u8Attributes,uri:"",endList:"static"===attributes.type,timeline:attributes.periodStart,resolvedUri:attributes.baseUrl||"",targetDuration:attributes.duration,timelineStarts:attributes.timelineStarts,discontinuityStarts:discontinuityStarts,discontinuitySequence:discontinuitySequence,mediaSequence:mediaSequence,segments:segments}},organizeAudioPlaylists=function organizeAudioPlaylists(playlists,sidxMapping,isAudioOnly){var mainPlaylist;void 0===sidxMapping&&(sidxMapping={}),void 0===isAudioOnly&&(isAudioOnly=!1);var formattedPlaylists=playlists.reduce((function(a,playlist){var role=playlist.attributes.role&&playlist.attributes.role.value||"",language=playlist.attributes.lang||"",label=playlist.attributes.label||"main";if(language&&!playlist.attributes.label){var roleLabel=role?" ("+role+")":"";label=""+playlist.attributes.lang+roleLabel}a[label]||(a[label]={language:language,autoselect:!0,default:"main"===role,playlists:[],uri:""});var formatted=addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist,isAudioOnly),sidxMapping);return a[label].playlists.push(formatted),void 0===mainPlaylist&&"main"===role&&((mainPlaylist=playlist).default=!0),a}),{}),firstLabel;mainPlaylist||(formattedPlaylists[Object.keys(formattedPlaylists)[0]].default=!0);return formattedPlaylists},organizeVttPlaylists=function organizeVttPlaylists(playlists,sidxMapping){return void 0===sidxMapping&&(sidxMapping={}),playlists.reduce((function(a,playlist){var label=playlist.attributes.lang||"text";return a[label]||(a[label]={language:label,default:!1,autoselect:!1,playlists:[],uri:""}),a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist),sidxMapping)),a}),{})},organizeCaptionServices=function organizeCaptionServices(captionServices){return captionServices.reduce((function(svcObj,svc){return svc?(svc.forEach((function(service){var channel=service.channel,language=service.language;svcObj[language]={autoselect:!1,default:!1,instreamId:channel,language:language},service.hasOwnProperty("aspectRatio")&&(svcObj[language].aspectRatio=service.aspectRatio),service.hasOwnProperty("easyReader")&&(svcObj[language].easyReader=service.easyReader),service.hasOwnProperty("3D")&&(svcObj[language]["3D"]=service["3D"])})),svcObj):svcObj}),{})},formatVideoPlaylist=function formatVideoPlaylist(_ref3){var _attributes2,attributes=_ref3.attributes,segments=_ref3.segments,sidx=_ref3.sidx,discontinuityStarts=_ref3.discontinuityStarts,playlist={attributes:(_attributes2={NAME:attributes.id,AUDIO:"audio",SUBTITLES:"subs",RESOLUTION:{width:attributes.width,height:attributes.height},CODECS:attributes.codecs,BANDWIDTH:attributes.bandwidth},_attributes2["PROGRAM-ID"]=1,_attributes2),uri:"",endList:"static"===attributes.type,timeline:attributes.periodStart,resolvedUri:"",targetDuration:attributes.duration,discontinuityStarts:discontinuityStarts,timelineStarts:attributes.timelineStarts,segments:segments};return attributes.contentProtection&&(playlist.contentProtection=attributes.contentProtection),sidx&&(playlist.sidx=sidx),playlist},videoOnly=function videoOnly(_ref4){var attributes=_ref4.attributes;return"video/mp4"===attributes.mimeType||"video/webm"===attributes.mimeType||"video"===attributes.contentType},audioOnly=function audioOnly(_ref5){var attributes=_ref5.attributes;return"audio/mp4"===attributes.mimeType||"audio/webm"===attributes.mimeType||"audio"===attributes.contentType},vttOnly=function vttOnly(_ref6){var attributes=_ref6.attributes;return"text/vtt"===attributes.mimeType||"text"===attributes.contentType},addMediaSequenceValues=function addMediaSequenceValues(playlists,timelineStarts){playlists.forEach((function(playlist){playlist.mediaSequence=0,playlist.discontinuitySequence=findIndex(timelineStarts,(function(_ref7){var timeline;return _ref7.timeline===playlist.timeline})),playlist.segments&&playlist.segments.forEach((function(segment,index){segment.number=index}))}))},flattenMediaGroupPlaylists=function flattenMediaGroupPlaylists(mediaGroupObject){return mediaGroupObject?Object.keys(mediaGroupObject).reduce((function(acc,label){var labelContents=mediaGroupObject[label];return acc.concat(labelContents.playlists)}),[]):[]},toM3u8=function toM3u8(_ref8){var _mediaGroups,dashPlaylists=_ref8.dashPlaylists,locations=_ref8.locations,_ref8$sidxMapping=_ref8.sidxMapping,sidxMapping=void 0===_ref8$sidxMapping?{}:_ref8$sidxMapping,previousManifest=_ref8.previousManifest;if(!dashPlaylists.length)return{};var _dashPlaylists$0$attr=dashPlaylists[0].attributes,duration=_dashPlaylists$0$attr.sourceDuration,type=_dashPlaylists$0$attr.type,suggestedPresentationDelay=_dashPlaylists$0$attr.suggestedPresentationDelay,minimumUpdatePeriod=_dashPlaylists$0$attr.minimumUpdatePeriod,videoPlaylists=mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist),audioPlaylists=mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly)),vttPlaylists=mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly)),captions=dashPlaylists.map((function(playlist){return playlist.attributes.captionServices})).filter(Boolean),manifest={allowCache:!0,discontinuityStarts:[],segments:[],endList:!0,mediaGroups:(_mediaGroups={AUDIO:{},VIDEO:{}},_mediaGroups["CLOSED-CAPTIONS"]={},_mediaGroups.SUBTITLES={},_mediaGroups),uri:"",duration:duration,playlists:addSidxSegmentsToPlaylists(videoPlaylists,sidxMapping)};minimumUpdatePeriod>=0&&(manifest.minimumUpdatePeriod=1e3*minimumUpdatePeriod),locations&&(manifest.locations=locations),"dynamic"===type&&(manifest.suggestedPresentationDelay=suggestedPresentationDelay);var isAudioOnly=0===manifest.playlists.length,organizedAudioGroup=audioPlaylists.length?organizeAudioPlaylists(audioPlaylists,sidxMapping,isAudioOnly):null,organizedVttGroup=vttPlaylists.length?organizeVttPlaylists(vttPlaylists,sidxMapping):null,formattedPlaylists=videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup),flattenMediaGroupPlaylists(organizedVttGroup)),playlistTimelineStarts=formattedPlaylists.map((function(_ref9){var timelineStarts;return _ref9.timelineStarts}));return manifest.timelineStarts=getUniqueTimelineStarts(playlistTimelineStarts),addMediaSequenceValues(formattedPlaylists,manifest.timelineStarts),organizedAudioGroup&&(manifest.mediaGroups.AUDIO.audio=organizedAudioGroup),organizedVttGroup&&(manifest.mediaGroups.SUBTITLES.subs=organizedVttGroup),captions.length&&(manifest.mediaGroups["CLOSED-CAPTIONS"].cc=organizeCaptionServices(captions)),previousManifest?positionManifestOnTimeline({oldManifest:previousManifest,newManifest:manifest}):manifest},getLiveRValue=function getLiveRValue(attributes,time,duration){var NOW=attributes.NOW,clientOffset=attributes.clientOffset,availabilityStartTime=attributes.availabilityStartTime,_attributes$timescale=attributes.timescale,timescale=void 0===_attributes$timescale?1:_attributes$timescale,_attributes$periodSta=attributes.periodStart,periodStart=void 0===_attributes$periodSta?0:_attributes$periodSta,_attributes$minimumUp=attributes.minimumUpdatePeriod,minimumUpdatePeriod,now,periodStartWC,periodEndWC,periodDuration=(NOW+clientOffset)/1e3+(void 0===_attributes$minimumUp?0:_attributes$minimumUp)-(availabilityStartTime+periodStart);return Math.ceil((periodDuration*timescale-time)/duration)},parseByTimeline=function parseByTimeline(attributes,segmentTimeline){for(var type=attributes.type,_attributes$minimumUp2=attributes.minimumUpdatePeriod,minimumUpdatePeriod=void 0===_attributes$minimumUp2?0:_attributes$minimumUp2,_attributes$media=attributes.media,media=void 0===_attributes$media?"":_attributes$media,sourceDuration=attributes.sourceDuration,_attributes$timescale2=attributes.timescale,timescale=void 0===_attributes$timescale2?1:_attributes$timescale2,_attributes$startNumb=attributes.startNumber,startNumber=void 0===_attributes$startNumb?1:_attributes$startNumb,timeline=attributes.periodStart,segments=[],time=-1,sIndex=0;sIndextime&&(time=segmentTime);var count=void 0;if(repeat<0){var nextS=sIndex+1;count=nextS===segmentTimeline.length?"dynamic"===type&&minimumUpdatePeriod>0&&media.indexOf("$Number$")>0?getLiveRValue(attributes,time,duration):(sourceDuration*timescale-time)/duration:(segmentTimeline[nextS].t-time)/duration}else count=repeat+1;for(var end=startNumber+segments.length+count,number=startNumber+segments.length;number=width?value:""+new Array(width-value.length+1).join("0")+value)}},constructTemplateUrl=function constructTemplateUrl(url,values){return url.replace(identifierPattern,identifierReplacement(values))},parseTemplateInfo=function parseTemplateInfo(attributes,segmentTimeline){return attributes.duration||segmentTimeline?attributes.duration?parseByDuration(attributes):parseByTimeline(attributes,segmentTimeline):[{number:attributes.startNumber||1,duration:attributes.sourceDuration,time:0,timeline:attributes.periodStart}]},segmentsFromTemplate=function segmentsFromTemplate(attributes,segmentTimeline){var templateValues={RepresentationID:attributes.id,Bandwidth:attributes.bandwidth||0},_attributes$initializ=attributes.initialization,initialization=void 0===_attributes$initializ?{sourceURL:"",range:""}:_attributes$initializ,mapSegment=urlTypeToSegment({baseUrl:attributes.baseUrl,source:constructTemplateUrl(initialization.sourceURL,templateValues),range:initialization.range}),segments;return parseTemplateInfo(attributes,segmentTimeline).map((function(segment){templateValues.Number=segment.number,templateValues.Time=segment.time;var uri=constructTemplateUrl(attributes.media||"",templateValues),timescale=attributes.timescale||1,presentationTimeOffset=attributes.presentationTimeOffset||0,presentationTime=attributes.periodStart+(segment.time-presentationTimeOffset)/timescale,map;return{uri:uri,timeline:segment.timeline,duration:segment.duration,resolvedUri:resolveUrl$1(attributes.baseUrl||"",uri),map:mapSegment,number:segment.number,presentationTime:presentationTime}}))},SegmentURLToSegmentObject=function SegmentURLToSegmentObject(attributes,segmentUrl){var baseUrl=attributes.baseUrl,_attributes$initializ=attributes.initialization,initialization=void 0===_attributes$initializ?{}:_attributes$initializ,initSegment=urlTypeToSegment({baseUrl:baseUrl,source:initialization.sourceURL,range:initialization.range}),segment=urlTypeToSegment({baseUrl:baseUrl,source:segmentUrl.media,range:segmentUrl.mediaRange});return segment.map=initSegment,segment},segmentsFromList=function segmentsFromList(attributes,segmentTimeline){var duration=attributes.duration,_attributes$segmentUr=attributes.segmentUrls,segmentUrls=void 0===_attributes$segmentUr?[]:_attributes$segmentUr,periodStart=attributes.periodStart;if(!duration&&!segmentTimeline||duration&&segmentTimeline)throw new Error(errors_SEGMENT_TIME_UNSPECIFIED);var segmentUrlMap=segmentUrls.map((function(segmentUrlObject){return SegmentURLToSegmentObject(attributes,segmentUrlObject)})),segmentTimeInfo,segments;return duration&&(segmentTimeInfo=parseByDuration(attributes)),segmentTimeline&&(segmentTimeInfo=parseByTimeline(attributes,segmentTimeline)),segmentTimeInfo.map((function(segmentTime,index){if(segmentUrlMap[index]){var segment=segmentUrlMap[index],timescale=attributes.timescale||1,presentationTimeOffset=attributes.presentationTimeOffset||0;return segment.timeline=segmentTime.timeline,segment.duration=segmentTime.duration,segment.number=segmentTime.number,segment.presentationTime=periodStart+(segmentTime.time-presentationTimeOffset)/timescale,segment}})).filter((function(segment){return segment}))},generateSegments=function generateSegments(_ref){var attributes=_ref.attributes,segmentInfo=_ref.segmentInfo,segmentAttributes,segmentsFn;segmentInfo.template?(segmentsFn=segmentsFromTemplate,segmentAttributes=merge(attributes,segmentInfo.template)):segmentInfo.base?(segmentsFn=segmentsFromBase,segmentAttributes=merge(attributes,segmentInfo.base)):segmentInfo.list&&(segmentsFn=segmentsFromList,segmentAttributes=merge(attributes,segmentInfo.list));var segmentsInfo={attributes:attributes};if(!segmentsFn)return segmentsInfo;var segments=segmentsFn(segmentAttributes,segmentInfo.segmentTimeline);if(segmentAttributes.duration){var _segmentAttributes=segmentAttributes,duration=_segmentAttributes.duration,_segmentAttributes$ti=_segmentAttributes.timescale,timescale=void 0===_segmentAttributes$ti?1:_segmentAttributes$ti;segmentAttributes.duration=duration/timescale}else segments.length?segmentAttributes.duration=segments.reduce((function(max,segment){return Math.max(max,Math.ceil(segment.duration))}),0):segmentAttributes.duration=0;return segmentsInfo.attributes=segmentAttributes,segmentsInfo.segments=segments,segmentInfo.base&&segmentAttributes.indexRange&&(segmentsInfo.sidx=segments[0],segmentsInfo.segments=[]),segmentsInfo},toPlaylists=function toPlaylists(representations){return representations.map(generateSegments)},findChildren=function findChildren(element,name){return from(element.childNodes).filter((function(_ref){var tagName;return _ref.tagName===name}))},getContent=function getContent(element){return element.textContent.trim()},parseDuration=function parseDuration(str){var SECONDS_IN_YEAR=31536e3,SECONDS_IN_MONTH=2592e3,SECONDS_IN_DAY=86400,SECONDS_IN_HOUR=3600,SECONDS_IN_MIN=60,durationRegex,match=/P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(str);if(!match)return 0;var _match$slice=match.slice(1),year=_match$slice[0],month=_match$slice[1],day=_match$slice[2],hour=_match$slice[3],minute=_match$slice[4],second=_match$slice[5];return 31536e3*parseFloat(year||0)+2592e3*parseFloat(month||0)+86400*parseFloat(day||0)+3600*parseFloat(hour||0)+60*parseFloat(minute||0)+parseFloat(second||0)},parseDate=function parseDate(str){var dateRegex;return/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(str)&&(str+="Z"),Date.parse(str)},parsers={mediaPresentationDuration:function mediaPresentationDuration(value){return parseDuration(value)},availabilityStartTime:function availabilityStartTime(value){return parseDate(value)/1e3},minimumUpdatePeriod:function minimumUpdatePeriod(value){return parseDuration(value)},suggestedPresentationDelay:function suggestedPresentationDelay(value){return parseDuration(value)},type:function type(value){return value},timeShiftBufferDepth:function timeShiftBufferDepth(value){return parseDuration(value)},start:function start(value){return parseDuration(value)},width:function width(value){return parseInt(value,10)},height:function height(value){return parseInt(value,10)},bandwidth:function bandwidth(value){return parseInt(value,10)},startNumber:function startNumber(value){return parseInt(value,10)},timescale:function timescale(value){return parseInt(value,10)},presentationTimeOffset:function presentationTimeOffset(value){return parseInt(value,10)},duration:function duration(value){var parsedValue=parseInt(value,10);return isNaN(parsedValue)?parseDuration(value):parsedValue},d:function d(value){return parseInt(value,10)},t:function t(value){return parseInt(value,10)},r:function r(value){return parseInt(value,10)},DEFAULT:function DEFAULT(value){return value}},parseAttributes=function parseAttributes(el){return el&&el.attributes?from(el.attributes).reduce((function(a,e){var parseFn=parsers[e.name]||parsers.DEFAULT;return a[e.name]=parseFn(e.value),a}),{}):{}},keySystemsMap={"urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b":"org.w3.clearkey","urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed":"com.widevine.alpha","urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95":"com.microsoft.playready","urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb":"com.adobe.primetime"},buildBaseUrls=function buildBaseUrls(referenceUrls,baseUrlElements){return baseUrlElements.length?flatten(referenceUrls.map((function(reference){return baseUrlElements.map((function(baseUrlElement){return resolveUrl$1(reference,getContent(baseUrlElement))}))}))):referenceUrls},getSegmentInformation=function getSegmentInformation(adaptationSet){var segmentTemplate=findChildren(adaptationSet,"SegmentTemplate")[0],segmentList=findChildren(adaptationSet,"SegmentList")[0],segmentUrls=segmentList&&findChildren(segmentList,"SegmentURL").map((function(s){return merge({tag:"SegmentURL"},parseAttributes(s))})),segmentBase=findChildren(adaptationSet,"SegmentBase")[0],segmentTimelineParentNode=segmentList||segmentTemplate,segmentTimeline=segmentTimelineParentNode&&findChildren(segmentTimelineParentNode,"SegmentTimeline")[0],segmentInitializationParentNode=segmentList||segmentBase||segmentTemplate,segmentInitialization=segmentInitializationParentNode&&findChildren(segmentInitializationParentNode,"Initialization")[0],template=segmentTemplate&&parseAttributes(segmentTemplate);template&&segmentInitialization?template.initialization=segmentInitialization&&parseAttributes(segmentInitialization):template&&template.initialization&&(template.initialization={sourceURL:template.initialization});var segmentInfo={template:template,segmentTimeline:segmentTimeline&&findChildren(segmentTimeline,"S").map((function(s){return parseAttributes(s)})),list:segmentList&&merge(parseAttributes(segmentList),{segmentUrls:segmentUrls,initialization:parseAttributes(segmentInitialization)}),base:segmentBase&&merge(parseAttributes(segmentBase),{initialization:parseAttributes(segmentInitialization)})};return Object.keys(segmentInfo).forEach((function(key){segmentInfo[key]||delete segmentInfo[key]})),segmentInfo},inheritBaseUrls=function inheritBaseUrls(adaptationSetAttributes,adaptationSetBaseUrls,adaptationSetSegmentInfo){return function(representation){var repBaseUrlElements=findChildren(representation,"BaseURL"),repBaseUrls=buildBaseUrls(adaptationSetBaseUrls,repBaseUrlElements),attributes=merge(adaptationSetAttributes,parseAttributes(representation)),representationSegmentInfo=getSegmentInformation(representation);return repBaseUrls.map((function(baseUrl){return{segmentInfo:merge(adaptationSetSegmentInfo,representationSegmentInfo),attributes:merge(attributes,{baseUrl:baseUrl})}}))}},generateKeySystemInformation=function generateKeySystemInformation(contentProtectionNodes){return contentProtectionNodes.reduce((function(acc,node){var attributes=parseAttributes(node),keySystem=keySystemsMap[attributes.schemeIdUri];if(keySystem){acc[keySystem]={attributes:attributes};var psshNode=findChildren(node,"cenc:pssh")[0];if(psshNode){var pssh=getContent(psshNode),psshBuffer=pssh&&decodeB64ToUint8Array(pssh);acc[keySystem].pssh=psshBuffer}}return acc}),{})},parseCaptionServiceMetadata=function parseCaptionServiceMetadata(service){var values,_values;return"urn:scte:dash:cc:cea-608:2015"===service.schemeIdUri?("string"!=typeof service.value?[]:service.value.split(";")).map((function(value){var channel,language;if(language=value,/^CC\d=/.test(value)){var _value$split=value.split("=");channel=_value$split[0],language=_value$split[1]}else/^CC\d$/.test(value)&&(channel=value);return{channel:channel,language:language}})):"urn:scte:dash:cc:cea-708:2015"===service.schemeIdUri?("string"!=typeof service.value?[]:service.value.split(";")).map((function(value){var flags={channel:void 0,language:void 0,aspectRatio:1,easyReader:0,"3D":0};if(/=/.test(value)){var _value$split2=value.split("="),channel=_value$split2[0],_value$split2$=_value$split2[1],opts=void 0===_value$split2$?"":_value$split2$;flags.channel=channel,flags.language=value,opts.split(",").forEach((function(opt){var _opt$split=opt.split(":"),name=_opt$split[0],val=_opt$split[1];"lang"===name?flags.language=val:"er"===name?flags.easyReader=Number(val):"war"===name?flags.aspectRatio=Number(val):"3D"===name&&(flags["3D"]=Number(val))}))}else flags.language=value;return flags.channel&&(flags.channel="SERVICE"+flags.channel),flags})):void 0},toRepresentations=function toRepresentations(periodAttributes,periodBaseUrls,periodSegmentInfo){return function(adaptationSet){var adaptationSetAttributes=parseAttributes(adaptationSet),adaptationSetBaseUrls=buildBaseUrls(periodBaseUrls,findChildren(adaptationSet,"BaseURL")),role=findChildren(adaptationSet,"Role")[0],roleAttributes={role:parseAttributes(role)},attrs=merge(periodAttributes,adaptationSetAttributes,roleAttributes),accessibility=findChildren(adaptationSet,"Accessibility")[0],captionServices=parseCaptionServiceMetadata(parseAttributes(accessibility));captionServices&&(attrs=merge(attrs,{captionServices:captionServices}));var label=findChildren(adaptationSet,"Label")[0];if(label&&label.childNodes.length){var labelVal=label.childNodes[0].nodeValue.trim();attrs=merge(attrs,{label:labelVal})}var contentProtection=generateKeySystemInformation(findChildren(adaptationSet,"ContentProtection"));Object.keys(contentProtection).length&&(attrs=merge(attrs,{contentProtection:contentProtection}));var segmentInfo=getSegmentInformation(adaptationSet),representations=findChildren(adaptationSet,"Representation"),adaptationSetSegmentInfo=merge(periodSegmentInfo,segmentInfo);return flatten(representations.map(inheritBaseUrls(attrs,adaptationSetBaseUrls,adaptationSetSegmentInfo)))}},toAdaptationSets=function toAdaptationSets(mpdAttributes,mpdBaseUrls){return function(period,index){var periodBaseUrls=buildBaseUrls(mpdBaseUrls,findChildren(period.node,"BaseURL")),periodAttributes=merge(mpdAttributes,{periodStart:period.attributes.start});"number"==typeof period.attributes.duration&&(periodAttributes.periodDuration=period.attributes.duration);var adaptationSets=findChildren(period.node,"AdaptationSet"),periodSegmentInfo=getSegmentInformation(period.node);return flatten(adaptationSets.map(toRepresentations(periodAttributes,periodBaseUrls,periodSegmentInfo)))}},getPeriodStart=function getPeriodStart(_ref){var attributes=_ref.attributes,priorPeriodAttributes=_ref.priorPeriodAttributes,mpdType=_ref.mpdType;return"number"==typeof attributes.start?attributes.start:priorPeriodAttributes&&"number"==typeof priorPeriodAttributes.start&&"number"==typeof priorPeriodAttributes.duration?priorPeriodAttributes.start+priorPeriodAttributes.duration:priorPeriodAttributes||"static"!==mpdType?null:0},inheritAttributes=function inheritAttributes(mpd,options){void 0===options&&(options={});var _options=options,_options$manifestUri=_options.manifestUri,manifestUri=void 0===_options$manifestUri?"":_options$manifestUri,_options$NOW=_options.NOW,NOW=void 0===_options$NOW?Date.now():_options$NOW,_options$clientOffset=_options.clientOffset,clientOffset=void 0===_options$clientOffset?0:_options$clientOffset,periodNodes=findChildren(mpd,"Period");if(!periodNodes.length)throw new Error(errors_INVALID_NUMBER_OF_PERIOD);var locations=findChildren(mpd,"Location"),mpdAttributes=parseAttributes(mpd),mpdBaseUrls=buildBaseUrls([manifestUri],findChildren(mpd,"BaseURL"));mpdAttributes.type=mpdAttributes.type||"static",mpdAttributes.sourceDuration=mpdAttributes.mediaPresentationDuration||0,mpdAttributes.NOW=NOW,mpdAttributes.clientOffset=clientOffset,locations.length&&(mpdAttributes.locations=locations.map(getContent));var periods=[];return periodNodes.forEach((function(node,index){var attributes=parseAttributes(node),priorPeriod=periods[index-1];attributes.start=getPeriodStart({attributes:attributes,priorPeriodAttributes:priorPeriod?priorPeriod.attributes:null,mpdType:mpdAttributes.type}),periods.push({node:node,attributes:attributes})})),{locations:mpdAttributes.locations,representationInfo:flatten(periods.map(toAdaptationSets(mpdAttributes,mpdBaseUrls)))}},stringToMpdXml=function stringToMpdXml(manifestString){if(""===manifestString)throw new Error(errors_DASH_EMPTY_MANIFEST);var parser=new DOMParser,xml,mpd;try{mpd=(xml=parser.parseFromString(manifestString,"application/xml"))&&"MPD"===xml.documentElement.tagName?xml.documentElement:null}catch(e){}if(!mpd||mpd&&mpd.getElementsByTagName("parsererror").length>0)throw new Error(errors_DASH_INVALID_XML);return mpd},parseUTCTimingScheme=function parseUTCTimingScheme(mpd){var UTCTimingNode=findChildren(mpd,"UTCTiming")[0];if(!UTCTimingNode)return null;var attributes=parseAttributes(UTCTimingNode);switch(attributes.schemeIdUri){case"urn:mpeg:dash:utc:http-head:2014":case"urn:mpeg:dash:utc:http-head:2012":attributes.method="HEAD";break;case"urn:mpeg:dash:utc:http-xsdate:2014":case"urn:mpeg:dash:utc:http-iso:2014":case"urn:mpeg:dash:utc:http-xsdate:2012":case"urn:mpeg:dash:utc:http-iso:2012":attributes.method="GET";break;case"urn:mpeg:dash:utc:direct:2014":case"urn:mpeg:dash:utc:direct:2012":attributes.method="DIRECT",attributes.value=Date.parse(attributes.value);break;case"urn:mpeg:dash:utc:http-ntp:2014":case"urn:mpeg:dash:utc:ntp:2014":case"urn:mpeg:dash:utc:sntp:2014":default:throw new Error(errors_UNSUPPORTED_UTC_TIMING_SCHEME)}return attributes},parse=function parse(manifestString,options){void 0===options&&(options={});var parsedManifestInfo=inheritAttributes(stringToMpdXml(manifestString),options),playlists=toPlaylists(parsedManifestInfo.representationInfo);return toM3u8({dashPlaylists:playlists,locations:parsedManifestInfo.locations,sidxMapping:options.sidxMapping,previousManifest:options.previousManifest})},parseUTCTiming=function parseUTCTiming(manifestString){return parseUTCTimingScheme(stringToMpdXml(manifestString))},MAX_UINT32=Math.pow(2,32),getUint64$1,numbers_getUint64,numbers_MAX_UINT32=MAX_UINT32,getUint64=function getUint64(uint8){var dv=new DataView(uint8.buffer,uint8.byteOffset,uint8.byteLength),value;return dv.getBigUint64?(value=dv.getBigUint64(0))0;i+=12,referenceCount--)result.references.push({referenceType:(128&data[i])>>>7,referencedSize:2147483647&view.getUint32(i),subsegmentDuration:view.getUint32(i+4),startsWithSap:!!(128&data[i+8]),sapType:(112&data[i+8])>>>4,sapDeltaTime:268435455&view.getUint32(i+8)});return result},countBits=function countBits(x){return x.toString(2).length},countBytes=function countBytes(x){return Math.ceil(countBits(x)/8)},isTypedArray=function isTypedArray(obj){return ArrayBuffer.isView(obj)},toUint8=function toUint8(bytes){return bytes instanceof Uint8Array?bytes:(Array.isArray(bytes)||isTypedArray(bytes)||bytes instanceof ArrayBuffer||(bytes="number"!=typeof bytes||"number"==typeof bytes&&bytes!=bytes?0:[bytes]),new Uint8Array(bytes&&bytes.buffer||bytes,bytes&&bytes.byteOffset||0,bytes&&bytes.byteLength||0))},BigInt=window.BigInt||Number,BYTE_TABLE=[BigInt("0x1"),BigInt("0x100"),BigInt("0x10000"),BigInt("0x1000000"),BigInt("0x100000000"),BigInt("0x10000000000"),BigInt("0x1000000000000"),BigInt("0x100000000000000"),BigInt("0x10000000000000000")],bytesToNumber=function bytesToNumber(bytes,_temp){var _ref=void 0===_temp?{}:_temp,_ref$signed=_ref.signed,signed=void 0!==_ref$signed&&_ref$signed,_ref$le=_ref.le,le=void 0!==_ref$le&&_ref$le;bytes=toUint8(bytes);var fn=le?"reduce":"reduceRight",obj,number=(bytes[fn]?bytes[fn]:Array.prototype[fn]).call(bytes,(function(total,_byte,i){var exponent=le?i:Math.abs(i+1-bytes.length);return total+BigInt(_byte)*BYTE_TABLE[exponent]}),BigInt(0));if(signed){var max=BYTE_TABLE[bytes.length]/BigInt(2)-BigInt(1);(number=BigInt(number))>max&&(number-=max,number-=max,number-=BigInt(2))}return Number(number)},numberToBytes=function numberToBytes(number,_temp2){var _ref2,_ref2$le=(void 0===_temp2?{}:_temp2).le,le=void 0!==_ref2$le&&_ref2$le;("bigint"!=typeof number&&"number"!=typeof number||"number"==typeof number&&number!=number)&&(number=0),number=BigInt(number);for(var byteCount=countBytes(number),bytes=new Uint8Array(new ArrayBuffer(byteCount)),i=0;i=b.length&&fn.call(b,(function(bByte,i){var aByte;return bByte===(mask[i]?mask[i]&a[offset+i]:a[offset+i])}))},ID3=toUint8([73,68,51]),getId3Size=function getId3Size(bytes,offset){void 0===offset&&(offset=0);var flags=(bytes=toUint8(bytes))[offset+5],returnSize=bytes[offset+6]<<21|bytes[offset+7]<<14|bytes[offset+8]<<7|bytes[offset+9],footerPresent;return(16&flags)>>4?returnSize+20:returnSize+10},getId3Offset=function getId3Offset(bytes,offset){return void 0===offset&&(offset=0),(bytes=toUint8(bytes)).length-offset<10||!bytesMatch(bytes,ID3,{offset:offset})?offset:getId3Offset(bytes,offset+=getId3Size(bytes,offset))},normalizePath$1=function normalizePath(path){return"string"==typeof path?stringToBytes(path):path},normalizePaths$1=function normalizePaths(paths){return Array.isArray(paths)?paths.map((function(p){return normalizePath$1(p)})):[normalizePath$1(paths)]},findBox=function findBox(bytes,paths,complete){void 0===complete&&(complete=!1),paths=normalizePaths$1(paths),bytes=toUint8(bytes);var results=[];if(!paths.length)return results;for(var i=0;i>>0,type=bytes.subarray(i+4,i+8);if(0===size)break;var end=i+size;if(end>bytes.length){if(complete)break;end=bytes.length}var data=bytes.subarray(i+8,end);bytesMatch(type,paths[0])&&(1===paths.length?results.push(data):results.push.apply(results,findBox(data,paths.slice(1),complete))),i=end}return results},EBML_TAGS={EBML:toUint8([26,69,223,163]),DocType:toUint8([66,130]),Segment:toUint8([24,83,128,103]),SegmentInfo:toUint8([21,73,169,102]),Tracks:toUint8([22,84,174,107]),Track:toUint8([174]),TrackNumber:toUint8([215]),DefaultDuration:toUint8([35,227,131]),TrackEntry:toUint8([174]),TrackType:toUint8([131]),FlagDefault:toUint8([136]),CodecID:toUint8([134]),CodecPrivate:toUint8([99,162]),VideoTrack:toUint8([224]),AudioTrack:toUint8([225]),Cluster:toUint8([31,67,182,117]),Timestamp:toUint8([231]),TimestampScale:toUint8([42,215,177]),BlockGroup:toUint8([160]),BlockDuration:toUint8([155]),Block:toUint8([161]),SimpleBlock:toUint8([163])},LENGTH_TABLE=[128,64,32,16,8,4,2,1],getLength=function getLength(_byte){for(var len=1,i=0;i=bytes.length)return bytes.length;var innerid=getvint(bytes,offset,!1);if(bytesMatch(id.bytes,innerid.bytes))return offset;var dataHeader=getvint(bytes,offset+innerid.length);return getInfinityDataSize(id,bytes,offset+dataHeader.length+dataHeader.value+innerid.length)},findEbml=function findEbml(bytes,paths){paths=normalizePaths(paths),bytes=toUint8(bytes);var results=[];if(!paths.length)return results;for(var i=0;ibytes.length?bytes.length:dataStart+dataHeader.value,data=bytes.subarray(dataStart,dataEnd),totalLength;bytesMatch(paths[0],id.bytes)&&(1===paths.length?results.push(data):results=results.concat(findEbml(data,paths.slice(1)))),i+=id.length+dataHeader.length+data.length}return results},NAL_TYPE_ONE=toUint8([0,0,0,1]),NAL_TYPE_TWO=toUint8([0,0,1]),EMULATION_PREVENTION=toUint8([0,0,3]),discardEmulationPreventionBytes=function discardEmulationPreventionBytes(bytes){for(var positions=[],i=1;i>1&63),-1!==types.indexOf(nalType)&&(nalStart=i+nalOffset),i+=nalOffset+("h264"===dataType?1:2)}else i++}return bytes.subarray(0,0)},findH264Nal=function findH264Nal(bytes,type,nalLimit){return findNal(bytes,"h264",type,nalLimit)},findH265Nal=function findH265Nal(bytes,type,nalLimit){return findNal(bytes,"h265",type,nalLimit)},CONSTANTS={webm:toUint8([119,101,98,109]),matroska:toUint8([109,97,116,114,111,115,107,97]),flac:toUint8([102,76,97,67]),ogg:toUint8([79,103,103,83]),ac3:toUint8([11,119]),riff:toUint8([82,73,70,70]),avi:toUint8([65,86,73]),wav:toUint8([87,65,86,69]),"3gp":toUint8([102,116,121,112,51,103]),mp4:toUint8([102,116,121,112]),fmp4:toUint8([115,116,121,112]),mov:toUint8([102,116,121,112,113,116]),moov:toUint8([109,111,111,118]),moof:toUint8([109,111,111,102])},_isLikely={aac:function aac(bytes){var offset=getId3Offset(bytes);return bytesMatch(bytes,[255,16],{offset:offset,mask:[255,22]})},mp3:function mp3(bytes){var offset=getId3Offset(bytes);return bytesMatch(bytes,[255,2],{offset:offset,mask:[255,6]})},webm:function webm(bytes){var docType=findEbml(bytes,[EBML_TAGS.EBML,EBML_TAGS.DocType])[0];return bytesMatch(docType,CONSTANTS.webm)},mkv:function mkv(bytes){var docType=findEbml(bytes,[EBML_TAGS.EBML,EBML_TAGS.DocType])[0];return bytesMatch(docType,CONSTANTS.matroska)},mp4:function mp4(bytes){return!_isLikely["3gp"](bytes)&&!_isLikely.mov(bytes)&&(!(!bytesMatch(bytes,CONSTANTS.mp4,{offset:4})&&!bytesMatch(bytes,CONSTANTS.fmp4,{offset:4}))||(!(!bytesMatch(bytes,CONSTANTS.moof,{offset:4})&&!bytesMatch(bytes,CONSTANTS.moov,{offset:4}))||void 0))},mov:function mov(bytes){return bytesMatch(bytes,CONSTANTS.mov,{offset:4})},"3gp":function gp(bytes){return bytesMatch(bytes,CONSTANTS["3gp"],{offset:4})},ac3:function ac3(bytes){var offset=getId3Offset(bytes);return bytesMatch(bytes,CONSTANTS.ac3,{offset:offset})},ts:function ts(bytes){if(bytes.length<189&&bytes.length>=1)return 71===bytes[0];for(var i=0;i+1880},ONE_SECOND_IN_TS=9e4,secondsToVideoTs,secondsToAudioTs,videoTsToSeconds,audioTsToSeconds,audioTsToVideoTs,videoTsToAudioTs,metadataTsToSeconds;audioTsToVideoTs=function audioTsToVideoTs(timestamp,sampleRate){return secondsToVideoTs(audioTsToSeconds(timestamp,sampleRate))},videoTsToAudioTs=function videoTsToAudioTs(timestamp,sampleRate){return secondsToAudioTs(videoTsToSeconds(timestamp),sampleRate)},metadataTsToSeconds=function metadataTsToSeconds(timestamp,timelineStartPts,keepOriginalTimestamps){return videoTsToSeconds(keepOriginalTimestamps?timestamp:timestamp-timelineStartPts)};var clock_ONE_SECOND_IN_TS,clock_secondsToVideoTs=secondsToVideoTs=function secondsToVideoTs(seconds){return 9e4*seconds},clock_secondsToAudioTs=secondsToAudioTs=function secondsToAudioTs(seconds,sampleRate){return seconds*sampleRate},clock_videoTsToSeconds=videoTsToSeconds=function videoTsToSeconds(timestamp){return timestamp/9e4},clock_audioTsToSeconds=audioTsToSeconds=function audioTsToSeconds(timestamp,sampleRate){return timestamp/sampleRate},clock_audioTsToVideoTs=audioTsToVideoTs,clock_videoTsToAudioTs=videoTsToAudioTs,clock_metadataTsToSeconds=metadataTsToSeconds,clock_1=9e4,resolveUrl=resolveUrl$1,resolveManifestRedirect=function resolveManifestRedirect(handleManifestRedirect,url,req){return handleManifestRedirect&&req&&req.responseURL&&url!==req.responseURL?req.responseURL:url},logger=function logger(source){return videojs.log.debug?videojs.log.debug.bind(videojs,"VHS:",source+" >"):function(){}},TIME_FUDGE_FACTOR=1/30,SAFE_TIME_DELTA=.1,filterRanges=function filterRanges(timeRanges,predicate){var results=[],i;if(timeRanges&&timeRanges.length)for(i=0;i=time}))},findNextRange=function findNextRange(timeRanges,time){return filterRanges(timeRanges,(function(start){return start-1/30>=time}))},findGaps=function findGaps(buffered){if(buffered.length<2)return videojs.createTimeRanges();for(var ranges=[],i=1;i "+range.end(i));return strArr.join(", ")},timeUntilRebuffer=function timeUntilRebuffer(buffered,currentTime,playbackRate){var bufferedEnd;return void 0===playbackRate&&(playbackRate=1),((buffered.length?buffered.end(buffered.length-1):0)-currentTime)/playbackRate},timeRangesToArray=function timeRangesToArray(timeRanges){for(var timeRangesList=[],i=0;iend||(time+=startTime>start&&startTime<=end?end-startTime:end-start)}return time},createTimeRange=videojs.createTimeRange,segmentDurationWithParts=function segmentDurationWithParts(playlist,segment){if(!segment.preload)return segment.duration;var result=0;return(segment.parts||[]).forEach((function(p){result+=p.duration})),(segment.preloadHints||[]).forEach((function(p){"PART"===p.type&&(result+=playlist.partTargetDuration)})),result},getPartsAndSegments=function getPartsAndSegments(playlist){return(playlist.segments||[]).reduce((function(acc,segment,si){return segment.parts?segment.parts.forEach((function(part,pi){acc.push({duration:part.duration,segmentIndex:si,partIndex:pi,part:part,segment:segment})})):acc.push({duration:segment.duration,segmentIndex:si,partIndex:null,segment:segment,part:null}),acc}),[])},getLastParts=function getLastParts(media){var lastSegment=media.segments&&media.segments.length&&media.segments[media.segments.length-1];return lastSegment&&lastSegment.parts||[]},getKnownPartCount=function getKnownPartCount(_ref){var preloadSegment=_ref.preloadSegment;if(preloadSegment){var parts=preloadSegment.parts,preloadHints,partCount=(preloadSegment.preloadHints||[]).reduce((function(count,hint){return count+("PART"===hint.type?1:0)}),0);return partCount+=parts&&parts.length?parts.length:0}},liveEdgeDelay=function liveEdgeDelay(master,media){if(media.endList)return 0;if(master&&master.suggestedPresentationDelay)return master.suggestedPresentationDelay;var hasParts=getLastParts(media).length>0;return hasParts&&media.serverControl&&media.serverControl.partHoldBack?media.serverControl.partHoldBack:hasParts&&media.partTargetDuration?3*media.partTargetDuration:media.serverControl&&media.serverControl.holdBack?media.serverControl.holdBack:media.targetDuration?3*media.targetDuration:0},backwardDuration=function backwardDuration(playlist,endSequence){var result=0,i=endSequence-playlist.mediaSequence,segment=playlist.segments[i];if(segment){if(void 0!==segment.start)return{result:segment.start,precise:!0};if(void 0!==segment.end)return{result:segment.end-segment.duration,precise:!0}}for(;i--;){if(void 0!==(segment=playlist.segments[i]).end)return{result:result+segment.end,precise:!0};if(result+=segmentDurationWithParts(playlist,segment),void 0!==segment.start)return{result:result+segment.start,precise:!0}}return{result:result,precise:!1}},forwardDuration=function forwardDuration(playlist,endSequence){for(var result=0,segment,i=endSequence-playlist.mediaSequence;iendIndex){var _ref3=[endIndex,startIndex];startIndex=_ref3[0],endIndex=_ref3[1]}if(startIndex<0){for(var i=startIndex;iDate.now()},isIncompatible=function isIncompatible(playlist){return playlist.excludeUntil&&playlist.excludeUntil===1/0},isEnabled=function isEnabled(playlist){var blacklisted=isBlacklisted(playlist);return!playlist.disabled&&!blacklisted},isDisabled,isAes,hasAttribute=function hasAttribute(attr,playlist){return playlist.attributes&&playlist.attributes[attr]},estimateSegmentRequestTime=function estimateSegmentRequestTime(segmentDuration,bandwidth,playlist,bytesReceived){return void 0===bytesReceived&&(bytesReceived=0),hasAttribute("BANDWIDTH",playlist)?(segmentDuration*playlist.attributes.BANDWIDTH-8*bytesReceived)/bandwidth:NaN;var size},isLowestEnabledRendition=function isLowestEnabledRendition(master,media){if(1===master.playlists.length)return!0;var currentBandwidth=media.attributes.BANDWIDTH||Number.MAX_VALUE;return 0===master.playlists.filter((function(playlist){return!!isEnabled(playlist)&&(playlist.attributes.BANDWIDTH||0)0)for(var _i2=startIndex-1;_i2>=0;_i2--){var _partAndSegment=partsAndSegments[_i2];if(time+=_partAndSegment.duration,experimentalExactManifestTimings){if(time<0)continue}else if(time+1/30<=0)continue;return{partIndex:_partAndSegment.partIndex,segmentIndex:_partAndSegment.segmentIndex,startTime:startTime-sumDurations({defaultDuration:playlist.targetDuration,durationList:partsAndSegments,startIndex:startIndex,endIndex:_i2})}}return{partIndex:partsAndSegments[0]&&partsAndSegments[0].partIndex||null,segmentIndex:partsAndSegments[0]&&partsAndSegments[0].segmentIndex||0,startTime:currentTime}}if(startIndex<0){for(var _i3=startIndex;_i3<0;_i3++)if((time-=playlist.targetDuration)<0)return{partIndex:partsAndSegments[0]&&partsAndSegments[0].partIndex||null,segmentIndex:partsAndSegments[0]&&partsAndSegments[0].segmentIndex||0,startTime:currentTime};startIndex=0}for(var _i4=startIndex;_i40)continue}else if(time-1/30>=0)continue;return{partIndex:_partAndSegment2.partIndex,segmentIndex:_partAndSegment2.segmentIndex,startTime:startTime+sumDurations({defaultDuration:playlist.targetDuration,durationList:partsAndSegments,startIndex:startIndex,endIndex:_i4})}}return{segmentIndex:partsAndSegments[partsAndSegments.length-1].segmentIndex,partIndex:partsAndSegments[partsAndSegments.length-1].partIndex,startTime:currentTime}},isEnabled:isEnabled,isDisabled:function isDisabled(playlist){return playlist.disabled},isBlacklisted:isBlacklisted,isIncompatible:isIncompatible,playlistEnd:playlistEnd,isAes:function isAes(media){for(var i=0;i-1&&nextPart!==parts.length-1&&(parameters._HLS_part=nextPart),(nextPart>-1||parts.length)&&nextMSN--}parameters._HLS_msn=nextMSN}if(media.serverControl&&media.serverControl.canSkipUntil&&(parameters._HLS_skip=media.serverControl.canSkipDateranges?"v2":"YES"),Object.keys(parameters).length){var parsedUri=new window.URL(uri);["_HLS_skip","_HLS_msn","_HLS_part"].forEach((function(name){parameters.hasOwnProperty(name)&&parsedUri.searchParams.set(name,parameters[name])})),uri=parsedUri.toString()}return uri},updateSegment=function updateSegment(a,b){if(!a)return b;var result=mergeOptions$2(a,b);if(a.preloadHints&&!b.preloadHints&&delete result.preloadHints,a.parts&&!b.parts)delete result.parts;else if(a.parts&&b.parts)for(var i=0;i=500?4:2},this.trigger("error")},_proto.parseManifest_=function parseManifest_(_ref){var _this3=this,url=_ref.url,manifestString=_ref.manifestString;return parseManifest({onwarn:function onwarn(_ref2){var message=_ref2.message;return _this3.logger_("m3u8-parser warn for "+url+": "+message)},oninfo:function oninfo(_ref3){var message=_ref3.message;return _this3.logger_("m3u8-parser info for "+url+": "+message)},manifestString:manifestString,customTagParsers:this.customTagParsers,customTagMappers:this.customTagMappers,experimentalLLHLS:this.experimentalLLHLS})},_proto.haveMetadata=function haveMetadata(_ref4){var playlistString=_ref4.playlistString,playlistObject=_ref4.playlistObject,url=_ref4.url,id=_ref4.id;this.request=null,this.state="HAVE_METADATA";var playlist=playlistObject||this.parseManifest_({url:url,manifestString:playlistString});playlist.lastRequest=Date.now(),setupMediaPlaylist({playlist:playlist,uri:url,id:id});var update=updateMaster$1(this.master,playlist);this.targetDuration=playlist.partTargetDuration||playlist.targetDuration,this.pendingMedia_=null,update?(this.master=update,this.media_=this.master.playlists[id]):this.trigger("playlistunchanged"),this.updateMediaUpdateTimeout_(refreshDelay(this.media(),!!update)),this.trigger("loadedplaylist")},_proto.dispose=function dispose(){this.trigger("dispose"),this.stopRequest(),window.clearTimeout(this.mediaUpdateTimeout),window.clearTimeout(this.finalRenditionTimeout),this.off()},_proto.stopRequest=function stopRequest(){if(this.request){var oldRequest=this.request;this.request=null,oldRequest.onreadystatechange=null,oldRequest.abort()}},_proto.media=function media(playlist,shouldDelay){var _this4=this;if(!playlist)return this.media_;if("HAVE_NOTHING"===this.state)throw new Error("Cannot switch media playlist from "+this.state);if("string"==typeof playlist){if(!this.master.playlists[playlist])throw new Error("Unknown playlist URI: "+playlist);playlist=this.master.playlists[playlist]}if(window.clearTimeout(this.finalRenditionTimeout),shouldDelay){var delay=(playlist.partTargetDuration||playlist.targetDuration)/2*1e3||5e3;this.finalRenditionTimeout=window.setTimeout(this.media.bind(this,playlist,!1),delay)}else{var startingState=this.state,mediaChange=!this.media_||playlist.id!==this.media_.id,masterPlaylistRef=this.master.playlists[playlist.id];if(masterPlaylistRef&&masterPlaylistRef.endList||playlist.endList&&playlist.segments.length)return this.request&&(this.request.onreadystatechange=null,this.request.abort(),this.request=null),this.state="HAVE_METADATA",this.media_=playlist,void(mediaChange&&(this.trigger("mediachanging"),"HAVE_MASTER"===startingState?this.trigger("loadedmetadata"):this.trigger("mediachange")));if(this.updateMediaUpdateTimeout_(refreshDelay(playlist,!0)),mediaChange){if(this.state="SWITCHING_MEDIA",this.request){if(playlist.resolvedUri===this.request.url)return;this.request.onreadystatechange=null,this.request.abort(),this.request=null}this.media_&&this.trigger("mediachanging"),this.pendingMedia_=playlist,this.request=this.vhs_.xhr({uri:playlist.resolvedUri,withCredentials:this.withCredentials},(function(error,req){if(_this4.request){if(playlist.lastRequest=Date.now(),playlist.resolvedUri=resolveManifestRedirect(_this4.handleManifestRedirects,playlist.resolvedUri,req),error)return _this4.playlistRequestError(_this4.request,playlist,startingState);_this4.haveMetadata({playlistString:req.responseText,url:playlist.uri,id:playlist.id}),"HAVE_MASTER"===startingState?_this4.trigger("loadedmetadata"):_this4.trigger("mediachange")}}))}}},_proto.pause=function pause(){this.mediaUpdateTimeout&&(window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null),this.stopRequest(),"HAVE_NOTHING"===this.state&&(this.started=!1),"SWITCHING_MEDIA"===this.state?this.media_?this.state="HAVE_METADATA":this.state="HAVE_MASTER":"HAVE_CURRENT_METADATA"===this.state&&(this.state="HAVE_METADATA")},_proto.load=function load(shouldDelay){var _this5=this;this.mediaUpdateTimeout&&(window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null);var media=this.media();if(shouldDelay){var delay=media?(media.partTargetDuration||media.targetDuration)/2*1e3:5e3;this.mediaUpdateTimeout=window.setTimeout((function(){_this5.mediaUpdateTimeout=null,_this5.load()}),delay)}else this.started?media&&!media.endList?this.trigger("mediaupdatetimeout"):this.trigger("loadedplaylist"):this.start()},_proto.updateMediaUpdateTimeout_=function updateMediaUpdateTimeout_(delay){var _this6=this;this.mediaUpdateTimeout&&(window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null),this.media()&&!this.media().endList&&(this.mediaUpdateTimeout=window.setTimeout((function(){_this6.mediaUpdateTimeout=null,_this6.trigger("mediaupdatetimeout"),_this6.updateMediaUpdateTimeout_(delay)}),delay))},_proto.start=function start(){var _this7=this;if(this.started=!0,"object"==typeof this.src)return this.src.uri||(this.src.uri=window.location.href),this.src.resolvedUri=this.src.uri,void setTimeout((function(){_this7.setupInitialPlaylist(_this7.src)}),0);this.request=this.vhs_.xhr({uri:this.src,withCredentials:this.withCredentials},(function(error,req){if(_this7.request){if(_this7.request=null,error)return _this7.error={status:req.status,message:"HLS playlist request error at URL: "+_this7.src+".",responseText:req.responseText,code:2},"HAVE_NOTHING"===_this7.state&&(_this7.started=!1),_this7.trigger("error");_this7.src=resolveManifestRedirect(_this7.handleManifestRedirects,_this7.src,req);var manifest=_this7.parseManifest_({manifestString:req.responseText,url:_this7.src});_this7.setupInitialPlaylist(manifest)}}))},_proto.srcUri=function srcUri(){return"string"==typeof this.src?this.src:this.src.uri},_proto.setupInitialPlaylist=function setupInitialPlaylist(manifest){if(this.state="HAVE_MASTER",manifest.playlists)return this.master=manifest,addPropertiesToMaster(this.master,this.srcUri()),manifest.playlists.forEach((function(playlist){playlist.segments=getAllSegments(playlist),playlist.segments.forEach((function(segment){resolveSegmentUris(segment,playlist.resolvedUri)}))})),this.trigger("loadedplaylist"),void(this.request||this.media(this.master.playlists[0]));var uri=this.srcUri()||window.location.href;this.master=masterForMedia(manifest,uri),this.haveMetadata({playlistObject:manifest,url:uri,id:this.master.playlists[0].id}),this.trigger("loadedmetadata")},PlaylistLoader}(EventTarget$1),videojsXHR=videojs.xhr,mergeOptions$1=videojs.mergeOptions,callbackWrapper=function callbackWrapper(request,error,response,callback){var reqResponse="arraybuffer"===request.responseType?request.response:request.responseText;!error&&reqResponse&&(request.responseTime=Date.now(),request.roundTripTime=request.responseTime-request.requestTime,request.bytesReceived=reqResponse.byteLength||reqResponse.length,request.bandwidth||(request.bandwidth=Math.floor(request.bytesReceived/request.roundTripTime*8*1e3))),response.headers&&(request.responseHeaders=response.headers),error&&"ETIMEDOUT"===error.code&&(request.timedout=!0),error||request.aborted||200===response.statusCode||206===response.statusCode||0===response.statusCode||(error=new Error("XHR Failed with a response of: "+(request&&(reqResponse||request.responseText)))),callback(error,request)},xhrFactory=function xhrFactory(){var xhr=function XhrFunction(options,callback){options=mergeOptions$1({timeout:45e3},options);var beforeRequest=XhrFunction.beforeRequest||videojs.Vhs.xhr.beforeRequest;if(beforeRequest&&"function"==typeof beforeRequest){var newOptions=beforeRequest(options);newOptions&&(options=newOptions)}var xhrMethod,request=(!0===videojs.Vhs.xhr.original?videojsXHR:videojs.Vhs.xhr)(options,(function(error,response){return callbackWrapper(request,error,response,callback)})),originalAbort=request.abort;return request.abort=function(){return request.aborted=!0,originalAbort.apply(request,arguments)},request.uri=options.uri,request.requestTime=Date.now(),request};return xhr.original=!0,xhr},byterangeStr=function byterangeStr(byterange){var byterangeEnd,byterangeStart;return"bytes="+byterange.offset+"-"+(byterangeEnd="bigint"==typeof byterange.offset||"bigint"==typeof byterange.length?window.BigInt(byterange.offset)+window.BigInt(byterange.length)-window.BigInt(1):byterange.offset+byterange.length-1)},segmentXhrHeaders=function segmentXhrHeaders(segment){var headers={};return segment.byterange&&(headers.Range=byterangeStr(segment.byterange)),headers},textRange=function textRange(range,i){return range.start(i)+"-"+range.end(i)},formatHexString=function formatHexString(e,i){var value=e.toString(16);return"00".substring(0,2-value.length)+value+(i%2?" ":"")},formatAsciiString=function formatAsciiString(e){return e>=32&&e<126?String.fromCharCode(e):"."},createTransferableMessage=function createTransferableMessage(message){var transferable={};return Object.keys(message).forEach((function(key){var value=message[key];ArrayBuffer.isView(value)?transferable[key]={bytes:value.buffer,byteOffset:value.byteOffset,byteLength:value.byteLength}:transferable[key]=value})),transferable},initSegmentId=function initSegmentId(initSegment){var byterange=initSegment.byterange||{length:1/0,offset:0};return[byterange.length,byterange.offset,initSegment.resolvedUri].join(",")},segmentKeyId=function segmentKeyId(key){return key.resolvedUri},hexDump=function hexDump(data){for(var bytes=Array.prototype.slice.call(data),step=16,result="",hex,ascii,j=0;jnew Date(lastSegmentStart.getTime()+1e3*lastSegmentDuration)?null:(dateTimeObject>lastSegmentStart&&(segment=lastSegment),{segment:segment,estimatedStart:segment.videoTimingInfo?segment.videoTimingInfo.transmuxedPresentationStart:Playlist.duration(playlist,playlist.mediaSequence+playlist.segments.indexOf(segment)),type:segment.videoTimingInfo?"accurate":"estimate"})},findSegmentForPlayerTime=function findSegmentForPlayerTime(time,playlist){if(!playlist||!playlist.segments||0===playlist.segments.length)return null;for(var segmentEnd=0,segment,i=0;isegmentEnd){if(time>segmentEnd+.25*lastSegment.duration)return null;segment=lastSegment}return{segment:segment,estimatedStart:segment.videoTimingInfo?segment.videoTimingInfo.transmuxedPresentationStart:segmentEnd-segment.duration,type:segment.videoTimingInfo?"accurate":"estimate"}},getOffsetFromTimestamp=function getOffsetFromTimestamp(comparisonTimeStamp,programTime){var segmentDateTime,programDateTime;try{segmentDateTime=new Date(comparisonTimeStamp),programDateTime=new Date(programTime)}catch(e){}var segmentTimeEpoch=segmentDateTime.getTime(),programTimeEpoch;return(programDateTime.getTime()-segmentTimeEpoch)/1e3},verifyProgramDateTimeTags=function verifyProgramDateTimeTags(playlist){if(!playlist.segments||0===playlist.segments.length)return!1;for(var i=0;i=length+offset)return fin(err,{response:bytes.subarray(offset,offset+length),status:request.status,uri:request.uri});_this2.request=_this2.vhs_.xhr({uri:uri,responseType:"arraybuffer",headers:segmentXhrHeaders({byterange:playlist.sidx.byterange})},fin)}))}else this.mediaRequest_=window.setTimeout((function(){return cb(!1)}),0)},_proto.dispose=function dispose(){this.trigger("dispose"),this.stopRequest(),this.loadedPlaylists_={},window.clearTimeout(this.minimumUpdatePeriodTimeout_),window.clearTimeout(this.mediaRequest_),window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null,this.mediaRequest_=null,this.minimumUpdatePeriodTimeout_=null,this.masterPlaylistLoader_.createMupOnMedia_&&(this.off("loadedmetadata",this.masterPlaylistLoader_.createMupOnMedia_),this.masterPlaylistLoader_.createMupOnMedia_=null),this.off()},_proto.hasPendingRequest=function hasPendingRequest(){return this.request||this.mediaRequest_},_proto.stopRequest=function stopRequest(){if(this.request){var oldRequest=this.request;this.request=null,oldRequest.onreadystatechange=null,oldRequest.abort()}},_proto.media=function media(playlist){var _this3=this;if(!playlist)return this.media_;if("HAVE_NOTHING"===this.state)throw new Error("Cannot switch media playlist from "+this.state);var startingState=this.state;if("string"==typeof playlist){if(!this.masterPlaylistLoader_.master.playlists[playlist])throw new Error("Unknown playlist URI: "+playlist);playlist=this.masterPlaylistLoader_.master.playlists[playlist]}var mediaChange=!this.media_||playlist.id!==this.media_.id;if(mediaChange&&this.loadedPlaylists_[playlist.id]&&this.loadedPlaylists_[playlist.id].endList)return this.state="HAVE_METADATA",this.media_=playlist,void(mediaChange&&(this.trigger("mediachanging"),this.trigger("mediachange")));mediaChange&&(this.media_&&this.trigger("mediachanging"),this.addSidxSegments_(playlist,startingState,(function(sidxChanged){_this3.haveMetadata({startingState:startingState,playlist:playlist})})))},_proto.haveMetadata=function haveMetadata(_ref2){var startingState=_ref2.startingState,playlist=_ref2.playlist;this.state="HAVE_METADATA",this.loadedPlaylists_[playlist.id]=playlist,this.mediaRequest_=null,this.refreshMedia_(playlist.id),"HAVE_MASTER"===startingState?this.trigger("loadedmetadata"):this.trigger("mediachange")},_proto.pause=function pause(){this.masterPlaylistLoader_.createMupOnMedia_&&(this.off("loadedmetadata",this.masterPlaylistLoader_.createMupOnMedia_),this.masterPlaylistLoader_.createMupOnMedia_=null),this.stopRequest(),window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null,this.isMaster_&&(window.clearTimeout(this.masterPlaylistLoader_.minimumUpdatePeriodTimeout_),this.masterPlaylistLoader_.minimumUpdatePeriodTimeout_=null),"HAVE_NOTHING"===this.state&&(this.started=!1)},_proto.load=function load(isFinalRendition){var _this4=this;window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null;var media=this.media();if(isFinalRendition){var delay=media?media.targetDuration/2*1e3:5e3;this.mediaUpdateTimeout=window.setTimeout((function(){return _this4.load()}),delay)}else this.started?media&&!media.endList?(this.isMaster_&&!this.minimumUpdatePeriodTimeout_&&(this.trigger("minimumUpdatePeriod"),this.updateMinimumUpdatePeriodTimeout_()),this.trigger("mediaupdatetimeout")):this.trigger("loadedplaylist"):this.start()},_proto.start=function start(){var _this5=this;this.started=!0,this.isMaster_?this.requestMaster_((function(req,masterChanged){_this5.haveMaster_(),_this5.hasPendingRequest()||_this5.media_||_this5.media(_this5.masterPlaylistLoader_.master.playlists[0])})):this.mediaRequest_=window.setTimeout((function(){return _this5.haveMaster_()}),0)},_proto.requestMaster_=function requestMaster_(cb){var _this6=this;this.request=this.vhs_.xhr({uri:this.masterPlaylistLoader_.srcUrl,withCredentials:this.withCredentials},(function(error,req){if(!_this6.requestErrored_(error,req)){var masterChanged=req.responseText!==_this6.masterPlaylistLoader_.masterXml_;return _this6.masterPlaylistLoader_.masterXml_=req.responseText,req.responseHeaders&&req.responseHeaders.date?_this6.masterLoaded_=Date.parse(req.responseHeaders.date):_this6.masterLoaded_=Date.now(),_this6.masterPlaylistLoader_.srcUrl=resolveManifestRedirect(_this6.handleManifestRedirects,_this6.masterPlaylistLoader_.srcUrl,req),masterChanged?(_this6.handleMaster_(),void _this6.syncClientServerClock_((function(){return cb(req,masterChanged)}))):cb(req,masterChanged)}"HAVE_NOTHING"===_this6.state&&(_this6.started=!1)}))},_proto.syncClientServerClock_=function syncClientServerClock_(done){var _this7=this,utcTiming=parseUTCTiming(this.masterPlaylistLoader_.masterXml_);return null===utcTiming?(this.masterPlaylistLoader_.clientOffset_=this.masterLoaded_-Date.now(),done()):"DIRECT"===utcTiming.method?(this.masterPlaylistLoader_.clientOffset_=utcTiming.value-Date.now(),done()):void(this.request=this.vhs_.xhr({uri:resolveUrl(this.masterPlaylistLoader_.srcUrl,utcTiming.value),method:utcTiming.method,withCredentials:this.withCredentials},(function(error,req){if(_this7.request){if(error)return _this7.masterPlaylistLoader_.clientOffset_=_this7.masterLoaded_-Date.now(),done();var serverTime;serverTime="HEAD"===utcTiming.method?req.responseHeaders&&req.responseHeaders.date?Date.parse(req.responseHeaders.date):_this7.masterLoaded_:Date.parse(req.responseText),_this7.masterPlaylistLoader_.clientOffset_=serverTime-Date.now(),done()}})))},_proto.haveMaster_=function haveMaster_(){this.state="HAVE_MASTER",this.isMaster_?this.trigger("loadedplaylist"):this.media_||this.media(this.childPlaylist_)},_proto.handleMaster_=function handleMaster_(){this.mediaRequest_=null;var oldMaster=this.masterPlaylistLoader_.master,newMaster=parseMasterXml({masterXml:this.masterPlaylistLoader_.masterXml_,srcUrl:this.masterPlaylistLoader_.srcUrl,clientOffset:this.masterPlaylistLoader_.clientOffset_,sidxMapping:this.masterPlaylistLoader_.sidxMapping_,previousManifest:oldMaster});oldMaster&&(newMaster=updateMaster(oldMaster,newMaster,this.masterPlaylistLoader_.sidxMapping_)),this.masterPlaylistLoader_.master=newMaster||oldMaster;var location=this.masterPlaylistLoader_.master.locations&&this.masterPlaylistLoader_.master.locations[0];return location&&location!==this.masterPlaylistLoader_.srcUrl&&(this.masterPlaylistLoader_.srcUrl=location),(!oldMaster||newMaster&&newMaster.minimumUpdatePeriod!==oldMaster.minimumUpdatePeriod)&&this.updateMinimumUpdatePeriodTimeout_(),Boolean(newMaster)},_proto.updateMinimumUpdatePeriodTimeout_=function updateMinimumUpdatePeriodTimeout_(){var mpl=this.masterPlaylistLoader_;mpl.createMupOnMedia_&&(mpl.off("loadedmetadata",mpl.createMupOnMedia_),mpl.createMupOnMedia_=null),mpl.minimumUpdatePeriodTimeout_&&(window.clearTimeout(mpl.minimumUpdatePeriodTimeout_),mpl.minimumUpdatePeriodTimeout_=null);var mup=mpl.master&&mpl.master.minimumUpdatePeriod;0===mup&&(mpl.media()?mup=1e3*mpl.media().targetDuration:(mpl.createMupOnMedia_=mpl.updateMinimumUpdatePeriodTimeout_,mpl.one("loadedmetadata",mpl.createMupOnMedia_))),"number"!=typeof mup||mup<=0?mup<0&&this.logger_("found invalid minimumUpdatePeriod of "+mup+", not setting a timeout"):this.createMUPTimeout_(mup)},_proto.createMUPTimeout_=function createMUPTimeout_(mup){var mpl=this.masterPlaylistLoader_;mpl.minimumUpdatePeriodTimeout_=window.setTimeout((function(){mpl.minimumUpdatePeriodTimeout_=null,mpl.trigger("minimumUpdatePeriod"),mpl.createMUPTimeout_(mup)}),mup)},_proto.refreshXml_=function refreshXml_(){var _this8=this;this.requestMaster_((function(req,masterChanged){masterChanged&&(_this8.media_&&(_this8.media_=_this8.masterPlaylistLoader_.master.playlists[_this8.media_.id]),_this8.masterPlaylistLoader_.sidxMapping_=filterChangedSidxMappings(_this8.masterPlaylistLoader_.master,_this8.masterPlaylistLoader_.sidxMapping_),_this8.addSidxSegments_(_this8.media(),_this8.state,(function(sidxChanged){_this8.refreshMedia_(_this8.media().id)})))}))},_proto.refreshMedia_=function refreshMedia_(mediaID){var _this9=this;if(!mediaID)throw new Error("refreshMedia_ must take a media id");this.media_&&this.isMaster_&&this.handleMaster_();var playlists=this.masterPlaylistLoader_.master.playlists,mediaChanged=!this.media_||this.media_!==playlists[mediaID],createMediaUpdateTimeout;(mediaChanged?this.media_=playlists[mediaID]:this.trigger("playlistunchanged"),this.mediaUpdateTimeout)||function createMediaUpdateTimeout(){_this9.media().endList||(_this9.mediaUpdateTimeout=window.setTimeout((function(){_this9.trigger("mediaupdatetimeout"),createMediaUpdateTimeout()}),refreshDelay(_this9.media(),Boolean(mediaChanged))))}();this.trigger("loadedplaylist")},DashPlaylistLoader}(EventTarget),Config={GOAL_BUFFER_LENGTH:30,MAX_GOAL_BUFFER_LENGTH:60,BACK_BUFFER_LENGTH:30,GOAL_BUFFER_LENGTH_RATE:1,INITIAL_BANDWIDTH:4194304,BANDWIDTH_VARIANCE:1.2,BUFFER_LOW_WATER_LINE:0,MAX_BUFFER_LOW_WATER_LINE:30,EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE:16,BUFFER_LOW_WATER_LINE_RATE:1,BUFFER_HIGH_WATER_LINE:30},stringToArrayBuffer=function stringToArrayBuffer(string){for(var view=new Uint8Array(new ArrayBuffer(string.length)),i=0;i-1)},this.trigger=function(type){var callbacks,i,length,args;if(callbacks=listeners[type])if(2===arguments.length)for(length=callbacks.length,i=0;i>>1,track.samplingfrequencyindex<<7|track.channelcount<<3,6,1,2]))},hdlr=function hdlr(type){return box(types.hdlr,HDLR_TYPES[type])},mdhd=function mdhd(track){var result=new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,0,1,95,144,track.duration>>>24&255,track.duration>>>16&255,track.duration>>>8&255,255&track.duration,85,196,0,0]);return track.samplerate&&(result[12]=track.samplerate>>>24&255,result[13]=track.samplerate>>>16&255,result[14]=track.samplerate>>>8&255,result[15]=255&track.samplerate),box(types.mdhd,result)},mdia=function mdia(track){return box(types.mdia,mdhd(track),hdlr(track.type),minf(track))},mfhd=function mfhd(sequenceNumber){return box(types.mfhd,new Uint8Array([0,0,0,0,(4278190080&sequenceNumber)>>24,(16711680&sequenceNumber)>>16,(65280&sequenceNumber)>>8,255&sequenceNumber]))},minf=function minf(track){return box(types.minf,"video"===track.type?box(types.vmhd,VMHD):box(types.smhd,SMHD),dinf(),stbl(track))},moof=function moof(sequenceNumber,tracks){for(var trackFragments=[],i=tracks.length;i--;)trackFragments[i]=traf(tracks[i]);return box.apply(null,[types.moof,mfhd(sequenceNumber)].concat(trackFragments))},moov=function moov(tracks){for(var i=tracks.length,boxes=[];i--;)boxes[i]=trak(tracks[i]);return box.apply(null,[types.moov,mvhd(4294967295)].concat(boxes).concat(mvex(tracks)))},mvex=function mvex(tracks){for(var i=tracks.length,boxes=[];i--;)boxes[i]=trex(tracks[i]);return box.apply(null,[types.mvex].concat(boxes))},mvhd=function mvhd(duration){var bytes=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,0,1,95,144,(4278190080&duration)>>24,(16711680&duration)>>16,(65280&duration)>>8,255&duration,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return box(types.mvhd,bytes)},sdtp=function sdtp(track){var samples=track.samples||[],bytes=new Uint8Array(4+samples.length),flags,i;for(i=0;i>>8),sequenceParameterSets.push(255&sps[i].byteLength),sequenceParameterSets=sequenceParameterSets.concat(Array.prototype.slice.call(sps[i]));for(i=0;i>>8),pictureParameterSets.push(255&pps[i].byteLength),pictureParameterSets=pictureParameterSets.concat(Array.prototype.slice.call(pps[i]));if(avc1Box=[types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(65280&track.width)>>8,255&track.width,(65280&track.height)>>8,255&track.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),box(types.avcC,new Uint8Array([1,track.profileIdc,track.profileCompatibility,track.levelIdc,255].concat([sps.length],sequenceParameterSets,[pps.length],pictureParameterSets))),box(types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192]))],track.sarRatio){var hSpacing=track.sarRatio[0],vSpacing=track.sarRatio[1];avc1Box.push(box(types.pasp,new Uint8Array([(4278190080&hSpacing)>>24,(16711680&hSpacing)>>16,(65280&hSpacing)>>8,255&hSpacing,(4278190080&vSpacing)>>24,(16711680&vSpacing)>>16,(65280&vSpacing)>>8,255&vSpacing])))}return box.apply(null,avc1Box)},audioSample=function audioSample(track){return box(types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,(65280&track.channelcount)>>8,255&track.channelcount,(65280&track.samplesize)>>8,255&track.samplesize,0,0,0,0,(65280&track.samplerate)>>8,255&track.samplerate,0,0]),esds(track))},tkhd=function tkhd(track){var result=new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,(4278190080&track.id)>>24,(16711680&track.id)>>16,(65280&track.id)>>8,255&track.id,0,0,0,0,(4278190080&track.duration)>>24,(16711680&track.duration)>>16,(65280&track.duration)>>8,255&track.duration,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,(65280&track.width)>>8,255&track.width,0,0,(65280&track.height)>>8,255&track.height,0,0]);return box(types.tkhd,result)},traf=function traf(track){var trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun,sampleDependencyTable,dataOffset,upperWordBaseMediaDecodeTime,lowerWordBaseMediaDecodeTime;return trackFragmentHeader=box(types.tfhd,new Uint8Array([0,0,0,58,(4278190080&track.id)>>24,(16711680&track.id)>>16,(65280&track.id)>>8,255&track.id,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0])),upperWordBaseMediaDecodeTime=Math.floor(track.baseMediaDecodeTime/MAX_UINT32),lowerWordBaseMediaDecodeTime=Math.floor(track.baseMediaDecodeTime%MAX_UINT32),trackFragmentDecodeTime=box(types.tfdt,new Uint8Array([1,0,0,0,upperWordBaseMediaDecodeTime>>>24&255,upperWordBaseMediaDecodeTime>>>16&255,upperWordBaseMediaDecodeTime>>>8&255,255&upperWordBaseMediaDecodeTime,lowerWordBaseMediaDecodeTime>>>24&255,lowerWordBaseMediaDecodeTime>>>16&255,lowerWordBaseMediaDecodeTime>>>8&255,255&lowerWordBaseMediaDecodeTime])),dataOffset=92,"audio"===track.type?(trackFragmentRun=trun$1(track,92),box(types.traf,trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun)):(sampleDependencyTable=sdtp(track),trackFragmentRun=trun$1(track,sampleDependencyTable.length+92),box(types.traf,trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun,sampleDependencyTable))},trak=function trak(track){return track.duration=track.duration||4294967295,box(types.trak,tkhd(track),mdia(track))},trex=function trex(track){var result=new Uint8Array([0,0,0,0,(4278190080&track.id)>>24,(16711680&track.id)>>16,(65280&track.id)>>8,255&track.id,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return"video"!==track.type&&(result[result.length-1]=0),box(types.trex,result)},trunHeader=function trunHeader(samples,offset){var durationPresent=0,sizePresent=0,flagsPresent=0,compositionTimeOffset=0;return samples.length&&(void 0!==samples[0].duration&&(durationPresent=1),void 0!==samples[0].size&&(sizePresent=2),void 0!==samples[0].flags&&(flagsPresent=4),void 0!==samples[0].compositionTimeOffset&&(compositionTimeOffset=8)),[0,0,durationPresent|sizePresent|flagsPresent|compositionTimeOffset,1,(4278190080&samples.length)>>>24,(16711680&samples.length)>>>16,(65280&samples.length)>>>8,255&samples.length,(4278190080&offset)>>>24,(16711680&offset)>>>16,(65280&offset)>>>8,255&offset]},videoTrun=function videoTrun(track,offset){var bytesOffest,bytes,header,samples,sample,i;for(offset+=20+16*(samples=track.samples||[]).length,header=trunHeader(samples,offset),(bytes=new Uint8Array(header.length+16*samples.length)).set(header),bytesOffest=header.length,i=0;i>>24,bytes[bytesOffest++]=(16711680&sample.duration)>>>16,bytes[bytesOffest++]=(65280&sample.duration)>>>8,bytes[bytesOffest++]=255&sample.duration,bytes[bytesOffest++]=(4278190080&sample.size)>>>24,bytes[bytesOffest++]=(16711680&sample.size)>>>16,bytes[bytesOffest++]=(65280&sample.size)>>>8,bytes[bytesOffest++]=255&sample.size,bytes[bytesOffest++]=sample.flags.isLeading<<2|sample.flags.dependsOn,bytes[bytesOffest++]=sample.flags.isDependedOn<<6|sample.flags.hasRedundancy<<4|sample.flags.paddingValue<<1|sample.flags.isNonSyncSample,bytes[bytesOffest++]=61440&sample.flags.degradationPriority,bytes[bytesOffest++]=15&sample.flags.degradationPriority,bytes[bytesOffest++]=(4278190080&sample.compositionTimeOffset)>>>24,bytes[bytesOffest++]=(16711680&sample.compositionTimeOffset)>>>16,bytes[bytesOffest++]=(65280&sample.compositionTimeOffset)>>>8,bytes[bytesOffest++]=255&sample.compositionTimeOffset;return box(types.trun,bytes)},audioTrun=function audioTrun(track,offset){var bytes,bytesOffest,header,samples,sample,i;for(offset+=20+8*(samples=track.samples||[]).length,header=trunHeader(samples,offset),(bytes=new Uint8Array(header.length+8*samples.length)).set(header),bytesOffest=header.length,i=0;i>>24,bytes[bytesOffest++]=(16711680&sample.duration)>>>16,bytes[bytesOffest++]=(65280&sample.duration)>>>8,bytes[bytesOffest++]=255&sample.duration,bytes[bytesOffest++]=(4278190080&sample.size)>>>24,bytes[bytesOffest++]=(16711680&sample.size)>>>16,bytes[bytesOffest++]=(65280&sample.size)>>>8,bytes[bytesOffest++]=255&sample.size;return box(types.trun,bytes)},trun$1=function trun(track,offset){return"audio"===track.type?audioTrun(track,offset):videoTrun(track,offset)};var mp4Generator_ftyp=ftyp=function ftyp(){return box(types.ftyp,MAJOR_BRAND,MINOR_VERSION,MAJOR_BRAND,AVC1_BRAND)},mp4Generator_mdat=mdat=function mdat(data){return box(types.mdat,data)},mp4Generator_moof=moof,mp4Generator_moov=moov,mp4Generator_initSegment=function initSegment(tracks){var fileType=ftyp(),movie=moov(tracks),result;return(result=new Uint8Array(fileType.byteLength+movie.byteLength)).set(fileType),result.set(movie,fileType.byteLength),result},groupNalsIntoFrames,groupFramesIntoGops,extendFirstKeyFrame,createDefaultSample=function createDefaultSample(){return{size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0,isNonSyncSample:1}}},sampleForFrame=function sampleForFrame(frame,dataOffset){var sample={size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0,isNonSyncSample:1}};return sample.dataOffset=dataOffset,sample.compositionTimeOffset=frame.pts-frame.dts,sample.duration=frame.duration,sample.size=4*frame.length,sample.size+=frame.byteLength,frame.keyFrame&&(sample.flags.dependsOn=2,sample.flags.isNonSyncSample=0),sample},generateSampleTable$1,concatenateNalData,generateSampleTableForFrame,concatenateNalDataForFrame,frameUtils_groupNalsIntoFrames=function groupNalsIntoFrames(nalUnits){var i,currentNal,currentFrame=[],frames=[];for(frames.byteLength=0,frames.nalCount=0,frames.duration=0,currentFrame.byteLength=0,i=0;i1&&(currentGop=gops.shift(),gops.byteLength-=currentGop.byteLength,gops.nalCount-=currentGop.nalCount,gops[0][0].dts=currentGop.dts,gops[0][0].pts=currentGop.pts,gops[0][0].duration+=currentGop.duration),gops},frameUtils_generateSampleTable=function generateSampleTable(gops,baseDataOffset){var h,i,sample,currentGop,currentFrame,dataOffset=baseDataOffset||0,samples=[];for(h=0;hclock_ONE_SECOND_IN_TS$0/2))){for((silentFrame=silence_1()[track.samplerate])||(silentFrame=frames[0].data),i=0;i=earliestAllowedDts?adtsFrames:(track.minSegmentDts=1/0,adtsFrames.filter((function(currentFrame){return currentFrame.dts>=earliestAllowedDts&&(track.minSegmentDts=Math.min(track.minSegmentDts,currentFrame.dts),track.minSegmentPts=track.minSegmentDts,!0)})))},audioFrameUtils_generateSampleTable=function generateSampleTable(frames){var i,currentFrame,samples=[];for(i=0;i=this.virtualRowCount&&"function"==typeof this.beforeRowOverflow&&this.beforeRowOverflow(pts),this.rows.length>0&&(this.rows.push(""),this.rowIdx++);this.rows.length>this.virtualRowCount;)this.rows.shift(),this.rowIdx--},Cea708Window.prototype.isEmpty=function(){return 0===this.rows.length||1===this.rows.length&&""===this.rows[0]},Cea708Window.prototype.addText=function(text){this.rows[this.rowIdx]+=text},Cea708Window.prototype.backspace=function(){if(!this.isEmpty()){var row=this.rows[this.rowIdx];this.rows[this.rowIdx]=row.substr(0,row.length-1)}};var Cea708Service=function Cea708Service(serviceNum,encoding,stream){this.serviceNum=serviceNum,this.text="",this.currentWindow=new Cea708Window(-1),this.windows=[],this.stream=stream,"string"==typeof encoding&&this.createTextDecoder(encoding)};Cea708Service.prototype.init=function(pts,beforeRowOverflow){this.startPts=pts;for(var win=0;win<8;win++)this.windows[win]=new Cea708Window(win),"function"==typeof beforeRowOverflow&&(this.windows[win].beforeRowOverflow=beforeRowOverflow)},Cea708Service.prototype.setCurrentWindow=function(windowNum){this.currentWindow=this.windows[windowNum]},Cea708Service.prototype.createTextDecoder=function(encoding){if("undefined"==typeof TextDecoder)this.stream.trigger("log",{level:"warn",message:"The `encoding` option is unsupported without TextDecoder support"});else try{this.textDecoder_=new TextDecoder(encoding)}catch(error){this.stream.trigger("log",{level:"warn",message:"TextDecoder could not be created with "+encoding+" encoding. "+error})}};var Cea708Stream=function Cea708Stream(options){options=options||{},Cea708Stream.prototype.init.call(this);var self=this,captionServices=options.captionServices||{},captionServiceEncodings={},serviceProps;Object.keys(captionServices).forEach((function(serviceName){serviceProps=captionServices[serviceName],/^SERVICE/.test(serviceName)&&(captionServiceEncodings[serviceName]=serviceProps.encoding)})),this.serviceEncodings=captionServiceEncodings,this.current708Packet=null,this.services={},this.push=function(packet){3===packet.type?(self.new708Packet(),self.add708Bytes(packet)):(null===self.current708Packet&&self.new708Packet(),self.add708Bytes(packet))}};Cea708Stream.prototype=new stream,Cea708Stream.prototype.new708Packet=function(){null!==this.current708Packet&&this.push708Packet(),this.current708Packet={data:[],ptsVals:[]}},Cea708Stream.prototype.add708Bytes=function(packet){var data=packet.ccData,byte0=data>>>8,byte1=255&data;this.current708Packet.ptsVals.push(packet.pts),this.current708Packet.data.push(byte0),this.current708Packet.data.push(byte1)},Cea708Stream.prototype.push708Packet=function(){var packet708=this.current708Packet,packetData=packet708.data,serviceNum=null,blockSize=null,i=0,b=packetData[i++];for(packet708.seq=b>>6,packet708.sizeCode=63&b;i>5)&&blockSize>0&&(serviceNum=b=packetData[i++]),this.pushServiceBlock(serviceNum,i,blockSize),blockSize>0&&(i+=blockSize-1)},Cea708Stream.prototype.pushServiceBlock=function(serviceNum,start,size){var b,i=start,packetData=this.current708Packet.data,service=this.services[serviceNum];for(service||(service=this.initService(serviceNum,i));i>5,win.rowLock=(16&b)>>4,win.columnLock=(8&b)>>3,win.priority=7&b,b=packetData[++i],win.relativePositioning=(128&b)>>7,win.anchorVertical=127&b,b=packetData[++i],win.anchorHorizontal=b,b=packetData[++i],win.anchorPoint=(240&b)>>4,win.rowCount=15&b,b=packetData[++i],win.columnCount=63&b,b=packetData[++i],win.windowStyle=(56&b)>>3,win.penStyle=7&b,win.virtualRowCount=win.rowCount+1,i},Cea708Stream.prototype.setWindowAttributes=function(i,service){var packetData=this.current708Packet.data,b=packetData[i],winAttr=service.currentWindow.winAttr;return b=packetData[++i],winAttr.fillOpacity=(192&b)>>6,winAttr.fillRed=(48&b)>>4,winAttr.fillGreen=(12&b)>>2,winAttr.fillBlue=3&b,b=packetData[++i],winAttr.borderType=(192&b)>>6,winAttr.borderRed=(48&b)>>4,winAttr.borderGreen=(12&b)>>2,winAttr.borderBlue=3&b,b=packetData[++i],winAttr.borderType+=(128&b)>>5,winAttr.wordWrap=(64&b)>>6,winAttr.printDirection=(48&b)>>4,winAttr.scrollDirection=(12&b)>>2,winAttr.justify=3&b,b=packetData[++i],winAttr.effectSpeed=(240&b)>>4,winAttr.effectDirection=(12&b)>>2,winAttr.displayEffect=3&b,i},Cea708Stream.prototype.flushDisplayed=function(pts,service){for(var displayedText=[],winId=0;winId<8;winId++)service.windows[winId].visible&&!service.windows[winId].isEmpty()&&displayedText.push(service.windows[winId].getText());service.endPts=pts,service.text=displayedText.join("\n\n"),this.pushCaption(service),service.startPts=pts},Cea708Stream.prototype.pushCaption=function(service){""!==service.text&&(this.trigger("data",{startPts:service.startPts,endPts:service.endPts,text:service.text,stream:"cc708_"+service.serviceNum}),service.text="",service.startPts=service.endPts)},Cea708Stream.prototype.displayWindows=function(i,service){var packetData,b=this.current708Packet.data[++i],pts=this.getPts(i);this.flushDisplayed(pts,service);for(var winId=0;winId<8;winId++)b&1<>4,penAttr.offset=(12&b)>>2,penAttr.penSize=3&b,b=packetData[++i],penAttr.italics=(128&b)>>7,penAttr.underline=(64&b)>>6,penAttr.edgeType=(56&b)>>3,penAttr.fontStyle=7&b,i},Cea708Stream.prototype.setPenColor=function(i,service){var packetData=this.current708Packet.data,b=packetData[i],penColor=service.currentWindow.penColor;return b=packetData[++i],penColor.fgOpacity=(192&b)>>6,penColor.fgRed=(48&b)>>4,penColor.fgGreen=(12&b)>>2,penColor.fgBlue=3&b,b=packetData[++i],penColor.bgOpacity=(192&b)>>6,penColor.bgRed=(48&b)>>4,penColor.bgGreen=(12&b)>>2,penColor.bgBlue=3&b,b=packetData[++i],penColor.edgeRed=(48&b)>>4,penColor.edgeGreen=(12&b)>>2,penColor.edgeBlue=3&b,i},Cea708Stream.prototype.setPenLocation=function(i,service){var packetData=this.current708Packet.data,b=packetData[i],penLoc=service.currentWindow.penLoc;return service.currentWindow.pendingNewLine=!0,b=packetData[++i],penLoc.row=15&b,b=packetData[++i],penLoc.column=63&b,i},Cea708Stream.prototype.reset=function(i,service){var pts=this.getPts(i);return this.flushDisplayed(pts,service),this.initService(service.serviceNum,i)};var CHARACTER_TRANSLATION={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,304:174,305:176,306:189,307:191,308:8482,309:162,310:163,311:9834,312:224,313:160,314:232,315:226,316:234,317:238,318:244,319:251,544:193,545:201,546:211,547:218,548:220,549:252,550:8216,551:161,552:42,553:39,554:8212,555:169,556:8480,557:8226,558:8220,559:8221,560:192,561:194,562:199,563:200,564:202,565:203,566:235,567:206,568:207,569:239,570:212,571:217,572:249,573:219,574:171,575:187,800:195,801:227,802:205,803:204,804:236,805:210,806:242,807:213,808:245,809:123,810:125,811:92,812:94,813:95,814:124,815:126,816:196,817:228,818:214,819:246,820:223,821:165,822:164,823:9474,824:197,825:229,826:216,827:248,828:9484,829:9488,830:9492,831:9496},getCharFromCode=function getCharFromCode(code){return null===code?"":(code=CHARACTER_TRANSLATION[code]||code,String.fromCharCode(code))},BOTTOM_ROW=14,ROWS=[4352,4384,4608,4640,5376,5408,5632,5664,5888,5920,4096,4864,4896,5120,5152],createDisplayBuffer=function createDisplayBuffer(){for(var result=[],i=15;i--;)result.push("");return result},Cea608Stream=function Cea608Stream(field,dataChannel){Cea608Stream.prototype.init.call(this),this.field_=field||0,this.dataChannel_=dataChannel||0,this.name_="CC"+(1+(this.field_<<1|this.dataChannel_)),this.setConstants(),this.reset(),this.push=function(packet){var data,swap,char0,char1,text;if((data=32639&packet.ccData)!==this.lastControlCode_){if(4096==(61440&data)?this.lastControlCode_=data:data!==this.PADDING_&&(this.lastControlCode_=null),char0=data>>>8,char1=255&data,data!==this.PADDING_)if(data===this.RESUME_CAPTION_LOADING_)this.mode_="popOn";else if(data===this.END_OF_CAPTION_)this.mode_="popOn",this.clearFormatting(packet.pts),this.flushDisplayed(packet.pts),swap=this.displayed_,this.displayed_=this.nonDisplayed_,this.nonDisplayed_=swap,this.startPts_=packet.pts;else if(data===this.ROLL_UP_2_ROWS_)this.rollUpRows_=2,this.setRollUp(packet.pts);else if(data===this.ROLL_UP_3_ROWS_)this.rollUpRows_=3,this.setRollUp(packet.pts);else if(data===this.ROLL_UP_4_ROWS_)this.rollUpRows_=4,this.setRollUp(packet.pts);else if(data===this.CARRIAGE_RETURN_)this.clearFormatting(packet.pts),this.flushDisplayed(packet.pts),this.shiftRowsUp_(),this.startPts_=packet.pts;else if(data===this.BACKSPACE_)"popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1);else if(data===this.ERASE_DISPLAYED_MEMORY_)this.flushDisplayed(packet.pts),this.displayed_=createDisplayBuffer();else if(data===this.ERASE_NON_DISPLAYED_MEMORY_)this.nonDisplayed_=createDisplayBuffer();else if(data===this.RESUME_DIRECT_CAPTIONING_)"paintOn"!==this.mode_&&(this.flushDisplayed(packet.pts),this.displayed_=createDisplayBuffer()),this.mode_="paintOn",this.startPts_=packet.pts;else if(this.isSpecialCharacter(char0,char1))text=getCharFromCode((char0=(3&char0)<<8)|char1),this[this.mode_](packet.pts,text),this.column_++;else if(this.isExtCharacter(char0,char1))"popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1),text=getCharFromCode((char0=(3&char0)<<8)|char1),this[this.mode_](packet.pts,text),this.column_++;else if(this.isMidRowCode(char0,char1))this.clearFormatting(packet.pts),this[this.mode_](packet.pts," "),this.column_++,14==(14&char1)&&this.addFormatting(packet.pts,["i"]),1==(1&char1)&&this.addFormatting(packet.pts,["u"]);else if(this.isOffsetControlCode(char0,char1))this.column_+=3&char1;else if(this.isPAC(char0,char1)){var row=ROWS.indexOf(7968&data);"rollUp"===this.mode_&&(row-this.rollUpRows_+1<0&&(row=this.rollUpRows_-1),this.setRollUp(packet.pts,row)),row!==this.row_&&(this.clearFormatting(packet.pts),this.row_=row),1&char1&&-1===this.formatting_.indexOf("u")&&this.addFormatting(packet.pts,["u"]),16==(16&data)&&(this.column_=4*((14&data)>>1)),this.isColorPAC(char1)&&14==(14&char1)&&this.addFormatting(packet.pts,["i"])}else this.isNormalChar(char0)&&(0===char1&&(char1=null),text=getCharFromCode(char0),text+=getCharFromCode(char1),this[this.mode_](packet.pts,text),this.column_+=text.length)}else this.lastControlCode_=null}};Cea608Stream.prototype=new stream,Cea608Stream.prototype.flushDisplayed=function(pts){var content=this.displayed_.map((function(row,index){try{return row.trim()}catch(e){return this.trigger("log",{level:"warn",message:"Skipping a malformed 608 caption at index "+index+"."}),""}}),this).join("\n").replace(/^\n+|\n+$/g,"");content.length&&this.trigger("data",{startPts:this.startPts_,endPts:pts,text:content,stream:this.name_})},Cea608Stream.prototype.reset=function(){this.mode_="popOn",this.topRow_=0,this.startPts_=0,this.displayed_=createDisplayBuffer(),this.nonDisplayed_=createDisplayBuffer(),this.lastControlCode_=null,this.column_=0,this.row_=14,this.rollUpRows_=2,this.formatting_=[]},Cea608Stream.prototype.setConstants=function(){0===this.dataChannel_?(this.BASE_=16,this.EXT_=17,this.CONTROL_=(20|this.field_)<<8,this.OFFSET_=23):1===this.dataChannel_&&(this.BASE_=24,this.EXT_=25,this.CONTROL_=(28|this.field_)<<8,this.OFFSET_=31),this.PADDING_=0,this.RESUME_CAPTION_LOADING_=32|this.CONTROL_,this.END_OF_CAPTION_=47|this.CONTROL_,this.ROLL_UP_2_ROWS_=37|this.CONTROL_,this.ROLL_UP_3_ROWS_=38|this.CONTROL_,this.ROLL_UP_4_ROWS_=39|this.CONTROL_,this.CARRIAGE_RETURN_=45|this.CONTROL_,this.RESUME_DIRECT_CAPTIONING_=41|this.CONTROL_,this.BACKSPACE_=33|this.CONTROL_,this.ERASE_DISPLAYED_MEMORY_=44|this.CONTROL_,this.ERASE_NON_DISPLAYED_MEMORY_=46|this.CONTROL_},Cea608Stream.prototype.isSpecialCharacter=function(char0,char1){return char0===this.EXT_&&char1>=48&&char1<=63},Cea608Stream.prototype.isExtCharacter=function(char0,char1){return(char0===this.EXT_+1||char0===this.EXT_+2)&&char1>=32&&char1<=63},Cea608Stream.prototype.isMidRowCode=function(char0,char1){return char0===this.EXT_&&char1>=32&&char1<=47},Cea608Stream.prototype.isOffsetControlCode=function(char0,char1){return char0===this.OFFSET_&&char1>=33&&char1<=35},Cea608Stream.prototype.isPAC=function(char0,char1){return char0>=this.BASE_&&char0=64&&char1<=127},Cea608Stream.prototype.isColorPAC=function(char1){return char1>=64&&char1<=79||char1>=96&&char1<=127},Cea608Stream.prototype.isNormalChar=function(_char2){return _char2>=32&&_char2<=127},Cea608Stream.prototype.setRollUp=function(pts,newBaseRow){if("rollUp"!==this.mode_&&(this.row_=14,this.mode_="rollUp",this.flushDisplayed(pts),this.nonDisplayed_=createDisplayBuffer(),this.displayed_=createDisplayBuffer()),void 0!==newBaseRow&&newBaseRow!==this.row_)for(var i=0;i"}),"");this[this.mode_](pts,text)},Cea608Stream.prototype.clearFormatting=function(pts){if(this.formatting_.length){var text=this.formatting_.reverse().reduce((function(text,format){return text+""}),"");this.formatting_=[],this[this.mode_](pts,text)}},Cea608Stream.prototype.popOn=function(pts,text){var baseRow=this.nonDisplayed_[this.row_];baseRow+=text,this.nonDisplayed_[this.row_]=baseRow},Cea608Stream.prototype.rollUp=function(pts,text){var baseRow=this.displayed_[this.row_];baseRow+=text,this.displayed_[this.row_]=baseRow},Cea608Stream.prototype.shiftRowsUp_=function(){var i;for(i=0;ireference&&(direction=-1);Math.abs(reference-value)>RO_THRESH;)value+=direction*MAX_TS;return value},TimestampRolloverStream$1=function TimestampRolloverStream(type){var lastDTS,referenceDTS;TimestampRolloverStream.prototype.init.call(this),this.type_=type||"shared",this.push=function(data){"shared"!==this.type_&&data.type!==this.type_||(void 0===referenceDTS&&(referenceDTS=data.dts),data.dts=handleRollover$1(data.dts,referenceDTS),data.pts=handleRollover$1(data.pts,referenceDTS),lastDTS=data.dts,this.trigger("data",data))},this.flush=function(){referenceDTS=lastDTS,this.trigger("done")},this.endTimeline=function(){this.flush(),this.trigger("endedtimeline")},this.discontinuity=function(){referenceDTS=void 0,lastDTS=void 0},this.reset=function(){this.discontinuity(),this.trigger("reset")}};TimestampRolloverStream$1.prototype=new stream;var timestampRolloverStream_TimestampRolloverStream=TimestampRolloverStream$1,timestampRolloverStream_handleRollover=handleRollover$1,percentEncode$1=function percentEncode(bytes,start,end){var i,result="";for(i=start;i>>2;size*=4,size+=3&d[7],frame.timeStamp=size,void 0===tag.pts&&void 0===tag.dts&&(tag.pts=frame.timeStamp,tag.dts=frame.timeStamp),this.trigger("timestamp",frame)}tag.frames.push(frame),frameStart+=10,frameStart+=frameSize}while(frameStart>>4>1&&(offset+=packet[offset]+1),0===result.pid)result.type="pat",parsePsi(packet.subarray(offset),result),this.trigger("data",result);else if(result.pid===this.pmtPid)for(result.type="pmt",parsePsi(packet.subarray(offset),result),this.trigger("data",result);this.packetsWaitingForPmt.length;)this.processPes_.apply(this,this.packetsWaitingForPmt.shift());else void 0===this.programMapTable?this.packetsWaitingForPmt.push([packet,offset,result]):this.processPes_(packet,offset,result)},this.processPes_=function(packet,offset,result){result.pid===this.programMapTable.video?result.streamType=streamTypes.H264_STREAM_TYPE:result.pid===this.programMapTable.audio?result.streamType=streamTypes.ADTS_STREAM_TYPE:result.streamType=this.programMapTable["timed-metadata"][result.pid],result.type="pes",result.data=packet.subarray(offset),this.trigger("data",result)}}).prototype=new stream,_TransportParseStream.STREAM_TYPES={h264:27,adts:15},(_ElementaryStream=function ElementaryStream(){var self=this,segmentHadPmt=!1,video={data:[],size:0},audio={data:[],size:0},timedMetadata={data:[],size:0},programMapTable,parsePes=function parsePes(payload,pes){var ptsDtsFlags,startPrefix=payload[0]<<16|payload[1]<<8|payload[2];pes.data=new Uint8Array,1===startPrefix&&(pes.packetLength=6+(payload[4]<<8|payload[5]),pes.dataAlignmentIndicator=0!=(4&payload[6]),192&(ptsDtsFlags=payload[7])&&(pes.pts=(14&payload[9])<<27|(255&payload[10])<<20|(254&payload[11])<<12|(255&payload[12])<<5|(254&payload[13])>>>3,pes.pts*=4,pes.pts+=(6&payload[13])>>>1,pes.dts=pes.pts,64&ptsDtsFlags&&(pes.dts=(14&payload[14])<<27|(255&payload[15])<<20|(254&payload[16])<<12|(255&payload[17])<<5|(254&payload[18])>>>3,pes.dts*=4,pes.dts+=(6&payload[18])>>>1)),pes.data=payload.subarray(9+payload[8]))},flushStream=function flushStream(stream,type,forceFlush){var packetData=new Uint8Array(stream.size),event={type:type},i=0,offset=0,packetFlushable=!1,fragment;if(stream.data.length&&!(stream.size<9)){for(event.trackId=stream.data[0].pid,i=0;i>5,adtsFrameDuration=(sampleCount=1024*(1+(3&buffer[i+6])))*ONE_SECOND_IN_TS$2/ADTS_SAMPLING_FREQUENCIES$1[(60&buffer[i+2])>>>2],buffer.byteLength-i>>6&3),channelcount:(1&buffer[i+2])<<2|(192&buffer[i+3])>>>6,samplerate:ADTS_SAMPLING_FREQUENCIES$1[(60&buffer[i+2])>>>2],samplingfrequencyindex:(60&buffer[i+2])>>>2,samplesize:16,data:buffer.subarray(i+7+protectionSkipBytes,i+frameLength)}),frameNum++,i+=frameLength}else"number"!=typeof skip&&(skip=i),i++;"number"==typeof skip&&(this.skipWarn_(skip,i),skip=null),buffer=buffer.subarray(i)}},this.flush=function(){frameNum=0,this.trigger("done")},this.reset=function(){buffer=void 0,this.trigger("reset")},this.endTimeline=function(){buffer=void 0,this.trigger("endedtimeline")}}).prototype=new stream;var adts=_AdtsStream,ExpGolomb,expGolomb=ExpGolomb=function ExpGolomb(workingData){var workingBytesAvailable=workingData.byteLength,workingWord=0,workingBitsAvailable=0;this.length=function(){return 8*workingBytesAvailable},this.bitsAvailable=function(){return 8*workingBytesAvailable+workingBitsAvailable},this.loadWord=function(){var position=workingData.byteLength-workingBytesAvailable,workingBytes=new Uint8Array(4),availableBytes=Math.min(4,workingBytesAvailable);if(0===availableBytes)throw new Error("no bytes available");workingBytes.set(workingData.subarray(position,position+availableBytes)),workingWord=new DataView(workingBytes.buffer).getUint32(0),workingBitsAvailable=8*availableBytes,workingBytesAvailable-=availableBytes},this.skipBits=function(count){var skipBytes;workingBitsAvailable>count?(workingWord<<=count,workingBitsAvailable-=count):(count-=workingBitsAvailable,count-=8*(skipBytes=Math.floor(count/8)),workingBytesAvailable-=skipBytes,this.loadWord(),workingWord<<=count,workingBitsAvailable-=count)},this.readBits=function(size){var bits=Math.min(workingBitsAvailable,size),valu=workingWord>>>32-bits;return(workingBitsAvailable-=bits)>0?workingWord<<=bits:workingBytesAvailable>0&&this.loadWord(),(bits=size-bits)>0?valu<>>leadingZeroCount))return workingWord<<=leadingZeroCount,workingBitsAvailable-=leadingZeroCount,leadingZeroCount;return this.loadWord(),leadingZeroCount+this.skipLeadingZeros()},this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.readUnsignedExpGolomb=function(){var clz=this.skipLeadingZeros();return this.readBits(clz+1)-1},this.readExpGolomb=function(){var valu=this.readUnsignedExpGolomb();return 1&valu?1+valu>>>1:-1*(valu>>>1)},this.readBoolean=function(){return 1===this.readBits(1)},this.readUnsignedByte=function(){return this.readBits(8)},this.loadWord()},_H264Stream,_NalByteStream,PROFILES_WITH_OPTIONAL_SPS_DATA;(_NalByteStream=function NalByteStream(){var syncPoint=0,i,buffer;_NalByteStream.prototype.init.call(this),this.push=function(data){var swapBuffer;buffer?((swapBuffer=new Uint8Array(buffer.byteLength+data.data.byteLength)).set(buffer),swapBuffer.set(data.data,buffer.byteLength),buffer=swapBuffer):buffer=data.data;for(var len=buffer.byteLength;syncPoint3&&this.trigger("data",buffer.subarray(syncPoint+3)),buffer=null,syncPoint=0,this.trigger("done")},this.endTimeline=function(){this.flush(),this.trigger("endedtimeline")}}).prototype=new stream,PROFILES_WITH_OPTIONAL_SPS_DATA={100:!0,110:!0,122:!0,244:!0,44:!0,83:!0,86:!0,118:!0,128:!0,138:!0,139:!0,134:!0},(_H264Stream=function H264Stream(){var nalByteStream=new _NalByteStream,self,trackId,currentPts,currentDts,discardEmulationPreventionBytes,readSequenceParameterSet,skipScalingList;_H264Stream.prototype.init.call(this),self=this,this.push=function(packet){"video"===packet.type&&(trackId=packet.trackId,currentPts=packet.pts,currentDts=packet.dts,nalByteStream.push(packet))},nalByteStream.on("data",(function(data){var event={trackId:trackId,pts:currentPts,dts:currentDts,data:data,nalUnitTypeCode:31&data[0]};switch(event.nalUnitTypeCode){case 5:event.nalUnitType="slice_layer_without_partitioning_rbsp_idr";break;case 6:event.nalUnitType="sei_rbsp",event.escapedRBSP=discardEmulationPreventionBytes(data.subarray(1));break;case 7:event.nalUnitType="seq_parameter_set_rbsp",event.escapedRBSP=discardEmulationPreventionBytes(data.subarray(1)),event.config=readSequenceParameterSet(event.escapedRBSP);break;case 8:event.nalUnitType="pic_parameter_set_rbsp";break;case 9:event.nalUnitType="access_unit_delimiter_rbsp"}self.trigger("data",event)})),nalByteStream.on("done",(function(){self.trigger("done")})),nalByteStream.on("partialdone",(function(){self.trigger("partialdone")})),nalByteStream.on("reset",(function(){self.trigger("reset")})),nalByteStream.on("endedtimeline",(function(){self.trigger("endedtimeline")})),this.flush=function(){nalByteStream.flush()},this.partialFlush=function(){nalByteStream.partialFlush()},this.reset=function(){nalByteStream.reset()},this.endTimeline=function(){nalByteStream.endTimeline()},skipScalingList=function skipScalingList(count,expGolombDecoder){var lastScale=8,nextScale=8,j,deltaScale;for(j=0;j=0?returnSize:0,(16&header[byteIndex+5])>>4?returnSize+20:returnSize+10},getId3Offset=function getId3Offset(data,offset){return data.length-offset<10||data[offset]!=="I".charCodeAt(0)||data[offset+1]!=="D".charCodeAt(0)||data[offset+2]!=="3".charCodeAt(0)?offset:getId3Offset(data,offset+=parseId3TagSize(data,offset))},isLikelyAacData$1,parseSyncSafeInteger=function parseSyncSafeInteger(data){return data[0]<<21|data[1]<<14|data[2]<<7|data[3]},percentEncode=function percentEncode(bytes,start,end){var i,result="";for(i=start;i=offset+2&&255==(255&data[offset])&&240==(240&data[offset+1])&&16==(22&data[offset+1])},parseId3TagSize:parseId3TagSize,parseAdtsSize:function parseAdtsSize(header,byteIndex){var lowThree=(224&header[byteIndex+5])>>5,middle=header[byteIndex+4]<<3,highTwo;return 6144&header[byteIndex+3]|middle|lowThree},parseType:function parseType(header,byteIndex){return header[byteIndex]==="I".charCodeAt(0)&&header[byteIndex+1]==="D".charCodeAt(0)&&header[byteIndex+2]==="3".charCodeAt(0)?"timed-metadata":!0&header[byteIndex]&&240==(240&header[byteIndex+1])?"audio":null},parseSampleRate:function parseSampleRate(packet){for(var i=0;i+5>>2];i++}return null},parseAacTimestamp:function parseAacTimestamp(packet){var frameStart,frameSize,frame,frameHeader;frameStart=10,64&packet[5]&&(frameStart+=4,frameStart+=parseSyncSafeInteger(packet.subarray(10,14)));do{if((frameSize=parseSyncSafeInteger(packet.subarray(frameStart+4,frameStart+8)))<1)return null;if("PRIV"===(frameHeader=String.fromCharCode(packet[frameStart],packet[frameStart+1],packet[frameStart+2],packet[frameStart+3]))){frame=packet.subarray(frameStart+10,frameStart+frameSize+10);for(var i=0;i>>2;return size*=4,size+=3&d[7]}break}}frameStart+=10,frameStart+=frameSize}while(frameStart=3;)if(everything[byteIndex]!=="I".charCodeAt(0)||everything[byteIndex+1]!=="D".charCodeAt(0)||everything[byteIndex+2]!=="3".charCodeAt(0))if(255!=(255&everything[byteIndex])||240!=(240&everything[byteIndex+1]))byteIndex++;else{if(everything.length-byteIndex<7)break;if(byteIndex+(frameSize=utils.parseAdtsSize(everything,byteIndex))>everything.length)break;packet={type:"audio",data:everything.subarray(byteIndex,byteIndex+frameSize),pts:timeStamp,dts:timeStamp},this.trigger("data",packet),byteIndex+=frameSize}else{if(everything.length-byteIndex<10)break;if(byteIndex+(frameSize=utils.parseId3TagSize(everything,byteIndex))>everything.length)break;chunk={type:"timed-metadata",data:everything.subarray(byteIndex,byteIndex+frameSize)},this.trigger("data",chunk),byteIndex+=frameSize}bytesLeft=everything.length-byteIndex,everything=bytesLeft>0?everything.subarray(byteIndex):new Uint8Array},this.reset=function(){everything=new Uint8Array,this.trigger("reset")},this.endTimeline=function(){everything=new Uint8Array,this.trigger("endedtimeline")}}).prototype=new stream;var aac=_AacStream,AUDIO_PROPERTIES,audioProperties=["audioobjecttype","channelcount","samplerate","samplingfrequencyindex","samplesize"],VIDEO_PROPERTIES,videoProperties=["width","height","profileIdc","levelIdc","profileCompatibility","sarRatio"],H264Stream=h264.H264Stream,isLikelyAacData=utils.isLikelyAacData,ONE_SECOND_IN_TS$1=clock_ONE_SECOND_IN_TS$0,_VideoSegmentStream,_AudioSegmentStream,_Transmuxer,_CoalesceStream,retriggerForStream=function retriggerForStream(key,event){event.stream=key,this.trigger("log",event)},addPipelineLogRetriggers=function addPipelineLogRetriggers(transmuxer,pipeline){for(var keys=Object.keys(pipeline),i=0;i=-1e4&&dtsDistance<=45e3&&(!nearestGopObj||nearestDistance>dtsDistance)&&(nearestGopObj=currentGopObj,nearestDistance=dtsDistance));return nearestGopObj?nearestGopObj.gop:null},this.alignGopsAtStart_=function(gops){var alignIndex,gopIndex,align,gop,byteLength,nalCount,duration,alignedGops;for(byteLength=gops.byteLength,nalCount=gops.nalCount,duration=gops.duration,alignIndex=gopIndex=0;alignIndexalign.pts?alignIndex++:(gopIndex++,byteLength-=gop.byteLength,nalCount-=gop.nalCount,duration-=gop.duration);return 0===gopIndex?gops:gopIndex===gops.length?null:((alignedGops=gops.slice(gopIndex)).byteLength=byteLength,alignedGops.duration=duration,alignedGops.nalCount=nalCount,alignedGops.pts=alignedGops[0].pts,alignedGops.dts=alignedGops[0].dts,alignedGops)},this.alignGopsAtEnd_=function(gops){var alignIndex,gopIndex,align,gop,alignEndIndex,matchFound,trimIndex;for(alignIndex=gopsToAlignWith.length-1,gopIndex=gops.length-1,alignEndIndex=null,matchFound=!1;alignIndex>=0&&gopIndex>=0;){if(align=gopsToAlignWith[alignIndex],gop=gops[gopIndex],align.pts===gop.pts){matchFound=!0;break}align.pts>gop.pts?alignIndex--:(alignIndex===gopsToAlignWith.length-1&&(alignEndIndex=gopIndex),gopIndex--)}if(!matchFound&&null===alignEndIndex)return null;if(0===(trimIndex=matchFound?gopIndex:alignEndIndex))return gops;var alignedGops=gops.slice(trimIndex),metadata=alignedGops.reduce((function(total,gop){return total.byteLength+=gop.byteLength,total.duration+=gop.duration,total.nalCount+=gop.nalCount,total}),{byteLength:0,duration:0,nalCount:0});return alignedGops.byteLength=metadata.byteLength,alignedGops.duration=metadata.duration,alignedGops.nalCount=metadata.nalCount,alignedGops.pts=alignedGops[0].pts,alignedGops.dts=alignedGops[0].dts,alignedGops},this.alignGopsWith=function(newGopsToAlignWith){gopsToAlignWith=newGopsToAlignWith}}).prototype=new stream,(_CoalesceStream=function CoalesceStream(options,metadataStream){this.numberOfTracks=0,this.metadataStream=metadataStream,void 0!==(options=options||{}).remux?this.remuxTracks=!!options.remux:this.remuxTracks=!0,"boolean"==typeof options.keepOriginalTimestamps?this.keepOriginalTimestamps=options.keepOriginalTimestamps:this.keepOriginalTimestamps=!1,this.pendingTracks=[],this.videoTrack=null,this.pendingBoxes=[],this.pendingCaptions=[],this.pendingMetadata=[],this.pendingBytes=0,this.emittedTracks=0,_CoalesceStream.prototype.init.call(this),this.push=function(output){return output.text?this.pendingCaptions.push(output):output.frames?this.pendingMetadata.push(output):(this.pendingTracks.push(output.track),this.pendingBytes+=output.boxes.byteLength,"video"===output.track.type&&(this.videoTrack=output.track,this.pendingBoxes.push(output.boxes)),void("audio"===output.track.type&&(this.audioTrack=output.track,this.pendingBoxes.unshift(output.boxes))))}}).prototype=new stream,_CoalesceStream.prototype.flush=function(flushSource){var offset=0,event={captions:[],captionStreams:{},metadata:[],info:{}},caption,id3,initSegment,timelineStartPts=0,i;if(this.pendingTracks.length=this.numberOfTracks&&(this.trigger("done"),this.emittedTracks=0))}if(this.videoTrack?(timelineStartPts=this.videoTrack.timelineStartInfo.pts,videoProperties.forEach((function(prop){event.info[prop]=this.videoTrack[prop]}),this)):this.audioTrack&&(timelineStartPts=this.audioTrack.timelineStartInfo.pts,audioProperties.forEach((function(prop){event.info[prop]=this.audioTrack[prop]}),this)),this.videoTrack||this.audioTrack){for(1===this.pendingTracks.length?event.type=this.pendingTracks[0].type:event.type="combined",this.emittedTracks+=this.pendingTracks.length,initSegment=mp4Generator_initSegment(this.pendingTracks),event.initSegment=new Uint8Array(initSegment.byteLength),event.initSegment.set(initSegment),event.data=new Uint8Array(this.pendingBytes),i=0;i=this.numberOfTracks&&(this.trigger("done"),this.emittedTracks=0)},_CoalesceStream.prototype.setRemux=function(val){this.remuxTracks=val},(_Transmuxer=function Transmuxer(options){var self=this,hasFlushed=!0,videoTrack,audioTrack;_Transmuxer.prototype.init.call(this),options=options||{},this.baseMediaDecodeTime=options.baseMediaDecodeTime||0,this.transmuxPipeline_={},this.setupAacPipeline=function(){var pipeline={};this.transmuxPipeline_=pipeline,pipeline.type="aac",pipeline.metadataStream=new m2ts_1.MetadataStream,pipeline.aacStream=new aac,pipeline.audioTimestampRolloverStream=new m2ts_1.TimestampRolloverStream("audio"),pipeline.timedMetadataTimestampRolloverStream=new m2ts_1.TimestampRolloverStream("timed-metadata"),pipeline.adtsStream=new adts,pipeline.coalesceStream=new _CoalesceStream(options,pipeline.metadataStream),pipeline.headOfPipeline=pipeline.aacStream,pipeline.aacStream.pipe(pipeline.audioTimestampRolloverStream).pipe(pipeline.adtsStream),pipeline.aacStream.pipe(pipeline.timedMetadataTimestampRolloverStream).pipe(pipeline.metadataStream).pipe(pipeline.coalesceStream),pipeline.metadataStream.on("timestamp",(function(frame){pipeline.aacStream.setTimestamp(frame.timeStamp)})),pipeline.aacStream.on("data",(function(data){"timed-metadata"!==data.type&&"audio"!==data.type||pipeline.audioSegmentStream||(audioTrack=audioTrack||{timelineStartInfo:{baseMediaDecodeTime:self.baseMediaDecodeTime},codec:"adts",type:"audio"},pipeline.coalesceStream.numberOfTracks++,pipeline.audioSegmentStream=new _AudioSegmentStream(audioTrack,options),pipeline.audioSegmentStream.on("log",self.getLogTrigger_("audioSegmentStream")),pipeline.audioSegmentStream.on("timingInfo",self.trigger.bind(self,"audioTimingInfo")),pipeline.adtsStream.pipe(pipeline.audioSegmentStream).pipe(pipeline.coalesceStream),self.trigger("trackinfo",{hasAudio:!!audioTrack,hasVideo:!!videoTrack}))})),pipeline.coalesceStream.on("data",this.trigger.bind(this,"data")),pipeline.coalesceStream.on("done",this.trigger.bind(this,"done")),addPipelineLogRetriggers(this,pipeline)},this.setupTsPipeline=function(){var pipeline={};this.transmuxPipeline_=pipeline,pipeline.type="ts",pipeline.metadataStream=new m2ts_1.MetadataStream,pipeline.packetStream=new m2ts_1.TransportPacketStream,pipeline.parseStream=new m2ts_1.TransportParseStream,pipeline.elementaryStream=new m2ts_1.ElementaryStream,pipeline.timestampRolloverStream=new m2ts_1.TimestampRolloverStream,pipeline.adtsStream=new adts,pipeline.h264Stream=new H264Stream,pipeline.captionStream=new m2ts_1.CaptionStream(options),pipeline.coalesceStream=new _CoalesceStream(options,pipeline.metadataStream),pipeline.headOfPipeline=pipeline.packetStream,pipeline.packetStream.pipe(pipeline.parseStream).pipe(pipeline.elementaryStream).pipe(pipeline.timestampRolloverStream),pipeline.timestampRolloverStream.pipe(pipeline.h264Stream),pipeline.timestampRolloverStream.pipe(pipeline.adtsStream),pipeline.timestampRolloverStream.pipe(pipeline.metadataStream).pipe(pipeline.coalesceStream),pipeline.h264Stream.pipe(pipeline.captionStream).pipe(pipeline.coalesceStream),pipeline.elementaryStream.on("data",(function(data){var i;if("metadata"===data.type){for(i=data.tracks.length;i--;)videoTrack||"video"!==data.tracks[i].type?audioTrack||"audio"!==data.tracks[i].type||((audioTrack=data.tracks[i]).timelineStartInfo.baseMediaDecodeTime=self.baseMediaDecodeTime):(videoTrack=data.tracks[i]).timelineStartInfo.baseMediaDecodeTime=self.baseMediaDecodeTime;videoTrack&&!pipeline.videoSegmentStream&&(pipeline.coalesceStream.numberOfTracks++,pipeline.videoSegmentStream=new _VideoSegmentStream(videoTrack,options),pipeline.videoSegmentStream.on("log",self.getLogTrigger_("videoSegmentStream")),pipeline.videoSegmentStream.on("timelineStartInfo",(function(timelineStartInfo){audioTrack&&!options.keepOriginalTimestamps&&(audioTrack.timelineStartInfo=timelineStartInfo,pipeline.audioSegmentStream.setEarliestDts(timelineStartInfo.dts-self.baseMediaDecodeTime))})),pipeline.videoSegmentStream.on("processedGopsInfo",self.trigger.bind(self,"gopInfo")),pipeline.videoSegmentStream.on("segmentTimingInfo",self.trigger.bind(self,"videoSegmentTimingInfo")),pipeline.videoSegmentStream.on("baseMediaDecodeTime",(function(baseMediaDecodeTime){audioTrack&&pipeline.audioSegmentStream.setVideoBaseMediaDecodeTime(baseMediaDecodeTime)})),pipeline.videoSegmentStream.on("timingInfo",self.trigger.bind(self,"videoTimingInfo")),pipeline.h264Stream.pipe(pipeline.videoSegmentStream).pipe(pipeline.coalesceStream)),audioTrack&&!pipeline.audioSegmentStream&&(pipeline.coalesceStream.numberOfTracks++,pipeline.audioSegmentStream=new _AudioSegmentStream(audioTrack,options),pipeline.audioSegmentStream.on("log",self.getLogTrigger_("audioSegmentStream")),pipeline.audioSegmentStream.on("timingInfo",self.trigger.bind(self,"audioTimingInfo")),pipeline.audioSegmentStream.on("segmentTimingInfo",self.trigger.bind(self,"audioSegmentTimingInfo")),pipeline.adtsStream.pipe(pipeline.audioSegmentStream).pipe(pipeline.coalesceStream)),self.trigger("trackinfo",{hasAudio:!!audioTrack,hasVideo:!!videoTrack})}})),pipeline.coalesceStream.on("data",this.trigger.bind(this,"data")),pipeline.coalesceStream.on("id3Frame",(function(id3Frame){id3Frame.dispatchType=pipeline.metadataStream.dispatchType,self.trigger("id3Frame",id3Frame)})),pipeline.coalesceStream.on("caption",this.trigger.bind(this,"caption")),pipeline.coalesceStream.on("done",this.trigger.bind(this,"done")),addPipelineLogRetriggers(this,pipeline)},this.setBaseMediaDecodeTime=function(baseMediaDecodeTime){var pipeline=this.transmuxPipeline_;options.keepOriginalTimestamps||(this.baseMediaDecodeTime=baseMediaDecodeTime),audioTrack&&(audioTrack.timelineStartInfo.dts=void 0,audioTrack.timelineStartInfo.pts=void 0,trackDecodeInfo_clearDtsInfo(audioTrack),pipeline.audioTimestampRolloverStream&&pipeline.audioTimestampRolloverStream.discontinuity()),videoTrack&&(pipeline.videoSegmentStream&&(pipeline.videoSegmentStream.gopCache_=[]),videoTrack.timelineStartInfo.dts=void 0,videoTrack.timelineStartInfo.pts=void 0,trackDecodeInfo_clearDtsInfo(videoTrack),pipeline.captionStream.reset()),pipeline.timestampRolloverStream&&pipeline.timestampRolloverStream.discontinuity()},this.setAudioAppendStart=function(timestamp){audioTrack&&this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(timestamp)},this.setRemux=function(val){var pipeline=this.transmuxPipeline_;options.remux=val,pipeline&&pipeline.coalesceStream&&pipeline.coalesceStream.setRemux(val)},this.alignGopsWith=function(gopsToAlignWith){videoTrack&&this.transmuxPipeline_.videoSegmentStream&&this.transmuxPipeline_.videoSegmentStream.alignGopsWith(gopsToAlignWith)},this.getLogTrigger_=function(key){var self=this;return function(event){event.stream=key,self.trigger("log",event)}},this.push=function(data){if(hasFlushed){var isAac=isLikelyAacData(data);isAac&&"aac"!==this.transmuxPipeline_.type?this.setupAacPipeline():isAac||"ts"===this.transmuxPipeline_.type||this.setupTsPipeline(),hasFlushed=!1}this.transmuxPipeline_.headOfPipeline.push(data)},this.flush=function(){hasFlushed=!0,this.transmuxPipeline_.headOfPipeline.flush()},this.endTimeline=function(){this.transmuxPipeline_.headOfPipeline.endTimeline()},this.reset=function(){this.transmuxPipeline_.headOfPipeline&&this.transmuxPipeline_.headOfPipeline.reset()},this.resetCaptions=function(){this.transmuxPipeline_.captionStream&&this.transmuxPipeline_.captionStream.reset()}}).prototype=new stream;var transmuxer={Transmuxer:_Transmuxer,VideoSegmentStream:_VideoSegmentStream,AudioSegmentStream:_AudioSegmentStream,AUDIO_PROPERTIES:audioProperties,VIDEO_PROPERTIES:videoProperties,generateSegmentTimingInfo:generateSegmentTimingInfo},toUnsigned$3=function toUnsigned(value){return value>>>0},toHexString$1,bin_toUnsigned=toUnsigned$3,bin_toHexString,parseType$1,parseType_1=function parseType(buffer){var result="";return result+=String.fromCharCode(buffer[0]),result+=String.fromCharCode(buffer[1]),result+=String.fromCharCode(buffer[2]),result+=String.fromCharCode(buffer[3])},toUnsigned$2=toUnsigned$3,findBox,findBox_1=function findBox(data,path){var results=[],i,size,type,end,subresults;if(!path.length)return null;for(i=0;i1?i+size:data.byteLength,type===path[0]&&(1===path.length?results.push(data.subarray(i+8,end)):(subresults=findBox(data.subarray(i+8,end),path.slice(1))).length&&(results=results.concat(subresults))),i=end;return results},toUnsigned$1=toUnsigned$3,getUint64$1=numbers.getUint64,tfdt,parseTfdt=function tfdt(data){var result={version:data[0],flags:new Uint8Array(data.subarray(1,4))};return 1===result.version?result.baseMediaDecodeTime=getUint64$1(data.subarray(4)):result.baseMediaDecodeTime=toUnsigned$1(data[4]<<24|data[5]<<16|data[6]<<8|data[7]),result},parseSampleFlags,parseSampleFlags_1=function parseSampleFlags(flags){return{isLeading:(12&flags[0])>>>2,dependsOn:3&flags[0],isDependedOn:(192&flags[1])>>>6,hasRedundancy:(48&flags[1])>>>4,paddingValue:(14&flags[1])>>>1,isNonSyncSample:1&flags[1],degradationPriority:flags[2]<<8|flags[3]}},trun,parseTrun=function trun(data){var result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),samples:[]},view=new DataView(data.buffer,data.byteOffset,data.byteLength),dataOffsetPresent=1&result.flags[2],firstSampleFlagsPresent=4&result.flags[2],sampleDurationPresent=1&result.flags[1],sampleSizePresent=2&result.flags[1],sampleFlagsPresent=4&result.flags[1],sampleCompositionTimeOffsetPresent=8&result.flags[1],sampleCount=view.getUint32(4),offset=8,sample;for(dataOffsetPresent&&(result.dataOffset=view.getInt32(offset),offset+=4),firstSampleFlagsPresent&&sampleCount&&(sample={flags:parseSampleFlags_1(data.subarray(offset,offset+4))},offset+=4,sampleDurationPresent&&(sample.duration=view.getUint32(offset),offset+=4),sampleSizePresent&&(sample.size=view.getUint32(offset),offset+=4),sampleCompositionTimeOffsetPresent&&(1===result.version?sample.compositionTimeOffset=view.getInt32(offset):sample.compositionTimeOffset=view.getUint32(offset),offset+=4),result.samples.push(sample),sampleCount--);sampleCount--;)sample={},sampleDurationPresent&&(sample.duration=view.getUint32(offset),offset+=4),sampleSizePresent&&(sample.size=view.getUint32(offset),offset+=4),sampleFlagsPresent&&(sample.flags=parseSampleFlags_1(data.subarray(offset,offset+4)),offset+=4),sampleCompositionTimeOffsetPresent&&(1===result.version?sample.compositionTimeOffset=view.getInt32(offset):sample.compositionTimeOffset=view.getUint32(offset),offset+=4),result.samples.push(sample);return result},tfhd,parseTfhd=function tfhd(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),trackId:view.getUint32(4)},baseDataOffsetPresent=1&result.flags[2],sampleDescriptionIndexPresent=2&result.flags[2],defaultSampleDurationPresent=8&result.flags[2],defaultSampleSizePresent=16&result.flags[2],defaultSampleFlagsPresent=32&result.flags[2],durationIsEmpty=65536&result.flags[0],defaultBaseIsMoof=131072&result.flags[0],i;return i=8,baseDataOffsetPresent&&(i+=4,result.baseDataOffset=view.getUint32(12),i+=4),sampleDescriptionIndexPresent&&(result.sampleDescriptionIndex=view.getUint32(i),i+=4),defaultSampleDurationPresent&&(result.defaultSampleDuration=view.getUint32(i),i+=4),defaultSampleSizePresent&&(result.defaultSampleSize=view.getUint32(i),i+=4),defaultSampleFlagsPresent&&(result.defaultSampleFlags=view.getUint32(i)),durationIsEmpty&&(result.durationIsEmpty=!0),!baseDataOffsetPresent&&defaultBaseIsMoof&&(result.baseDataOffsetIsMoof=!0),result},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},win,window_1=win="undefined"!=typeof window?window:void 0!==commonjsGlobal?commonjsGlobal:"undefined"!=typeof self?self:{},discardEmulationPreventionBytes=captionPacketParser_discardEmulationPreventionBytes,CaptionStream=captionStream.CaptionStream,mapToSample=function mapToSample(offset,samples){for(var approximateOffset=offset,i=0;i0?parseTfdt(tfdt[0]).baseMediaDecodeTime:0,truns=findBox_1(traf,["trun"]),samples,result;videoTrackId===trackId&&truns.length>0&&(samples=parseSamples(truns,baseMediaDecodeTime,headerInfo),result=findSeiNals(mdat,samples,trackId),captionNals[trackId]||(captionNals[trackId]={seiNals:[],logs:[]}),captionNals[trackId].seiNals=captionNals[trackId].seiNals.concat(result.seiNals),captionNals[trackId].logs=captionNals[trackId].logs.concat(result.logs))})),captionNals},parseEmbeddedCaptions=function parseEmbeddedCaptions(segment,trackId,timescale){var captionNals;if(null===trackId)return null;var trackNals=(captionNals=parseCaptionNals(segment,trackId))[trackId]||{};return{seiNals:trackNals.seiNals,logs:trackNals.logs,timescale:timescale}},CaptionParser,captionParser=function CaptionParser(){var isInitialized=!1,captionStream,segmentCache,trackId,timescale,parsedCaptions,parsingPartial;this.isInitialized=function(){return isInitialized},this.init=function(options){captionStream=new CaptionStream,isInitialized=!0,parsingPartial=!!options&&options.isPartial,captionStream.on("data",(function(event){event.startTime=event.startPts/timescale,event.endTime=event.endPts/timescale,parsedCaptions.captions.push(event),parsedCaptions.captionStreams[event.stream]=!0})),captionStream.on("log",(function(log){parsedCaptions.logs.push(log)}))},this.isNewInit=function(videoTrackIds,timescales){return!(videoTrackIds&&0===videoTrackIds.length||timescales&&"object"==typeof timescales&&0===Object.keys(timescales).length)&&(trackId!==videoTrackIds[0]||timescale!==timescales[trackId])},this.parse=function(segment,videoTrackIds,timescales){var parsedData;if(!this.isInitialized())return null;if(!videoTrackIds||!timescales)return null;if(this.isNewInit(videoTrackIds,timescales))trackId=videoTrackIds[0],timescale=timescales[trackId];else if(null===trackId||!timescale)return segmentCache.push(segment),null;for(;segmentCache.length>0;){var cachedSegment=segmentCache.shift();this.parse(cachedSegment,videoTrackIds,timescales)}return(parsedData=parseEmbeddedCaptions(segment,trackId,timescale))&&parsedData.logs&&(parsedCaptions.logs=parsedCaptions.logs.concat(parsedData.logs)),null!==parsedData&&parsedData.seiNals?(this.pushNals(parsedData.seiNals),this.flushStream(),parsedCaptions):parsedCaptions.logs.length?{logs:parsedCaptions.logs,captions:[],captionStreams:[]}:null},this.pushNals=function(nals){if(!this.isInitialized()||!nals||0===nals.length)return null;nals.forEach((function(nal){captionStream.push(nal)}))},this.flushStream=function(){if(!this.isInitialized())return null;parsingPartial?captionStream.partialFlush():captionStream.flush()},this.clearParsedCaptions=function(){parsedCaptions.captions=[],parsedCaptions.captionStreams={},parsedCaptions.logs=[]},this.resetCaptionStream=function(){if(!this.isInitialized())return null;captionStream.reset()},this.clearAllCaptions=function(){this.clearParsedCaptions(),this.resetCaptionStream()},this.reset=function(){segmentCache=[],trackId=null,timescale=null,parsedCaptions?this.clearParsedCaptions():parsedCaptions={captions:[],captionStreams:{},logs:[]},this.resetCaptionStream()},this.reset()},toUnsigned=toUnsigned$3,toHexString=function toHexString(value){return("00"+value.toString(16)).slice(-2)},getUint64=numbers.getUint64,timescale,startTime,compositionStartTime,getVideoTrackIds,getTracks,getTimescaleFromMediaHeader;timescale=function timescale(init){var result={},traks;return findBox_1(init,["moov","trak"]).reduce((function(result,trak){var tkhd,version,index,id,mdhd;return(tkhd=findBox_1(trak,["tkhd"])[0])?(version=tkhd[0],id=toUnsigned(tkhd[index=0===version?12:20]<<24|tkhd[index+1]<<16|tkhd[index+2]<<8|tkhd[index+3]),(mdhd=findBox_1(trak,["mdia","mdhd"])[0])?(index=0===(version=mdhd[0])?12:20,result[id]=toUnsigned(mdhd[index]<<24|mdhd[index+1]<<16|mdhd[index+2]<<8|mdhd[index+3]),result):null):null}),result)},startTime=function startTime(timescale,fragment){var trafs,lowestTime=(trafs=findBox_1(fragment,["moof","traf"])).reduce((function(acc,traf){var tfhd=findBox_1(traf,["tfhd"])[0],id=toUnsigned(tfhd[4]<<24|tfhd[5]<<16|tfhd[6]<<8|tfhd[7]),scale=timescale[id]||9e4,tfdt=findBox_1(traf,["tfdt"])[0],dv=new DataView(tfdt.buffer,tfdt.byteOffset,tfdt.byteLength),baseTime,seconds;return"bigint"==typeof(baseTime=1===tfdt[0]?getUint64(tfdt.subarray(4,12)):dv.getUint32(4))?seconds=baseTime/window_1.BigInt(scale):"number"!=typeof baseTime||isNaN(baseTime)||(seconds=baseTime/scale),seconds11?(track.codec+=".",track.codec+=toHexString(codecConfig[9]),track.codec+=toHexString(codecConfig[10]),track.codec+=toHexString(codecConfig[11])):track.codec="avc1.4d400d"):/^mp4[a,v]$/i.test(track.codec)?(codecConfig=codecBox.subarray(28),"esds"===(codecConfigType=parseType_1(codecConfig.subarray(4,8)))&&codecConfig.length>20&&0!==codecConfig[19]?(track.codec+="."+toHexString(codecConfig[19]),track.codec+="."+toHexString(codecConfig[20]>>>2&63).replace(/^0/,"")):track.codec="mp4a.40.2"):track.codec=track.codec.toLowerCase())}var mdhd=findBox_1(trak,["mdia","mdhd"])[0];mdhd&&(track.timescale=getTimescaleFromMediaHeader(mdhd)),tracks.push(track)})),tracks};var probe$2_findBox=findBox_1,probe$2_parseType=parseType_1,probe$2_timescale=timescale,probe$2_startTime=startTime,probe$2_compositionStartTime=compositionStartTime,probe$2_videoTrackIds=getVideoTrackIds,probe$2_tracks=getTracks,probe$2_getTimescaleFromMediaHeader=getTimescaleFromMediaHeader=function getTimescaleFromMediaHeader(mdhd){var version,index=0===mdhd[0]?12:20;return toUnsigned(mdhd[index]<<24|mdhd[index+1]<<16|mdhd[index+2]<<8|mdhd[index+3])},parsePid=function parsePid(packet){var pid=31&packet[1];return pid<<=8,pid|=packet[2]},parsePayloadUnitStartIndicator=function parsePayloadUnitStartIndicator(packet){return!!(64&packet[1])},parseAdaptionField=function parseAdaptionField(packet){var offset=0;return(48&packet[3])>>>4>1&&(offset+=packet[4]+1),offset},parseType,parsePat,parsePmt,parsePesType,parsePesTime=function parsePesTime(packet){var pusi;if(!parsePayloadUnitStartIndicator(packet))return null;var offset=4+parseAdaptionField(packet);if(offset>=packet.byteLength)return null;var pes=null,ptsDtsFlags;return 192&(ptsDtsFlags=packet[offset+7])&&((pes={}).pts=(14&packet[offset+9])<<27|(255&packet[offset+10])<<20|(254&packet[offset+11])<<12|(255&packet[offset+12])<<5|(254&packet[offset+13])>>>3,pes.pts*=4,pes.pts+=(6&packet[offset+13])>>>1,pes.dts=pes.pts,64&ptsDtsFlags&&(pes.dts=(14&packet[offset+14])<<27|(255&packet[offset+15])<<20|(254&packet[offset+16])<<12|(255&packet[offset+17])<<5|(254&packet[offset+18])>>>3,pes.dts*=4,pes.dts+=(6&packet[offset+18])>>>1)),pes},parseNalUnitType=function parseNalUnitType(type){switch(type){case 5:return"slice_layer_without_partitioning_rbsp_idr";case 6:return"sei_rbsp";case 7:return"seq_parameter_set_rbsp";case 8:return"pic_parameter_set_rbsp";case 9:return"access_unit_delimiter_rbsp";default:return null}},videoPacketContainsKeyFrame,probe$1={parseType:function parseType(packet,pmtPid){var pid=parsePid(packet);return 0===pid?"pat":pid===pmtPid?"pmt":pmtPid?"pes":null},parsePat:function parsePat(packet){var pusi=parsePayloadUnitStartIndicator(packet),offset=4+parseAdaptionField(packet);return pusi&&(offset+=packet[offset]+1),(31&packet[offset+10])<<8|packet[offset+11]},parsePmt:function parsePmt(packet){var programMapTable={},pusi=parsePayloadUnitStartIndicator(packet),payloadOffset=4+parseAdaptionField(packet);if(pusi&&(payloadOffset+=packet[payloadOffset]+1),1&packet[payloadOffset+5]){var sectionLength,tableEnd,programInfoLength;tableEnd=3+(sectionLength=(15&packet[payloadOffset+1])<<8|packet[payloadOffset+2])-4;for(var offset=12+(programInfoLength=(15&packet[payloadOffset+10])<<8|packet[payloadOffset+11]);offset3&&"slice_layer_without_partitioning_rbsp_idr"===(nalType=parseNalUnitType(31&frameBuffer[frameSyncPoint+3]))&&(foundKeyFrame=!0),foundKeyFrame}},handleRollover=timestampRolloverStream_handleRollover,probe={};probe.ts=probe$1,probe.aac=utils;var ONE_SECOND_IN_TS=clock_ONE_SECOND_IN_TS$0,MP2T_PACKET_LENGTH=188,SYNC_BYTE=71,parsePsi_=function parsePsi_(bytes,pmt){for(var startIndex=0,endIndex=188,packet,type;endIndex=0;)if(71!==bytes[startIndex]||71!==bytes[endIndex]&&endIndex!==bytes.byteLength)startIndex--,endIndex--;else{switch(packet=bytes.subarray(startIndex,endIndex),type=probe.ts.parseType(packet,pmt.pid)){case"pes":pesType=probe.ts.parsePesType(packet,pmt.table),pusi=probe.ts.parsePayloadUnitStartIndicator(packet),"audio"===pesType&&pusi&&(parsed=probe.ts.parsePesTime(packet))&&(parsed.type="audio",result.audio.push(parsed),endLoop=!0)}if(endLoop)break;startIndex-=188,endIndex-=188}},parseVideoPes_=function parseVideoPes_(bytes,pmt,result){for(var startIndex=0,endIndex=188,packet,type,pesType,pusi,parsed,frame,i,pes,endLoop=!1,currentFrame={data:[],size:0};endIndex=0;)if(71!==bytes[startIndex]||71!==bytes[endIndex])startIndex--,endIndex--;else{switch(packet=bytes.subarray(startIndex,endIndex),type=probe.ts.parseType(packet,pmt.pid)){case"pes":pesType=probe.ts.parsePesType(packet,pmt.table),pusi=probe.ts.parsePayloadUnitStartIndicator(packet),"video"===pesType&&pusi&&(parsed=probe.ts.parsePesTime(packet))&&(parsed.type="video",result.video.push(parsed),endLoop=!0)}if(endLoop)break;startIndex-=188,endIndex-=188}},adjustTimestamp_=function adjustTimestamp_(segmentInfo,baseTimestamp){if(segmentInfo.audio&&segmentInfo.audio.length){var audioBaseTimestamp=baseTimestamp;(void 0===audioBaseTimestamp||isNaN(audioBaseTimestamp))&&(audioBaseTimestamp=segmentInfo.audio[0].dts),segmentInfo.audio.forEach((function(info){info.dts=handleRollover(info.dts,audioBaseTimestamp),info.pts=handleRollover(info.pts,audioBaseTimestamp),info.dtsTime=info.dts/ONE_SECOND_IN_TS,info.ptsTime=info.pts/ONE_SECOND_IN_TS}))}if(segmentInfo.video&&segmentInfo.video.length){var videoBaseTimestamp=baseTimestamp;if((void 0===videoBaseTimestamp||isNaN(videoBaseTimestamp))&&(videoBaseTimestamp=segmentInfo.video[0].dts),segmentInfo.video.forEach((function(info){info.dts=handleRollover(info.dts,videoBaseTimestamp),info.pts=handleRollover(info.pts,videoBaseTimestamp),info.dtsTime=info.dts/ONE_SECOND_IN_TS,info.ptsTime=info.pts/ONE_SECOND_IN_TS})),segmentInfo.firstKeyFrame){var frame=segmentInfo.firstKeyFrame;frame.dts=handleRollover(frame.dts,videoBaseTimestamp),frame.pts=handleRollover(frame.pts,videoBaseTimestamp),frame.dtsTime=frame.dts/ONE_SECOND_IN_TS,frame.ptsTime=frame.pts/ONE_SECOND_IN_TS}}},inspectAac_=function inspectAac_(bytes){for(var endLoop=!1,audioCount=0,sampleRate=null,timestamp=null,frameSize=0,byteIndex=0,packet;bytes.length-byteIndex>=3;){var type;switch(probe.aac.parseType(bytes,byteIndex)){case"timed-metadata":if(bytes.length-byteIndex<10){endLoop=!0;break}if((frameSize=probe.aac.parseId3TagSize(bytes,byteIndex))>bytes.length){endLoop=!0;break}null===timestamp&&(packet=bytes.subarray(byteIndex,byteIndex+frameSize),timestamp=probe.aac.parseAacTimestamp(packet)),byteIndex+=frameSize;break;case"audio":if(bytes.length-byteIndex<7){endLoop=!0;break}if((frameSize=probe.aac.parseAdtsSize(bytes,byteIndex))>bytes.length){endLoop=!0;break}null===sampleRate&&(packet=bytes.subarray(byteIndex,byteIndex+frameSize),sampleRate=probe.aac.parseSampleRate(packet)),audioCount++,byteIndex+=frameSize;break;default:byteIndex++}if(endLoop)return null}if(null===sampleRate||null===timestamp)return null;var audioTimescale=ONE_SECOND_IN_TS/sampleRate,result;return{audio:[{type:"audio",dts:timestamp,pts:timestamp},{type:"audio",dts:timestamp+1024*audioCount*audioTimescale,pts:timestamp+1024*audioCount*audioTimescale}]}},inspectTs_=function inspectTs_(bytes){var pmt={pid:null,table:null},result={};for(var pid in parsePsi_(bytes,pmt),pmt.table){var type;if(pmt.table.hasOwnProperty(pid))switch(pmt.table[pid]){case streamTypes.H264_STREAM_TYPE:result.video=[],parseVideoPes_(bytes,pmt,result),0===result.video.length&&delete result.video;break;case streamTypes.ADTS_STREAM_TYPE:result.audio=[],parseAudioPes_(bytes,pmt,result),0===result.audio.length&&delete result.audio}}return result},inspect,tsInspector_inspect=function inspect(bytes,baseTimestamp){var isAacData,result;return(result=probe.aac.isLikelyAacData(bytes)?inspectAac_(bytes):inspectTs_(bytes))&&(result.audio||result.video)?(adjustTimestamp_(result,baseTimestamp),result):null},tsInspector_parseAudioPes_=parseAudioPes_,wireTransmuxerEvents=function wireTransmuxerEvents(self,transmuxer){transmuxer.on("data",(function(segment){var initArray=segment.initSegment;segment.initSegment={data:initArray.buffer,byteOffset:initArray.byteOffset,byteLength:initArray.byteLength};var typedArray=segment.data;segment.data=typedArray.buffer,self.postMessage({action:"data",segment:segment,byteOffset:typedArray.byteOffset,byteLength:typedArray.byteLength},[segment.data])})),transmuxer.on("done",(function(data){self.postMessage({action:"done"})})),transmuxer.on("gopInfo",(function(gopInfo){self.postMessage({action:"gopInfo",gopInfo:gopInfo})})),transmuxer.on("videoSegmentTimingInfo",(function(timingInfo){var videoSegmentTimingInfo={start:{decode:clock_videoTsToSeconds$0(timingInfo.start.dts),presentation:clock_videoTsToSeconds$0(timingInfo.start.pts)},end:{decode:clock_videoTsToSeconds$0(timingInfo.end.dts),presentation:clock_videoTsToSeconds$0(timingInfo.end.pts)},baseMediaDecodeTime:clock_videoTsToSeconds$0(timingInfo.baseMediaDecodeTime)};timingInfo.prependedContentDuration&&(videoSegmentTimingInfo.prependedContentDuration=clock_videoTsToSeconds$0(timingInfo.prependedContentDuration)),self.postMessage({action:"videoSegmentTimingInfo",videoSegmentTimingInfo:videoSegmentTimingInfo})})),transmuxer.on("audioSegmentTimingInfo",(function(timingInfo){var audioSegmentTimingInfo={start:{decode:clock_videoTsToSeconds$0(timingInfo.start.dts),presentation:clock_videoTsToSeconds$0(timingInfo.start.pts)},end:{decode:clock_videoTsToSeconds$0(timingInfo.end.dts),presentation:clock_videoTsToSeconds$0(timingInfo.end.pts)},baseMediaDecodeTime:clock_videoTsToSeconds$0(timingInfo.baseMediaDecodeTime)};timingInfo.prependedContentDuration&&(audioSegmentTimingInfo.prependedContentDuration=clock_videoTsToSeconds$0(timingInfo.prependedContentDuration)),self.postMessage({action:"audioSegmentTimingInfo",audioSegmentTimingInfo:audioSegmentTimingInfo})})),transmuxer.on("id3Frame",(function(id3Frame){self.postMessage({action:"id3Frame",id3Frame:id3Frame})})),transmuxer.on("caption",(function(caption){self.postMessage({action:"caption",caption:caption})})),transmuxer.on("trackinfo",(function(trackInfo){self.postMessage({action:"trackinfo",trackInfo:trackInfo})})),transmuxer.on("audioTimingInfo",(function(audioTimingInfo){self.postMessage({action:"audioTimingInfo",audioTimingInfo:{start:clock_videoTsToSeconds$0(audioTimingInfo.start),end:clock_videoTsToSeconds$0(audioTimingInfo.end)}})})),transmuxer.on("videoTimingInfo",(function(videoTimingInfo){self.postMessage({action:"videoTimingInfo",videoTimingInfo:{start:clock_videoTsToSeconds$0(videoTimingInfo.start),end:clock_videoTsToSeconds$0(videoTimingInfo.end)}})})),transmuxer.on("log",(function(log){self.postMessage({action:"log",log:log})}))},MessageHandlers=function(){function MessageHandlers(self,options){this.options=options||{},this.self=self,this.init()}var _proto=MessageHandlers.prototype;return _proto.init=function init(){this.transmuxer&&this.transmuxer.dispose(),this.transmuxer=new transmuxer.Transmuxer(this.options),wireTransmuxerEvents(this.self,this.transmuxer)},_proto.pushMp4Captions=function pushMp4Captions(data){this.captionParser||(this.captionParser=new captionParser,this.captionParser.init());var segment=new Uint8Array(data.data,data.byteOffset,data.byteLength),parsed=this.captionParser.parse(segment,data.trackIds,data.timescales);this.self.postMessage({action:"mp4Captions",captions:parsed&&parsed.captions||[],logs:parsed&&parsed.logs||[],data:segment.buffer},[segment.buffer])},_proto.probeMp4StartTime=function probeMp4StartTime(_ref){var timescales=_ref.timescales,data=_ref.data,startTime=probe$2_startTime(timescales,data);this.self.postMessage({action:"probeMp4StartTime",startTime:startTime,data:data},[data.buffer])},_proto.probeMp4Tracks=function probeMp4Tracks(_ref2){var data=_ref2.data,tracks=probe$2_tracks(data);this.self.postMessage({action:"probeMp4Tracks",tracks:tracks,data:data},[data.buffer])},_proto.probeTs=function probeTs(_ref3){var data=_ref3.data,baseStartTime=_ref3.baseStartTime,tsStartTime="number"!=typeof baseStartTime||isNaN(baseStartTime)?void 0:baseStartTime*clock_ONE_SECOND_IN_TS$0,timeInfo=tsInspector_inspect(data,tsStartTime),result=null;timeInfo&&((result={hasVideo:timeInfo.video&&2===timeInfo.video.length||!1,hasAudio:timeInfo.audio&&2===timeInfo.audio.length||!1}).hasVideo&&(result.videoStart=timeInfo.video[0].ptsTime),result.hasAudio&&(result.audioStart=timeInfo.audio[0].ptsTime)),this.self.postMessage({action:"probeTs",result:result,data:data},[data.buffer])},_proto.clearAllMp4Captions=function clearAllMp4Captions(){this.captionParser&&this.captionParser.clearAllCaptions()},_proto.clearParsedMp4Captions=function clearParsedMp4Captions(){this.captionParser&&this.captionParser.clearParsedCaptions()},_proto.push=function push(data){var segment=new Uint8Array(data.data,data.byteOffset,data.byteLength);this.transmuxer.push(segment)},_proto.reset=function reset(){this.transmuxer.reset()},_proto.setTimestampOffset=function setTimestampOffset(data){var timestampOffset=data.timestampOffset||0;this.transmuxer.setBaseMediaDecodeTime(Math.round(clock_secondsToVideoTs$0(timestampOffset)))},_proto.setAudioAppendStart=function setAudioAppendStart(data){this.transmuxer.setAudioAppendStart(Math.ceil(clock_secondsToVideoTs$0(data.appendStart)))},_proto.setRemux=function setRemux(data){this.transmuxer.setRemux(data.remux)},_proto.flush=function flush(data){this.transmuxer.flush(),self.postMessage({action:"done",type:"transmuxed"})},_proto.endTimeline=function endTimeline(){this.transmuxer.endTimeline(),self.postMessage({action:"endedtimeline",type:"transmuxed"})},_proto.alignGopsWith=function alignGopsWith(data){this.transmuxer.alignGopsWith(data.gopsToAlignWith.slice())},MessageHandlers}();self.onmessage=function(event){"init"===event.data.action&&event.data.options?this.messageHandlers=new MessageHandlers(self,event.data.options):(this.messageHandlers||(this.messageHandlers=new MessageHandlers(self)),event.data&&event.data.action&&"init"!==event.data.action&&this.messageHandlers[event.data.action]&&this.messageHandlers[event.data.action](event.data))}})))),handleData_=function handleData_(event,transmuxedData,callback){var _event$data$segment=event.data.segment,type=_event$data$segment.type,initSegment=_event$data$segment.initSegment,captions=_event$data$segment.captions,captionStreams=_event$data$segment.captionStreams,metadata=_event$data$segment.metadata,videoFrameDtsTime=_event$data$segment.videoFrameDtsTime,videoFramePtsTime=_event$data$segment.videoFramePtsTime;transmuxedData.buffer.push({captions:captions,captionStreams:captionStreams,metadata:metadata});var boxes=event.data.segment.boxes||{data:event.data.segment.data},result={type:type,data:new Uint8Array(boxes.data,boxes.data.byteOffset,boxes.data.byteLength),initSegment:new Uint8Array(initSegment.data,initSegment.byteOffset,initSegment.byteLength)};void 0!==videoFrameDtsTime&&(result.videoFrameDtsTime=videoFrameDtsTime),void 0!==videoFramePtsTime&&(result.videoFramePtsTime=videoFramePtsTime),callback(result)},handleDone_=function handleDone_(_ref){var transmuxedData=_ref.transmuxedData,callback=_ref.callback;transmuxedData.buffer=[],callback(transmuxedData)},handleGopInfo_=function handleGopInfo_(event,transmuxedData){transmuxedData.gopInfo=event.data.gopInfo},processTransmux=function processTransmux(options){var transmuxer=options.transmuxer,bytes=options.bytes,audioAppendStart=options.audioAppendStart,gopsToAlignWith=options.gopsToAlignWith,remux=options.remux,onData=options.onData,onTrackInfo=options.onTrackInfo,onAudioTimingInfo=options.onAudioTimingInfo,onVideoTimingInfo=options.onVideoTimingInfo,onVideoSegmentTimingInfo=options.onVideoSegmentTimingInfo,onAudioSegmentTimingInfo=options.onAudioSegmentTimingInfo,onId3=options.onId3,onCaptions=options.onCaptions,onDone=options.onDone,onEndedTimeline=options.onEndedTimeline,onTransmuxerLog=options.onTransmuxerLog,isEndOfTimeline=options.isEndOfTimeline,transmuxedData={buffer:[]},waitForEndedTimelineEvent=isEndOfTimeline,handleMessage=function handleMessage(event){transmuxer.currentTransmux===options&&("data"===event.data.action&&handleData_(event,transmuxedData,onData),"trackinfo"===event.data.action&&onTrackInfo(event.data.trackInfo),"gopInfo"===event.data.action&&handleGopInfo_(event,transmuxedData),"audioTimingInfo"===event.data.action&&onAudioTimingInfo(event.data.audioTimingInfo),"videoTimingInfo"===event.data.action&&onVideoTimingInfo(event.data.videoTimingInfo),"videoSegmentTimingInfo"===event.data.action&&onVideoSegmentTimingInfo(event.data.videoSegmentTimingInfo),"audioSegmentTimingInfo"===event.data.action&&onAudioSegmentTimingInfo(event.data.audioSegmentTimingInfo),"id3Frame"===event.data.action&&onId3([event.data.id3Frame],event.data.id3Frame.dispatchType),"caption"===event.data.action&&onCaptions(event.data.caption),"endedtimeline"===event.data.action&&(waitForEndedTimelineEvent=!1,onEndedTimeline()),"log"===event.data.action&&onTransmuxerLog(event.data.log),"transmuxed"===event.data.type&&(waitForEndedTimelineEvent||(transmuxer.onmessage=null,handleDone_({transmuxedData:transmuxedData,callback:onDone}),dequeue(transmuxer))))};if(transmuxer.onmessage=handleMessage,audioAppendStart&&transmuxer.postMessage({action:"setAudioAppendStart",appendStart:audioAppendStart}),Array.isArray(gopsToAlignWith)&&transmuxer.postMessage({action:"alignGopsWith",gopsToAlignWith:gopsToAlignWith}),void 0!==remux&&transmuxer.postMessage({action:"setRemux",remux:remux}),bytes.byteLength){var buffer=bytes instanceof ArrayBuffer?bytes:bytes.buffer,byteOffset=bytes instanceof ArrayBuffer?0:bytes.byteOffset;transmuxer.postMessage({action:"push",data:buffer,byteOffset:byteOffset,byteLength:bytes.byteLength},[buffer])}isEndOfTimeline&&transmuxer.postMessage({action:"endTimeline"}),transmuxer.postMessage({action:"flush"})},dequeue=function dequeue(transmuxer){transmuxer.currentTransmux=null,transmuxer.transmuxQueue.length&&(transmuxer.currentTransmux=transmuxer.transmuxQueue.shift(),"function"==typeof transmuxer.currentTransmux?transmuxer.currentTransmux():processTransmux(transmuxer.currentTransmux))},processAction=function processAction(transmuxer,action){transmuxer.postMessage({action:action}),dequeue(transmuxer)},enqueueAction=function enqueueAction(action,transmuxer){if(!transmuxer.currentTransmux)return transmuxer.currentTransmux=action,void processAction(transmuxer,action);transmuxer.transmuxQueue.push(processAction.bind(null,transmuxer,action))},reset,endTimeline,transmux=function transmux(options){if(!options.transmuxer.currentTransmux)return options.transmuxer.currentTransmux=options,void processTransmux(options);options.transmuxer.transmuxQueue.push(options)},createTransmuxer,segmentTransmuxer_reset=function reset(transmuxer){enqueueAction("reset",transmuxer)},segmentTransmuxer_endTimeline=function endTimeline(transmuxer){enqueueAction("endTimeline",transmuxer)},segmentTransmuxer_transmux=transmux,segmentTransmuxer_createTransmuxer=function createTransmuxer(options){var transmuxer=new TransmuxWorker;transmuxer.currentTransmux=null,transmuxer.transmuxQueue=[];var term=transmuxer.terminate;return transmuxer.terminate=function(){return transmuxer.currentTransmux=null,transmuxer.transmuxQueue.length=0,term.call(transmuxer)},transmuxer.postMessage({action:"init",options:options}),transmuxer},workerCallback=function workerCallback(options){var transmuxer=options.transmuxer,endAction=options.endAction||options.action,callback=options.callback,message=_extends_1({},options,{endAction:null,transmuxer:null,callback:null}),listenForEndEvent=function listenForEndEvent(event){event.data.action===endAction&&(transmuxer.removeEventListener("message",listenForEndEvent),event.data.data&&(event.data.data=new Uint8Array(event.data.data,options.byteOffset||0,options.byteLength||event.data.data.byteLength),options.data&&(options.data=event.data.data)),callback(event.data))};if(transmuxer.addEventListener("message",listenForEndEvent),options.data){var isArrayBuffer=options.data instanceof ArrayBuffer;message.byteOffset=isArrayBuffer?0:options.data.byteOffset,message.byteLength=options.data.byteLength;var transfers=[isArrayBuffer?options.data:options.data.buffer];transmuxer.postMessage(message,transfers)}else transmuxer.postMessage(message)},REQUEST_ERRORS_FAILURE=2,REQUEST_ERRORS_TIMEOUT=-101,REQUEST_ERRORS_ABORTED=-102,abortAll=function abortAll(activeXhrs){activeXhrs.forEach((function(xhr){xhr.abort()}))},getRequestStats=function getRequestStats(request){return{bandwidth:request.bandwidth,bytesReceived:request.bytesReceived||0,roundTripTime:request.roundTripTime||0}},getProgressStats=function getProgressStats(progressEvent){var request=progressEvent.target,roundTripTime,stats={bandwidth:1/0,bytesReceived:0,roundTripTime:Date.now()-request.requestTime||0};return stats.bytesReceived=progressEvent.loaded,stats.bandwidth=Math.floor(stats.bytesReceived/stats.roundTripTime*8*1e3),stats},handleErrors=function handleErrors(error,request){return request.timedout?{status:request.status,message:"HLS request timed-out at URL: "+request.uri,code:REQUEST_ERRORS_TIMEOUT,xhr:request}:request.aborted?{status:request.status,message:"HLS request aborted at URL: "+request.uri,code:REQUEST_ERRORS_ABORTED,xhr:request}:error?{status:request.status,message:"HLS request errored at URL: "+request.uri,code:REQUEST_ERRORS_FAILURE,xhr:request}:"arraybuffer"===request.responseType&&0===request.response.byteLength?{status:request.status,message:"Empty HLS response at URL: "+request.uri,code:REQUEST_ERRORS_FAILURE,xhr:request}:null},handleKeyResponse=function handleKeyResponse(segment,objects,finishProcessingFn){return function(error,request){var response=request.response,errorObj=handleErrors(error,request);if(errorObj)return finishProcessingFn(errorObj,segment);if(16!==response.byteLength)return finishProcessingFn({status:request.status,message:"Invalid HLS key at URL: "+request.uri,code:REQUEST_ERRORS_FAILURE,xhr:request},segment);for(var view=new DataView(response),bytes=new Uint32Array([view.getUint32(0),view.getUint32(4),view.getUint32(8),view.getUint32(12)]),i=0;i1)return logFn$1("multiple "+mediaType+" codecs found as attributes: "+codecs[mediaType].join(", ")+". Setting playlist codecs to null so that we wait for mux.js to probe segments for real codecs."),void(codecs[mediaType]=null);codecs[mediaType]=codecs[mediaType][0]})),codecs},codecCount=function codecCount(codecObj){var count=0;return codecObj.audio&&count++,codecObj.video&&count++,count},codecsForPlaylist=function codecsForPlaylist(master,media){var mediaAttributes=media.attributes||{},codecInfo=unwrapCodecList(getCodecs(media)||[]);if(isMaat(master,media)&&!codecInfo.audio&&!isMuxed(master,media)){var defaultCodecs=unwrapCodecList(codecsFromDefault(master,mediaAttributes.AUDIO)||[]);defaultCodecs.audio&&(codecInfo.audio=defaultCodecs.audio)}return codecInfo},logFn=logger("PlaylistSelector"),representationToString=function representationToString(representation){if(representation&&representation.playlist){var playlist=representation.playlist;return JSON.stringify({id:playlist.id,bandwidth:representation.bandwidth,width:representation.width,height:representation.height,codecs:playlist.attributes&&playlist.attributes.CODECS||""})}},safeGetComputedStyle=function safeGetComputedStyle(el,property){if(!el)return"";var result=window.getComputedStyle(el);return result?result[property]:""},stableSort=function stableSort(array,sortFn){var newArray=array.slice();array.sort((function(left,right){var cmp=sortFn(left,right);return 0===cmp?newArray.indexOf(left)-newArray.indexOf(right):cmp}))},comparePlaylistBandwidth=function comparePlaylistBandwidth(left,right){var leftBandwidth,rightBandwidth;return left.attributes.BANDWIDTH&&(leftBandwidth=left.attributes.BANDWIDTH),leftBandwidth=leftBandwidth||window.Number.MAX_VALUE,right.attributes.BANDWIDTH&&(rightBandwidth=right.attributes.BANDWIDTH),leftBandwidth-(rightBandwidth=rightBandwidth||window.Number.MAX_VALUE)},comparePlaylistResolution=function comparePlaylistResolution(left,right){var leftWidth,rightWidth;return left.attributes.RESOLUTION&&left.attributes.RESOLUTION.width&&(leftWidth=left.attributes.RESOLUTION.width),leftWidth=leftWidth||window.Number.MAX_VALUE,right.attributes.RESOLUTION&&right.attributes.RESOLUTION.width&&(rightWidth=right.attributes.RESOLUTION.width),leftWidth===(rightWidth=rightWidth||window.Number.MAX_VALUE)&&left.attributes.BANDWIDTH&&right.attributes.BANDWIDTH?left.attributes.BANDWIDTH-right.attributes.BANDWIDTH:leftWidth-rightWidth},simpleSelector=function simpleSelector(master,playerBandwidth,playerWidth,playerHeight,limitRenditionByPlayerDimensions,masterPlaylistController){if(master){var options={bandwidth:playerBandwidth,width:playerWidth,height:playerHeight,limitRenditionByPlayerDimensions:limitRenditionByPlayerDimensions},playlists=master.playlists;Playlist.isAudioOnly(master)&&(playlists=masterPlaylistController.getAudioTrackPlaylists_(),options.audioOnly=!0);var sortedPlaylistReps=playlists.map((function(playlist){var bandwidth,width=playlist.attributes&&playlist.attributes.RESOLUTION&&playlist.attributes.RESOLUTION.width,height=playlist.attributes&&playlist.attributes.RESOLUTION&&playlist.attributes.RESOLUTION.height;return{bandwidth:bandwidth=(bandwidth=playlist.attributes&&playlist.attributes.BANDWIDTH)||window.Number.MAX_VALUE,width:width,height:height,playlist:playlist}}));stableSort(sortedPlaylistReps,(function(left,right){return left.bandwidth-right.bandwidth}));var enabledPlaylistReps=(sortedPlaylistReps=sortedPlaylistReps.filter((function(rep){return!Playlist.isIncompatible(rep.playlist)}))).filter((function(rep){return Playlist.isEnabled(rep.playlist)}));enabledPlaylistReps.length||(enabledPlaylistReps=sortedPlaylistReps.filter((function(rep){return!Playlist.isDisabled(rep.playlist)})));var bandwidthPlaylistReps=enabledPlaylistReps.filter((function(rep){return rep.bandwidth*Config.BANDWIDTH_VARIANCEplayerWidth||rep.height>playerHeight}))).filter((function(rep){return rep.width===resolutionPlusOneList[0].width&&rep.height===resolutionPlusOneList[0].height})),highestRemainingBandwidthRep=resolutionPlusOneSmallest[resolutionPlusOneSmallest.length-1],resolutionPlusOneRep=resolutionPlusOneSmallest.filter((function(rep){return rep.bandwidth===highestRemainingBandwidthRep.bandwidth}))[0]),masterPlaylistController.experimentalLeastPixelDiffSelector){var leastPixelDiffList=haveResolution.map((function(rep){return rep.pixelDiff=Math.abs(rep.width-playerWidth)+Math.abs(rep.height-playerHeight),rep}));stableSort(leastPixelDiffList,(function(left,right){return left.pixelDiff===right.pixelDiff?right.bandwidth-left.bandwidth:left.pixelDiff-right.pixelDiff})),leastPixelDiffRep=leastPixelDiffList[0]}var chosenRep=leastPixelDiffRep||resolutionPlusOneRep||resolutionBestRep||bandwidthBestRep||enabledPlaylistReps[0]||sortedPlaylistReps[0];if(chosenRep&&chosenRep.playlist){var _type="sortedPlaylistReps";return leastPixelDiffRep?_type="leastPixelDiffRep":resolutionPlusOneRep?_type="resolutionPlusOneRep":resolutionBestRep?_type="resolutionBestRep":bandwidthBestRep?_type="bandwidthBestRep":enabledPlaylistReps[0]&&(_type="enabledPlaylistReps"),logFn("choosing "+representationToString(chosenRep)+" using "+_type+" with options",options),chosenRep.playlist}return logFn("could not choose a playlist with options",options),null}},lastBandwidthSelector=function lastBandwidthSelector(){var pixelRatio=this.useDevicePixelRatio&&window.devicePixelRatio||1;return simpleSelector(this.playlists.master,this.systemBandwidth,parseInt(safeGetComputedStyle(this.tech_.el(),"width"),10)*pixelRatio,parseInt(safeGetComputedStyle(this.tech_.el(),"height"),10)*pixelRatio,this.limitRenditionByPlayerDimensions,this.masterPlaylistController_)},movingAverageBandwidthSelector=function movingAverageBandwidthSelector(decay){var average=-1,lastSystemBandwidth=-1;if(decay<0||decay>1)throw new Error("Moving average bandwidth decay must be between 0 and 1.");return function(){var pixelRatio=this.useDevicePixelRatio&&window.devicePixelRatio||1;return average<0&&(average=this.systemBandwidth,lastSystemBandwidth=this.systemBandwidth),this.systemBandwidth>0&&this.systemBandwidth!==lastSystemBandwidth&&(average=decay*this.systemBandwidth+(1-decay)*average,lastSystemBandwidth=this.systemBandwidth),simpleSelector(this.playlists.master,average,parseInt(safeGetComputedStyle(this.tech_.el(),"width"),10)*pixelRatio,parseInt(safeGetComputedStyle(this.tech_.el(),"height"),10)*pixelRatio,this.limitRenditionByPlayerDimensions,this.masterPlaylistController_)}},minRebufferMaxBandwidthSelector=function minRebufferMaxBandwidthSelector(settings){var master=settings.master,currentTime=settings.currentTime,bandwidth=settings.bandwidth,duration=settings.duration,segmentDuration=settings.segmentDuration,timeUntilRebuffer=settings.timeUntilRebuffer,currentTimeline=settings.currentTimeline,syncController=settings.syncController,compatiblePlaylists=master.playlists.filter((function(playlist){return!Playlist.isIncompatible(playlist)})),enabledPlaylists=compatiblePlaylists.filter(Playlist.isEnabled);enabledPlaylists.length||(enabledPlaylists=compatiblePlaylists.filter((function(playlist){return!Playlist.isDisabled(playlist)})));var bandwidthPlaylists,rebufferingEstimates=enabledPlaylists.filter(Playlist.hasAttribute.bind(null,"BANDWIDTH")).map((function(playlist){var syncPoint,numRequests=syncController.getSyncPoint(playlist,duration,currentTimeline,currentTime)?1:2,requestTimeEstimate,rebufferingImpact;return{playlist:playlist,rebufferingImpact:Playlist.estimateSegmentRequestTime(segmentDuration,bandwidth,playlist)*numRequests-timeUntilRebuffer}})),noRebufferingPlaylists=rebufferingEstimates.filter((function(estimate){return estimate.rebufferingImpact<=0}));return stableSort(noRebufferingPlaylists,(function(a,b){return comparePlaylistBandwidth(b.playlist,a.playlist)})),noRebufferingPlaylists.length?noRebufferingPlaylists[0]:(stableSort(rebufferingEstimates,(function(a,b){return a.rebufferingImpact-b.rebufferingImpact})),rebufferingEstimates[0]||null)},lowestBitrateCompatibleVariantSelector=function lowestBitrateCompatibleVariantSelector(){var _this=this,playlists=this.playlists.master.playlists.filter(Playlist.isEnabled),playlistsWithVideo;return stableSort(playlists,(function(a,b){return comparePlaylistBandwidth(a,b)})),playlists.filter((function(playlist){return!!codecsForPlaylist(_this.playlists.master,playlist).video}))[0]||null},concatSegments=function concatSegments(segmentObj){var offset=0,tempBuffer;return segmentObj.bytes&&(tempBuffer=new Uint8Array(segmentObj.bytes),segmentObj.segments.forEach((function(segment){tempBuffer.set(segment,offset),offset+=segment.byteLength}))),tempBuffer},createCaptionsTrackIfNotExists=function createCaptionsTrackIfNotExists(inbandTextTracks,tech,captionStream){if(!inbandTextTracks[captionStream]){tech.trigger({type:"usage",name:"vhs-608"}),tech.trigger({type:"usage",name:"hls-608"});var instreamId=captionStream;/^cc708_/.test(captionStream)&&(instreamId="SERVICE"+captionStream.split("_")[1]);var track=tech.textTracks().getTrackById(instreamId);if(track)inbandTextTracks[captionStream]=track;else{var captionServices,label=captionStream,language=captionStream,def=!1,captionService=(tech.options_.vhs&&tech.options_.vhs.captionServices||{})[instreamId];captionService&&(label=captionService.label,language=captionService.language,def=captionService.default),inbandTextTracks[captionStream]=tech.addRemoteTextTrack({kind:"captions",id:instreamId,default:def,label:label,language:language},!1).track}}},addCaptionData=function addCaptionData(_ref){var inbandTextTracks=_ref.inbandTextTracks,captionArray=_ref.captionArray,timestampOffset=_ref.timestampOffset;if(captionArray){var Cue=window.WebKitDataCue||window.VTTCue;captionArray.forEach((function(caption){var track=caption.stream;inbandTextTracks[track].addCue(new Cue(caption.startTime+timestampOffset,caption.endTime+timestampOffset,caption.text))}))}},deprecateOldCue=function deprecateOldCue(cue){Object.defineProperties(cue.frame,{id:{get:function get(){return videojs.log.warn("cue.frame.id is deprecated. Use cue.value.key instead."),cue.value.key}},value:{get:function get(){return videojs.log.warn("cue.frame.value is deprecated. Use cue.value.data instead."),cue.value.data}},privateData:{get:function get(){return videojs.log.warn("cue.frame.privateData is deprecated. Use cue.value.data instead."),cue.value.data}}})},addMetadata=function addMetadata(_ref2){var inbandTextTracks=_ref2.inbandTextTracks,metadataArray=_ref2.metadataArray,timestampOffset=_ref2.timestampOffset,videoDuration=_ref2.videoDuration;if(metadataArray){var Cue=window.WebKitDataCue||window.VTTCue,metadataTrack=inbandTextTracks.metadataTrack_;if(metadataTrack&&(metadataArray.forEach((function(metadata){var time=metadata.cueTime+timestampOffset;!("number"!=typeof time||window.isNaN(time)||time<0)&&time<1/0&&metadata.frames.forEach((function(frame){var cue=new Cue(time,time,frame.value||frame.url||frame.data||"");cue.frame=frame,cue.value=frame,deprecateOldCue(cue),metadataTrack.addCue(cue)}))})),metadataTrack.cues&&metadataTrack.cues.length)){for(var cues=metadataTrack.cues,cuesArray=[],i=0;i=start&&cue.endTime<=end&&track.removeCue(cue)},removeDuplicateCuesFromTrack=function removeDuplicateCuesFromTrack(track){var cues=track.cues;if(cues)for(var i=0;i1&&duplicates.push(cues[j]);duplicates.length&&duplicates.forEach((function(dupe){return track.removeCue(dupe)}))}},gopsSafeToAlignWith=function gopsSafeToAlignWith(buffer,currentTime,mapping){if(null==currentTime||!buffer.length)return[];var currentTimePts=Math.ceil((currentTime-mapping+3)*clock_1),i;for(i=0;icurrentTimePts);i++);return buffer.slice(i)},updateGopBuffer=function updateGopBuffer(buffer,gops,replace){if(!gops.length)return buffer;if(replace)return gops.slice();for(var start=gops[0].pts,i=0;i=start);i++);return buffer.slice(0,i).concat(gops)},removeGopBuffer=function removeGopBuffer(buffer,start,end,mapping){for(var startPts=Math.ceil((start-mapping)*clock_1),endPts=Math.ceil((end-mapping)*clock_1),updatedBuffer=buffer.slice(),i=buffer.length;i--&&!(buffer[i].pts<=endPts););if(-1===i)return updatedBuffer;for(var j=i+1;j--&&!(buffer[j].pts<=startPts););return j=Math.max(j,0),updatedBuffer.splice(j,i-j+1),updatedBuffer},shallowEqual=function shallowEqual(a,b){if(!a&&!b||!a&&b||a&&!b)return!1;if(a===b)return!0;var akeys=Object.keys(a).sort(),bkeys=Object.keys(b).sort();if(akeys.length!==bkeys.length)return!1;for(var i=0;itargetTime))return i}return 0===timelineSegments.length?0:timelineSegments[timelineSegments.length-1]},MIN_BACK_BUFFER=1,CHECK_BUFFER_DELAY=500,finite=function finite(num){return"number"==typeof num&&isFinite(num)},MIN_SEGMENT_DURATION_TO_SAVE_STATS=1/60,illegalMediaSwitch=function illegalMediaSwitch(loaderType,startingMedia,trackInfo){return"main"===loaderType&&startingMedia&&trackInfo?trackInfo.hasAudio||trackInfo.hasVideo?startingMedia.hasVideo&&!trackInfo.hasVideo?"Only audio found in segment when we expected video. We can't switch to audio only from a stream that had video. To get rid of this message, please add codec information to the manifest.":!startingMedia.hasVideo&&trackInfo.hasVideo?"Video found in segment when we expected only audio. We can't switch to a stream with video from an audio only stream. To get rid of this message, please add codec information to the manifest.":null:"Neither audio nor video found in segment.":null},safeBackBufferTrimTime=function safeBackBufferTrimTime(seekable,currentTime,targetDuration){var trimTime=currentTime-Config.BACK_BUFFER_LENGTH;seekable.length&&(trimTime=Math.max(trimTime,seekable.start(0)));var maxTrimTime=currentTime-targetDuration;return Math.min(maxTrimTime,trimTime)},segmentInfoString=function segmentInfoString(segmentInfo){var startOfSegment=segmentInfo.startOfSegment,duration=segmentInfo.duration,segment=segmentInfo.segment,part=segmentInfo.part,_segmentInfo$playlist=segmentInfo.playlist,seq=_segmentInfo$playlist.mediaSequence,id=_segmentInfo$playlist.id,_segmentInfo$playlist2=_segmentInfo$playlist.segments,segments=void 0===_segmentInfo$playlist2?[]:_segmentInfo$playlist2,index=segmentInfo.mediaIndex,partIndex=segmentInfo.partIndex,timeline=segmentInfo.timeline,segmentLen=segments.length-1,selection="mediaIndex/partIndex increment";segmentInfo.getMediaInfoForTime?selection="getMediaInfoForTime ("+segmentInfo.getMediaInfoForTime+")":segmentInfo.isSyncRequest&&(selection="getSyncSegmentCandidate (isSyncRequest)"),segmentInfo.independent&&(selection+=" with independent "+segmentInfo.independent);var hasPartIndex="number"==typeof partIndex,name=segmentInfo.segment.uri?"segment":"pre-segment",zeroBasedPartCount=hasPartIndex?getKnownPartCount({preloadSegment:segment})-1:0;return name+" ["+(seq+index)+"/"+(seq+segmentLen)+"]"+(hasPartIndex?" part ["+partIndex+"/"+zeroBasedPartCount+"]":"")+" segment start/end ["+segment.start+" => "+segment.end+"]"+(hasPartIndex?" part start/end ["+part.start+" => "+part.end+"]":"")+" startOfSegment ["+startOfSegment+"] duration ["+duration+"] timeline ["+timeline+"] selected by ["+selection+"] playlist ["+id+"]"},timingInfoPropertyForMedia=function timingInfoPropertyForMedia(mediaType){return mediaType+"TimingInfo"},timestampOffsetForSegment=function timestampOffsetForSegment(_ref){var segmentTimeline=_ref.segmentTimeline,currentTimeline=_ref.currentTimeline,startOfSegment=_ref.startOfSegment,buffered=_ref.buffered,overrideCheck;return _ref.overrideCheck||segmentTimeline!==currentTimeline?segmentTimelinemaxDuration&&(maxDuration=duration)}})),"bigint"==typeof maxDuration&&maxDurationmaxDuration+1/30},getTroublesomeSegmentDurationMessage=function getTroublesomeSegmentDurationMessage(segmentInfo,sourceType){if("hls"!==sourceType)return null;var segmentDuration=mediaDuration({audioTimingInfo:segmentInfo.audioTimingInfo,videoTimingInfo:segmentInfo.videoTimingInfo});if(!segmentDuration)return null;var targetDuration=segmentInfo.playlist.targetDuration,isSegmentWayTooLong=segmentTooLong({segmentDuration:segmentDuration,maxDuration:2*targetDuration}),isSegmentSlightlyTooLong=segmentTooLong({segmentDuration:segmentDuration,maxDuration:targetDuration}),segmentTooLongMessage="Segment with index "+segmentInfo.mediaIndex+" from playlist "+segmentInfo.playlist.id+" has a duration of "+segmentDuration+" when the reported duration is "+segmentInfo.duration+" and the target duration is "+targetDuration+". For HLS content, a duration in excess of the target duration may result in playback issues. See the HLS specification section on EXT-X-TARGETDURATION for more details: https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.3.1";return isSegmentWayTooLong||isSegmentSlightlyTooLong?{severity:isSegmentWayTooLong?"warn":"info",message:segmentTooLongMessage}:null},SegmentLoader=function(_videojs$EventTarget){function SegmentLoader(settings,options){var _this;if(_this=_videojs$EventTarget.call(this)||this,!settings)throw new TypeError("Initialization settings are required");if("function"!=typeof settings.currentTime)throw new TypeError("No currentTime getter specified");if(!settings.mediaSource)throw new TypeError("No MediaSource specified");return _this.bandwidth=settings.bandwidth,_this.throughput={rate:0,count:0},_this.roundTrip=NaN,_this.resetStats_(),_this.mediaIndex=null,_this.partIndex=null,_this.hasPlayed_=settings.hasPlayed,_this.currentTime_=settings.currentTime,_this.seekable_=settings.seekable,_this.seeking_=settings.seeking,_this.duration_=settings.duration,_this.mediaSource_=settings.mediaSource,_this.vhs_=settings.vhs,_this.loaderType_=settings.loaderType,_this.currentMediaInfo_=void 0,_this.startingMediaInfo_=void 0,_this.segmentMetadataTrack_=settings.segmentMetadataTrack,_this.goalBufferLength_=settings.goalBufferLength,_this.sourceType_=settings.sourceType,_this.sourceUpdater_=settings.sourceUpdater,_this.inbandTextTracks_=settings.inbandTextTracks,_this.state_="INIT",_this.timelineChangeController_=settings.timelineChangeController,_this.shouldSaveSegmentTimingInfo_=!0,_this.parse708captions_=settings.parse708captions,_this.useDtsForTimestampOffset_=settings.useDtsForTimestampOffset,_this.captionServices_=settings.captionServices,_this.experimentalExactManifestTimings=settings.experimentalExactManifestTimings,_this.checkBufferTimeout_=null,_this.error_=void 0,_this.currentTimeline_=-1,_this.pendingSegment_=null,_this.xhrOptions_=null,_this.pendingSegments_=[],_this.audioDisabled_=!1,_this.isPendingTimestampOffset_=!1,_this.gopBuffer_=[],_this.timeMapping_=0,_this.safeAppend_=videojs.browser.IE_VERSION>=11,_this.appendInitSegment_={audio:!0,video:!0},_this.playlistOfLastInitSegment_={audio:null,video:null},_this.callQueue_=[],_this.loadQueue_=[],_this.metadataQueue_={id3:[],caption:[]},_this.waitingOnRemove_=!1,_this.quotaExceededErrorRetryTimeout_=null,_this.activeInitSegmentId_=null,_this.initSegments_={},_this.cacheEncryptionKeys_=settings.cacheEncryptionKeys,_this.keyCache_={},_this.decrypter_=settings.decrypter,_this.syncController_=settings.syncController,_this.syncPoint_={segmentIndex:0,time:0},_this.transmuxer_=_this.createTransmuxer_(),_this.triggerSyncInfoUpdate_=function(){return _this.trigger("syncinfoupdate")},_this.syncController_.on("syncinfoupdate",_this.triggerSyncInfoUpdate_),_this.mediaSource_.addEventListener("sourceopen",(function(){_this.isEndOfStream_()||(_this.ended_=!1)})),_this.fetchAtBuffer_=!1,_this.logger_=logger("SegmentLoader["+_this.loaderType_+"]"),Object.defineProperty(assertThisInitialized(_this),"state",{get:function get(){return this.state_},set:function set(newState){newState!==this.state_&&(this.logger_(this.state_+" -> "+newState),this.state_=newState,this.trigger("statechange"))}}),_this.sourceUpdater_.on("ready",(function(){_this.hasEnoughInfoToAppend_()&&_this.processCallQueue_()})),"main"===_this.loaderType_&&_this.timelineChangeController_.on("pendingtimelinechange",(function(){_this.hasEnoughInfoToAppend_()&&_this.processCallQueue_()})),"audio"===_this.loaderType_&&_this.timelineChangeController_.on("timelinechange",(function(){_this.hasEnoughInfoToLoad_()&&_this.processLoadQueue_(),_this.hasEnoughInfoToAppend_()&&_this.processCallQueue_()})),_this}inheritsLoose(SegmentLoader,_videojs$EventTarget);var _proto=SegmentLoader.prototype;return _proto.createTransmuxer_=function createTransmuxer_(){return segmentTransmuxer_createTransmuxer({remux:!1,alignGopsAtEnd:this.safeAppend_,keepOriginalTimestamps:!0,parse708captions:this.parse708captions_,captionServices:this.captionServices_})},_proto.resetStats_=function resetStats_(){this.mediaBytesTransferred=0,this.mediaRequests=0,this.mediaRequestsAborted=0,this.mediaRequestsTimedout=0,this.mediaRequestsErrored=0,this.mediaTransferDuration=0,this.mediaSecondsLoaded=0,this.mediaAppends=0},_proto.dispose=function dispose(){this.trigger("dispose"),this.state="DISPOSED",this.pause(),this.abort_(),this.transmuxer_&&this.transmuxer_.terminate(),this.resetStats_(),this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.syncController_&&this.triggerSyncInfoUpdate_&&this.syncController_.off("syncinfoupdate",this.triggerSyncInfoUpdate_),this.off()},_proto.setAudio=function setAudio(enable){this.audioDisabled_=!enable,enable?this.appendInitSegment_.audio=!0:this.sourceUpdater_.removeAudio(0,this.duration_())},_proto.abort=function abort(){"WAITING"===this.state?(this.abort_(),this.state="READY",this.paused()||this.monitorBuffer_()):this.pendingSegment_&&(this.pendingSegment_=null)},_proto.abort_=function abort_(){this.pendingSegment_&&this.pendingSegment_.abortRequests&&this.pendingSegment_.abortRequests(),this.pendingSegment_=null,this.callQueue_=[],this.loadQueue_=[],this.metadataQueue_.id3=[],this.metadataQueue_.caption=[],this.timelineChangeController_.clearPendingTimelineChange(this.loaderType_),this.waitingOnRemove_=!1,window.clearTimeout(this.quotaExceededErrorRetryTimeout_),this.quotaExceededErrorRetryTimeout_=null},_proto.checkForAbort_=function checkForAbort_(requestId){return"APPENDING"!==this.state||this.pendingSegment_?!this.pendingSegment_||this.pendingSegment_.requestId!==requestId:(this.state="READY",!0)},_proto.error=function error(_error){return void 0!==_error&&(this.logger_("error occurred:",_error),this.error_=_error),this.pendingSegment_=null,this.error_},_proto.endOfStream=function endOfStream(){this.ended_=!0,this.transmuxer_&&segmentTransmuxer_reset(this.transmuxer_),this.gopBuffer_.length=0,this.pause(),this.trigger("ended")},_proto.buffered_=function buffered_(){var trackInfo=this.getMediaInfo_();if(!this.sourceUpdater_||!trackInfo)return videojs.createTimeRanges();if("main"===this.loaderType_){var hasAudio=trackInfo.hasAudio,hasVideo=trackInfo.hasVideo,isMuxed=trackInfo.isMuxed;if(hasVideo&&hasAudio&&!this.audioDisabled_&&!isMuxed)return this.sourceUpdater_.buffered();if(hasVideo)return this.sourceUpdater_.videoBuffered()}return this.sourceUpdater_.audioBuffered()},_proto.initSegmentForMap=function initSegmentForMap(map,set){if(void 0===set&&(set=!1),!map)return null;var id=initSegmentId(map),storedMap=this.initSegments_[id];return set&&!storedMap&&map.bytes&&(this.initSegments_[id]=storedMap={resolvedUri:map.resolvedUri,byterange:map.byterange,bytes:map.bytes,tracks:map.tracks,timescales:map.timescales}),storedMap||map},_proto.segmentKey=function segmentKey(key,set){if(void 0===set&&(set=!1),!key)return null;var id=segmentKeyId(key),storedKey=this.keyCache_[id];this.cacheEncryptionKeys_&&set&&!storedKey&&key.bytes&&(this.keyCache_[id]=storedKey={resolvedUri:key.resolvedUri,bytes:key.bytes});var result={resolvedUri:(storedKey||key).resolvedUri};return storedKey&&(result.bytes=storedKey.bytes),result},_proto.couldBeginLoading_=function couldBeginLoading_(){return this.playlist_&&!this.paused()},_proto.load=function load(){if(this.monitorBuffer_(),this.playlist_)return"INIT"===this.state&&this.couldBeginLoading_()?this.init_():void(!this.couldBeginLoading_()||"READY"!==this.state&&"INIT"!==this.state||(this.state="READY"))},_proto.init_=function init_(){return this.state="READY",this.resetEverything(),this.monitorBuffer_()},_proto.playlist=function playlist(newPlaylist,options){if(void 0===options&&(options={}),newPlaylist){var oldPlaylist=this.playlist_,segmentInfo=this.pendingSegment_;this.playlist_=newPlaylist,this.xhrOptions_=options,"INIT"===this.state&&(newPlaylist.syncInfo={mediaSequence:newPlaylist.mediaSequence,time:0},"main"===this.loaderType_&&this.syncController_.setDateTimeMappingForStart(newPlaylist));var oldId=null;if(oldPlaylist&&(oldPlaylist.id?oldId=oldPlaylist.id:oldPlaylist.uri&&(oldId=oldPlaylist.uri)),this.logger_("playlist update ["+oldId+" => "+(newPlaylist.id||newPlaylist.uri)+"]"),this.trigger("syncinfoupdate"),"INIT"===this.state&&this.couldBeginLoading_())return this.init_();if(!oldPlaylist||oldPlaylist.uri!==newPlaylist.uri)return null!==this.mediaIndex&&(newPlaylist.endList?this.resyncLoader():this.resetLoader()),this.currentMediaInfo_=void 0,void this.trigger("playlistupdate");var mediaSequenceDiff=newPlaylist.mediaSequence-oldPlaylist.mediaSequence;if(this.logger_("live window shift ["+mediaSequenceDiff+"]"),null!==this.mediaIndex)if(this.mediaIndex-=mediaSequenceDiff,this.mediaIndex<0)this.mediaIndex=null,this.partIndex=null;else{var segment=this.playlist_.segments[this.mediaIndex];if(this.partIndex&&(!segment.parts||!segment.parts.length||!segment.parts[this.partIndex])){var mediaIndex=this.mediaIndex;this.logger_("currently processing part (index "+this.partIndex+") no longer exists."),this.resetLoader(),this.mediaIndex=mediaIndex}}segmentInfo&&(segmentInfo.mediaIndex-=mediaSequenceDiff,segmentInfo.mediaIndex<0?(segmentInfo.mediaIndex=null,segmentInfo.partIndex=null):(segmentInfo.mediaIndex>=0&&(segmentInfo.segment=newPlaylist.segments[segmentInfo.mediaIndex]),segmentInfo.partIndex>=0&&segmentInfo.segment.parts&&(segmentInfo.part=segmentInfo.segment.parts[segmentInfo.partIndex]))),this.syncController_.saveExpiredSegmentInfo(oldPlaylist,newPlaylist)}},_proto.pause=function pause(){this.checkBufferTimeout_&&(window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=null)},_proto.paused=function paused(){return null===this.checkBufferTimeout_},_proto.resetEverything=function resetEverything(done){this.ended_=!1,this.appendInitSegment_={audio:!0,video:!0},this.resetLoader(),this.remove(0,1/0,done),this.transmuxer_&&(this.transmuxer_.postMessage({action:"clearAllMp4Captions"}),this.transmuxer_.postMessage({action:"reset"}))},_proto.resetLoader=function resetLoader(){this.fetchAtBuffer_=!1,this.resyncLoader()},_proto.resyncLoader=function resyncLoader(){this.transmuxer_&&segmentTransmuxer_reset(this.transmuxer_),this.mediaIndex=null,this.partIndex=null,this.syncPoint_=null,this.isPendingTimestampOffset_=!1,this.callQueue_=[],this.loadQueue_=[],this.metadataQueue_.id3=[],this.metadataQueue_.caption=[],this.abort(),this.transmuxer_&&this.transmuxer_.postMessage({action:"clearParsedMp4Captions"})},_proto.remove=function remove(start,end,done,force){if(void 0===done&&(done=function done(){}),void 0===force&&(force=!1),end===1/0&&(end=this.duration_()),end<=start)this.logger_("skipping remove because end ${end} is <= start ${start}");else if(this.sourceUpdater_&&this.getMediaInfo_()){var removesRemaining=1,removeFinished=function removeFinished(){0===--removesRemaining&&done()};for(var track in!force&&this.audioDisabled_||(removesRemaining++,this.sourceUpdater_.removeAudio(start,end,removeFinished)),(force||"main"===this.loaderType_)&&(this.gopBuffer_=removeGopBuffer(this.gopBuffer_,start,end,this.timeMapping_),removesRemaining++,this.sourceUpdater_.removeVideo(start,end,removeFinished)),this.inbandTextTracks_)removeCuesFromTrack(start,end,this.inbandTextTracks_[track]);removeCuesFromTrack(start,end,this.segmentMetadataTrack_),removeFinished()}else this.logger_("skipping remove because no source updater or starting media info")},_proto.monitorBuffer_=function monitorBuffer_(){this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=window.setTimeout(this.monitorBufferTick_.bind(this),1)},_proto.monitorBufferTick_=function monitorBufferTick_(){"READY"===this.state&&this.fillBuffer_(),this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=window.setTimeout(this.monitorBufferTick_.bind(this),500)},_proto.fillBuffer_=function fillBuffer_(){if(!this.sourceUpdater_.updating()){var segmentInfo=this.chooseNextRequest_();segmentInfo&&("number"==typeof segmentInfo.timestampOffset&&(this.isPendingTimestampOffset_=!1,this.timelineChangeController_.pendingTimelineChange({type:this.loaderType_,from:this.currentTimeline_,to:segmentInfo.timeline})),this.loadSegment_(segmentInfo))}},_proto.isEndOfStream_=function isEndOfStream_(mediaIndex,playlist,partIndex){if(void 0===mediaIndex&&(mediaIndex=this.mediaIndex),void 0===playlist&&(playlist=this.playlist_),void 0===partIndex&&(partIndex=this.partIndex),!playlist||!this.mediaSource_)return!1;var segment="number"==typeof mediaIndex&&playlist.segments[mediaIndex],appendedLastSegment=mediaIndex+1===playlist.segments.length,appendedLastPart=!segment||!segment.parts||partIndex+1===segment.parts.length;return playlist.endList&&"open"===this.mediaSource_.readyState&&appendedLastSegment&&appendedLastPart},_proto.chooseNextRequest_=function chooseNextRequest_(){var buffered=this.buffered_(),bufferedEnd=lastBufferedEnd(buffered)||0,bufferedTime=timeAheadOf(buffered,this.currentTime_()),preloaded=!this.hasPlayed_()&&bufferedTime>=1,haveEnoughBuffer=bufferedTime>=this.goalBufferLength_(),segments=this.playlist_.segments;if(!segments.length||preloaded||haveEnoughBuffer)return null;this.syncPoint_=this.syncPoint_||this.syncController_.getSyncPoint(this.playlist_,this.duration_(),this.currentTimeline_,this.currentTime_());var next={partIndex:null,mediaIndex:null,startOfSegment:null,playlist:this.playlist_,isSyncRequest:Boolean(!this.syncPoint_)};if(next.isSyncRequest)next.mediaIndex=getSyncSegmentCandidate(this.currentTimeline_,segments,bufferedEnd);else if(null!==this.mediaIndex){var segment=segments[this.mediaIndex],partIndex="number"==typeof this.partIndex?this.partIndex:-1;next.startOfSegment=segment.end?segment.end:bufferedEnd,segment.parts&&segment.parts[partIndex+1]?(next.mediaIndex=this.mediaIndex,next.partIndex=partIndex+1):next.mediaIndex=this.mediaIndex+1}else{var _Playlist$getMediaInf=Playlist.getMediaInfoForTime({experimentalExactManifestTimings:this.experimentalExactManifestTimings,playlist:this.playlist_,currentTime:this.fetchAtBuffer_?bufferedEnd:this.currentTime_(),startingPartIndex:this.syncPoint_.partIndex,startingSegmentIndex:this.syncPoint_.segmentIndex,startTime:this.syncPoint_.time}),segmentIndex=_Playlist$getMediaInf.segmentIndex,startTime=_Playlist$getMediaInf.startTime,_partIndex=_Playlist$getMediaInf.partIndex;next.getMediaInfoForTime=this.fetchAtBuffer_?"bufferedEnd "+bufferedEnd:"currentTime "+this.currentTime_(),next.mediaIndex=segmentIndex,next.startOfSegment=startTime,next.partIndex=_partIndex}var nextSegment=segments[next.mediaIndex],nextPart=nextSegment&&"number"==typeof next.partIndex&&nextSegment.parts&&nextSegment.parts[next.partIndex];if(!nextSegment||"number"==typeof next.partIndex&&!nextPart)return null;if("number"!=typeof next.partIndex&&nextSegment.parts&&(next.partIndex=0,nextPart=nextSegment.parts[0]),!bufferedTime&&nextPart&&!nextPart.independent)if(0===next.partIndex){var lastSegment=segments[next.mediaIndex-1],lastSegmentLastPart=lastSegment.parts&&lastSegment.parts.length&&lastSegment.parts[lastSegment.parts.length-1];lastSegmentLastPart&&lastSegmentLastPart.independent&&(next.mediaIndex-=1,next.partIndex=lastSegment.parts.length-1,next.independent="previous segment")}else nextSegment.parts[next.partIndex-1].independent&&(next.partIndex-=1,next.independent="previous part");var ended=this.mediaSource_&&"ended"===this.mediaSource_.readyState;return next.mediaIndex>=segments.length-1&&ended&&!this.seeking_()?null:this.generateSegmentInfo_(next)},_proto.generateSegmentInfo_=function generateSegmentInfo_(options){var independent=options.independent,playlist=options.playlist,mediaIndex=options.mediaIndex,startOfSegment=options.startOfSegment,isSyncRequest=options.isSyncRequest,partIndex=options.partIndex,forceTimestampOffset=options.forceTimestampOffset,getMediaInfoForTime=options.getMediaInfoForTime,segment=playlist.segments[mediaIndex],part="number"==typeof partIndex&&segment.parts[partIndex],segmentInfo={requestId:"segment-loader-"+Math.random(),uri:part&&part.resolvedUri||segment.resolvedUri,mediaIndex:mediaIndex,partIndex:part?partIndex:null,isSyncRequest:isSyncRequest,startOfSegment:startOfSegment,playlist:playlist,bytes:null,encryptedBytes:null,timestampOffset:null,timeline:segment.timeline,duration:part&&part.duration||segment.duration,segment:segment,part:part,byteLength:0,transmuxer:this.transmuxer_,getMediaInfoForTime:getMediaInfoForTime,independent:independent},overrideCheck=void 0!==forceTimestampOffset?forceTimestampOffset:this.isPendingTimestampOffset_;segmentInfo.timestampOffset=this.timestampOffsetForSegment_({segmentTimeline:segment.timeline,currentTimeline:this.currentTimeline_,startOfSegment:startOfSegment,buffered:this.buffered_(),overrideCheck:overrideCheck});var audioBufferedEnd=lastBufferedEnd(this.sourceUpdater_.audioBuffered());return"number"==typeof audioBufferedEnd&&(segmentInfo.audioAppendStart=audioBufferedEnd-this.sourceUpdater_.audioTimestampOffset()),this.sourceUpdater_.videoBuffered().length&&(segmentInfo.gopsToAlignWith=gopsSafeToAlignWith(this.gopBuffer_,this.currentTime_()-this.sourceUpdater_.videoTimestampOffset(),this.timeMapping_)),segmentInfo},_proto.timestampOffsetForSegment_=function timestampOffsetForSegment_(options){return timestampOffsetForSegment(options)},_proto.earlyAbortWhenNeeded_=function earlyAbortWhenNeeded_(stats){if(!this.vhs_.tech_.paused()&&this.xhrOptions_.timeout&&this.playlist_.attributes.BANDWIDTH&&!(Date.now()-(stats.firstBytesReceivedAt||Date.now())<1e3)){var currentTime=this.currentTime_(),measuredBandwidth=stats.bandwidth,segmentDuration=this.pendingSegment_.duration,requestTimeRemaining=Playlist.estimateSegmentRequestTime(segmentDuration,measuredBandwidth,this.playlist_,stats.bytesReceived),timeUntilRebuffer$1=timeUntilRebuffer(this.buffered_(),currentTime,this.vhs_.tech_.playbackRate())-1;if(!(requestTimeRemaining<=timeUntilRebuffer$1)){var switchCandidate=minRebufferMaxBandwidthSelector({master:this.vhs_.playlists.master,currentTime:currentTime,bandwidth:measuredBandwidth,duration:this.duration_(),segmentDuration:segmentDuration,timeUntilRebuffer:timeUntilRebuffer$1,currentTimeline:this.currentTimeline_,syncController:this.syncController_});if(switchCandidate){var rebufferingImpact,timeSavedBySwitching=requestTimeRemaining-timeUntilRebuffer$1-switchCandidate.rebufferingImpact,minimumTimeSaving=.5;timeUntilRebuffer$1<=1/30&&(minimumTimeSaving=1),!switchCandidate.playlist||switchCandidate.playlist.uri===this.playlist_.uri||timeSavedBySwitching "+endTime+" for "+trackName),createCaptionsTrackIfNotExists(inbandTextTracks,_this2.vhs_.tech_,trackName),removeCuesFromTrack(startTime,endTime,inbandTextTracks[trackName]),addCaptionData({captionArray:captions,inbandTextTracks:inbandTextTracks,timestampOffset:timestampOffset})})),this.transmuxer_&&this.transmuxer_.postMessage({action:"clearParsedMp4Captions"})}else this.metadataQueue_.caption.push(this.handleCaptions_.bind(this,simpleSegment,captionData));else this.logger_("SegmentLoader received no captions from a caption event")},_proto.handleId3_=function handleId3_(simpleSegment,id3Frames,dispatchType){var segmentInfo;if(this.earlyAbortWhenNeeded_(simpleSegment.stats),!this.checkForAbort_(simpleSegment.requestId))if(this.pendingSegment_.hasAppendedData_){var timestampOffset=null===this.sourceUpdater_.videoTimestampOffset()?this.sourceUpdater_.audioTimestampOffset():this.sourceUpdater_.videoTimestampOffset();createMetadataTrackIfNotExists(this.inbandTextTracks_,dispatchType,this.vhs_.tech_),addMetadata({inbandTextTracks:this.inbandTextTracks_,metadataArray:id3Frames,timestampOffset:timestampOffset,videoDuration:this.duration_()})}else this.metadataQueue_.id3.push(this.handleId3_.bind(this,simpleSegment,id3Frames,dispatchType))},_proto.processMetadataQueue_=function processMetadataQueue_(){this.metadataQueue_.id3.forEach((function(fn){return fn()})),this.metadataQueue_.caption.forEach((function(fn){return fn()})),this.metadataQueue_.id3=[],this.metadataQueue_.caption=[]},_proto.processCallQueue_=function processCallQueue_(){var callQueue=this.callQueue_;this.callQueue_=[],callQueue.forEach((function(fun){return fun()}))},_proto.processLoadQueue_=function processLoadQueue_(){var loadQueue=this.loadQueue_;this.loadQueue_=[],loadQueue.forEach((function(fun){return fun()}))},_proto.hasEnoughInfoToLoad_=function hasEnoughInfoToLoad_(){if("audio"!==this.loaderType_)return!0;var segmentInfo=this.pendingSegment_;return!!segmentInfo&&(!this.getCurrentMediaInfo_()||!shouldWaitForTimelineChange({timelineChangeController:this.timelineChangeController_,currentTimeline:this.currentTimeline_,segmentTimeline:segmentInfo.timeline,loaderType:this.loaderType_,audioDisabled:this.audioDisabled_}))},_proto.getCurrentMediaInfo_=function getCurrentMediaInfo_(segmentInfo){return void 0===segmentInfo&&(segmentInfo=this.pendingSegment_),segmentInfo&&segmentInfo.trackInfo||this.currentMediaInfo_},_proto.getMediaInfo_=function getMediaInfo_(segmentInfo){return void 0===segmentInfo&&(segmentInfo=this.pendingSegment_),this.getCurrentMediaInfo_(segmentInfo)||this.startingMediaInfo_},_proto.hasEnoughInfoToAppend_=function hasEnoughInfoToAppend_(){if(!this.sourceUpdater_.ready())return!1;if(this.waitingOnRemove_||this.quotaExceededErrorRetryTimeout_)return!1;var segmentInfo=this.pendingSegment_,trackInfo=this.getCurrentMediaInfo_();if(!segmentInfo||!trackInfo)return!1;var hasAudio=trackInfo.hasAudio,hasVideo=trackInfo.hasVideo,isMuxed=trackInfo.isMuxed;return!(hasVideo&&!segmentInfo.videoTimingInfo)&&(!(hasAudio&&!this.audioDisabled_&&!isMuxed&&!segmentInfo.audioTimingInfo)&&!shouldWaitForTimelineChange({timelineChangeController:this.timelineChangeController_,currentTimeline:this.currentTimeline_,segmentTimeline:segmentInfo.timeline,loaderType:this.loaderType_,audioDisabled:this.audioDisabled_}))},_proto.handleData_=function handleData_(simpleSegment,result){if(this.earlyAbortWhenNeeded_(simpleSegment.stats),!this.checkForAbort_(simpleSegment.requestId))if(!this.callQueue_.length&&this.hasEnoughInfoToAppend_()){var segmentInfo=this.pendingSegment_;if(this.setTimeMapping_(segmentInfo.timeline),this.updateMediaSecondsLoaded_(segmentInfo.part||segmentInfo.segment),"closed"!==this.mediaSource_.readyState){if(simpleSegment.map&&(simpleSegment.map=this.initSegmentForMap(simpleSegment.map,!0),segmentInfo.segment.map=simpleSegment.map),simpleSegment.key&&this.segmentKey(simpleSegment.key,!0),segmentInfo.isFmp4=simpleSegment.isFmp4,segmentInfo.timingInfo=segmentInfo.timingInfo||{},segmentInfo.isFmp4)this.trigger("fmp4"),segmentInfo.timingInfo.start=segmentInfo[timingInfoPropertyForMedia(result.type)].start;else{var trackInfo=this.getCurrentMediaInfo_(),useVideoTimingInfo="main"===this.loaderType_&&trackInfo&&trackInfo.hasVideo,firstVideoFrameTimeForData;useVideoTimingInfo&&(firstVideoFrameTimeForData=segmentInfo.videoTimingInfo.start),segmentInfo.timingInfo.start=this.trueSegmentStart_({currentStart:segmentInfo.timingInfo.start,playlist:segmentInfo.playlist,mediaIndex:segmentInfo.mediaIndex,currentVideoTimestampOffset:this.sourceUpdater_.videoTimestampOffset(),useVideoTimingInfo:useVideoTimingInfo,firstVideoFrameTimeForData:firstVideoFrameTimeForData,videoTimingInfo:segmentInfo.videoTimingInfo,audioTimingInfo:segmentInfo.audioTimingInfo})}if(this.updateAppendInitSegmentStatus(segmentInfo,result.type),this.updateSourceBufferTimestampOffset_(segmentInfo),segmentInfo.isSyncRequest){this.updateTimingInfoEnd_(segmentInfo),this.syncController_.saveSegmentTimingInfo({segmentInfo:segmentInfo,shouldSaveTimelineMapping:"main"===this.loaderType_});var next=this.chooseNextRequest_();if(next.mediaIndex!==segmentInfo.mediaIndex||next.partIndex!==segmentInfo.partIndex)return void this.logger_("sync segment was incorrect, not appending");this.logger_("sync segment was correct, appending")}segmentInfo.hasAppendedData_=!0,this.processMetadataQueue_(),this.appendData_(segmentInfo,result)}}else this.callQueue_.push(this.handleData_.bind(this,simpleSegment,result))},_proto.updateAppendInitSegmentStatus=function updateAppendInitSegmentStatus(segmentInfo,type){"main"!==this.loaderType_||"number"!=typeof segmentInfo.timestampOffset||segmentInfo.changedTimestampOffset||(this.appendInitSegment_={audio:!0,video:!0}),this.playlistOfLastInitSegment_[type]!==segmentInfo.playlist&&(this.appendInitSegment_[type]=!0)},_proto.getInitSegmentAndUpdateState_=function getInitSegmentAndUpdateState_(_ref4){var type=_ref4.type,initSegment=_ref4.initSegment,map=_ref4.map,playlist=_ref4.playlist;if(map){var id=initSegmentId(map);if(this.activeInitSegmentId_===id)return null;initSegment=this.initSegmentForMap(map,!0).bytes,this.activeInitSegmentId_=id}return initSegment&&this.appendInitSegment_[type]?(this.playlistOfLastInitSegment_[type]=playlist,this.appendInitSegment_[type]=!1,this.activeInitSegmentId_=null,initSegment):null},_proto.handleQuotaExceededError_=function handleQuotaExceededError_(_ref5,error){var _this3=this,segmentInfo=_ref5.segmentInfo,type=_ref5.type,bytes=_ref5.bytes,audioBuffered=this.sourceUpdater_.audioBuffered(),videoBuffered=this.sourceUpdater_.videoBuffered();audioBuffered.length>1&&this.logger_("On QUOTA_EXCEEDED_ERR, found gaps in the audio buffer: "+timeRangesToArray(audioBuffered).join(", ")),videoBuffered.length>1&&this.logger_("On QUOTA_EXCEEDED_ERR, found gaps in the video buffer: "+timeRangesToArray(videoBuffered).join(", "));var audioBufferStart=audioBuffered.length?audioBuffered.start(0):0,audioBufferEnd=audioBuffered.length?audioBuffered.end(audioBuffered.length-1):0,videoBufferStart=videoBuffered.length?videoBuffered.start(0):0,videoBufferEnd=videoBuffered.length?videoBuffered.end(videoBuffered.length-1):0;if(audioBufferEnd-audioBufferStart<=1&&videoBufferEnd-videoBufferStart<=1)return this.logger_("On QUOTA_EXCEEDED_ERR, single segment too large to append to buffer, triggering an error. Appended byte length: "+bytes.byteLength+", audio buffer: "+timeRangesToArray(audioBuffered).join(", ")+", video buffer: "+timeRangesToArray(videoBuffered).join(", ")+", "),this.error({message:"Quota exceeded error with append of a single segment of content",excludeUntil:1/0}),void this.trigger("error");this.waitingOnRemove_=!0,this.callQueue_.push(this.appendToSourceBuffer_.bind(this,{segmentInfo:segmentInfo,type:type,bytes:bytes}));var currentTime,timeToRemoveUntil=this.currentTime_()-1;this.logger_("On QUOTA_EXCEEDED_ERR, removing audio/video from 0 to "+timeToRemoveUntil),this.remove(0,timeToRemoveUntil,(function(){_this3.logger_("On QUOTA_EXCEEDED_ERR, retrying append in 1s"),_this3.waitingOnRemove_=!1,_this3.quotaExceededErrorRetryTimeout_=window.setTimeout((function(){_this3.logger_("On QUOTA_EXCEEDED_ERR, re-processing call queue"),_this3.quotaExceededErrorRetryTimeout_=null,_this3.processCallQueue_()}),1e3)}),!0)},_proto.handleAppendError_=function handleAppendError_(_ref6,error){var segmentInfo=_ref6.segmentInfo,type=_ref6.type,bytes=_ref6.bytes;error&&(22!==error.code?(this.logger_("Received non QUOTA_EXCEEDED_ERR on append",error),this.error(type+" append of "+bytes.length+"b failed for segment #"+segmentInfo.mediaIndex+" in playlist "+segmentInfo.playlist.id),this.trigger("appenderror")):this.handleQuotaExceededError_({segmentInfo:segmentInfo,type:type,bytes:bytes}))},_proto.appendToSourceBuffer_=function appendToSourceBuffer_(_ref7){var segmentInfo=_ref7.segmentInfo,type=_ref7.type,initSegment=_ref7.initSegment,data=_ref7.data,bytes=_ref7.bytes;if(!bytes){var segments=[data],byteLength=data.byteLength;initSegment&&(segments.unshift(initSegment),byteLength+=initSegment.byteLength),bytes=concatSegments({bytes:byteLength,segments:segments})}this.sourceUpdater_.appendBuffer({segmentInfo:segmentInfo,type:type,bytes:bytes},this.handleAppendError_.bind(this,{segmentInfo:segmentInfo,type:type,bytes:bytes}))},_proto.handleSegmentTimingInfo_=function handleSegmentTimingInfo_(type,requestId,segmentTimingInfo){if(this.pendingSegment_&&requestId===this.pendingSegment_.requestId){var segment=this.pendingSegment_.segment,timingInfoProperty=type+"TimingInfo";segment[timingInfoProperty]||(segment[timingInfoProperty]={}),segment[timingInfoProperty].transmuxerPrependedSeconds=segmentTimingInfo.prependedContentDuration||0,segment[timingInfoProperty].transmuxedPresentationStart=segmentTimingInfo.start.presentation,segment[timingInfoProperty].transmuxedDecodeStart=segmentTimingInfo.start.decode,segment[timingInfoProperty].transmuxedPresentationEnd=segmentTimingInfo.end.presentation,segment[timingInfoProperty].transmuxedDecodeEnd=segmentTimingInfo.end.decode,segment[timingInfoProperty].baseMediaDecodeTime=segmentTimingInfo.baseMediaDecodeTime}},_proto.appendData_=function appendData_(segmentInfo,result){var type=result.type,data=result.data;if(data&&data.byteLength&&("audio"!==type||!this.audioDisabled_)){var initSegment=this.getInitSegmentAndUpdateState_({type:type,initSegment:result.initSegment,playlist:segmentInfo.playlist,map:segmentInfo.isFmp4?segmentInfo.segment.map:null});this.appendToSourceBuffer_({segmentInfo:segmentInfo,type:type,initSegment:initSegment,data:data})}},_proto.loadSegment_=function loadSegment_(segmentInfo){var _this4=this;this.state="WAITING",this.pendingSegment_=segmentInfo,this.trimBackBuffer_(segmentInfo),"number"==typeof segmentInfo.timestampOffset&&this.transmuxer_&&this.transmuxer_.postMessage({action:"clearAllMp4Captions"}),this.hasEnoughInfoToLoad_()?this.updateTransmuxerAndRequestSegment_(segmentInfo):this.loadQueue_.push((function(){var options=_extends_1({},segmentInfo,{forceTimestampOffset:!0});_extends_1(segmentInfo,_this4.generateSegmentInfo_(options)),_this4.isPendingTimestampOffset_=!1,_this4.updateTransmuxerAndRequestSegment_(segmentInfo)}))},_proto.updateTransmuxerAndRequestSegment_=function updateTransmuxerAndRequestSegment_(segmentInfo){var _this5=this;this.shouldUpdateTransmuxerTimestampOffset_(segmentInfo.timestampOffset)&&(this.gopBuffer_.length=0,segmentInfo.gopsToAlignWith=[],this.timeMapping_=0,this.transmuxer_.postMessage({action:"reset"}),this.transmuxer_.postMessage({action:"setTimestampOffset",timestampOffset:segmentInfo.timestampOffset}));var simpleSegment=this.createSimplifiedSegmentObj_(segmentInfo),isEndOfStream=this.isEndOfStream_(segmentInfo.mediaIndex,segmentInfo.playlist,segmentInfo.partIndex),isWalkingForward=null!==this.mediaIndex,isDiscontinuity=segmentInfo.timeline!==this.currentTimeline_&&segmentInfo.timeline>0,isEndOfTimeline=isEndOfStream||isWalkingForward&&isDiscontinuity;this.logger_("Requesting "+segmentInfoString(segmentInfo)),simpleSegment.map&&!simpleSegment.map.bytes&&(this.logger_("going to request init segment."),this.appendInitSegment_={video:!0,audio:!0}),segmentInfo.abortRequests=mediaSegmentRequest({xhr:this.vhs_.xhr,xhrOptions:this.xhrOptions_,decryptionWorker:this.decrypter_,segment:simpleSegment,abortFn:this.handleAbort_.bind(this,segmentInfo),progressFn:this.handleProgress_.bind(this),trackInfoFn:this.handleTrackInfo_.bind(this),timingInfoFn:this.handleTimingInfo_.bind(this),videoSegmentTimingInfoFn:this.handleSegmentTimingInfo_.bind(this,"video",segmentInfo.requestId),audioSegmentTimingInfoFn:this.handleSegmentTimingInfo_.bind(this,"audio",segmentInfo.requestId),captionsFn:this.handleCaptions_.bind(this),isEndOfTimeline:isEndOfTimeline,endedTimelineFn:function endedTimelineFn(){_this5.logger_("received endedtimeline callback")},id3Fn:this.handleId3_.bind(this),dataFn:this.handleData_.bind(this),doneFn:this.segmentRequestFinished_.bind(this),onTransmuxerLog:function onTransmuxerLog(_ref8){var message=_ref8.message,level=_ref8.level,stream=_ref8.stream;_this5.logger_(segmentInfoString(segmentInfo)+" logged from transmuxer stream "+stream+" as a "+level+": "+message)}})},_proto.trimBackBuffer_=function trimBackBuffer_(segmentInfo){var removeToTime=safeBackBufferTrimTime(this.seekable_(),this.currentTime_(),this.playlist_.targetDuration||10);removeToTime>0&&this.remove(0,removeToTime)},_proto.createSimplifiedSegmentObj_=function createSimplifiedSegmentObj_(segmentInfo){var segment=segmentInfo.segment,part=segmentInfo.part,simpleSegment={resolvedUri:part?part.resolvedUri:segment.resolvedUri,byterange:part?part.byterange:segment.byterange,requestId:segmentInfo.requestId,transmuxer:segmentInfo.transmuxer,audioAppendStart:segmentInfo.audioAppendStart,gopsToAlignWith:segmentInfo.gopsToAlignWith,part:segmentInfo.part},previousSegment=segmentInfo.playlist.segments[segmentInfo.mediaIndex-1];if(previousSegment&&previousSegment.timeline===segment.timeline&&(previousSegment.videoTimingInfo?simpleSegment.baseStartTime=previousSegment.videoTimingInfo.transmuxedDecodeEnd:previousSegment.audioTimingInfo&&(simpleSegment.baseStartTime=previousSegment.audioTimingInfo.transmuxedDecodeEnd)),segment.key){var iv=segment.key.iv||new Uint32Array([0,0,0,segmentInfo.mediaIndex+segmentInfo.playlist.mediaSequence]);simpleSegment.key=this.segmentKey(segment.key),simpleSegment.key.iv=iv}return segment.map&&(simpleSegment.map=this.initSegmentForMap(segment.map)),simpleSegment},_proto.saveTransferStats_=function saveTransferStats_(stats){this.mediaRequests+=1,stats&&(this.mediaBytesTransferred+=stats.bytesReceived,this.mediaTransferDuration+=stats.roundTripTime)},_proto.saveBandwidthRelatedStats_=function saveBandwidthRelatedStats_(duration,stats){this.pendingSegment_.byteLength=stats.bytesReceived,duration<1/60?this.logger_("Ignoring segment's bandwidth because its duration of "+duration+" is less than the min to record "+1/60):(this.bandwidth=stats.bandwidth,this.roundTrip=stats.roundTripTime)},_proto.handleTimeout_=function handleTimeout_(){this.mediaRequestsTimedout+=1,this.bandwidth=1,this.roundTrip=NaN,this.trigger("bandwidthupdate")},_proto.segmentRequestFinished_=function segmentRequestFinished_(error,simpleSegment,result){if(this.callQueue_.length)this.callQueue_.push(this.segmentRequestFinished_.bind(this,error,simpleSegment,result));else if(this.saveTransferStats_(simpleSegment.stats),this.pendingSegment_&&simpleSegment.requestId===this.pendingSegment_.requestId){if(error){if(this.pendingSegment_=null,this.state="READY",error.code===REQUEST_ERRORS_ABORTED)return;return this.pause(),error.code===REQUEST_ERRORS_TIMEOUT?void this.handleTimeout_():(this.mediaRequestsErrored+=1,this.error(error),void this.trigger("error"))}var segmentInfo=this.pendingSegment_;this.saveBandwidthRelatedStats_(segmentInfo.duration,simpleSegment.stats),segmentInfo.endOfAllRequests=simpleSegment.endOfAllRequests,result.gopInfo&&(this.gopBuffer_=updateGopBuffer(this.gopBuffer_,result.gopInfo,this.safeAppend_)),this.state="APPENDING",this.trigger("appending"),this.waitForAppendsToComplete_(segmentInfo)}},_proto.setTimeMapping_=function setTimeMapping_(timeline){var timelineMapping=this.syncController_.mappingForTimeline(timeline);null!==timelineMapping&&(this.timeMapping_=timelineMapping)},_proto.updateMediaSecondsLoaded_=function updateMediaSecondsLoaded_(segment){"number"==typeof segment.start&&"number"==typeof segment.end?this.mediaSecondsLoaded+=segment.end-segment.start:this.mediaSecondsLoaded+=segment.duration},_proto.shouldUpdateTransmuxerTimestampOffset_=function shouldUpdateTransmuxerTimestampOffset_(timestampOffset){return null!==timestampOffset&&("main"===this.loaderType_&×tampOffset!==this.sourceUpdater_.videoTimestampOffset()||!this.audioDisabled_&×tampOffset!==this.sourceUpdater_.audioTimestampOffset())},_proto.trueSegmentStart_=function trueSegmentStart_(_ref9){var currentStart=_ref9.currentStart,playlist=_ref9.playlist,mediaIndex=_ref9.mediaIndex,firstVideoFrameTimeForData=_ref9.firstVideoFrameTimeForData,currentVideoTimestampOffset=_ref9.currentVideoTimestampOffset,useVideoTimingInfo=_ref9.useVideoTimingInfo,videoTimingInfo=_ref9.videoTimingInfo,audioTimingInfo=_ref9.audioTimingInfo;if(void 0!==currentStart)return currentStart;if(!useVideoTimingInfo)return audioTimingInfo.start;var previousSegment=playlist.segments[mediaIndex-1];return 0!==mediaIndex&&previousSegment&&void 0!==previousSegment.start&&previousSegment.end===firstVideoFrameTimeForData+currentVideoTimestampOffset?videoTimingInfo.start:firstVideoFrameTimeForData},_proto.waitForAppendsToComplete_=function waitForAppendsToComplete_(segmentInfo){var trackInfo=this.getCurrentMediaInfo_(segmentInfo);if(!trackInfo)return this.error({message:"No starting media returned, likely due to an unsupported media format.",blacklistDuration:1/0}),void this.trigger("error");var hasAudio=trackInfo.hasAudio,hasVideo=trackInfo.hasVideo,isMuxed=trackInfo.isMuxed,waitForVideo="main"===this.loaderType_&&hasVideo,waitForAudio=!this.audioDisabled_&&hasAudio&&!isMuxed;if(segmentInfo.waitingOnAppends=0,!segmentInfo.hasAppendedData_)return segmentInfo.timingInfo||"number"!=typeof segmentInfo.timestampOffset||(this.isPendingTimestampOffset_=!0),segmentInfo.timingInfo={start:0},segmentInfo.waitingOnAppends++,this.isPendingTimestampOffset_||(this.updateSourceBufferTimestampOffset_(segmentInfo),this.processMetadataQueue_()),void this.checkAppendsDone_(segmentInfo);waitForVideo&&segmentInfo.waitingOnAppends++,waitForAudio&&segmentInfo.waitingOnAppends++,waitForVideo&&this.sourceUpdater_.videoQueueCallback(this.checkAppendsDone_.bind(this,segmentInfo)),waitForAudio&&this.sourceUpdater_.audioQueueCallback(this.checkAppendsDone_.bind(this,segmentInfo))},_proto.checkAppendsDone_=function checkAppendsDone_(segmentInfo){this.checkForAbort_(segmentInfo.requestId)||(segmentInfo.waitingOnAppends--,0===segmentInfo.waitingOnAppends&&this.handleAppendsDone_())},_proto.checkForIllegalMediaSwitch=function checkForIllegalMediaSwitch(trackInfo){var illegalMediaSwitchError=illegalMediaSwitch(this.loaderType_,this.getCurrentMediaInfo_(),trackInfo);return!!illegalMediaSwitchError&&(this.error({message:illegalMediaSwitchError,blacklistDuration:1/0}),this.trigger("error"),!0)},_proto.updateSourceBufferTimestampOffset_=function updateSourceBufferTimestampOffset_(segmentInfo){if(null!==segmentInfo.timestampOffset&&"number"==typeof segmentInfo.timingInfo.start&&!segmentInfo.changedTimestampOffset&&"main"===this.loaderType_){var didChange=!1;segmentInfo.timestampOffset-=this.getSegmentStartTimeForTimestampOffsetCalculation_({videoTimingInfo:segmentInfo.segment.videoTimingInfo,audioTimingInfo:segmentInfo.segment.audioTimingInfo,timingInfo:segmentInfo.timingInfo}),segmentInfo.changedTimestampOffset=!0,segmentInfo.timestampOffset!==this.sourceUpdater_.videoTimestampOffset()&&(this.sourceUpdater_.videoTimestampOffset(segmentInfo.timestampOffset),didChange=!0),segmentInfo.timestampOffset!==this.sourceUpdater_.audioTimestampOffset()&&(this.sourceUpdater_.audioTimestampOffset(segmentInfo.timestampOffset),didChange=!0),didChange&&this.trigger("timestampoffset")}},_proto.getSegmentStartTimeForTimestampOffsetCalculation_=function getSegmentStartTimeForTimestampOffsetCalculation_(_ref10){var videoTimingInfo=_ref10.videoTimingInfo,audioTimingInfo=_ref10.audioTimingInfo,timingInfo=_ref10.timingInfo;return this.useDtsForTimestampOffset_?videoTimingInfo&&"number"==typeof videoTimingInfo.transmuxedDecodeStart?videoTimingInfo.transmuxedDecodeStart:audioTimingInfo&&"number"==typeof audioTimingInfo.transmuxedDecodeStart?audioTimingInfo.transmuxedDecodeStart:timingInfo.start:timingInfo.start},_proto.updateTimingInfoEnd_=function updateTimingInfoEnd_(segmentInfo){segmentInfo.timingInfo=segmentInfo.timingInfo||{};var trackInfo=this.getMediaInfo_(),useVideoTimingInfo,prioritizedTimingInfo="main"===this.loaderType_&&trackInfo&&trackInfo.hasVideo&&segmentInfo.videoTimingInfo?segmentInfo.videoTimingInfo:segmentInfo.audioTimingInfo;prioritizedTimingInfo&&(segmentInfo.timingInfo.end="number"==typeof prioritizedTimingInfo.end?prioritizedTimingInfo.end:prioritizedTimingInfo.start+segmentInfo.duration)},_proto.handleAppendsDone_=function handleAppendsDone_(){if(this.pendingSegment_&&this.trigger("appendsdone"),!this.pendingSegment_)return this.state="READY",void(this.paused()||this.monitorBuffer_());var segmentInfo=this.pendingSegment_;this.updateTimingInfoEnd_(segmentInfo),this.shouldSaveSegmentTimingInfo_&&this.syncController_.saveSegmentTimingInfo({segmentInfo:segmentInfo,shouldSaveTimelineMapping:"main"===this.loaderType_});var segmentDurationMessage=getTroublesomeSegmentDurationMessage(segmentInfo,this.sourceType_);if(segmentDurationMessage&&("warn"===segmentDurationMessage.severity?videojs.log.warn(segmentDurationMessage.message):this.logger_(segmentDurationMessage.message)),this.recordThroughput_(segmentInfo),this.pendingSegment_=null,this.state="READY",!segmentInfo.isSyncRequest||(this.trigger("syncinfoupdate"),segmentInfo.hasAppendedData_)){this.logger_("Appended "+segmentInfoString(segmentInfo)),this.addSegmentMetadataCue_(segmentInfo),this.fetchAtBuffer_=!0,this.currentTimeline_!==segmentInfo.timeline&&(this.timelineChangeController_.lastTimelineChange({type:this.loaderType_,from:this.currentTimeline_,to:segmentInfo.timeline}),"main"!==this.loaderType_||this.audioDisabled_||this.timelineChangeController_.lastTimelineChange({type:"audio",from:this.currentTimeline_,to:segmentInfo.timeline})),this.currentTimeline_=segmentInfo.timeline,this.trigger("syncinfoupdate");var segment=segmentInfo.segment,part=segmentInfo.part,badSegmentGuess=segment.end&&this.currentTime_()-segment.end>3*segmentInfo.playlist.targetDuration,badPartGuess=part&&part.end&&this.currentTime_()-part.end>3*segmentInfo.playlist.partTargetDuration,isWalkingForward;if(badSegmentGuess||badPartGuess)return this.logger_("bad "+(badSegmentGuess?"segment":"part")+" "+segmentInfoString(segmentInfo)),void this.resetEverything();null!==this.mediaIndex&&this.trigger("bandwidthupdate"),this.trigger("progress"),this.mediaIndex=segmentInfo.mediaIndex,this.partIndex=segmentInfo.partIndex,this.isEndOfStream_(segmentInfo.mediaIndex,segmentInfo.playlist,segmentInfo.partIndex)&&this.endOfStream(),this.trigger("appended"),segmentInfo.hasAppendedData_&&this.mediaAppends++,this.paused()||this.monitorBuffer_()}else this.logger_("Throwing away un-appended sync request "+segmentInfoString(segmentInfo))},_proto.recordThroughput_=function recordThroughput_(segmentInfo){if(segmentInfo.duration<1/60)this.logger_("Ignoring segment's throughput because its duration of "+segmentInfo.duration+" is less than the min to record "+1/60);else{var rate=this.throughput.rate,segmentProcessingTime=Date.now()-segmentInfo.endOfAllRequests+1,segmentProcessingThroughput=Math.floor(segmentInfo.byteLength/segmentProcessingTime*8*1e3);this.throughput.rate+=(segmentProcessingThroughput-rate)/++this.throughput.count}},_proto.addSegmentMetadataCue_=function addSegmentMetadataCue_(segmentInfo){if(this.segmentMetadataTrack_){var segment=segmentInfo.segment,start=segment.start,end=segment.end;if(finite(start)&&finite(end)){removeCuesFromTrack(start,end,this.segmentMetadataTrack_);var Cue=window.WebKitDataCue||window.VTTCue,value={custom:segment.custom,dateTimeObject:segment.dateTimeObject,dateTimeString:segment.dateTimeString,bandwidth:segmentInfo.playlist.attributes.BANDWIDTH,resolution:segmentInfo.playlist.attributes.RESOLUTION,codecs:segmentInfo.playlist.attributes.CODECS,byteLength:segmentInfo.byteLength,uri:segmentInfo.uri,timeline:segmentInfo.timeline,playlist:segmentInfo.playlist.id,start:start,end:end},data,cue=new Cue(start,end,JSON.stringify(value));cue.value=value,this.segmentMetadataTrack_.addCue(cue)}}},SegmentLoader}(videojs.EventTarget);function noop(){}var toTitleCase=function toTitleCase(string){return"string"!=typeof string?string:string.replace(/./,(function(w){return w.toUpperCase()}))},bufferTypes=["video","audio"],_updating=function updating(type,sourceUpdater){var sourceBuffer=sourceUpdater[type+"Buffer"];return sourceBuffer&&sourceBuffer.updating||sourceUpdater.queuePending[type]},nextQueueIndexOfType=function nextQueueIndexOfType(type,queue){for(var i=0;i=segmentInfo.playlist.segments.length){segmentInfo=null;break}segmentInfo=this.generateSegmentInfo_({playlist:segmentInfo.playlist,mediaIndex:segmentInfo.mediaIndex+1,startOfSegment:segmentInfo.startOfSegment+segmentInfo.duration,isSyncRequest:segmentInfo.isSyncRequest})}return segmentInfo},_proto.stopForError=function stopForError(error){this.error(error),this.state="READY",this.pause(),this.trigger("error")},_proto.segmentRequestFinished_=function segmentRequestFinished_(error,simpleSegment,result){var _this3=this;if(this.subtitlesTrack_){if(this.saveTransferStats_(simpleSegment.stats),!this.pendingSegment_)return this.state="READY",void(this.mediaRequestsAborted+=1);if(error)return error.code===REQUEST_ERRORS_TIMEOUT&&this.handleTimeout_(),error.code===REQUEST_ERRORS_ABORTED?this.mediaRequestsAborted+=1:this.mediaRequestsErrored+=1,void this.stopForError(error);var segmentInfo=this.pendingSegment_;this.saveBandwidthRelatedStats_(segmentInfo.duration,simpleSegment.stats),this.state="APPENDING",this.trigger("appending");var segment=segmentInfo.segment;if(segment.map&&(segment.map.bytes=simpleSegment.map.bytes),segmentInfo.bytes=simpleSegment.bytes,"function"!=typeof window.WebVTT&&this.subtitlesTrack_&&this.subtitlesTrack_.tech_){var loadHandler,errorHandler=function errorHandler(){_this3.subtitlesTrack_.tech_.off("vttjsloaded",loadHandler),_this3.stopForError({message:"Error loading vtt.js"})};return loadHandler=function loadHandler(){_this3.subtitlesTrack_.tech_.off("vttjserror",errorHandler),_this3.segmentRequestFinished_(error,simpleSegment,result)},this.state="WAITING_ON_VTTJS",this.subtitlesTrack_.tech_.one("vttjsloaded",loadHandler),void this.subtitlesTrack_.tech_.one("vttjserror",errorHandler)}segment.requested=!0;try{this.parseVTTCues_(segmentInfo)}catch(e){return void this.stopForError({message:e.message})}if(this.updateTimeMapping_(segmentInfo,this.syncController_.timelines[segmentInfo.timeline],this.playlist_),segmentInfo.cues.length?segmentInfo.timingInfo={start:segmentInfo.cues[0].startTime,end:segmentInfo.cues[segmentInfo.cues.length-1].endTime}:segmentInfo.timingInfo={start:segmentInfo.startOfSegment,end:segmentInfo.startOfSegment+segmentInfo.duration},segmentInfo.isSyncRequest)return this.trigger("syncinfoupdate"),this.pendingSegment_=null,void(this.state="READY");segmentInfo.byteLength=segmentInfo.bytes.byteLength,this.mediaSecondsLoaded+=segment.duration,segmentInfo.cues.forEach((function(cue){_this3.subtitlesTrack_.addCue(_this3.featuresNativeTextTracks_?new window.VTTCue(cue.startTime,cue.endTime,cue.text):cue)})),removeDuplicateCuesFromTrack(this.subtitlesTrack_),this.handleAppendsDone_()}else this.state="READY"},_proto.handleData_=function handleData_(){},_proto.updateTimingInfoEnd_=function updateTimingInfoEnd_(){},_proto.parseVTTCues_=function parseVTTCues_(segmentInfo){var decoder,decodeBytesToString=!1;"function"==typeof window.TextDecoder?decoder=new window.TextDecoder("utf8"):(decoder=window.WebVTT.StringDecoder(),decodeBytesToString=!0);var parser=new window.WebVTT.Parser(window,window.vttjs,decoder);if(segmentInfo.cues=[],segmentInfo.timestampmap={MPEGTS:0,LOCAL:0},parser.oncue=segmentInfo.cues.push.bind(segmentInfo.cues),parser.ontimestampmap=function(map){segmentInfo.timestampmap=map},parser.onparsingerror=function(error){videojs.log.warn("Error encountered when parsing cues: "+error.message)},segmentInfo.segment.map){var mapData=segmentInfo.segment.map.bytes;decodeBytesToString&&(mapData=uint8ToUtf8(mapData)),parser.parse(mapData)}var segmentData=segmentInfo.bytes;decodeBytesToString&&(segmentData=uint8ToUtf8(segmentData)),parser.parse(segmentData),parser.flush()},_proto.updateTimeMapping_=function updateTimeMapping_(segmentInfo,mappingObj,playlist){var segment=segmentInfo.segment;if(mappingObj)if(segmentInfo.cues.length){var timestampmap=segmentInfo.timestampmap,diff=timestampmap.MPEGTS/clock_1-timestampmap.LOCAL+mappingObj.mapping;if(segmentInfo.cues.forEach((function(cue){cue.startTime+=diff,cue.endTime+=diff})),!playlist.syncInfo){var firstStart=segmentInfo.cues[0].startTime,lastStart=segmentInfo.cues[segmentInfo.cues.length-1].startTime;playlist.syncInfo={mediaSequence:playlist.mediaSequence+segmentInfo.mediaIndex,time:Math.min(firstStart,lastStart-segment.duration)}}}else segment.empty=!0},VTTSegmentLoader}(SegmentLoader),findAdCue=function findAdCue(track,mediaTime){for(var cues=track.cues,i=0;i=cue.adStartTime&&mediaTime<=cue.adEndTime)return cue}return null},updateAdCues=function updateAdCues(media,track,offset){if(void 0===offset&&(offset=0),media.segments)for(var mediaTime=offset,cue,i=0;i=distance)&&(lastDistance=distance,syncPoint={time:start,segmentIndex:partAndSegment.segmentIndex,partIndex:partAndSegment.partIndex})}}return syncPoint}},{name:"Discontinuity",run:function run(syncController,playlist,duration,currentTimeline,currentTime){var syncPoint=null;if(currentTime=currentTime||0,playlist.discontinuityStarts&&playlist.discontinuityStarts.length)for(var lastDistance=null,i=0;i=distance)&&(lastDistance=distance,syncPoint={time:discontinuitySync.time,segmentIndex:segmentIndex,partIndex:null})}}return syncPoint}},{name:"Playlist",run:function run(syncController,playlist,duration,currentTimeline,currentTime){var syncPoint;return playlist.syncInfo?{time:playlist.syncInfo.time,segmentIndex:playlist.syncInfo.mediaSequence-playlist.mediaSequence,partIndex:null}:null}}],SyncController=function(_videojs$EventTarget){function SyncController(options){var _this;return(_this=_videojs$EventTarget.call(this)||this).timelines=[],_this.discontinuities=[],_this.timelineToDatetimeMappings={},_this.logger_=logger("SyncController"),_this}inheritsLoose(SyncController,_videojs$EventTarget);var _proto=SyncController.prototype;return _proto.getSyncPoint=function getSyncPoint(playlist,duration,currentTimeline,currentTime){var syncPoints=this.runStrategies_(playlist,duration,currentTimeline,currentTime);return syncPoints.length?this.selectSyncPoint_(syncPoints,{key:"time",value:currentTime}):null},_proto.getExpiredTime=function getExpiredTime(playlist,duration){if(!playlist||!playlist.segments)return null;var syncPoints=this.runStrategies_(playlist,duration,playlist.discontinuitySequence,0);if(!syncPoints.length)return null;var syncPoint=this.selectSyncPoint_(syncPoints,{key:"segmentIndex",value:0});return syncPoint.segmentIndex>0&&(syncPoint.time*=-1),Math.abs(syncPoint.time+sumDurations({defaultDuration:playlist.targetDuration,durationList:playlist.segments,startIndex:syncPoint.segmentIndex,endIndex:0}))},_proto.runStrategies_=function runStrategies_(playlist,duration,currentTimeline,currentTime){for(var syncPoints=[],i=0;i86400)videojs.log.warn("Not saving expired segment info. Media sequence gap "+mediaSequenceDiff+" is too large.");else for(var i=mediaSequenceDiff-1;i>=0;i--){var lastRemovedSegment=oldPlaylist.segments[i];if(lastRemovedSegment&&void 0!==lastRemovedSegment.start){newPlaylist.syncInfo={mediaSequence:oldPlaylist.mediaSequence+i,time:lastRemovedSegment.start},this.logger_("playlist refresh sync: [time:"+newPlaylist.syncInfo.time+", mediaSequence: "+newPlaylist.syncInfo.mediaSequence+"]"),this.trigger("syncinfoupdate");break}}},_proto.setDateTimeMappingForStart=function setDateTimeMappingForStart(playlist){if(this.timelineToDatetimeMappings={},playlist.segments&&playlist.segments.length&&playlist.segments[0].dateTimeObject){var firstSegment=playlist.segments[0],playlistTimestamp=firstSegment.dateTimeObject.getTime()/1e3;this.timelineToDatetimeMappings[firstSegment.timeline]=-playlistTimestamp}},_proto.saveSegmentTimingInfo=function saveSegmentTimingInfo(_ref){var segmentInfo=_ref.segmentInfo,shouldSaveTimelineMapping=_ref.shouldSaveTimelineMapping,didCalculateSegmentTimeMapping=this.calculateSegmentTimeMapping_(segmentInfo,segmentInfo.timingInfo,shouldSaveTimelineMapping),segment=segmentInfo.segment;didCalculateSegmentTimeMapping&&(this.saveDiscontinuitySyncInfo_(segmentInfo),segmentInfo.playlist.syncInfo||(segmentInfo.playlist.syncInfo={mediaSequence:segmentInfo.playlist.mediaSequence+segmentInfo.mediaIndex,time:segment.start}));var dateTime=segment.dateTimeObject;segment.discontinuity&&shouldSaveTimelineMapping&&dateTime&&(this.timelineToDatetimeMappings[segment.timeline]=-dateTime.getTime()/1e3)},_proto.timestampOffsetForTimeline=function timestampOffsetForTimeline(timeline){return void 0===this.timelines[timeline]?null:this.timelines[timeline].time},_proto.mappingForTimeline=function mappingForTimeline(timeline){return void 0===this.timelines[timeline]?null:this.timelines[timeline].mapping},_proto.calculateSegmentTimeMapping_=function calculateSegmentTimeMapping_(segmentInfo,timingInfo,shouldSaveTimelineMapping){var segment=segmentInfo.segment,part=segmentInfo.part,mappingObj=this.timelines[segmentInfo.timeline],start,end;if("number"==typeof segmentInfo.timestampOffset)mappingObj={time:segmentInfo.startOfSegment,mapping:segmentInfo.startOfSegment-timingInfo.start},shouldSaveTimelineMapping&&(this.timelines[segmentInfo.timeline]=mappingObj,this.trigger("timestampoffset"),this.logger_("time mapping for timeline "+segmentInfo.timeline+": [time: "+mappingObj.time+"] [mapping: "+mappingObj.mapping+"]")),start=segmentInfo.startOfSegment,end=timingInfo.end+mappingObj.mapping;else{if(!mappingObj)return!1;start=timingInfo.start+mappingObj.mapping,end=timingInfo.end+mappingObj.mapping}return part&&(part.start=start,part.end=end),(!segment.start||startaccuracy){var time=void 0;time=mediaIndexDiff<0?segment.start-sumDurations({defaultDuration:playlist.targetDuration,durationList:playlist.segments,startIndex:segmentInfo.mediaIndex,endIndex:segmentIndex}):segment.end+sumDurations({defaultDuration:playlist.targetDuration,durationList:playlist.segments,startIndex:segmentInfo.mediaIndex+1,endIndex:segmentIndex}),this.discontinuities[discontinuity]={time:time,accuracy:accuracy}}}},_proto.dispose=function dispose(){this.trigger("dispose"),this.off()},SyncController}(videojs.EventTarget),TimelineChangeController=function(_videojs$EventTarget){function TimelineChangeController(){var _this;return(_this=_videojs$EventTarget.call(this)||this).pendingTimelineChanges_={},_this.lastTimelineChanges_={},_this}inheritsLoose(TimelineChangeController,_videojs$EventTarget);var _proto=TimelineChangeController.prototype;return _proto.clearPendingTimelineChange=function clearPendingTimelineChange(type){this.pendingTimelineChanges_[type]=null,this.trigger("pendingtimelinechange")},_proto.pendingTimelineChange=function pendingTimelineChange(_ref){var type=_ref.type,from=_ref.from,to=_ref.to;return"number"==typeof from&&"number"==typeof to&&(this.pendingTimelineChanges_[type]={type:type,from:from,to:to},this.trigger("pendingtimelinechange")),this.pendingTimelineChanges_[type]},_proto.lastTimelineChange=function lastTimelineChange(_ref2){var type=_ref2.type,from=_ref2.from,to=_ref2.to;return"number"==typeof from&&"number"==typeof to&&(this.lastTimelineChanges_[type]={type:type,from:from,to:to},delete this.pendingTimelineChanges_[type],this.trigger("timelinechange")),this.lastTimelineChanges_[type]},_proto.dispose=function dispose(){this.trigger("dispose"),this.pendingTimelineChanges_={},this.lastTimelineChanges_={},this.off()},TimelineChangeController}(videojs.EventTarget),workerCode,Decrypter=factory(transform(getWorkerString((function(){function createCommonjsModule(fn,basedir,module){return fn(module={path:basedir,exports:{},require:function require(path,base){return commonjsRequire(path,null==base?module.path:base)}},module.exports),module.exports}function commonjsRequire(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}var createClass=createCommonjsModule((function(module){function _defineProperties(target,props){for(var i=0;i-1},_proto.trigger=function trigger(type){var callbacks=this.listeners[type];if(callbacks)if(2===arguments.length)for(var length=callbacks.length,i=0;i=e||r.startTime===r.endTime&&r.startTime<=e&&r.startTime+.5>=e)&&t.push(r)}if(o=!1,t.length!==this.activeCues_.length)o=!0;else for(var a=0;a]*>?)?/);return e=e[1]||e[2],t=t.substr(e.length),e}());)"<"!==i[0]?p.appendChild(e.document.createTextNode((s=i,yi.innerHTML=s,s=yi.textContent,yi.textContent="",s))):"/"!==i[1]?(a=pi(i.substr(1,i.length-2)))?(n=e.document.createProcessingInstruction("timestamp",a),p.appendChild(n)):(r=i.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/))&&(l=r[1],c=r[3],d=void 0,d=vi[l],(n=d?(d=e.document.createElement(d),(l=bi[l])&&c&&(d[l]=c.trim()),d):null)&&(o=p,Ti[(u=n).localName]&&Ti[u.localName]!==o.localName||(r[2]&&((a=r[2].split(".")).forEach(function(e){var t=/^bg_/.test(e),e=t?e.slice(3):e;_i.hasOwnProperty(e)&&(e=_i[e],n.style[t?"background-color":"color"]=e)}),n.className=a.join(" ")),f.push(r[1]),p.appendChild(n),p=n))):f.length&&f[f.length-1]===i.substr(2).replace(">","")&&(f.pop(),p=p.parentNode);return h}var wi=[[1470,1470],[1472,1472],[1475,1475],[1478,1478],[1488,1514],[1520,1524],[1544,1544],[1547,1547],[1549,1549],[1563,1563],[1566,1610],[1645,1647],[1649,1749],[1765,1766],[1774,1775],[1786,1805],[1807,1808],[1810,1839],[1869,1957],[1969,1969],[1984,2026],[2036,2037],[2042,2042],[2048,2069],[2074,2074],[2084,2084],[2088,2088],[2096,2110],[2112,2136],[2142,2142],[2208,2208],[2210,2220],[8207,8207],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64449],[64467,64829],[64848,64911],[64914,64967],[65008,65020],[65136,65140],[65142,65276],[67584,67589],[67592,67592],[67594,67637],[67639,67640],[67644,67644],[67647,67669],[67671,67679],[67840,67867],[67872,67897],[67903,67903],[67968,68023],[68030,68031],[68096,68096],[68112,68115],[68117,68119],[68121,68147],[68160,68167],[68176,68184],[68192,68223],[68352,68405],[68416,68437],[68440,68466],[68472,68479],[68608,68680],[126464,126467],[126469,126495],[126497,126498],[126500,126500],[126503,126503],[126505,126514],[126516,126519],[126521,126521],[126523,126523],[126530,126530],[126535,126535],[126537,126537],[126539,126539],[126541,126543],[126545,126546],[126548,126548],[126551,126551],[126553,126553],[126555,126555],[126557,126557],[126559,126559],[126561,126562],[126564,126564],[126567,126570],[126572,126578],[126580,126583],[126585,126588],[126590,126590],[126592,126601],[126603,126619],[126625,126627],[126629,126633],[126635,126651],[1114109,1114109]];function Ei(e){var t=[],i="";if(!e||!e.childNodes)return"ltr";function a(e,t){for(var i=t.childNodes.length-1;0<=i;i--)e.push(t.childNodes[i])}for(a(t,e);i=function e(t){if(!t||!t.length)return null;var i=t.pop(),n=i.textContent||i.innerText;if(n){var r=n.match(/^.*(\n|\r)/);return r?r[t.length=0]:n}return"ruby"===i.tagName?e(t):i.childNodes?(a(t,i),e(t)):void 0}(t);)for(var n=0;n=i[0]&&e<=i[1])return 1}}(i.charCodeAt(n)))return"rtl";return"ltr"}function ki(){}function Ci(e,t,i){ki.call(this),this.cue=t,this.cueDiv=Si(e,t.text);var n={color:"rgba(255, 255, 255, 1)",backgroundColor:"rgba(0, 0, 0, 0.8)",position:"relative",left:0,right:0,top:0,bottom:0,display:"inline",writingMode:""===t.vertical?"horizontal-tb":"lr"===t.vertical?"vertical-lr":"vertical-rl",unicodeBidi:"plaintext"};this.applyStyles(n,this.cueDiv),this.div=e.document.createElement("div"),n={direction:Ei(this.cueDiv),writingMode:""===t.vertical?"horizontal-tb":"lr"===t.vertical?"vertical-lr":"vertical-rl",unicodeBidi:"plaintext",textAlign:"middle"===t.align?"center":t.align,font:i.font,whiteSpace:"pre-line",position:"absolute"},this.applyStyles(n),this.div.appendChild(this.cueDiv);var r=0;switch(t.positionAlign){case"start":r=t.position;break;case"center":r=t.position-t.size/2;break;case"end":r=t.position-t.size}""===t.vertical?this.applyStyles({left:this.formatStyle(r,"%"),width:this.formatStyle(t.size,"%")}):this.applyStyles({top:this.formatStyle(r,"%"),height:this.formatStyle(t.size,"%")}),this.move=function(e){this.applyStyles({top:this.formatStyle(e.top,"px"),bottom:this.formatStyle(e.bottom,"px"),left:this.formatStyle(e.left,"px"),right:this.formatStyle(e.right,"px"),height:this.formatStyle(e.height,"px"),width:this.formatStyle(e.width,"px")})}}function Ii(e){var t,i,n,r;e.div&&(t=e.div.offsetHeight,i=e.div.offsetWidth,n=e.div.offsetTop,r=(r=e.div.childNodes)&&(r=r[0])&&r.getClientRects&&r.getClientRects(),e=e.div.getBoundingClientRect(),r=r?Math.max(r[0]&&r[0].height||0,e.height/r.length):0),this.left=e.left,this.right=e.right,this.top=e.top||n,this.height=e.height||t,this.bottom=e.bottom||n+(e.height||t),this.width=e.width||i,this.lineHeight=void 0!==r?r:e.lineHeight}function xi(e,t,o,u){var i,n=new Ii(t),r=t.cue,a=function(e){if("number"==typeof e.line&&(e.snapToLines||0<=e.line&&e.line<=100))return e.line;if(!e.track||!e.track.textTrackList||!e.track.textTrackList.mediaElement)return-1;for(var t=e.track,i=t.textTrackList,n=0,r=0;rd&&(c=c<0?-1:1,c*=Math.ceil(d/l)*l),a<0&&(c+=""===r.vertical?o.height:o.width,s=s.reverse()),n.move(h,c)}else{var p=n.lineHeight/o.height*100;switch(r.lineAlign){case"center":a-=p/2;break;case"end":a-=p}switch(r.vertical){case"":t.applyStyles({top:t.formatStyle(a,"%")});break;case"rl":t.applyStyles({left:t.formatStyle(a,"%")});break;case"lr":t.applyStyles({right:t.formatStyle(a,"%")})}s=["+y","-x","+x","-y"],n=new Ii(t)}n=function(e,t){for(var i,n=new Ii(e),r=1,a=0;ae.left&&this.tope.top},Ii.prototype.overlapsAny=function(e){for(var t=0;t=e.top&&this.bottom<=e.bottom&&this.left>=e.left&&this.right<=e.right},Ii.prototype.overlapsOppositeAxis=function(e,t){switch(t){case"+x":return this.lefte.right;case"+y":return this.tope.bottom}},Ii.prototype.intersectPercentage=function(e){return Math.max(0,Math.min(this.right,e.right)-Math.max(this.left,e.left))*Math.max(0,Math.min(this.bottom,e.bottom)-Math.max(this.top,e.top))/(this.height*this.width)},Ii.prototype.toCSSCompatValues=function(e){return{top:this.top-e.top,bottom:e.bottom-this.bottom,left:this.left-e.left,right:e.right-this.right,height:this.height,width:this.width}},Ii.getSimpleBoxPosition=function(e){var t=e.div?e.div.offsetHeight:e.tagName?e.offsetHeight:0,i=e.div?e.div.offsetWidth:e.tagName?e.offsetWidth:0,n=e.div?e.div.offsetTop:e.tagName?e.offsetTop:0;return{left:(e=e.div?e.div.getBoundingClientRect():e.tagName?e.getBoundingClientRect():e).left,right:e.right,top:e.top||n,height:e.height||t,bottom:e.bottom||n+(e.height||t),width:e.width||i}},Ai.StringDecoder=function(){return{decode:function(e){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}},Ai.convertCueToDOMTree=function(e,t){return e&&t?Si(e,t):null};Ai.processCues=function(n,r,e){if(!n||!r||!e)return null;for(;e.firstChild;)e.removeChild(e.firstChild);var a=n.document.createElement("div");if(a.style.position="absolute",a.style.left="0",a.style.right="0",a.style.top="0",a.style.bottom="0",a.style.margin="1.5%",e.appendChild(a),function(e){for(var t=0;tt.length;u--)l.el_.removeChild(n[u-1]);n.length=t.length})},e}(pt)),pt.registerComponent("TimeTooltip",function(i){function e(e,t){t=i.call(this,e,t)||this;return t.update=We(Ve(ft(t),t.update),30),t}mt(e,i);var t=e.prototype;return t.createEl=function(){return i.prototype.createEl.call(this,"div",{className:"vjs-time-tooltip"},{"aria-hidden":"true"})},t.update=function(e,t,i){var n=he(this.el_),r=de(this.player_.el()),a=e.width*t;r&&n&&(t=e.left-r.left+a,r=e.width-a+(r.right-e.right),t<(e=n.width/2)?e+=e-t:rn.width&&(e=n.width),e=Math.round(e),this.el_.style.right="-"+e+"px",this.write(i))},t.write=function(e){J(this.el_,e)},t.updateTime=function(n,r,a,s){var o=this;this.requestNamedAnimationFrame("TimeTooltip#updateTime",function(){var e,t,i=o.player_.duration();i=o.player_.liveTracker&&o.player_.liveTracker.isLive()?((t=(e=o.player_.liveTracker.liveWindow())-r*e)<1?"":"-")+ln(t,e):ln(a,i),o.update(n,r,i),s&&s()})},e}(pt));Xt=function(i){function e(e,t){t=i.call(this,e,t)||this;return t.update=We(Ve(ft(t),t.update),30),t}mt(e,i);var t=e.prototype;return t.createEl=function(){return i.prototype.createEl.call(this,"div",{className:"vjs-play-progress vjs-slider-bar"},{"aria-hidden":"true"})},t.update=function(e,t){var i,n=this.getChild("timeTooltip");n&&(i=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime(),n.updateTime(e,t,i))},e}(pt);Xt.prototype.options_={children:[]},q||A||Xt.prototype.options_.children.push("timeTooltip"),pt.registerComponent("PlayProgressBar",Xt);I=function(i){function e(e,t){t=i.call(this,e,t)||this;return t.update=We(Ve(ft(t),t.update),30),t}mt(e,i);var t=e.prototype;return t.createEl=function(){return i.prototype.createEl.call(this,"div",{className:"vjs-mouse-display"})},t.update=function(e,t){var i=this,n=t*this.player_.duration();this.getChild("timeTooltip").updateTime(e,t,n,function(){i.el_.style.left=e.width*t+"px"})},e}(pt);I.prototype.options_={children:["timeTooltip"]},pt.registerComponent("MouseTimeDisplay",I);Bt=function(a){function e(e,t){t=a.call(this,e,t)||this;return t.setEventHandlers_(),t}mt(e,a);var t=e.prototype;return t.setEventHandlers_=function(){var t=this;this.update_=Ve(this,this.update),this.update=We(this.update_,30),this.on(this.player_,["ended","durationchange","timeupdate"],this.update),this.player_.liveTracker&&this.on(this.player_.liveTracker,"liveedgechange",this.update),this.updateInterval=null,this.enableIntervalHandler_=function(e){return t.enableInterval_(e)},this.disableIntervalHandler_=function(e){return t.disableInterval_(e)},this.on(this.player_,["playing"],this.enableIntervalHandler_),this.on(this.player_,["ended","pause","waiting"],this.disableIntervalHandler_),"hidden"in document&&"visibilityState"in document&&this.on(document,"visibilitychange",this.toggleVisibility_)},t.toggleVisibility_=function(e){"hidden"===document.visibilityState?(this.cancelNamedAnimationFrame("SeekBar#update"),this.cancelNamedAnimationFrame("Slider#update"),this.disableInterval_(e)):(this.player_.ended()||this.player_.paused()||this.enableInterval_(),this.update())},t.enableInterval_=function(){this.updateInterval||(this.updateInterval=this.setInterval(this.update,30))},t.disableInterval_=function(e){this.player_.liveTracker&&this.player_.liveTracker.isLive()&&e&&"ended"!==e.type||this.updateInterval&&(this.clearInterval(this.updateInterval),this.updateInterval=null)},t.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-holder"},{"aria-label":this.localize("Progress Bar")})},t.update=function(e){var n=this;if("hidden"!==document.visibilityState){var r=a.prototype.update.call(this);return this.requestNamedAnimationFrame("SeekBar#update",function(){var e=n.player_.ended()?n.player_.duration():n.getCurrentTime_(),t=n.player_.liveTracker,i=n.player_.duration();t&&t.isLive()&&(i=n.player_.liveTracker.liveCurrentTime()),n.percent_!==r&&(n.el_.setAttribute("aria-valuenow",(100*r).toFixed(2)),n.percent_=r),n.currentTime_===e&&n.duration_===i||(n.el_.setAttribute("aria-valuetext",n.localize("progress bar timing: currentTime={1} duration={2}",[ln(e,i),ln(i,i)],"{1} of {2}")),n.currentTime_=e,n.duration_=i),n.bar&&n.bar.update(de(n.el()),n.getProgress())}),r}},t.userSeek_=function(e){this.player_.liveTracker&&this.player_.liveTracker.isLive()&&this.player_.liveTracker.nextSeekedFromUser(),this.player_.currentTime(e)},t.getCurrentTime_=function(){return this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime()},t.getPercent=function(){var e,t=this.getCurrentTime_(),i=this.player_.liveTracker;return i&&i.isLive()?(e=(t-i.seekableStart())/i.liveWindow(),i.atLiveEdge()&&(e=1)):e=t/this.player_.duration(),e},t.handleMouseDown=function(e){_e(e)&&(e.stopPropagation(),this.videoWasPlaying=!this.player_.paused(),this.player_.pause(),a.prototype.handleMouseDown.call(this,e))},t.handleMouseMove=function(e,t){if(void 0===t&&(t=!1),_e(e)){t||this.player_.scrubbing()||this.player_.scrubbing(!0);var i=this.calculateDistance(e),n=this.player_.liveTracker;if(n&&n.isLive()){if(.99<=i)return void n.seekToLiveEdge();var r,t=n.seekableStart(),e=n.liveCurrentTime();if((r=(r=e<=(r=t+i*n.liveWindow())?e:r)<=t?t+.1:r)===1/0)return}else(r=i*this.player_.duration())===this.player_.duration()&&(r-=.1);this.userSeek_(r)}},t.enable=function(){a.prototype.enable.call(this);var e=this.getChild("mouseTimeDisplay");e&&e.show()},t.disable=function(){a.prototype.disable.call(this);var e=this.getChild("mouseTimeDisplay");e&&e.hide()},t.handleMouseUp=function(e){a.prototype.handleMouseUp.call(this,e),e&&e.stopPropagation(),this.player_.scrubbing(!1),this.player_.trigger({type:"timeupdate",target:this,manuallyTriggered:!0}),this.videoWasPlaying?Et(this.player_.play()):this.update_()},t.stepForward=function(){this.userSeek_(this.player_.currentTime()+5)},t.stepBack=function(){this.userSeek_(this.player_.currentTime()-5)},t.handleAction=function(e){this.player_.paused()?this.player_.play():this.player_.pause()},t.handleKeyDown=function(e){var t,i=this.player_.liveTracker;ht.isEventKey(e,"Space")||ht.isEventKey(e,"Enter")?(e.preventDefault(),e.stopPropagation(),this.handleAction(e)):ht.isEventKey(e,"Home")?(e.preventDefault(),e.stopPropagation(),this.userSeek_(0)):ht.isEventKey(e,"End")?(e.preventDefault(),e.stopPropagation(),i&&i.isLive()?this.userSeek_(i.liveCurrentTime()):this.userSeek_(this.player_.duration())):/^[0-9]$/.test(ht(e))?(e.preventDefault(),e.stopPropagation(),t=10*(ht.codes[ht(e)]-ht.codes[0])/100,i&&i.isLive()?this.userSeek_(i.seekableStart()+i.liveWindow()*t):this.userSeek_(this.player_.duration()*t)):ht.isEventKey(e,"PgDn")?(e.preventDefault(),e.stopPropagation(),this.userSeek_(this.player_.currentTime()-60)):ht.isEventKey(e,"PgUp")?(e.preventDefault(),e.stopPropagation(),this.userSeek_(this.player_.currentTime()+60)):a.prototype.handleKeyDown.call(this,e)},t.dispose=function(){this.disableInterval_(),this.off(this.player_,["ended","durationchange","timeupdate"],this.update),this.player_.liveTracker&&this.off(this.player_.liveTracker,"liveedgechange",this.update),this.off(this.player_,["playing"],this.enableIntervalHandler_),this.off(this.player_,["ended","pause","waiting"],this.disableIntervalHandler_),"hidden"in document&&"visibilityState"in document&&this.off(document,"visibilitychange",this.toggleVisibility_),a.prototype.dispose.call(this)},e}(li);Bt.prototype.options_={children:["loadProgressBar","playProgressBar"],barName:"playProgressBar"},q||A||Bt.prototype.options_.children.splice(1,0,"mouseTimeDisplay"),pt.registerComponent("SeekBar",Bt);Ft=function(n){function e(e,t){var i=n.call(this,e,t)||this;return i.handleMouseMove=We(Ve(ft(i),i.handleMouseMove),30),i.throttledHandleMouseSeek=We(Ve(ft(i),i.handleMouseSeek),30),i.handleMouseUpHandler_=function(e){return i.handleMouseUp(e)},i.handleMouseDownHandler_=function(e){return i.handleMouseDown(e)},i.enable(),i}mt(e,n);var t=e.prototype;return t.createEl=function(){return n.prototype.createEl.call(this,"div",{className:"vjs-progress-control vjs-control"})},t.handleMouseMove=function(e){var t,i,n,r,a=this.getChild("seekBar");a&&(t=a.getChild("playProgressBar"),i=a.getChild("mouseTimeDisplay"),(t||i)&&(r=he(n=a.el()),e=pe(n,e).x,e=cn(e,0,1),i&&i.update(r,e),t&&t.update(r,a.getProgress())))},t.handleMouseSeek=function(e){var t=this.getChild("seekBar");t&&t.handleMouseMove(e)},t.enabled=function(){return this.enabled_},t.disable=function(){var e;this.children().forEach(function(e){return e.disable&&e.disable()}),this.enabled()&&(this.off(["mousedown","touchstart"],this.handleMouseDownHandler_),this.off(this.el_,"mousemove",this.handleMouseMove),this.removeListenersAddedOnMousedownAndTouchstart(),this.addClass("disabled"),this.enabled_=!1,this.player_.scrubbing()&&(e=this.getChild("seekBar"),this.player_.scrubbing(!1),e.videoWasPlaying&&Et(this.player_.play())))},t.enable=function(){this.children().forEach(function(e){return e.enable&&e.enable()}),this.enabled()||(this.on(["mousedown","touchstart"],this.handleMouseDownHandler_),this.on(this.el_,"mousemove",this.handleMouseMove),this.removeClass("disabled"),this.enabled_=!0)},t.removeListenersAddedOnMousedownAndTouchstart=function(){var e=this.el_.ownerDocument;this.off(e,"mousemove",this.throttledHandleMouseSeek),this.off(e,"touchmove",this.throttledHandleMouseSeek),this.off(e,"mouseup",this.handleMouseUpHandler_),this.off(e,"touchend",this.handleMouseUpHandler_)},t.handleMouseDown=function(e){var t=this.el_.ownerDocument,i=this.getChild("seekBar");i&&i.handleMouseDown(e),this.on(t,"mousemove",this.throttledHandleMouseSeek),this.on(t,"touchmove",this.throttledHandleMouseSeek),this.on(t,"mouseup",this.handleMouseUpHandler_),this.on(t,"touchend",this.handleMouseUpHandler_)},t.handleMouseUp=function(e){var t=this.getChild("seekBar");t&&t.handleMouseUp(e),this.removeListenersAddedOnMousedownAndTouchstart()},e}(pt);Ft.prototype.options_={children:["seekBar"]},pt.registerComponent("ProgressControl",Ft);jt=function(n){function e(e,t){var i=n.call(this,e,t)||this;return i.on(e,["enterpictureinpicture","leavepictureinpicture"],function(e){return i.handlePictureInPictureChange(e)}),i.on(e,["disablepictureinpicturechanged","loadedmetadata"],function(e){return i.handlePictureInPictureEnabledChange(e)}),i.on(e,["loadedmetadata","audioonlymodechange","audiopostermodechange"],function(){"audio"===e.currentType().substring(0,5)||e.audioPosterMode()||e.audioOnlyMode()?(e.isInPictureInPicture()&&e.exitPictureInPicture(),i.hide()):i.show()}),i.disable(),i}mt(e,n);var t=e.prototype;return t.buildCSSClass=function(){return"vjs-picture-in-picture-control "+n.prototype.buildCSSClass.call(this)},t.handlePictureInPictureEnabledChange=function(){document.pictureInPictureEnabled&&!1===this.player_.disablePictureInPicture()?this.enable():this.disable()},t.handlePictureInPictureChange=function(e){this.player_.isInPictureInPicture()?this.controlText("Exit Picture-in-Picture"):this.controlText("Picture-in-Picture"),this.handlePictureInPictureEnabledChange()},t.handleClick=function(e){this.player_.isInPictureInPicture()?this.player_.exitPictureInPicture():this.player_.requestPictureInPicture()},e}(sn);jt.prototype.controlText_="Picture-in-Picture",pt.registerComponent("PictureInPictureToggle",jt);j=function(n){function e(e,t){var i=n.call(this,e,t)||this;return i.on(e,"fullscreenchange",function(e){return i.handleFullscreenChange(e)}),!1===document[e.fsApi_.fullscreenEnabled]&&i.disable(),i}mt(e,n);var t=e.prototype;return t.buildCSSClass=function(){return"vjs-fullscreen-control "+n.prototype.buildCSSClass.call(this)},t.handleFullscreenChange=function(e){this.player_.isFullscreen()?this.controlText("Non-Fullscreen"):this.controlText("Fullscreen")},t.handleClick=function(e){this.player_.isFullscreen()?this.player_.exitFullscreen():this.player_.requestFullscreen()},e}(sn);j.prototype.controlText_="Fullscreen",pt.registerComponent("FullscreenToggle",j);pt.registerComponent("VolumeLevel",function(t){function e(){return t.apply(this,arguments)||this}return mt(e,t),e.prototype.createEl=function(){var e=t.prototype.createEl.call(this,"div",{className:"vjs-volume-level"});return e.appendChild(t.prototype.createEl.call(this,"span",{className:"vjs-control-text"})),e},e}(pt)),pt.registerComponent("VolumeLevelTooltip",function(i){function e(e,t){t=i.call(this,e,t)||this;return t.update=We(Ve(ft(t),t.update),30),t}mt(e,i);var t=e.prototype;return t.createEl=function(){return i.prototype.createEl.call(this,"div",{className:"vjs-volume-tooltip"},{"aria-hidden":"true"})},t.update=function(e,t,i,n){if(!i){var r=de(this.el_),a=de(this.player_.el()),i=e.width*t;if(!a||!r)return;t=e.left-a.left+i,a=e.width-i+(a.right-e.right),e=r.width/2;tr.width&&(e=r.width),this.el_.style.right="-"+e+"px"}this.write(n+"%")},t.write=function(e){J(this.el_,e)},t.updateVolume=function(e,t,i,n,r){var a=this;this.requestNamedAnimationFrame("VolumeLevelTooltip#updateVolume",function(){a.update(e,t,i,n.toFixed(0)),r&&r()})},e}(pt));k=function(i){function e(e,t){t=i.call(this,e,t)||this;return t.update=We(Ve(ft(t),t.update),30),t}mt(e,i);var t=e.prototype;return t.createEl=function(){return i.prototype.createEl.call(this,"div",{className:"vjs-mouse-display"})},t.update=function(e,t,i){var n=this,r=100*t;this.getChild("volumeLevelTooltip").updateVolume(e,t,i,r,function(){i?n.el_.style.bottom=e.height*t+"px":n.el_.style.left=e.width*t+"px"})},e}(pt);k.prototype.options_={children:["volumeLevelTooltip"]},pt.registerComponent("MouseVolumeLevelDisplay",k);f=function(n){function e(e,t){var i=n.call(this,e,t)||this;return i.on("slideractive",function(e){return i.updateLastVolume_(e)}),i.on(e,"volumechange",function(e){return i.updateARIAAttributes(e)}),e.ready(function(){return i.updateARIAAttributes()}),i}mt(e,n);var t=e.prototype;return t.createEl=function(){return n.prototype.createEl.call(this,"div",{className:"vjs-volume-bar vjs-slider-bar"},{"aria-label":this.localize("Volume Level"),"aria-live":"polite"})},t.handleMouseDown=function(e){_e(e)&&n.prototype.handleMouseDown.call(this,e)},t.handleMouseMove=function(e){var t,i,n,r=this.getChild("mouseVolumeLevelDisplay");r&&(t=de(n=this.el()),i=this.vertical(),n=pe(n,e),n=i?n.y:n.x,n=cn(n,0,1),r.update(t,n,i)),_e(e)&&(this.checkMuted(),this.player_.volume(this.calculateDistance(e)))},t.checkMuted=function(){this.player_.muted()&&this.player_.muted(!1)},t.getPercent=function(){return this.player_.muted()?0:this.player_.volume()},t.stepForward=function(){this.checkMuted(),this.player_.volume(this.player_.volume()+.1)},t.stepBack=function(){this.checkMuted(),this.player_.volume(this.player_.volume()-.1)},t.updateARIAAttributes=function(e){var t=this.player_.muted()?0:this.volumeAsPercentage_();this.el_.setAttribute("aria-valuenow",t),this.el_.setAttribute("aria-valuetext",t+"%")},t.volumeAsPercentage_=function(){return Math.round(100*this.player_.volume())},t.updateLastVolume_=function(){var e=this,t=this.player_.volume();this.one("sliderinactive",function(){0===e.player_.volume()&&e.player_.lastVolume_(t)})},e}(li);f.prototype.options_={children:["volumeLevel"],barName:"volumeLevel"},q||A||f.prototype.options_.children.splice(0,0,"mouseVolumeLevelDisplay"),f.prototype.playerEvent="volumechange",pt.registerComponent("VolumeBar",f);ui=function(a){function e(e,t){var i,n,r;return(t=void 0===t?{}:t).vertical=t.vertical||!1,"undefined"!=typeof t.volumeBar&&!S(t.volumeBar)||(t.volumeBar=t.volumeBar||{},t.volumeBar.vertical=t.vertical),i=a.call(this,e,t)||this,n=ft(i),(r=e).tech_&&!r.tech_.featuresVolumeControl&&n.addClass("vjs-hidden"),n.on(r,"loadstart",function(){r.tech_.featuresVolumeControl?n.removeClass("vjs-hidden"):n.addClass("vjs-hidden")}),i.throttledHandleMouseMove=We(Ve(ft(i),i.handleMouseMove),30),i.handleMouseUpHandler_=function(e){return i.handleMouseUp(e)},i.on("mousedown",function(e){return i.handleMouseDown(e)}),i.on("touchstart",function(e){return i.handleMouseDown(e)}),i.on("mousemove",function(e){return i.handleMouseMove(e)}),i.on(i.volumeBar,["focus","slideractive"],function(){i.volumeBar.addClass("vjs-slider-active"),i.addClass("vjs-slider-active"),i.trigger("slideractive")}),i.on(i.volumeBar,["blur","sliderinactive"],function(){i.volumeBar.removeClass("vjs-slider-active"),i.removeClass("vjs-slider-active"),i.trigger("sliderinactive")}),i}mt(e,a);var t=e.prototype;return t.createEl=function(){var e="vjs-volume-horizontal";return this.options_.vertical&&(e="vjs-volume-vertical"),a.prototype.createEl.call(this,"div",{className:"vjs-volume-control vjs-control "+e})},t.handleMouseDown=function(e){var t=this.el_.ownerDocument;this.on(t,"mousemove",this.throttledHandleMouseMove),this.on(t,"touchmove",this.throttledHandleMouseMove),this.on(t,"mouseup",this.handleMouseUpHandler_),this.on(t,"touchend",this.handleMouseUpHandler_)},t.handleMouseUp=function(e){var t=this.el_.ownerDocument;this.off(t,"mousemove",this.throttledHandleMouseMove),this.off(t,"touchmove",this.throttledHandleMouseMove),this.off(t,"mouseup",this.handleMouseUpHandler_),this.off(t,"touchend",this.handleMouseUpHandler_)},t.handleMouseMove=function(e){this.volumeBar.handleMouseMove(e)},e}(pt);ui.prototype.options_={children:["volumeBar"]},pt.registerComponent("VolumeControl",ui);Xt=function(a){function e(e,t){var i,n,r=a.call(this,e,t)||this;return i=ft(r),(n=e).tech_&&!n.tech_.featuresMuteControl&&i.addClass("vjs-hidden"),i.on(n,"loadstart",function(){n.tech_.featuresMuteControl?i.removeClass("vjs-hidden"):i.addClass("vjs-hidden")}),r.on(e,["loadstart","volumechange"],function(e){return r.update(e)}),r}mt(e,a);var t=e.prototype;return t.buildCSSClass=function(){return"vjs-mute-control "+a.prototype.buildCSSClass.call(this)},t.handleClick=function(e){var t=this.player_.volume(),i=this.player_.lastVolume_();0===t?(this.player_.volume(i<.1?.1:i),this.player_.muted(!1)):this.player_.muted(!this.player_.muted())},t.update=function(e){this.updateIcon_(),this.updateControlText_()},t.updateIcon_=function(){var e=this.player_.volume(),t=3;q&&this.player_.tech_&&this.player_.tech_.el_&&this.player_.muted(this.player_.tech_.el_.muted),0===e||this.player_.muted()?t=0:e<.33?t=1:e<.67&&(t=2);for(var i=0;i<4;i++)ie(this.el_,"vjs-vol-"+i);te(this.el_,"vjs-vol-"+t)},t.updateControlText_=function(){var e=this.player_.muted()||0===this.player_.volume()?"Unmute":"Mute";this.controlText()!==e&&this.controlText(e)},e}(sn);Xt.prototype.controlText_="Mute",pt.registerComponent("MuteToggle",Xt);I=function(n){function e(e,t){var i;return"undefined"!=typeof(t=void 0===t?{}:t).inline?t.inline=t.inline:t.inline=!0,"undefined"!=typeof t.volumeControl&&!S(t.volumeControl)||(t.volumeControl=t.volumeControl||{},t.volumeControl.vertical=!t.inline),(i=n.call(this,e,t)||this).handleKeyPressHandler_=function(e){return i.handleKeyPress(e)},i.on(e,["loadstart"],function(e){return i.volumePanelState_(e)}),i.on(i.muteToggle,"keyup",function(e){return i.handleKeyPress(e)}),i.on(i.volumeControl,"keyup",function(e){return i.handleVolumeControlKeyUp(e)}),i.on("keydown",function(e){return i.handleKeyPress(e)}),i.on("mouseover",function(e){return i.handleMouseOver(e)}),i.on("mouseout",function(e){return i.handleMouseOut(e)}),i.on(i.volumeControl,["slideractive"],i.sliderActive_),i.on(i.volumeControl,["sliderinactive"],i.sliderInactive_),i}mt(e,n);var t=e.prototype;return t.sliderActive_=function(){this.addClass("vjs-slider-active")},t.sliderInactive_=function(){this.removeClass("vjs-slider-active")},t.volumePanelState_=function(){this.volumeControl.hasClass("vjs-hidden")&&this.muteToggle.hasClass("vjs-hidden")&&this.addClass("vjs-hidden"),this.volumeControl.hasClass("vjs-hidden")&&!this.muteToggle.hasClass("vjs-hidden")&&this.addClass("vjs-mute-toggle-only")},t.createEl=function(){var e="vjs-volume-panel-horizontal";return this.options_.inline||(e="vjs-volume-panel-vertical"),n.prototype.createEl.call(this,"div",{className:"vjs-volume-panel vjs-control "+e})},t.dispose=function(){this.handleMouseOut(),n.prototype.dispose.call(this)},t.handleVolumeControlKeyUp=function(e){ht.isEventKey(e,"Esc")&&this.muteToggle.focus()},t.handleMouseOver=function(e){this.addClass("vjs-hover"),Be(document,"keyup",this.handleKeyPressHandler_)},t.handleMouseOut=function(e){this.removeClass("vjs-hover"),Fe(document,"keyup",this.handleKeyPressHandler_)},t.handleKeyPress=function(e){ht.isEventKey(e,"Esc")&&this.handleMouseOut()},e}(pt);I.prototype.options_={children:["muteToggle","volumeControl"]},pt.registerComponent("VolumePanel",I);var hn=function(n){function e(e,t){var i=n.call(this,e,t)||this;return t&&(i.menuButton_=t.menuButton),i.focusedChild_=-1,i.on("keydown",function(e){return i.handleKeyDown(e)}),i.boundHandleBlur_=function(e){return i.handleBlur(e)},i.boundHandleTapClick_=function(e){return i.handleTapClick(e)},i}mt(e,n);var t=e.prototype;return t.addEventListenerForItem=function(e){e instanceof pt&&(this.on(e,"blur",this.boundHandleBlur_),this.on(e,["tap","click"],this.boundHandleTapClick_))},t.removeEventListenerForItem=function(e){e instanceof pt&&(this.off(e,"blur",this.boundHandleBlur_),this.off(e,["tap","click"],this.boundHandleTapClick_))},t.removeChild=function(e){"string"==typeof e&&(e=this.getChild(e)),this.removeEventListenerForItem(e),n.prototype.removeChild.call(this,e)},t.addItem=function(e){e=this.addChild(e);e&&this.addEventListenerForItem(e)},t.createEl=function(){var e=this.options_.contentElType||"ul";this.contentEl_=$(e,{className:"vjs-menu-content"}),this.contentEl_.setAttribute("role","menu");e=n.prototype.createEl.call(this,"div",{append:this.contentEl_,className:"vjs-menu"});return e.appendChild(this.contentEl_),Be(e,"click",function(e){e.preventDefault(),e.stopImmediatePropagation()}),e},t.dispose=function(){this.contentEl_=null,this.boundHandleBlur_=null,this.boundHandleTapClick_=null,n.prototype.dispose.call(this)},t.handleBlur=function(e){var t=e.relatedTarget||document.activeElement;this.children().some(function(e){return e.el()===t})||(e=this.menuButton_)&&e.buttonPressed_&&t!==e.el().firstChild&&e.unpressButton()},t.handleTapClick=function(t){var e;this.menuButton_&&(this.menuButton_.unpressButton(),e=this.children(),!Array.isArray(e)||(e=e.filter(function(e){return e.el()===t.target})[0])&&"CaptionSettingsMenuItem"!==e.name()&&this.menuButton_.focus())},t.handleKeyDown=function(e){ht.isEventKey(e,"Left")||ht.isEventKey(e,"Down")?(e.preventDefault(),e.stopPropagation(),this.stepForward()):(ht.isEventKey(e,"Right")||ht.isEventKey(e,"Up"))&&(e.preventDefault(),e.stopPropagation(),this.stepBack())},t.stepForward=function(){var e=0;void 0!==this.focusedChild_&&(e=this.focusedChild_+1),this.focus(e)},t.stepBack=function(){var e=0;void 0!==this.focusedChild_&&(e=this.focusedChild_-1),this.focus(e)},t.focus=function(e){void 0===e&&(e=0);var t=this.children().slice();t.length&&t[0].hasClass("vjs-menu-title")&&t.shift(),0=t.length&&(e=t.length-1),t[this.focusedChild_=e].el_.focus())},e}(pt);pt.registerComponent("Menu",hn);Bt=function(n){function e(e,t){var i;(i=n.call(this,e,t=void 0===t?{}:t)||this).menuButton_=new sn(e,t),i.menuButton_.controlText(i.controlText_),i.menuButton_.el_.setAttribute("aria-haspopup","true");t=sn.prototype.buildCSSClass();i.menuButton_.el_.className=i.buildCSSClass()+" "+t,i.menuButton_.removeClass("vjs-control"),i.addChild(i.menuButton_),i.update(),i.enabled_=!0;t=function(e){return i.handleClick(e)};return i.handleMenuKeyUp_=function(e){return i.handleMenuKeyUp(e)},i.on(i.menuButton_,"tap",t),i.on(i.menuButton_,"click",t),i.on(i.menuButton_,"keydown",function(e){return i.handleKeyDown(e)}),i.on(i.menuButton_,"mouseenter",function(){i.addClass("vjs-hover"),i.menu.show(),Be(document,"keyup",i.handleMenuKeyUp_)}),i.on("mouseleave",function(e){return i.handleMouseLeave(e)}),i.on("keydown",function(e){return i.handleSubmenuKeyDown(e)}),i}mt(e,n);var t=e.prototype;return t.update=function(){var e=this.createMenu();this.menu&&(this.menu.dispose(),this.removeChild(this.menu)),this.menu=e,this.addChild(e),this.buttonPressed_=!1,this.menuButton_.el_.setAttribute("aria-expanded","false"),this.items&&this.items.length<=this.hideThreshold_?(this.hide(),this.menu.contentEl_.removeAttribute("role")):(this.show(),this.menu.contentEl_.setAttribute("role","menu"))},t.createMenu=function(){var e,t=new hn(this.player_,{menuButton:this});if(this.hideThreshold_=0,this.options_.title&&(e=$("li",{className:"vjs-menu-title",textContent:ut(this.options_.title),tabIndex:-1}),e=new pt(this.player_,{el:e}),t.addItem(e)),this.items=this.createItems(),this.items)for(var i=0;i select",id:"captions-background-color-%s",label:"Color",options:[ui,Bt,jt,Ft,j,C,I,Xt]},backgroundOpacity:{selector:".vjs-bg-opacity > select",id:"captions-background-opacity-%s",label:"Transparency",options:[k,li,f]},color:{selector:".vjs-fg-color > select",id:"captions-foreground-color-%s",label:"Color",options:[Bt,ui,jt,Ft,j,C,I,Xt]},edgeStyle:{selector:".vjs-edge-style > select",id:"%s",label:"Text Edge Style",options:[["none","None"],["raised","Raised"],["depressed","Depressed"],["uniform","Uniform"],["dropshadow","Dropshadow"]]},fontFamily:{selector:".vjs-font-family > select",id:"captions-font-family-%s",label:"Font Family",options:[["proportionalSansSerif","Proportional Sans-Serif"],["monospaceSansSerif","Monospace Sans-Serif"],["proportionalSerif","Proportional Serif"],["monospaceSerif","Monospace Serif"],["casual","Casual"],["script","Script"],["small-caps","Small Caps"]]},fontPercent:{selector:".vjs-font-percent > select",id:"captions-font-size-%s",label:"Font Size",options:[["0.50","50%"],["0.75","75%"],["1.00","100%"],["1.25","125%"],["1.50","150%"],["1.75","175%"],["2.00","200%"],["3.00","300%"],["4.00","400%"]],default:2,parser:function(e){return"1.00"===e?null:Number(e)}},textOpacity:{selector:".vjs-text-opacity > select",id:"captions-foreground-opacity-%s",label:"Transparency",options:[k,li]},windowColor:{selector:".vjs-window-color > select",id:"captions-window-color-%s",label:"Color"},windowOpacity:{selector:".vjs-window-opacity > select",id:"captions-window-opacity-%s",label:"Transparency",options:[f,li,k]}};function wn(e,t){if((e=t?t(e):e)&&"none"!==e)return e}Sn.windowColor.options=Sn.backgroundColor.options,pt.registerComponent("TextTrackSettings",function(n){function e(e,t){var i;return t.temporary=!1,(i=n.call(this,e,t)||this).updateDisplay=i.updateDisplay.bind(ft(i)),i.fill(),i.hasBeenOpened_=i.hasBeenFilled_=!0,i.endDialog=$("p",{className:"vjs-control-text",textContent:i.localize("End of dialog window.")}),i.el().appendChild(i.endDialog),i.setDefaults(),void 0===t.persistTextTrackSettings&&(i.options_.persistTextTrackSettings=i.options_.playerOptions.persistTextTrackSettings),i.on(i.$(".vjs-done-button"),"click",function(){i.saveSettings(),i.close()}),i.on(i.$(".vjs-default-button"),"click",function(){i.setDefaults(),i.updateDisplay()}),_(Sn,function(e){i.on(i.$(e.selector),"change",i.updateDisplay)}),i.options_.persistTextTrackSettings&&i.restoreSettings(),i}mt(e,n);var t=e.prototype;return t.dispose=function(){this.endDialog=null,n.prototype.dispose.call(this)},t.createElSelect_=function(e,t,i){var n=this;void 0===t&&(t=""),void 0===i&&(i="label");var e=Sn[e],r=e.id.replace("%s",this.id_),a=[t,r].join(" ").trim();return["<"+i+' id="'+r+'" class="'+("label"===i?"vjs-label":"")+'">',this.localize(e.label),"",'").join("")},t.createElFgColor_=function(){var e="captions-text-legend-"+this.id_;return['
','',this.localize("Text"),"",this.createElSelect_("color",e),'',this.createElSelect_("textOpacity",e),"","
"].join("")},t.createElBgColor_=function(){var e="captions-background-"+this.id_;return['
','',this.localize("Background"),"",this.createElSelect_("backgroundColor",e),'',this.createElSelect_("backgroundOpacity",e),"","
"].join("")},t.createElWinColor_=function(){var e="captions-window-"+this.id_;return['
','',this.localize("Window"),"",this.createElSelect_("windowColor",e),'',this.createElSelect_("windowOpacity",e),"","
"].join("")},t.createElColors_=function(){return $("div",{className:"vjs-track-settings-colors",innerHTML:[this.createElFgColor_(),this.createElBgColor_(),this.createElWinColor_()].join("")})},t.createElFont_=function(){return $("div",{className:"vjs-track-settings-font",innerHTML:['
',this.createElSelect_("fontPercent","","legend"),"
",'
',this.createElSelect_("edgeStyle","","legend"),"
",'
',this.createElSelect_("fontFamily","","legend"),"
"].join("")})},t.createElControls_=function(){var e=this.localize("restore all settings to the default values");return $("div",{className:"vjs-track-settings-controls",innerHTML:['",'"].join("")})},t.content=function(){return[this.createElColors_(),this.createElFont_(),this.createElControls_()]},t.label=function(){return this.localize("Caption Settings Dialog")},t.description=function(){return this.localize("Beginning of dialog window. Escape will cancel and close the window.")},t.buildCSSClass=function(){return n.prototype.buildCSSClass.call(this)+" vjs-text-track-settings"},t.getValues=function(){var i,n,e,r=this;return n=function(e,t,i){var n,t=(n=r.$(t.selector),t=t.parser,wn(n.options[n.options.selectedIndex].value,t));return void 0!==t&&(e[i]=t),e},void 0===(e={})&&(e=0),v(i=Sn).reduce(function(e,t){return n(e,i[t],t)},e)},t.setValues=function(i){var n=this;_(Sn,function(e,t){!function(e,t,i){if(t)for(var n=0;nthis.options_.liveTolerance,(t=!this.timeupdateSeen_||e===1/0?!1:t)!==this.behindLiveEdge_&&(this.behindLiveEdge_=t,this.trigger("liveedgechange")))},t.handleDurationchange=function(){this.toggleTracking()},t.toggleTracking=function(){this.player_.duration()===1/0&&this.liveWindow()>=this.options_.trackingThreshold?(this.player_.options_.liveui&&this.player_.addClass("vjs-liveui"),this.startTracking()):(this.player_.removeClass("vjs-liveui"),this.stopTracking())},t.startTracking=function(){this.isTracking()||(this.timeupdateSeen_||(this.timeupdateSeen_=this.player_.hasStarted()),this.trackingInterval_=this.setInterval(this.trackLiveHandler_,30),this.trackLive_(),this.on(this.player_,["play","pause"],this.trackLiveHandler_),this.timeupdateSeen_?this.on(this.player_,"seeked",this.handleSeeked_):(this.one(this.player_,"play",this.handlePlay_),this.one(this.player_,"timeupdate",this.handleFirstTimeupdate_)))},t.handleFirstTimeupdate=function(){this.timeupdateSeen_=!0,this.on(this.player_,"seeked",this.handleSeeked_)},t.handleSeeked=function(){var e=Math.abs(this.liveCurrentTime()-this.player_.currentTime());this.seekedBehindLive_=this.nextSeekedFromUser_&&2=e.length&&n.call(e,function(e,t){return e===(a[t]?a[t]&i[r+t]:i[r+t])})}var Er=function(t){function e(){var e=t.call(this)||this;return e.buffer="",e}return mt(e,t),e.prototype.push=function(e){var t;for(this.buffer+=e,t=this.buffer.indexOf("\n");-1"==e&&">")||"&"==e&&"&"||'"'==e&&"""||"&#"+e.charCodeAt()+";"}function ga(e,t){if(t(e))return 1;if(e=e.firstChild)do{if(ga(e,t))return 1}while(e=e.nextSibling)}function ya(){}function va(e,t,i){e&&e._inc++,i.namespaceURI===Hr.XMLNS&&delete t._nsMap[i.prefix?i.localName:""]}function _a(e,t,i){if(e&&e._inc){e._inc++;var n=t.childNodes;if(i)n[n.length++]=i;else{for(var r=t.firstChild,a=0;r;)r=(n[a++]=r).nextSibling;n.length=a}}}function ba(e,t){var i=t.previousSibling,n=t.nextSibling;return i?i.nextSibling=n:e.firstChild=n,n?n.previousSibling=i:e.lastChild=i,_a(e.ownerDocument,e),t}function Ta(e,t,i){var n=t.parentNode;if(n&&n.removeChild(t),t.nodeType===ia){var r=t.firstChild;if(null==r)return t;var a=t.lastChild}else r=a=t;n=i?i.previousSibling:e.lastChild;for(r.previousSibling=n,a.nextSibling=i,n?n.nextSibling=r:e.firstChild=r,null==i?e.lastChild=a:i.previousSibling=a;r.parentNode=e,r!==a&&(r=r.nextSibling););return _a(e.ownerDocument||e,e),t.nodeType==ia&&(t.firstChild=t.lastChild=null),t}function Sa(){this._nsMap={}}function wa(){}function Ea(){}function ka(){}function Ca(){}function Ia(){}function xa(){}function Aa(){}function Pa(){}function La(){}function Da(){}function Oa(){}function Ma(){}function Ra(e,t){var i,n=[],r=9==this.nodeType&&this.documentElement||this,a=r.prefix,s=r.namespaceURI;return Ba(this,n,e,t,i=s&&null==a&&null==(a=r.lookupPrefix(s))?[{namespace:s,prefix:null}]:i),n.join("")}function Na(e,t,i){var n=e.prefix||"",r=e.namespaceURI;if(r&&("xml"!==n||r!==Hr.XML)&&r!==Hr.XMLNS){for(var a=i.length;a--;){var s=i[a];if(s.prefix===n)return s.namespace!==r}return 1}}function Ua(e,t,i){e.push(" ",t,'="',i.replace(/[<&"]/g,ma),'"')}function Ba(e,t,i,n,r){if(r=r||[],n){if(!(e=n(e)))return;if("string"==typeof e)return void t.push(e)}switch(e.nodeType){case Xr:var a=e.attributes,s=a.length,o=e.firstChild,u=e.tagName,l=u;if(!(i=Hr.isHTML(e.namespaceURI)||i)&&!e.prefix&&e.namespaceURI){for(var c,d=0;d"),i&&/^script$/i.test(u))for(;o;)o.data?t.push(o.data):Ba(o,t,i,n,r.slice()),o=o.nextSibling;else for(;o;)Ba(o,t,i,n,r.slice()),o=o.nextSibling;t.push("")}else t.push("/>");return;case ea:case ia:for(o=e.firstChild;o;)Ba(o,t,i,n,r.slice()),o=o.nextSibling;return;case Kr:return Ua(t,e.name,e.value),0;case Yr:return t.push(e.data.replace(/[<&]/g,ma).replace(/]]>/g,"]]>"));case Qr:return t.push("");case Zr:return t.push("\x3c!--",e.data,"--\x3e");case ta:var v=e.publicId,_=e.systemId;return t.push("")):_&&"."!=_?t.push(" SYSTEM ",_,">"):((_=e.internalSubset)&&t.push(" [",_,"]"),t.push(">")));case Jr:return t.push("");case $r:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function Fa(e,t,i){e[t]=i}x.INVALID_STATE_ERR=(na[11]="Invalid state",11),x.SYNTAX_ERR=(na[12]="Syntax error",12),x.INVALID_MODIFICATION_ERR=(na[13]="Invalid modification",13),x.NAMESPACE_ERR=(na[14]="Invalid namespace",14),x.INVALID_ACCESS_ERR=(na[15]="Invalid access",15),aa.prototype=Error.prototype,Gr(x,aa),sa.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var i=[],n=0;n",lt:"<",quot:'"'}),t.HTML_ENTITIES=i({lt:"<",gt:">",amp:"&",quot:'"',apos:"'",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",times:"×",divide:"÷",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",euro:"€",trade:"™",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"}),t.entityMap=t.HTML_ENTITIES});ja.XML_ENTITIES,ja.HTML_ENTITIES,ja.entityMap;var Ha=jr.NAMESPACE,zt=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,ar=new RegExp("[\\-\\.0-9"+zt.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),qa=new RegExp("^"+zt.source+ar.source+"*(?::"+zt.source+ar.source+"*)?$"),Va=0,Wa=1,Ga=2,za=3,Xa=4,Ka=5,Ya=6,Qa=7;function $a(e,t){this.message=e,this.locator=t,Error.captureStackTrace&&Error.captureStackTrace(this,$a)}function Ja(){}function Za(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function es(e,t,i){for(var n=e.tagName,r=null,a=e.length;a--;){var s=e[a],o=s.qName,u=s.value,o=0<(c=o.indexOf(":"))?(l=s.prefix=o.slice(0,c),d=o.slice(c+1),"xmlns"===l&&d):(l=null,"xmlns"===(d=o)&&"");s.localName=d,!1!==o&&(null==r&&(r={},ts(i,i={})),i[o]=r[o]=u,s.uri=Ha.XMLNS,t.startPrefixMapping(o,u))}for(var l,a=e.length;a--;)(l=(s=e[a]).prefix)&&("xml"===l&&(s.uri=Ha.XML),"xmlns"!==l&&(s.uri=i[l||""]));var c,d=0<(c=n.indexOf(":"))?(l=e.prefix=n.slice(0,c),e.localName=n.slice(c+1)):(l=null,e.localName=n),h=e.uri=i[l||""];if(t.startElement(h,d,n,e),!e.closed)return e.currentNSMap=i,e.localNSMap=r,1;if(t.endElement(h,d,n),r)for(l in r)t.endPrefixMapping(l)}function ts(e,t){for(var i in e)t[i]=e[i]}function is(){this.attributeNames={}}($a.prototype=new Error).name=$a.name,Ja.prototype={parse:function(e,t,i){var n=this.domBuilder;n.startDocument(),ts(t,t={}),function(i,e,n,r,a){function s(e){var t=e.slice(1,-1);return t in n?n[t]:"#"===t.charAt(0)?65535<(t=parseInt(t.substr(1).replace("x","0x")))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):String.fromCharCode(t):(a.error("entity not found:"+e),e)}function t(e){var t;f",y+3),_=i.substring(y+2,v).replace(/[ \t\n\r]+$/g,""),b=h.pop();v<0?(_=i.substring(y+2).replace(/[\s<].*/,""),a.error("end tag name: "+_+" is not complete:"+b.tagName),v=y+1+_.length):_.match(/\s",t);if(n){t=e.substring(t,n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);return t?(t[0].length,i.processingInstruction(t[1],t[2]),n+2):-1}return-1}(i,y,r);break;case"!":d&&o(y),v=function(e,t,i,n){{if("-"===e.charAt(t+2)){if("-"!==e.charAt(t+3))return-1;var r=e.indexOf("--\x3e",t+4);return t",t+9);return i.startCDATA(),i.characters(e,t+9,r-t-9),i.endCDATA(),r+3}var a=function(e,t){var i,n=[],r=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;r.lastIndex=t,r.exec(e);for(;i=r.exec(e);)if(n.push(i),i[1])return n}(e,t),n=a.length;if(1":switch(l){case Va:n.setTagName(e.slice(t,u));case Ka:case Ya:case Qa:break;case Xa:case Wa:"/"===(d=e.slice(t,u)).slice(-1)&&(n.closed=!0,d=d.slice(0,-1));case Ga:l===Ga&&(d=o),l==Xa?(a.warning('attribute "'+d+'" missed quot(")!'),s(o,d.replace(/&#?\w+;/g,r),t)):(Ha.isHTML(i[""])&&d.match(/^(?:disabled|checked|selected)$/i)||a.warning('attribute "'+d+'" missed value!! "'+d+'" instead!!'),s(d,d,t));break;case za:throw new Error("attribute value missed!!")}return u;case"€":c=" ";default:if(c<=" ")switch(l){case Va:n.setTagName(e.slice(t,u)),l=Ya;break;case Wa:o=e.slice(t,u),l=Ga;break;case Xa:var d=e.slice(t,u).replace(/&#?\w+;/g,r);a.warning('attribute "'+d+'" missed quot(")!!'),s(o,d,t);case Ka:l=Ya}else switch(l){case Ga:n.tagName,Ha.isHTML(i[""])&&o.match(/^(?:disabled|checked|selected)$/i)||a.warning('attribute "'+o+'" missed value!! "'+o+'" instead2!!'),s(o,o,t),t=u,l=Wa;break;case Ka:a.warning('attribute space is required"'+o+'"!!');case Ya:l=Wa,t=u;break;case za:l=Xa,t=u;break;case Qa:throw new Error("elements closed character '/' and '>' must be connected to")}}u++}}(i,y,E,k,s,a),C=E.length;if(!E.closed&&function(e,t,i,n){var r=n[i];null==r&&((r=e.lastIndexOf(""))",t),e=e.substring(t+1,a);if(/[&<]/.test(e))return/^script$/i.test(i)||(e=e.replace(/&#?\w+;/g,n)),r.characters(e,0,e.length),a}return t+1}(i,v,E.tagName,s,r):v++}}catch(e){if(e instanceof $a)throw e;a.error("element parse error: "+e),v=-1}f=t+i||t?new java.lang.String(e,t,i)+"":e}function hs(e,t){(e.currentElement||e.doc).appendChild(t)}os.prototype.parseFromString=function(e,t){var i=this.options,n=new ss,r=i.domBuilder||new us,a=i.errorHandler,s=i.locator,o=i.xmlns||{},u=/\/x?html?$/.test(t),t=u?ja.HTML_ENTITIES:ja.XML_ENTITIES;return s&&r.setDocumentLocator(s),n.errorHandler=function(n,e,r){if(!n){if(e instanceof us)return e;n=e}var a={},s=n instanceof Function;function t(t){var i=n[t];!i&&s&&(i=2==n.length?function(e){n(t,e)}:n),a[t]=i?function(e){i("[xmldom "+t+"]\t"+e+cs(r))}:function(){}}return r=r||{},t("warning"),t("error"),t("fatalError"),a}(a,r,s),n.domBuilder=i.domBuilder||r,u&&(o[""]=rs.HTML),o.xml=o.xml||rs.XML,e&&"string"==typeof e?n.parse(e,o,t):n.errorHandler.error("invalid doc source"),r.doc},us.prototype={startDocument:function(){this.doc=(new ns).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,i,n){var r=this.doc,a=r.createElementNS(e,i||t),s=n.length;hs(this,a),this.currentElement=a,this.locator&&ls(this.locator,a);for(var o=0;ot.timeline?1:-1});var i}function ks(e){var r,a,s=[];return r=e,a=function(e,t,i,n){s=s.concat(e.playlists||[])},yo.forEach(function(e){for(var t in r.mediaGroups[e])for(var i in r.mediaGroups[e][t]){var n=r.mediaGroups[e][t][i];a(n,e,t,i)}}),s}function Cs(e){var i=e.playlist,e=e.mediaSequence;i.mediaSequence=e,i.segments.forEach(function(e,t){e.number=i.mediaSequence+t})}function Is(e){var r,a,t=e.oldManifest,i=e.newManifest,n=t.playlists.concat(ks(t)),e=i.playlists.concat(ks(i));return i.timelineStarts=Es([t.timelineStarts,i.timelineStarts]),n={oldPlaylists:n,newPlaylists:e,timelineStarts:i.timelineStarts},r=n.oldPlaylists,e=n.newPlaylists,a=n.timelineStarts,e.forEach(function(t){t.discontinuitySequence=vs(a,function(e){return e.timeline===t.timeline});var e=function(e,t){for(var i=0;ie.timeline||e.segments.length&&t.timeline>e.segments[e.segments.length-1].timeline)&&t.discontinuitySequence--);e.segments[n].discontinuity&&!i.discontinuity&&(i.discontinuity=!0,t.discontinuityStarts.unshift(0),t.discontinuitySequence--),Cs({playlist:t,mediaSequence:e.segments[n].number})}}),i}function xs(e){return e&&e.uri+"-"+(t=e.byterange,e="bigint"==typeof t.offset||"bigint"==typeof t.length?window.BigInt(t.offset)+window.BigInt(t.length)-window.BigInt(1):t.offset+t.length-1,t.offset+"-"+e);var t}function As(e){return ms(e.reduce(function(e,t){var i,n=t.attributes.id+(t.attributes.lang||"");return e[n]?(t.segments&&(t.segments[0]&&(t.segments[0].discontinuity=!0),(i=e[n].segments).push.apply(i,t.segments)),t.attributes.contentProtection&&(e[n].attributes.contentProtection=t.attributes.contentProtection)):(e[n]=t,e[n].attributes.timelineStarts=[]),e[n].attributes.timelineStarts.push({start:t.attributes.periodStart,timeline:t.attributes.periodStart}),e},{})).map(function(e){var t,n;return e.discontinuityStarts=(t=e.segments||[],n="discontinuity",t.reduce(function(e,t,i){return t[n]&&e.push(i),e},[])),e})}function Ps(e,t){var i=xs(e.sidx);return(i=i&&t[i]&&t[i].sidx)&&ws(e,i,e.sidx.resolvedUri),e}function Ls(e,h,p){var f;return void 0===h&&(h={}),void 0===p&&(p=!1),e=e.reduce(function(e,t){var i=t.attributes.role&&t.attributes.role.value||"",n=t.attributes.lang||"",r=t.attributes.label||"main";e[r=n&&!t.attributes.label?t.attributes.lang+(i?" ("+i+")":""):r]||(e[r]={language:n,autoselect:!0,default:"main"===i,playlists:[],uri:""});var a,s,o,u,l,c,d,u=Ps((s=p,o=(a=t).attributes,u=a.segments,l=a.sidx,c=a.mediaSequence,d=a.discontinuitySequence,n=a.discontinuityStarts,u={attributes:((a={NAME:o.id,BANDWIDTH:o.bandwidth,CODECS:o.codecs})["PROGRAM-ID"]=1,a),uri:"",endList:"static"===o.type,timeline:o.periodStart,resolvedUri:"",targetDuration:o.duration,discontinuitySequence:d,discontinuityStarts:n,timelineStarts:o.timelineStarts,mediaSequence:c,segments:u},o.contentProtection&&(u.contentProtection=o.contentProtection),l&&(u.sidx=l),s&&(u.attributes.AUDIO="audio",u.attributes.SUBTITLES="subs"),u),h);return e[r].playlists.push(u),"undefined"==typeof f&&"main"===i&&((f=t).default=!0),e},{}),f||(e[Object.keys(e)[0]].default=!0),e}function Ds(e){var t=e.attributes,i=e.segments,n=e.sidx,r=e.discontinuityStarts,i={attributes:((e={NAME:t.id,AUDIO:"audio",SUBTITLES:"subs",RESOLUTION:{width:t.width,height:t.height},CODECS:t.codecs,BANDWIDTH:t.bandwidth})["PROGRAM-ID"]=1,e),uri:"",endList:"static"===t.type,timeline:t.periodStart,resolvedUri:"",targetDuration:t.duration,discontinuityStarts:r,timelineStarts:t.timelineStarts,segments:i};return t.contentProtection&&(i.contentProtection=t.contentProtection),n&&(i.sidx=n),i}function Os(e){return"video/mp4"===(e=e.attributes).mimeType||"video/webm"===e.mimeType||"video"===e.contentType}function Ms(e){return"audio/mp4"===(e=e.attributes).mimeType||"audio/webm"===e.mimeType||"audio"===e.contentType}function Rs(e){return"text/vtt"===(e=e.attributes).mimeType||"text"===e.contentType}function Ns(i){return i?Object.keys(i).reduce(function(e,t){t=i[t];return e.concat(t.playlists)},[]):[]}function Us(e){var t=e.dashPlaylists,i=e.locations,n=void 0===(c=e.sidxMapping)?{}:c,r=e.previousManifest;if(!t.length)return{};var a=(d=t[0].attributes).sourceDuration,s=d.type,o=d.suggestedPresentationDelay,u=d.minimumUpdatePeriod,l=As(t.filter(Os)).map(Ds),c=As(t.filter(Ms)),e=As(t.filter(Rs)),d=t.map(function(e){return e.attributes.captionServices}).filter(Boolean),a={allowCache:!0,discontinuityStarts:[],segments:[],endList:!0,mediaGroups:((t={AUDIO:{},VIDEO:{}})["CLOSED-CAPTIONS"]={},t.SUBTITLES={},t),uri:"",duration:a,playlists:function(e,t){if(void 0===t&&(t={}),!Object.keys(t).length)return e;for(var i in e)e[i]=Ps(e[i],t);return e}(l,n)};0<=u&&(a.minimumUpdatePeriod=1e3*u),i&&(a.locations=i),"dynamic"===s&&(a.suggestedPresentationDelay=o);var h,p,o=0===a.playlists.length,o=c.length?Ls(c,n,o):null,n=e.length?(void 0===(h=n)&&(h={}),e.reduce(function(e,t){var i=t.attributes.lang||"text";return e[i]||(e[i]={language:i,default:!1,autoselect:!1,playlists:[],uri:""}),e[i].playlists.push(Ps(function(e){var t=e.attributes,i=e.segments,n=e.mediaSequence,r=e.discontinuityStarts,a=e.discontinuitySequence;"undefined"==typeof i&&(i=[{uri:t.baseUrl,timeline:t.periodStart,resolvedUri:t.baseUrl||"",duration:t.sourceDuration,number:0}],t.duration=t.sourceDuration);(e={NAME:t.id,BANDWIDTH:t.bandwidth})["PROGRAM-ID"]=1;return t.codecs&&(e.CODECS=t.codecs),{attributes:e,uri:"",endList:"static"===t.type,timeline:t.periodStart,resolvedUri:t.baseUrl||"",targetDuration:t.duration,timelineStarts:t.timelineStarts,discontinuityStarts:r,discontinuitySequence:a,mediaSequence:n,segments:i}}(t),h)),e},{})):null,l=(e=l.concat(Ns(o),Ns(n))).map(function(e){return e.timelineStarts});return a.timelineStarts=Es(l),e=e,p=a.timelineStarts,e.forEach(function(t){t.mediaSequence=0,t.discontinuitySequence=vs(p,function(e){return e.timeline===t.timeline}),t.segments&&t.segments.forEach(function(e,t){e.number=t})}),o&&(a.mediaGroups.AUDIO.audio=o),n&&(a.mediaGroups.SUBTITLES.subs=n),d.length&&(a.mediaGroups["CLOSED-CAPTIONS"].cc=d.reduce(function(n,e){return e&&e.forEach(function(e){var t=e.channel,i=e.language;n[i]={autoselect:!1,default:!1,instreamId:t,language:i},e.hasOwnProperty("aspectRatio")&&(n[i].aspectRatio=e.aspectRatio),e.hasOwnProperty("easyReader")&&(n[i].easyReader=e.easyReader),e.hasOwnProperty("3D")&&(n[i]["3D"]=e["3D"])}),n},{})),r?Is({oldManifest:r,newManifest:a}):a}function Bs(e,t){for(var i,n,r,a,s,o,u=e.type,l=e.minimumUpdatePeriod,c=void 0===l?0:l,d=void 0===(l=e.media)?"":l,h=e.sourceDuration,p=void 0===(l=e.timescale)?1:l,f=void 0===(l=e.startNumber)?1:l,m=e.periodStart,g=[],y=-1,v=0;v>4?20+t:10+t}(e,t))}function to(e){return"string"==typeof e?Sr(e):e}function io(e,t,i){var n;void 0===i&&(i=!1),n=t,t=Array.isArray(n)?n.map(to):[to(n)],e=br(e);var r=[];if(!t.length)return r;for(var a=0;a>>0,o=e.subarray(a+4,a+8);if(0==s)break;var u=a+s;if(u>e.length){if(i)break;u=e.length}s=e.subarray(a+8,u);wr(o,t[0])&&(1===t.length?r.push(s):r.push.apply(r,io(s,t.slice(1),i))),a=u}return r}function no(e,t,i,n){void 0===i&&(i=!0),void 0===n&&(n=!1);var r=function(e){for(var t=1,i=0;i=t.length)return t.length;var n=no(t,i,!1);if(wr(e.bytes,n.bytes))return i;var r=no(t,i+n.length);return ao(e,t,i+r.length+r.value+n.length)}function so(e,t){var i;i=t,t=Array.isArray(i)?i.map(ro):[ro(i)],e=br(e);var n=[];if(!t.length)return n;for(var r=0;re.length?e.length:o+s.value,u=e.subarray(o,u);wr(t[0],a.bytes)&&(1===t.length?n.push(u):n=n.concat(so(u,t.slice(1)))),r+=a.length+s.length+u.length}return n}function oo(e,t,i,n){void 0===n&&(n=1/0),e=br(e),i=[].concat(i);for(var r,a=0,s=0;a>1&63),-1!==i.indexOf(u)&&(r=a+o),a+=o+("h264"===t?1:2)}else a++}return e.subarray(0,0)}var uo={__DOMHandler:us,DOMParser:os,DOMImplementation:U.DOMImplementation,XMLSerializer:U.XMLSerializer}.DOMParser,lo="INVALID_NUMBER_OF_PERIOD",co="DASH_EMPTY_MANIFEST",ho="DASH_INVALID_XML",po="NO_BASE_URL",fo="SEGMENT_TIME_UNSPECIFIED",mo="UNSUPPORTED_UTC_TIMING_SCHEME",go={static:function(e){var t=e.duration,i=e.timescale,n=void 0===i?1:i,r=e.sourceDuration,i=e.periodDuration,e=bs(e.endNumber),n=t/n;return"number"==typeof e?{start:0,end:e}:"number"==typeof i?{start:0,end:i/n}:{start:0,end:r/n}},dynamic:function(e){var t=e.NOW,i=e.clientOffset,n=e.availabilityStartTime,r=e.timescale,a=void 0===r?1:r,s=e.duration,o=e.periodStart,u=void 0===o?0:o,r=e.minimumUpdatePeriod,o=void 0===r?0:r,r=e.timeShiftBufferDepth,r=void 0===r?1/0:r,e=bs(e.endNumber),i=(t+i)/1e3,u=n+u,o=Math.ceil((i+o-u)*a/s),r=Math.floor((i-u-r)*a/s),s=Math.floor((i-u)*a/s);return{start:Math.max(0,r),end:"number"==typeof e?e:Math.min(o,s)}}},yo=["AUDIO","SUBTITLES"],vo=/\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g,_o={mediaPresentationDuration:Gs,availabilityStartTime:function(e){return/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(e=e)&&(e+="Z"),Date.parse(e)/1e3},minimumUpdatePeriod:Gs,suggestedPresentationDelay:Gs,type:function(e){return e},timeShiftBufferDepth:Gs,start:Gs,width:function(e){return parseInt(e,10)},height:function(e){return parseInt(e,10)},bandwidth:function(e){return parseInt(e,10)},startNumber:function(e){return parseInt(e,10)},timescale:function(e){return parseInt(e,10)},presentationTimeOffset:function(e){return parseInt(e,10)},duration:function(e){var t=parseInt(e,10);return isNaN(t)?Gs(e):t},d:function(e){return parseInt(e,10)},t:function(e){return parseInt(e,10)},r:function(e){return parseInt(e,10)},DEFAULT:function(e){return e}},bo={"urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b":"org.w3.clearkey","urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed":"com.widevine.alpha","urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95":"com.microsoft.playready","urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb":"com.adobe.primetime"},To=Math.pow(2,32),So=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);return t.getBigUint64?(e=t.getBigUint64(0))>>7,referencedSize:2147483647&t.getUint32(n),subsegmentDuration:t.getUint32(n+4),startsWithSap:!!(128&e[n+8]),sapType:(112&e[n+8])>>>4,sapDeltaTime:268435455&t.getUint32(n+8)});return i},Eo=br([73,68,51]),ko={EBML:br([26,69,223,163]),DocType:br([66,130]),Segment:br([24,83,128,103]),SegmentInfo:br([21,73,169,102]),Tracks:br([22,84,174,107]),Track:br([174]),TrackNumber:br([215]),DefaultDuration:br([35,227,131]),TrackEntry:br([174]),TrackType:br([131]),FlagDefault:br([136]),CodecID:br([134]),CodecPrivate:br([99,162]),VideoTrack:br([224]),AudioTrack:br([225]),Cluster:br([31,67,182,117]),Timestamp:br([231]),TimestampScale:br([42,215,177]),BlockGroup:br([160]),BlockDuration:br([155]),Block:br([161]),SimpleBlock:br([163])},Co=[128,64,32,16,8,4,2,1],Io=br([0,0,0,1]),xo=br([0,0,1]),Ao=br([0,0,3]),Po={webm:br([119,101,98,109]),matroska:br([109,97,116,114,111,115,107,97]),flac:br([102,76,97,67]),ogg:br([79,103,103,83]),ac3:br([11,119]),riff:br([82,73,70,70]),avi:br([65,86,73]),wav:br([87,65,86,69]),"3gp":br([102,116,121,112,51,103]),mp4:br([102,116,121,112]),fmp4:br([115,116,121,112]),mov:br([102,116,121,112,113,116]),moov:br([109,111,111,118]),moof:br([109,111,111,102])},Lo={aac:function(e){var t=eo(e);return wr(e,[255,16],{offset:t,mask:[255,22]})},mp3:function(e){var t=eo(e);return wr(e,[255,2],{offset:t,mask:[255,6]})},webm:function(e){e=so(e,[ko.EBML,ko.DocType])[0];return wr(e,Po.webm)},mkv:function(e){e=so(e,[ko.EBML,ko.DocType])[0];return wr(e,Po.matroska)},mp4:function(e){return!Lo["3gp"](e)&&!Lo.mov(e)&&(!(!wr(e,Po.mp4,{offset:4})&&!wr(e,Po.fmp4,{offset:4}))||(!(!wr(e,Po.moof,{offset:4})&&!wr(e,Po.moov,{offset:4}))||void 0))},mov:function(e){return wr(e,Po.mov,{offset:4})},"3gp":function(e){return wr(e,Po["3gp"],{offset:4})},ac3:function(e){var t=eo(e);return wr(e,Po.ac3,{offset:t})},ts:function(e){if(e.length<189&&1<=e.length)return 71===e[0];for(var t=0;t+188"):function(){}}function No(e,t){var i,n=[];if(e&&e.length)for(i=0;i "+e.end(i));return t.join(", ")}function jo(e){for(var t=[],i=0;iDate.now()}function Zo(e){return e.excludeUntil&&e.excludeUntil===1/0}function eu(e){var t=Jo(e);return!e.disabled&&!t}function tu(e,t){return t.attributes&&t.attributes[e]}function iu(e,t){if(1===e.playlists.length)return!0;var i=t.attributes.BANDWIDTH||Number.MAX_VALUE;return 0===e.playlists.filter(function(e){return!!eu(e)&&(e.attributes.BANDWIDTH||0)n+.25*a.duration)return null;i=a}return{segment:i,estimatedStart:i.videoTimingInfo?i.videoTimingInfo.transmuxedPresentationStart:n-i.duration,type:i.videoTimingInfo?"accurate":"estimate"}}(n,t))?"estimate"===e.type?i({message:"Accurate programTime could not be determined. Please seek to e.seekTime and try again",seekTime:e.estimatedStart}):(t={mediaSeconds:n},(e=function(e,t){if(!t.dateTimeObject)return null;var i=t.videoTimingInfo.transmuxerPrependedSeconds,i=e-(t.videoTimingInfo.transmuxedPresentationStart+i);return new Date(t.dateTimeObject.getTime()+1e3*i)}(n,e.segment))&&(t.programDateTime=e.toISOString()),i(null,t)):i({message:"valid programTime was not found"}):i({message:"getProgramTime: playlist and time must be provided"})}function Cu(e){var t=e.programTime,i=e.playlist,n=e.retryCount,r=void 0===n?2:n,a=e.seekTo,s=e.pauseAfterSeek,o=void 0===s||s,u=e.tech,l=e.callback;if(!l)throw new Error("seekToProgramTime: callback must be provided");return"undefined"!=typeof t&&i&&a?i.endList||u.hasStarted_?function(e){if(!e.segments||0===e.segments.length)return!1;for(var t=0;ti||e.height>n})).filter(function(e){return e.width===h[0].width&&e.height===h[0].height}),c=p[p.length-1],p=p.filter(function(e){return e.bandwidth===c.bandwidth})[0]),a.experimentalLeastPixelDiffSelector&&(m=d.map(function(e){return e.pixelDiff=Math.abs(e.width-i)+Math.abs(e.height-n),e}),el(m,function(e,t){return e.pixelDiff===t.pixelDiff?t.bandwidth-e.bandwidth:e.pixelDiff-t.pixelDiff}),f=m[0]);var m=f||p||e||o||l[0]||u[0];if(m&&m.playlist){u="sortedPlaylistReps";return f?u="leastPixelDiffRep":p?u="resolutionPlusOneRep":e?u="resolutionBestRep":o?u="bandwidthBestRep":l[0]&&(u="enabledPlaylistReps"),Ol("choosing "+Ju(m)+" using "+u+" with options",s),m.playlist}return Ol("could not choose a playlist with options",s),null}}function nl(e){var t=e.inbandTextTracks,i=e.metadataArray,r=e.timestampOffset,n=e.videoDuration;if(i){var a=window.WebKitDataCue||window.VTTCue,s=t.metadataTrack_;if(s&&(i.forEach(function(e){var n=e.cueTime+r;!("number"!=typeof n||window.isNaN(n)||n<0)&&n<1/0&&e.frames.forEach(function(e){var t,i=new a(n,n,e.value||e.url||e.data||"");i.frame=e,i.value=e,t=i,Object.defineProperties(t.frame,{id:{get:function(){return tr.log.warn("cue.frame.id is deprecated. Use cue.value.key instead."),t.value.key}},value:{get:function(){return tr.log.warn("cue.frame.value is deprecated. Use cue.value.data instead."),t.value.data}},privateData:{get:function(){return tr.log.warn("cue.frame.privateData is deprecated. Use cue.value.data instead."),t.value.data}}}),s.addCue(i)})}),s.cues&&s.cues.length)){for(var o=s.cues,u=[],l=0;l=e&&r.endTime<=t&&i.removeCue(r)}function al(e){return"number"==typeof e&&isFinite(e)}function sl(e){var t=e.startOfSegment,i=e.duration,n=e.segment,r=e.part,a=e.playlist,s=a.mediaSequence,o=a.id,u=a.segments,l=e.mediaIndex,c=e.partIndex,d=e.timeline,h=(void 0===u?[]:u).length-1,p="mediaIndex/partIndex increment";return e.getMediaInfoForTime?p="getMediaInfoForTime ("+e.getMediaInfoForTime+")":e.isSyncRequest&&(p="getSyncSegmentCandidate (isSyncRequest)"),e.independent&&(p+=" with independent "+e.independent),a="number"==typeof c,u=e.segment.uri?"segment":"pre-segment",e=a?zo({preloadSegment:n})-1:0,u+" ["+(s+l)+"/"+(s+h)+"]"+(a?" part ["+c+"/"+e+"]":"")+" segment start/end ["+n.start+" => "+n.end+"]"+(a?" part start/end ["+r.start+" => "+r.end+"]":"")+" startOfSegment ["+t+"] duration ["+i+"] timeline ["+d+"] selected by ["+p+"] playlist ["+o+"]"}function ol(e){return e+"TimingInfo"}function ul(e){var t=e.timelineChangeController,i=e.currentTimeline,n=e.segmentTimeline,r=e.loaderType,e=e.audioDisabled;if(i!==n){if("audio"===r){i=t.lastTimelineChange({type:"main"});return!i||i.to!==n}if("main"===r&&e){t=t.pendingTimelineChange({type:"audio"});return t&&t.to===n?!1:!0}}}function ll(e){var t=e.segmentDuration,e=e.maxDuration;return!!t&&Math.round(t)>e+fl}function cl(e,t){if("hls"!==t)return null;var n,r,i=(n={audioTimingInfo:e.audioTimingInfo,videoTimingInfo:e.videoTimingInfo},r=0,["video","audio"].forEach(function(e){var t,i=n[e+"TimingInfo"];i&&(e=i.start,i=i.end,"bigint"==typeof e||"bigint"==typeof i?t=window.BigInt(i)-window.BigInt(e):"number"==typeof e&&"number"==typeof i&&(t=i-e),"undefined"!=typeof t&&r=r+i)return o(e,{response:n.subarray(i,i+r),status:t.status,uri:t.uri});u.request=u.vhs_.xhr({uri:s,responseType:"arraybuffer",headers:vu({byterange:a.sidx.byterange})},o)})):this.mediaRequest_=window.setTimeout(function(){return r(!1)},0)},t.dispose=function(){this.trigger("dispose"),this.stopRequest(),this.loadedPlaylists_={},window.clearTimeout(this.minimumUpdatePeriodTimeout_),window.clearTimeout(this.mediaRequest_),window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null,this.mediaRequest_=null,this.minimumUpdatePeriodTimeout_=null,this.masterPlaylistLoader_.createMupOnMedia_&&(this.off("loadedmetadata",this.masterPlaylistLoader_.createMupOnMedia_),this.masterPlaylistLoader_.createMupOnMedia_=null),this.off()},t.hasPendingRequest=function(){return this.request||this.mediaRequest_},t.stopRequest=function(){var e;this.request&&(e=this.request,this.request=null,e.onreadystatechange=null,e.abort())},t.media=function(t){var i=this;if(!t)return this.media_;if("HAVE_NOTHING"===this.state)throw new Error("Cannot switch media playlist from "+this.state);var n=this.state;if("string"==typeof t){if(!this.masterPlaylistLoader_.master.playlists[t])throw new Error("Unknown playlist URI: "+t);t=this.masterPlaylistLoader_.master.playlists[t]}var e=!this.media_||t.id!==this.media_.id;if(e&&this.loadedPlaylists_[t.id]&&this.loadedPlaylists_[t.id].endList)return this.state="HAVE_METADATA",this.media_=t,void(e&&(this.trigger("mediachanging"),this.trigger("mediachange")));e&&(this.media_&&this.trigger("mediachanging"),this.addSidxSegments_(t,n,function(e){i.haveMetadata({startingState:n,playlist:t})}))},t.haveMetadata=function(e){var t=e.startingState,e=e.playlist;this.state="HAVE_METADATA",this.loadedPlaylists_[e.id]=e,this.mediaRequest_=null,this.refreshMedia_(e.id),"HAVE_MASTER"===t?this.trigger("loadedmetadata"):this.trigger("mediachange")},t.pause=function(){this.masterPlaylistLoader_.createMupOnMedia_&&(this.off("loadedmetadata",this.masterPlaylistLoader_.createMupOnMedia_),this.masterPlaylistLoader_.createMupOnMedia_=null),this.stopRequest(),window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null,this.isMaster_&&(window.clearTimeout(this.masterPlaylistLoader_.minimumUpdatePeriodTimeout_),this.masterPlaylistLoader_.minimumUpdatePeriodTimeout_=null),"HAVE_NOTHING"===this.state&&(this.started=!1)},t.load=function(e){var t=this;window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null;var i=this.media();e?(e=i?i.targetDuration/2*1e3:5e3,this.mediaUpdateTimeout=window.setTimeout(function(){return t.load()},e)):this.started?i&&!i.endList?(this.isMaster_&&!this.minimumUpdatePeriodTimeout_&&(this.trigger("minimumUpdatePeriod"),this.updateMinimumUpdatePeriodTimeout_()),this.trigger("mediaupdatetimeout")):this.trigger("loadedplaylist"):this.start()},t.start=function(){var i=this;this.started=!0,this.isMaster_?this.requestMaster_(function(e,t){i.haveMaster_(),i.hasPendingRequest()||i.media_||i.media(i.masterPlaylistLoader_.master.playlists[0])}):this.mediaRequest_=window.setTimeout(function(){return i.haveMaster_()},0)},t.requestMaster_=function(n){var r=this;this.request=this.vhs_.xhr({uri:this.masterPlaylistLoader_.srcUrl,withCredentials:this.withCredentials},function(e,t){if(!r.requestErrored_(e,t)){var i=t.responseText!==r.masterPlaylistLoader_.masterXml_;return r.masterPlaylistLoader_.masterXml_=t.responseText,t.responseHeaders&&t.responseHeaders.date?r.masterLoaded_=Date.parse(t.responseHeaders.date):r.masterLoaded_=Date.now(),r.masterPlaylistLoader_.srcUrl=Mo(r.handleManifestRedirects,r.masterPlaylistLoader_.srcUrl,t),i?(r.handleMaster_(),void r.syncClientServerClock_(function(){return n(t,i)})):n(t,i)}"HAVE_NOTHING"===r.state&&(r.started=!1)})},t.syncClientServerClock_=function(i){var n=this,r=Zs(this.masterPlaylistLoader_.masterXml_);return null===r?(this.masterPlaylistLoader_.clientOffset_=this.masterLoaded_-Date.now(),i()):"DIRECT"===r.method?(this.masterPlaylistLoader_.clientOffset_=r.value-Date.now(),i()):void(this.request=this.vhs_.xhr({uri:pl(this.masterPlaylistLoader_.srcUrl,r.value),method:r.method,withCredentials:this.withCredentials},function(e,t){if(n.request){if(e)return n.masterPlaylistLoader_.clientOffset_=n.masterLoaded_-Date.now(),i();t="HEAD"===r.method?t.responseHeaders&&t.responseHeaders.date?Date.parse(t.responseHeaders.date):n.masterLoaded_:Date.parse(t.responseText);n.masterPlaylistLoader_.clientOffset_=t-Date.now(),i()}}))},t.haveMaster_=function(){this.state="HAVE_MASTER",this.isMaster_?this.trigger("loadedplaylist"):this.media_||this.media(this.childPlaylist_)},t.handleMaster_=function(){this.mediaRequest_=null;var e,t,i,n,r=this.masterPlaylistLoader_.master,t=(a={masterXml:this.masterPlaylistLoader_.masterXml_,srcUrl:this.masterPlaylistLoader_.srcUrl,clientOffset:this.masterPlaylistLoader_.clientOffset_,sidxMapping:this.masterPlaylistLoader_.sidxMapping_,previousManifest:r},e=a.masterXml,t=a.srcUrl,i=a.clientOffset,n=a.sidxMapping,a=a.previousManifest,a=Js(e,{manifestUri:t,clientOffset:i,sidxMapping:n,previousManifest:a}),lu(a,t),a);r&&(t=function(e,t,i){for(var a=!0,s=Sl(e,{duration:t.duration,minimumUpdatePeriod:t.minimumUpdatePeriod,timelineStarts:t.timelineStarts}),n=0;n>>1,e.samplingfrequencyindex<<7|e.channelcount<<3,6,1,2]))},f=function(e){return u(T.hdlr,I[e])},p=function(e){var t=new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,0,1,95,144,e.duration>>>24&255,e.duration>>>16&255,e.duration>>>8&255,255&e.duration,85,196,0,0]);return e.samplerate&&(t[12]=e.samplerate>>>24&255,t[13]=e.samplerate>>>16&255,t[14]=e.samplerate>>>8&255,t[15]=255&e.samplerate),u(T.mdhd,t)},h=function(e){return u(T.mdia,p(e),f(e.type),a(e))},r=function(e){return u(T.mfhd,new Uint8Array([0,0,0,0,(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e]))},a=function(e){return u(T.minf,"video"===e.type?u(T.vmhd,x):u(T.smhd,A),t(),g(e))},We=function(e,t){for(var i=[],n=t.length;n--;)i[n]=v(t[n]);return u.apply(null,[T.moof,r(e)].concat(i))},s=function(e){for(var t=e.length,i=[];t--;)i[t]=c(e[t]);return u.apply(null,[T.moov,l(4294967295)].concat(i).concat(o(e)))},o=function(e){for(var t=e.length,i=[];t--;)i[t]=_(e[t]);return u.apply(null,[T.mvex].concat(i))},l=function(e){e=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,0,1,95,144,(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return u(T.mvhd,e)},m=function(e){for(var t,i=e.samples||[],n=new Uint8Array(4+i.length),r=0;r>>8),a.push(255&n[o].byteLength),a=a.concat(Array.prototype.slice.call(n[o]));for(o=0;o>>8),s.push(255&r[o].byteLength),s=s.concat(Array.prototype.slice.call(r[o]));return t=[T.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(65280&e.width)>>8,255&e.width,(65280&e.height)>>8,255&e.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),u(T.avcC,new Uint8Array([1,e.profileIdc,e.profileCompatibility,e.levelIdc,255].concat([n.length],a,[r.length],s))),u(T.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192]))],e.sarRatio&&(i=e.sarRatio[0],e=e.sarRatio[1],t.push(u(T.pasp,new Uint8Array([(4278190080&i)>>24,(16711680&i)>>16,(65280&i)>>8,255&i,(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])))),u.apply(null,t)},N=function(e){return u(T.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,(65280&e.channelcount)>>8,255&e.channelcount,(65280&e.samplesize)>>8,255&e.samplesize,0,0,0,0,(65280&e.samplerate)>>8,255&e.samplerate,0,0]),i(e))},d=function(e){e=new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,0,(4278190080&e.duration)>>24,(16711680&e.duration)>>16,(65280&e.duration)>>8,255&e.duration,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,(65280&e.width)>>8,255&e.width,0,0,(65280&e.height)>>8,255&e.height,0,0]);return u(T.tkhd,e)},v=function(e){var t,i=u(T.tfhd,new Uint8Array([0,0,0,58,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0])),n=Math.floor(e.baseMediaDecodeTime/V),r=Math.floor(e.baseMediaDecodeTime%V),n=u(T.tfdt,new Uint8Array([1,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,r>>>24&255,r>>>16&255,r>>>8&255,255&r]));return"audio"===e.type?(t=b(e,92),u(T.traf,i,n,t)):(r=m(e),t=b(e,r.length+92),u(T.traf,i,n,t,r))},c=function(e){return e.duration=e.duration||4294967295,u(T.trak,d(e),h(e))},_=function(e){var t=new Uint8Array([0,0,0,0,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return"video"!==e.type&&(t[t.length-1]=0),u(T.trex,t)},U=function(e,t){var i=0,n=0,r=0,a=0;return e.length&&(void 0!==e[0].duration&&(i=1),void 0!==e[0].size&&(n=2),void 0!==e[0].flags&&(r=4),void 0!==e[0].compositionTimeOffset&&(a=8)),[0,0,i|n|r|a,1,(4278190080&e.length)>>>24,(16711680&e.length)>>>16,(65280&e.length)>>>8,255&e.length,(4278190080&t)>>>24,(16711680&t)>>>16,(65280&t)>>>8,255&t]},B=function(e,t){var i,n,r,a,s=e.samples||[];for(t+=20+16*s.length,t=U(s,t),(n=new Uint8Array(t.length+16*s.length)).set(t),i=t.length,a=0;a>>24,n[i++]=(16711680&r.duration)>>>16,n[i++]=(65280&r.duration)>>>8,n[i++]=255&r.duration,n[i++]=(4278190080&r.size)>>>24,n[i++]=(16711680&r.size)>>>16,n[i++]=(65280&r.size)>>>8,n[i++]=255&r.size,n[i++]=r.flags.isLeading<<2|r.flags.dependsOn,n[i++]=r.flags.isDependedOn<<6|r.flags.hasRedundancy<<4|r.flags.paddingValue<<1|r.flags.isNonSyncSample,n[i++]=61440&r.flags.degradationPriority,n[i++]=15&r.flags.degradationPriority,n[i++]=(4278190080&r.compositionTimeOffset)>>>24,n[i++]=(16711680&r.compositionTimeOffset)>>>16,n[i++]=(65280&r.compositionTimeOffset)>>>8,n[i++]=255&r.compositionTimeOffset;return u(T.trun,n)},F=function(e,t){var i,n,r,a,s=e.samples||[];for(t+=20+8*s.length,t=U(s,t),(i=new Uint8Array(t.length+8*s.length)).set(t),n=t.length,a=0;a>>24,i[n++]=(16711680&r.duration)>>>16,i[n++]=(65280&r.duration)>>>8,i[n++]=255&r.duration,i[n++]=(4278190080&r.size)>>>24,i[n++]=(16711680&r.size)>>>16,i[n++]=(65280&r.size)>>>8,i[n++]=255&r.size;return u(T.trun,i)},b=function(e,t){return("audio"===e.type?F:B)(e,t)};n=function(){return u(T.ftyp,S,w,S,E)};function W(e,t){var i={size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0,isNonSyncSample:1}};return i.dataOffset=t,i.compositionTimeOffset=e.pts-e.dts,i.duration=e.duration,i.size=4*e.length,i.size+=e.byteLength,e.keyFrame&&(i.flags.dependsOn=2,i.flags.isNonSyncSample=0),i}function G(e){for(var t=[];e--;)t.push(0);return t}function z(){var e,i;return X||(e={96e3:[ie,[227,64],G(154),[56]],88200:[ie,[231],G(170),[56]],64e3:[ie,[248,192],G(240),[56]],48e3:[ie,[255,192],G(268),[55,148,128],G(54),[112]],44100:[ie,[255,192],G(268),[55,163,128],G(84),[112]],32e3:[ie,[255,192],G(268),[55,234],G(226),[112]],24e3:[ie,[255,192],G(268),[55,255,128],G(268),[111,112],G(126),[224]],16e3:[ie,[255,192],G(268),[55,255,128],G(268),[111,255],G(269),[223,108],G(195),[1,192]],12e3:[ne,G(268),[3,127,248],G(268),[6,255,240],G(268),[13,255,224],G(268),[27,253,128],G(259),[56]],11025:[ne,G(268),[3,127,248],G(268),[6,255,240],G(268),[13,255,224],G(268),[27,255,192],G(268),[55,175,128],G(108),[112]],8e3:[ne,G(268),[3,121,16],G(47),[7]]},i=e,X=Object.keys(i).reduce(function(e,t){return e[t]=new Uint8Array(i[t].reduce(function(e,t){return e.concat(t)},[])),e},{})),X}var X,K=function(e){return u(T.mdat,e)},Y=We,Q=function(e){var t=n(),i=s(e),e=new Uint8Array(t.byteLength+i.byteLength);return e.set(t),e.set(i,t.byteLength),e},$=function(e){var t,i,n=[],r=[];for(r.byteLength=0,r.nalCount=0,r.duration=0,t=n.byteLength=0;t=i?e:(t.minSegmentDts=1/0,e.filter(function(e){return e.dts>=i&&(t.minSegmentDts=Math.min(t.minSegmentDts,e.dts),t.minSegmentPts=t.minSegmentDts,!0)}))},ge=function(e){for(var t,i=[],n=0;n=this.virtualRowCount&&"function"==typeof this.beforeRowOverflow&&this.beforeRowOverflow(e),0this.virtualRowCount;)this.rows.shift(),this.rowIdx--},Ae.prototype.isEmpty=function(){return 0===this.rows.length||1===this.rows.length&&""===this.rows[0]},Ae.prototype.addText=function(e){this.rows[this.rowIdx]+=e},Ae.prototype.backspace=function(){var e;this.isEmpty()||(e=this.rows[this.rowIdx],this.rows[this.rowIdx]=e.substr(0,e.length-1))};function Le(e,t,i){this.serviceNum=e,this.text="",this.currentWindow=new Ae(-1),this.windows=[],this.stream=i,"string"==typeof t&&this.createTextDecoder(t)}Le.prototype.init=function(e,t){this.startPts=e;for(var i=0;i<8;i++)this.windows[i]=new Ae(i),"function"==typeof t&&(this.windows[i].beforeRowOverflow=t)},Le.prototype.setCurrentWindow=function(e){this.currentWindow=this.windows[e]},Le.prototype.createTextDecoder=function(t){if("undefined"==typeof TextDecoder)this.stream.trigger("log",{level:"warn",message:"The `encoding` option is unsupported without TextDecoder support"});else try{this.textDecoder_=new TextDecoder(t)}catch(e){this.stream.trigger("log",{level:"warn",message:"TextDecoder could not be created with "+t+" encoding. "+e})}};var De=function e(t){t=t||{},e.prototype.init.call(this);var i,n=this,r=t.captionServices||{},a={};Object.keys(r).forEach(function(e){i=r[e],/^SERVICE/.test(e)&&(a[e]=i.encoding)}),this.serviceEncodings=a,this.current708Packet=null,this.services={},this.push=function(e){(3===e.type||null===n.current708Packet)&&n.new708Packet(),n.add708Bytes(e)}};De.prototype=new j,De.prototype.new708Packet=function(){null!==this.current708Packet&&this.push708Packet(),this.current708Packet={data:[],ptsVals:[]}},De.prototype.add708Bytes=function(e){var t=e.ccData,i=t>>>8,t=255&t;this.current708Packet.ptsVals.push(e.pts),this.current708Packet.data.push(i),this.current708Packet.data.push(t)},De.prototype.push708Packet=function(){var e,t=this.current708Packet,i=t.data,n=null,r=0,a=i[r++];for(t.seq=a>>6,t.sizeCode=63&a;r>5)&&0>5,t.rowLock=(16&n)>>4,t.columnLock=(8&n)>>3,t.priority=7&n,n=i[++e],t.relativePositioning=(128&n)>>7,t.anchorVertical=127&n,n=i[++e],t.anchorHorizontal=n,n=i[++e],t.anchorPoint=(240&n)>>4,t.rowCount=15&n,n=i[++e],t.columnCount=63&n,n=i[++e],t.windowStyle=(56&n)>>3,t.penStyle=7&n,t.virtualRowCount=t.rowCount+1,e},De.prototype.setWindowAttributes=function(e,t){var i=this.current708Packet.data,n=i[e],t=t.currentWindow.winAttr,n=i[++e];return t.fillOpacity=(192&n)>>6,t.fillRed=(48&n)>>4,t.fillGreen=(12&n)>>2,t.fillBlue=3&n,n=i[++e],t.borderType=(192&n)>>6,t.borderRed=(48&n)>>4,t.borderGreen=(12&n)>>2,t.borderBlue=3&n,n=i[++e],t.borderType+=(128&n)>>5,t.wordWrap=(64&n)>>6,t.printDirection=(48&n)>>4,t.scrollDirection=(12&n)>>2,t.justify=3&n,n=i[++e],t.effectSpeed=(240&n)>>4,t.effectDirection=(12&n)>>2,t.displayEffect=3&n,e},De.prototype.flushDisplayed=function(e,t){for(var i=[],n=0;n<8;n++)t.windows[n].visible&&!t.windows[n].isEmpty()&&i.push(t.windows[n].getText());t.endPts=e,t.text=i.join("\n\n"),this.pushCaption(t),t.startPts=e},De.prototype.pushCaption=function(e){""!==e.text&&(this.trigger("data",{startPts:e.startPts,endPts:e.endPts,text:e.text,stream:"cc708_"+e.serviceNum}),e.text="",e.startPts=e.endPts)},De.prototype.displayWindows=function(e,t){var i=this.current708Packet.data[++e],n=this.getPts(e);this.flushDisplayed(n,t);for(var r=0;r<8;r++)i&1<>4,t.offset=(12&n)>>2,t.penSize=3&n,n=i[++e],t.italics=(128&n)>>7,t.underline=(64&n)>>6,t.edgeType=(56&n)>>3,t.fontStyle=7&n,e},De.prototype.setPenColor=function(e,t){var i=this.current708Packet.data,n=i[e],t=t.currentWindow.penColor,n=i[++e];return t.fgOpacity=(192&n)>>6,t.fgRed=(48&n)>>4,t.fgGreen=(12&n)>>2,t.fgBlue=3&n,n=i[++e],t.bgOpacity=(192&n)>>6,t.bgRed=(48&n)>>4,t.bgGreen=(12&n)>>2,t.bgBlue=3&n,n=i[++e],t.edgeRed=(48&n)>>4,t.edgeGreen=(12&n)>>2,t.edgeBlue=3&n,e},De.prototype.setPenLocation=function(e,t){var i=this.current708Packet.data,n=i[e],r=t.currentWindow.penLoc;return t.currentWindow.pendingNewLine=!0,n=i[++e],r.row=15&n,n=i[++e],r.column=63&n,e},De.prototype.reset=function(e,t){var i=this.getPts(e);return this.flushDisplayed(i,t),this.initService(t.serviceNum,e)};function Oe(e){return null===e?"":(e=Re[e]||e,String.fromCharCode(e))}function Me(){for(var e=[],t=15;t--;)e.push("");return e}var Re={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,304:174,305:176,306:189,307:191,308:8482,309:162,310:163,311:9834,312:224,313:160,314:232,315:226,316:234,317:238,318:244,319:251,544:193,545:201,546:211,547:218,548:220,549:252,550:8216,551:161,552:42,553:39,554:8212,555:169,556:8480,557:8226,558:8220,559:8221,560:192,561:194,562:199,563:200,564:202,565:203,566:235,567:206,568:207,569:239,570:212,571:217,572:249,573:219,574:171,575:187,800:195,801:227,802:205,803:204,804:236,805:210,806:242,807:213,808:245,809:123,810:125,811:92,812:94,813:95,814:124,815:126,816:196,817:228,818:214,819:246,820:223,821:165,822:164,823:9474,824:197,825:229,826:216,827:248,828:9484,829:9488,830:9492,831:9496},Ne=[4352,4384,4608,4640,5376,5408,5632,5664,5888,5920,4096,4864,4896,5120,5152],Ue=function e(t,i){e.prototype.init.call(this),this.field_=t||0,this.dataChannel_=i||0,this.name_="CC"+(1+(this.field_<<1|this.dataChannel_)),this.setConstants(),this.reset(),this.push=function(e){var t,i,n,r,a=32639&e.ccData;a!==this.lastControlCode_?(4096==(61440&a)?this.lastControlCode_=a:a!==this.PADDING_&&(this.lastControlCode_=null),t=a>>>8,i=255&a,a===this.PADDING_||(a===this.RESUME_CAPTION_LOADING_?this.mode_="popOn":a===this.END_OF_CAPTION_?(this.mode_="popOn",this.clearFormatting(e.pts),this.flushDisplayed(e.pts),r=this.displayed_,this.displayed_=this.nonDisplayed_,this.nonDisplayed_=r,this.startPts_=e.pts):a===this.ROLL_UP_2_ROWS_?(this.rollUpRows_=2,this.setRollUp(e.pts)):a===this.ROLL_UP_3_ROWS_?(this.rollUpRows_=3,this.setRollUp(e.pts)):a===this.ROLL_UP_4_ROWS_?(this.rollUpRows_=4,this.setRollUp(e.pts)):a===this.CARRIAGE_RETURN_?(this.clearFormatting(e.pts),this.flushDisplayed(e.pts),this.shiftRowsUp_(),this.startPts_=e.pts):a===this.BACKSPACE_?"popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1):a===this.ERASE_DISPLAYED_MEMORY_?(this.flushDisplayed(e.pts),this.displayed_=Me()):a===this.ERASE_NON_DISPLAYED_MEMORY_?this.nonDisplayed_=Me():a===this.RESUME_DIRECT_CAPTIONING_?("paintOn"!==this.mode_&&(this.flushDisplayed(e.pts),this.displayed_=Me()),this.mode_="paintOn",this.startPts_=e.pts):this.isSpecialCharacter(t,i)?(n=Oe((t=(3&t)<<8)|i),this[this.mode_](e.pts,n),this.column_++):this.isExtCharacter(t,i)?("popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1),n=Oe((t=(3&t)<<8)|i),this[this.mode_](e.pts,n),this.column_++):this.isMidRowCode(t,i)?(this.clearFormatting(e.pts),this[this.mode_](e.pts," "),this.column_++,14==(14&i)&&this.addFormatting(e.pts,["i"]),1==(1&i)&&this.addFormatting(e.pts,["u"])):this.isOffsetControlCode(t,i)?this.column_+=3&i:this.isPAC(t,i)?(r=Ne.indexOf(7968&a),"rollUp"===this.mode_&&(r-this.rollUpRows_+1<0&&(r=this.rollUpRows_-1),this.setRollUp(e.pts,r)),r!==this.row_&&(this.clearFormatting(e.pts),this.row_=r),1&i&&-1===this.formatting_.indexOf("u")&&this.addFormatting(e.pts,["u"]),16==(16&a)&&(this.column_=4*((14&a)>>1)),this.isColorPAC(i)&&14==(14&i)&&this.addFormatting(e.pts,["i"])):this.isNormalChar(t)&&(0===i&&(i=null),n=Oe(t),n+=Oe(i),this[this.mode_](e.pts,n),this.column_+=n.length))):this.lastControlCode_=null}};Ue.prototype=new j,Ue.prototype.flushDisplayed=function(e){var t=this.displayed_.map(function(e,t){try{return e.trim()}catch(e){return this.trigger("log",{level:"warn",message:"Skipping a malformed 608 caption at index "+t+"."}),""}},this).join("\n").replace(/^\n+|\n+$/g,"");t.length&&this.trigger("data",{startPts:this.startPts_,endPts:e,text:t,stream:this.name_})},Ue.prototype.reset=function(){this.mode_="popOn",this.topRow_=0,this.startPts_=0,this.displayed_=Me(),this.nonDisplayed_=Me(),this.lastControlCode_=null,this.column_=0,this.row_=14,this.rollUpRows_=2,this.formatting_=[]},Ue.prototype.setConstants=function(){0===this.dataChannel_?(this.BASE_=16,this.EXT_=17,this.CONTROL_=(20|this.field_)<<8,this.OFFSET_=23):1===this.dataChannel_&&(this.BASE_=24,this.EXT_=25,this.CONTROL_=(28|this.field_)<<8,this.OFFSET_=31),this.PADDING_=0,this.RESUME_CAPTION_LOADING_=32|this.CONTROL_,this.END_OF_CAPTION_=47|this.CONTROL_,this.ROLL_UP_2_ROWS_=37|this.CONTROL_,this.ROLL_UP_3_ROWS_=38|this.CONTROL_,this.ROLL_UP_4_ROWS_=39|this.CONTROL_,this.CARRIAGE_RETURN_=45|this.CONTROL_,this.RESUME_DIRECT_CAPTIONING_=41|this.CONTROL_,this.BACKSPACE_=33|this.CONTROL_,this.ERASE_DISPLAYED_MEMORY_=44|this.CONTROL_,this.ERASE_NON_DISPLAYED_MEMORY_=46|this.CONTROL_},Ue.prototype.isSpecialCharacter=function(e,t){return e===this.EXT_&&48<=t&&t<=63},Ue.prototype.isExtCharacter=function(e,t){return(e===this.EXT_+1||e===this.EXT_+2)&&32<=t&&t<=63},Ue.prototype.isMidRowCode=function(e,t){return e===this.EXT_&&32<=t&&t<=47},Ue.prototype.isOffsetControlCode=function(e,t){return e===this.OFFSET_&&33<=t&&t<=35},Ue.prototype.isPAC=function(e,t){return e>=this.BASE_&&e"},"");this[this.mode_](e,t)},Ue.prototype.clearFormatting=function(e){var t;this.formatting_.length&&(t=this.formatting_.reverse().reduce(function(e,t){return e+""},""),this.formatting_=[],this[this.mode_](e,t))},Ue.prototype.popOn=function(e,t){var i=this.nonDisplayed_[this.row_];this.nonDisplayed_[this.row_]=i+=t},Ue.prototype.rollUp=function(e,t){var i=this.displayed_[this.row_];this.displayed_[this.row_]=i+=t},Ue.prototype.shiftRowsUp_=function(){for(var e=0;e>>2,s*=4,s+=3&a[7],o.timeStamp=s,void 0===t.pts&&void 0===t.dts&&(t.pts=o.timeStamp,t.dts=o.timeStamp),this.trigger("timestamp",o))),t.frames.push(o),i+=10,(i+=n)>>4&&(i+=e[i]+1),0===t.pid)t.type="pat",n(e.subarray(i),t),this.trigger("data",t);else if(t.pid===this.pmtPid)for(t.type="pmt",n(e.subarray(i),t),this.trigger("data",t);this.packetsWaitingForPmt.length;)this.processPes_.apply(this,this.packetsWaitingForPmt.shift());else void 0===this.programMapTable?this.packetsWaitingForPmt.push([e,i,t]):this.processPes_(e,i,t)},this.processPes_=function(e,t,i){i.pid===this.programMapTable.video?i.streamType=je.H264_STREAM_TYPE:i.pid===this.programMapTable.audio?i.streamType=je.ADTS_STREAM_TYPE:i.streamType=this.programMapTable["timed-metadata"][i.pid],i.type="pes",i.data=e.subarray(t),this.trigger("data",i)}}).prototype=new j,Xe.STREAM_TYPES={h264:27,adts:15},(Ke=function(){function n(e,t,i){var n,r,a,s,o=new Uint8Array(e.size),u={type:t},l=0,c=0;if(e.data.length&&!(e.size<9)){for(u.trackId=e.data[0].pid,l=0;l>>3,a.pts*=4,a.pts+=(6&r[13])>>>1,a.dts=a.pts,64&s&&(a.dts=(14&r[14])<<27|(255&r[15])<<20|(254&r[16])<<12|(255&r[17])<<5|(254&r[18])>>>3,a.dts*=4,a.dts+=(6&r[18])>>>1)),a.data=r.subarray(9+r[8])),t="video"===t||u.packetLength<=e.size,(i||t)&&(e.size=0,e.data.length=0),t&&d.trigger("data",u)}}var t,d=this,r=!1,a={data:[],size:0},s={data:[],size:0},o={data:[],size:0};Ke.prototype.init.call(this),this.push=function(i){({pat:function(){},pes:function(){var e,t;switch(i.streamType){case je.H264_STREAM_TYPE:e=a,t="video";break;case je.ADTS_STREAM_TYPE:e=s,t="audio";break;case je.METADATA_STREAM_TYPE:e=o,t="timed-metadata";break;default:return}i.payloadUnitStartIndicator&&n(e,t,!0),e.data.push(i),e.size+=i.data.byteLength},pmt:function(){var e={type:"metadata",tracks:[]};null!==(t=i.programMapTable).video&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.video,codec:"avc",type:"video"}),null!==t.audio&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.audio,codec:"adts",type:"audio"}),r=!0,d.trigger("data",e)}})[i.type]()},this.reset=function(){a.size=0,a.data.length=0,s.size=0,s.data.length=0,this.trigger("reset")},this.flushStreams_=function(){n(a,"video"),n(s,"audio"),n(o,"timed-metadata")},this.flush=function(){var e;!r&&t&&(e={type:"metadata",tracks:[]},null!==t.video&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.video,codec:"avc",type:"video"}),null!==t.audio&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.audio,codec:"adts",type:"audio"}),d.trigger("data",e)),r=!1,this.flushStreams_(),this.trigger("done")}}).prototype=new j;var Qe,$e={PAT_PID:0,MP2T_PACKET_LENGTH:188,TransportPacketStream:Ye,TransportParseStream:Xe,ElementaryStream:Ke,TimestampRolloverStream:We,CaptionStream:Fe.CaptionStream,Cea608Stream:Fe.Cea608Stream,Cea708Stream:Fe.Cea708Stream,MetadataStream:e};for(Qe in je)je.hasOwnProperty(Qe)&&($e[Qe]=je[Qe]);var Je=$e,Ze=ue,et=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],tt=function(u){var l,c=0;tt.prototype.init.call(this),this.skipWarn_=function(e,t){this.trigger("log",{level:"warn",message:"adts skiping bytes "+e+" to "+t+" in frame "+c+" outside syncword"})},this.push=function(e){var t,i,n,r,a,s,o=0;if(u||(c=0),"audio"===e.type){for(l&&l.length?(n=l,(l=new Uint8Array(n.byteLength+e.data.byteLength)).set(n),l.set(e.data,n.byteLength)):l=e.data;o+7>5,a=(r=1024*(1+(3&l[o+6])))*Ze/et[(60&l[o+2])>>>2],l.byteLength-o>>6&3),channelcount:(1&l[o+2])<<2|(192&l[o+3])>>>6,samplerate:et[(60&l[o+2])>>>2],samplingfrequencyindex:(60&l[o+2])>>>2,samplesize:16,data:l.subarray(o+7+i,o+t)}),c++,o+=t}else"number"!=typeof s&&(s=o),o++;"number"==typeof s&&(this.skipWarn_(s,o),s=null),l=l.subarray(o)}},this.flush=function(){c=0,this.trigger("done")},this.reset=function(){l=void 0,this.trigger("reset")},this.endTimeline=function(){l=void 0,this.trigger("endedtimeline")}};tt.prototype=new j;var it,nt,rt=tt,at=function(n){var r=n.byteLength,a=0,s=0;this.length=function(){return 8*r},this.bitsAvailable=function(){return 8*r+s},this.loadWord=function(){var e=n.byteLength-r,t=new Uint8Array(4),i=Math.min(4,r);if(0===i)throw new Error("no bytes available");t.set(n.subarray(e,e+i)),a=new DataView(t.buffer).getUint32(0),s=8*i,r-=i},this.skipBits=function(e){var t;e>>32-t;return 0<(s-=t)?a<<=t:0>>e))return a<<=e,s-=e,e;return this.loadWord(),e+this.skipLeadingZeros()},this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.readUnsignedExpGolomb=function(){var e=this.skipLeadingZeros();return this.readBits(e+1)-1},this.readExpGolomb=function(){var e=this.readUnsignedExpGolomb();return 1&e?1+e>>>1:-1*(e>>>1)},this.readBoolean=function(){return 1===this.readBits(1)},this.readUnsignedByte=function(){return this.readBits(8)},this.loadWord()},st=function(){var n,r,a=0;st.prototype.init.call(this),this.push=function(e){for(var t,i=(r=r?((t=new Uint8Array(r.byteLength+e.data.byteLength)).set(r),t.set(e.data,r.byteLength),t):e.data).byteLength;a>4?i+20:i+10}function ut(e,t){return e.length-t<10||e[t]!=="I".charCodeAt(0)||e[t+1]!=="D".charCodeAt(0)||e[t+2]!=="3".charCodeAt(0)?t:ut(e,t+=ot(e,t))}function lt(e){return e[0]<<21|e[1]<<14|e[2]<<7|e[3]}var e={H264Stream:it,NalByteStream:st},ct=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],dt={isLikelyAacData:function(e){var t=ut(e,0);return e.length>=t+2&&255==(255&e[t])&&240==(240&e[t+1])&&16==(22&e[t+1])},parseId3TagSize:ot,parseAdtsSize:function(e,t){var i=(224&e[t+5])>>5,n=e[t+4]<<3;return 6144&e[t+3]|n|i},parseType:function(e,t){return e[t]==="I".charCodeAt(0)&&e[t+1]==="D".charCodeAt(0)&&e[t+2]==="3".charCodeAt(0)?"timed-metadata":!0&e[t]&&240==(240&e[t+1])?"audio":null},parseSampleRate:function(e){for(var t=0;t+5>>2];t++}return null},parseAacTimestamp:function(e){var t,i=10;64&e[5]&&(i+=4,i+=lt(e.subarray(10,14)));do{if((t=lt(e.subarray(i+4,i+8)))<1)return null;if("PRIV"===String.fromCharCode(e[i],e[i+1],e[i+2],e[i+3]))for(var n=e.subarray(i+10,i+t+10),r=0;r>>2;return s*=4,s+=3&a[7]}}while(i+=10,(i+=t)a.length)break;t={type:"audio",data:a.subarray(r,r+n),pts:s,dts:s},this.trigger("data",t),r+=n}else{if(a.length-r<10)break;if(r+(n=dt.parseId3TagSize(a,r))>a.length)break;t={type:"timed-metadata",data:a.subarray(r,r+n)},this.trigger("data",t),r+=n}e=a.length-r,a=0i.pts?u++:(t++,a-=n.byteLength,s-=n.nalCount,o-=n.duration);return 0===t?e:t===e.length?null:((r=e.slice(t)).byteLength=a,r.duration=o,r.nalCount=s,r.pts=r[0].pts,r.dts=r[0].dts,r)},this.alignGopsAtEnd_=function(e){for(var t,i,n=l.length-1,r=e.length-1,a=null,s=!1;0<=n&&0<=r;){if(t=l[n],i=e[r],t.pts===i.pts){s=!0;break}t.pts>i.pts?n--:(n===l.length-1&&(a=r),r--)}if(!s&&null===a)return null;if(0===(u=s?r:a))return e;var o=e.slice(u),u=o.reduce(function(e,t){return e.byteLength+=t.byteLength,e.duration+=t.duration,e.nalCount+=t.nalCount,e},{byteLength:0,duration:0,nalCount:0});return o.byteLength=u.byteLength,o.duration=u.duration,o.nalCount=u.nalCount,o.pts=o[0].pts,o.dts=o[0].dts,o},this.alignGopsWith=function(e){l=e}}).prototype=new j,(_t=function(e,t){this.numberOfTracks=0,this.metadataStream=t,"undefined"!=typeof(e=e||{}).remux?this.remuxTracks=!!e.remux:this.remuxTracks=!0,"boolean"==typeof e.keepOriginalTimestamps?this.keepOriginalTimestamps=e.keepOriginalTimestamps:this.keepOriginalTimestamps=!1,this.pendingTracks=[],this.videoTrack=null,this.pendingBoxes=[],this.pendingCaptions=[],this.pendingMetadata=[],this.pendingBytes=0,this.emittedTracks=0,_t.prototype.init.call(this),this.push=function(e){return e.text?this.pendingCaptions.push(e):e.frames?this.pendingMetadata.push(e):(this.pendingTracks.push(e.track),this.pendingBytes+=e.boxes.byteLength,"video"===e.track.type&&(this.videoTrack=e.track,this.pendingBoxes.push(e.boxes)),void("audio"===e.track.type&&(this.audioTrack=e.track,this.pendingBoxes.unshift(e.boxes))))}}).prototype=new j,_t.prototype.flush=function(e){var t,i,n,r=0,a={captions:[],captionStreams:{},metadata:[],info:{}},s=0;if(this.pendingTracks.length=this.numberOfTracks&&(this.trigger("done"),this.emittedTracks=0))}if(this.videoTrack?(s=this.videoTrack.timelineStartInfo.pts,St.forEach(function(e){a.info[e]=this.videoTrack[e]},this)):this.audioTrack&&(s=this.audioTrack.timelineStartInfo.pts,Tt.forEach(function(e){a.info[e]=this.audioTrack[e]},this)),this.videoTrack||this.audioTrack){for(1===this.pendingTracks.length?a.type=this.pendingTracks[0].type:a.type="combined",this.emittedTracks+=this.pendingTracks.length,e=Q(this.pendingTracks),a.initSegment=new Uint8Array(e.byteLength),a.initSegment.set(e),a.data=new Uint8Array(this.pendingBytes),n=0;n=this.numberOfTracks&&(this.trigger("done"),this.emittedTracks=0)},_t.prototype.setRemux=function(e){this.remuxTracks=e},(vt=function(n){var r,a,s=this,i=!0;vt.prototype.init.call(this),this.baseMediaDecodeTime=(n=n||{}).baseMediaDecodeTime||0,this.transmuxPipeline_={},this.setupAacPipeline=function(){var t={};(this.transmuxPipeline_=t).type="aac",t.metadataStream=new Je.MetadataStream,t.aacStream=new bt,t.audioTimestampRolloverStream=new Je.TimestampRolloverStream("audio"),t.timedMetadataTimestampRolloverStream=new Je.TimestampRolloverStream("timed-metadata"),t.adtsStream=new rt,t.coalesceStream=new _t(n,t.metadataStream),t.headOfPipeline=t.aacStream,t.aacStream.pipe(t.audioTimestampRolloverStream).pipe(t.adtsStream),t.aacStream.pipe(t.timedMetadataTimestampRolloverStream).pipe(t.metadataStream).pipe(t.coalesceStream),t.metadataStream.on("timestamp",function(e){t.aacStream.setTimestamp(e.timeStamp)}),t.aacStream.on("data",function(e){"timed-metadata"!==e.type&&"audio"!==e.type||t.audioSegmentStream||(a=a||{timelineStartInfo:{baseMediaDecodeTime:s.baseMediaDecodeTime},codec:"adts",type:"audio"},t.coalesceStream.numberOfTracks++,t.audioSegmentStream=new Ct(a,n),t.audioSegmentStream.on("log",s.getLogTrigger_("audioSegmentStream")),t.audioSegmentStream.on("timingInfo",s.trigger.bind(s,"audioTimingInfo")),t.adtsStream.pipe(t.audioSegmentStream).pipe(t.coalesceStream),s.trigger("trackinfo",{hasAudio:!!a,hasVideo:!!r}))}),t.coalesceStream.on("data",this.trigger.bind(this,"data")),t.coalesceStream.on("done",this.trigger.bind(this,"done")),ft(this,t)},this.setupTsPipeline=function(){var i={};(this.transmuxPipeline_=i).type="ts",i.metadataStream=new Je.MetadataStream,i.packetStream=new Je.TransportPacketStream,i.parseStream=new Je.TransportParseStream,i.elementaryStream=new Je.ElementaryStream,i.timestampRolloverStream=new Je.TimestampRolloverStream,i.adtsStream=new rt,i.h264Stream=new wt,i.captionStream=new Je.CaptionStream(n),i.coalesceStream=new _t(n,i.metadataStream),i.headOfPipeline=i.packetStream,i.packetStream.pipe(i.parseStream).pipe(i.elementaryStream).pipe(i.timestampRolloverStream),i.timestampRolloverStream.pipe(i.h264Stream),i.timestampRolloverStream.pipe(i.adtsStream),i.timestampRolloverStream.pipe(i.metadataStream).pipe(i.coalesceStream),i.h264Stream.pipe(i.captionStream).pipe(i.coalesceStream),i.elementaryStream.on("data",function(e){var t;if("metadata"===e.type){for(t=e.tracks.length;t--;)r||"video"!==e.tracks[t].type?a||"audio"!==e.tracks[t].type||((a=e.tracks[t]).timelineStartInfo.baseMediaDecodeTime=s.baseMediaDecodeTime):(r=e.tracks[t]).timelineStartInfo.baseMediaDecodeTime=s.baseMediaDecodeTime;r&&!i.videoSegmentStream&&(i.coalesceStream.numberOfTracks++,i.videoSegmentStream=new yt(r,n),i.videoSegmentStream.on("log",s.getLogTrigger_("videoSegmentStream")),i.videoSegmentStream.on("timelineStartInfo",function(e){a&&!n.keepOriginalTimestamps&&(a.timelineStartInfo=e,i.audioSegmentStream.setEarliestDts(e.dts-s.baseMediaDecodeTime))}),i.videoSegmentStream.on("processedGopsInfo",s.trigger.bind(s,"gopInfo")),i.videoSegmentStream.on("segmentTimingInfo",s.trigger.bind(s,"videoSegmentTimingInfo")),i.videoSegmentStream.on("baseMediaDecodeTime",function(e){a&&i.audioSegmentStream.setVideoBaseMediaDecodeTime(e)}),i.videoSegmentStream.on("timingInfo",s.trigger.bind(s,"videoTimingInfo")),i.h264Stream.pipe(i.videoSegmentStream).pipe(i.coalesceStream)),a&&!i.audioSegmentStream&&(i.coalesceStream.numberOfTracks++,i.audioSegmentStream=new Ct(a,n),i.audioSegmentStream.on("log",s.getLogTrigger_("audioSegmentStream")),i.audioSegmentStream.on("timingInfo",s.trigger.bind(s,"audioTimingInfo")),i.audioSegmentStream.on("segmentTimingInfo",s.trigger.bind(s,"audioSegmentTimingInfo")),i.adtsStream.pipe(i.audioSegmentStream).pipe(i.coalesceStream)),s.trigger("trackinfo",{hasAudio:!!a,hasVideo:!!r})}}),i.coalesceStream.on("data",this.trigger.bind(this,"data")),i.coalesceStream.on("id3Frame",function(e){e.dispatchType=i.metadataStream.dispatchType,s.trigger("id3Frame",e)}),i.coalesceStream.on("caption",this.trigger.bind(this,"caption")),i.coalesceStream.on("done",this.trigger.bind(this,"done")),ft(this,i)},this.setBaseMediaDecodeTime=function(e){var t=this.transmuxPipeline_;n.keepOriginalTimestamps||(this.baseMediaDecodeTime=e),a&&(a.timelineStartInfo.dts=void 0,a.timelineStartInfo.pts=void 0,_e(a),t.audioTimestampRolloverStream&&t.audioTimestampRolloverStream.discontinuity()),r&&(t.videoSegmentStream&&(t.videoSegmentStream.gopCache_=[]),r.timelineStartInfo.dts=void 0,r.timelineStartInfo.pts=void 0,_e(r),t.captionStream.reset()),t.timestampRolloverStream&&t.timestampRolloverStream.discontinuity()},this.setAudioAppendStart=function(e){a&&this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(e)},this.setRemux=function(e){var t=this.transmuxPipeline_;n.remux=e,t&&t.coalesceStream&&t.coalesceStream.setRemux(e)},this.alignGopsWith=function(e){r&&this.transmuxPipeline_.videoSegmentStream&&this.transmuxPipeline_.videoSegmentStream.alignGopsWith(e)},this.getLogTrigger_=function(t){var i=this;return function(e){e.stream=t,i.trigger("log",e)}},this.push=function(e){var t;i&&((t=Et(e))&&"aac"!==this.transmuxPipeline_.type?this.setupAacPipeline():t||"ts"===this.transmuxPipeline_.type||this.setupTsPipeline(),i=!1),this.transmuxPipeline_.headOfPipeline.push(e)},this.flush=function(){i=!0,this.transmuxPipeline_.headOfPipeline.flush()},this.endTimeline=function(){this.transmuxPipeline_.headOfPipeline.endTimeline()},this.reset=function(){this.transmuxPipeline_.headOfPipeline&&this.transmuxPipeline_.headOfPipeline.reset()},this.resetCaptions=function(){this.transmuxPipeline_.captionStream&&this.transmuxPipeline_.captionStream.reset()}}).prototype=new j;function It(e,c){var i=Rt(e,["moof","traf"]),e=Rt(e,["mdat"]),d={},n=[];return e.forEach(function(e,t){t=i[t];n.push({mdat:e,traf:t})}),n.forEach(function(e){var t,i,n,r,a,s=e.mdat,o=e.traf,u=Rt(o,["tfhd"]),l=Ht(u[0]),e=l.trackId,u=Rt(o,["tfdt"]),u=0>>4&&(t+=e[4]+1),t}function Lt(e){switch(e){case 5:return"slice_layer_without_partitioning_rbsp_idr";case 6:return"sei_rbsp";case 7:return"seq_parameter_set_rbsp";case 8:return"pic_parameter_set_rbsp";case 9:return"access_unit_delimiter_rbsp";default:return null}}var Dt={Transmuxer:vt,VideoSegmentStream:yt,AudioSegmentStream:Ct,AUDIO_PROPERTIES:Tt,VIDEO_PROPERTIES:St,generateSegmentTimingInfo:gt},e=function(e){return e>>>0},Ot=function(e){var t="";return t+=String.fromCharCode(e[0]),t+=String.fromCharCode(e[1]),t+=String.fromCharCode(e[2]),t+=String.fromCharCode(e[3])},Mt=e,Rt=function e(t,i){var n,r,a,s=[];if(!i.length)return null;for(n=0;n>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}},jt=function(e){var t,i={version:e[0],flags:new Uint8Array(e.subarray(1,4)),samples:[]},n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=1&i.flags[2],a=4&i.flags[2],s=1&i.flags[1],o=2&i.flags[1],u=4&i.flags[1],l=8&i.flags[1],c=n.getUint32(4),d=8;for(r&&(i.dataOffset=n.getInt32(d),d+=4),a&&c&&(t={flags:Ft(e.subarray(d,d+4))},d+=4,s&&(t.duration=n.getUint32(d),d+=4),o&&(t.size=n.getUint32(d),d+=4),l&&(1===i.version?t.compositionTimeOffset=n.getInt32(d):t.compositionTimeOffset=n.getUint32(d),d+=4),i.samples.push(t),c--);c--;)t={},s&&(t.duration=n.getUint32(d),d+=4),o&&(t.size=n.getUint32(d),d+=4),u&&(t.flags=Ft(e.subarray(d,d+4)),d+=4),l&&(1===i.version?t.compositionTimeOffset=n.getInt32(d):t.compositionTimeOffset=n.getUint32(d),d+=4),i.samples.push(t);return i},Ht=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength),i={version:e[0],flags:new Uint8Array(e.subarray(1,4)),trackId:t.getUint32(4)},n=1&i.flags[2],r=2&i.flags[2],a=8&i.flags[2],s=16&i.flags[2],o=32&i.flags[2],u=65536&i.flags[0],l=131072&i.flags[0],e=8;return n&&(e+=4,i.baseDataOffset=t.getUint32(12),e+=4),r&&(i.sampleDescriptionIndex=t.getUint32(e),e+=4),a&&(i.defaultSampleDuration=t.getUint32(e),e+=4),s&&(i.defaultSampleSize=t.getUint32(e),e+=4),o&&(i.defaultSampleFlags=t.getUint32(e)),u&&(i.durationIsEmpty=!0),!n&&l&&(i.baseDataOffsetIsMoof=!0),i},j="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},j="undefined"!=typeof window?window:"undefined"!=typeof j?j:"undefined"!=typeof self?self:{},qt=j,Vt=ke,Wt=Fe.CaptionStream,Gt=function(){var t,r,a,s,o,i,n=!1;this.isInitialized=function(){return n},this.init=function(e){t=new Wt,n=!0,i=!!e&&e.isPartial,t.on("data",function(e){e.startTime=e.startPts/s,e.endTime=e.endPts/s,o.captions.push(e),o.captionStreams[e.stream]=!0}),t.on("log",function(e){o.logs.push(e)})},this.isNewInit=function(e,t){return!(e&&0===e.length||t&&"object"==typeof t&&0===Object.keys(t).length)&&(a!==e[0]||s!==t[a])},this.parse=function(e,t,i){if(!this.isInitialized())return null;if(!t||!i)return null;if(this.isNewInit(t,i))a=t[0],s=i[a];else if(null===a||!s)return r.push(e),null;for(;0>>2&63).replace(/^0/,"")):t.codec="mp4a.40.2"):t.codec=t.codec.toLowerCase()));e=Rt(e,["mdia","mdhd"])[0];e&&(t.timescale=Yt(e)),s.push(t)}),s},Qt=ke,$t=q,Jt=Ie,Zt={};Zt.ts={parseType:function(e,t){e=xt(e);return 0===e?"pat":e===t?"pmt":t?"pes":null},parsePat:function(e){var t=At(e),i=4+Pt(e);return t&&(i+=e[i]+1),(31&e[i+10])<<8|e[i+11]},parsePmt:function(e){var t={},i=At(e),n=4+Pt(e);if(i&&(n+=e[n]+1),1&e[n+5]){for(var r=3+((15&e[n+1])<<8|e[n+2])-4,a=12+((15&e[n+10])<<8|e[n+11]);a=e.byteLength)return null;var i=null,n=e[t+7];return 192&n&&((i={}).pts=(14&e[t+9])<<27|(255&e[t+10])<<20|(254&e[t+11])<<12|(255&e[t+12])<<5|(254&e[t+13])>>>3,i.pts*=4,i.pts+=(6&e[t+13])>>>1,i.dts=i.pts,64&n&&(i.dts=(14&e[t+14])<<27|(255&e[t+15])<<20|(254&e[t+16])<<12|(255&e[t+17])<<5|(254&e[t+18])>>>3,i.dts*=4,i.dts+=(6&e[t+18])>>>1)),i},videoPacketContainsKeyFrame:function(e){for(var t=4+Pt(e),i=e.subarray(t),n=0,r=0,a=!1;re.length){i=!0;break}null===a&&(t=e.subarray(o,o+s),a=Zt.aac.parseAacTimestamp(t)),o+=s;break;case"audio":if(e.length-o<7){i=!0;break}if((s=Zt.aac.parseAdtsSize(e,o))>e.length){i=!0;break}null===r&&(t=e.subarray(o,o+s),r=Zt.aac.parseSampleRate(t)),n++,o+=s;break;default:o++}if(i)return null}if(null===r||null===a)return null;var u=ii/r;return{audio:[{type:"audio",dts:a,pts:a},{type:"audio",dts:a+1024*n*u,pts:a+1024*n*u}]}}:ti)(e);return r&&(r.audio||r.video)?(e=t,(t=r).audio&&t.audio.length&&("undefined"!=typeof(i=e)&&!isNaN(i)||(i=t.audio[0].dts),t.audio.forEach(function(e){e.dts=Jt(e.dts,i),e.pts=Jt(e.pts,i),e.dtsTime=e.dts/ii,e.ptsTime=e.pts/ii})),t.video&&t.video.length&&("undefined"!=typeof(n=e)&&!isNaN(n)||(n=t.video[0].dts),t.video.forEach(function(e){e.dts=Jt(e.dts,n),e.pts=Jt(e.pts,n),e.dtsTime=e.dts/ii,e.ptsTime=e.pts/ii}),t.firstKeyFrame&&((t=t.firstKeyFrame).dts=Jt(t.dts,n),t.pts=Jt(t.pts,n),t.dtsTime=t.dts/ii,t.ptsTime=t.pts/ii)),r):null},ri=function(){function e(e,t){this.options=t||{},this.self=e,this.init()}var t=e.prototype;return t.init=function(){var i,e;this.transmuxer&&this.transmuxer.dispose(),this.transmuxer=new Dt.Transmuxer(this.options),i=this.self,(e=this.transmuxer).on("data",function(e){var t=e.initSegment;e.initSegment={data:t.buffer,byteOffset:t.byteOffset,byteLength:t.byteLength};t=e.data;e.data=t.buffer,i.postMessage({action:"data",segment:e,byteOffset:t.byteOffset,byteLength:t.byteLength},[e.data])}),e.on("done",function(e){i.postMessage({action:"done"})}),e.on("gopInfo",function(e){i.postMessage({action:"gopInfo",gopInfo:e})}),e.on("videoSegmentTimingInfo",function(e){var t={start:{decode:ce(e.start.dts),presentation:ce(e.start.pts)},end:{decode:ce(e.end.dts),presentation:ce(e.end.pts)},baseMediaDecodeTime:ce(e.baseMediaDecodeTime)};e.prependedContentDuration&&(t.prependedContentDuration=ce(e.prependedContentDuration)),i.postMessage({action:"videoSegmentTimingInfo",videoSegmentTimingInfo:t})}),e.on("audioSegmentTimingInfo",function(e){var t={start:{decode:ce(e.start.dts),presentation:ce(e.start.pts)},end:{decode:ce(e.end.dts),presentation:ce(e.end.pts)},baseMediaDecodeTime:ce(e.baseMediaDecodeTime)};e.prependedContentDuration&&(t.prependedContentDuration=ce(e.prependedContentDuration)),i.postMessage({action:"audioSegmentTimingInfo",audioSegmentTimingInfo:t})}),e.on("id3Frame",function(e){i.postMessage({action:"id3Frame",id3Frame:e})}),e.on("caption",function(e){i.postMessage({action:"caption",caption:e})}),e.on("trackinfo",function(e){i.postMessage({action:"trackinfo",trackInfo:e})}),e.on("audioTimingInfo",function(e){i.postMessage({action:"audioTimingInfo",audioTimingInfo:{start:ce(e.start),end:ce(e.end)}})}),e.on("videoTimingInfo",function(e){i.postMessage({action:"videoTimingInfo",videoTimingInfo:{start:ce(e.start),end:ce(e.end)}})}),e.on("log",function(e){i.postMessage({action:"log",log:e})})},t.pushMp4Captions=function(e){this.captionParser||(this.captionParser=new Gt,this.captionParser.init());var t=new Uint8Array(e.data,e.byteOffset,e.byteLength),e=this.captionParser.parse(t,e.trackIds,e.timescales);this.self.postMessage({action:"mp4Captions",captions:e&&e.captions||[],logs:e&&e.logs||[],data:t.buffer},[t.buffer])},t.probeMp4StartTime=function(e){var t=e.timescales,e=e.data,t=Qt(t,e);this.self.postMessage({action:"probeMp4StartTime",startTime:t,data:e},[e.buffer])},t.probeMp4Tracks=function(e){var t=e.data,e=$t(t);this.self.postMessage({action:"probeMp4Tracks",tracks:e,data:t},[t.buffer])},t.probeTs=function(e){var t=e.data,i=e.baseStartTime,e="number"!=typeof i||isNaN(i)?void 0:i*ue,i=ni(t,e),e=null;i&&((e={hasVideo:i.video&&2===i.video.length||!1,hasAudio:i.audio&&2===i.audio.length||!1}).hasVideo&&(e.videoStart=i.video[0].ptsTime),e.hasAudio&&(e.audioStart=i.audio[0].ptsTime)),this.self.postMessage({action:"probeTs",result:e,data:t},[t.buffer])},t.clearAllMp4Captions=function(){this.captionParser&&this.captionParser.clearAllCaptions()},t.clearParsedMp4Captions=function(){this.captionParser&&this.captionParser.clearParsedCaptions()},t.push=function(e){e=new Uint8Array(e.data,e.byteOffset,e.byteLength);this.transmuxer.push(e)},t.reset=function(){this.transmuxer.reset()},t.setTimestampOffset=function(e){e=e.timestampOffset||0;this.transmuxer.setBaseMediaDecodeTime(Math.round(le(e)))},t.setAudioAppendStart=function(e){this.transmuxer.setAudioAppendStart(Math.ceil(le(e.appendStart)))},t.setRemux=function(e){this.transmuxer.setRemux(e.remux)},t.flush=function(e){this.transmuxer.flush(),self.postMessage({action:"done",type:"transmuxed"})},t.endTimeline=function(){this.transmuxer.endTimeline(),self.postMessage({action:"endedtimeline",type:"transmuxed"})},t.alignGopsWith=function(e){this.transmuxer.alignGopsWith(e.gopsToAlignWith.slice())},e}();self.onmessage=function(e){"init"===e.data.action&&e.data.options?this.messageHandlers=new ri(self,e.data.options):(this.messageHandlers||(this.messageHandlers=new ri(self)),e.data&&e.data.action&&"init"!==e.data.action&&this.messageHandlers[e.data.action]&&this.messageHandlers[e.data.action](e.data))}}))),Cl=function(e){e.currentTransmux=null,e.transmuxQueue.length&&(e.currentTransmux=e.transmuxQueue.shift(),"function"==typeof e.currentTransmux?e.currentTransmux():Du(e.currentTransmux))},Il=function(e){Mu("reset",e)},xl=function(e){var t=new kl;t.currentTransmux=null,t.transmuxQueue=[];var i=t.terminate;return t.terminate=function(){return t.currentTransmux=null,t.transmuxQueue.length=0,i.call(t)},t.postMessage({action:"init",options:e}),t},Al=2,Pl=-101,Ll=-102,Dl=Ro("CodecUtils"),Ol=Ro("PlaylistSelector"),ar=function(){var e=this.useDevicePixelRatio&&window.devicePixelRatio||1;return il(this.playlists.master,this.systemBandwidth,parseInt(Zu(this.tech_.el(),"width"),10)*e,parseInt(Zu(this.tech_.el(),"height"),10)*e,this.limitRenditionByPlayerDimensions,this.masterPlaylistController_)},Ml=function(n){function e(e,t){var i=n.call(this)||this;if(!e)throw new TypeError("Initialization settings are required");if("function"!=typeof e.currentTime)throw new TypeError("No currentTime getter specified");if(!e.mediaSource)throw new TypeError("No MediaSource specified");return i.bandwidth=e.bandwidth,i.throughput={rate:0,count:0},i.roundTrip=NaN,i.resetStats_(),i.mediaIndex=null,i.partIndex=null,i.hasPlayed_=e.hasPlayed,i.currentTime_=e.currentTime,i.seekable_=e.seekable,i.seeking_=e.seeking,i.duration_=e.duration,i.mediaSource_=e.mediaSource,i.vhs_=e.vhs,i.loaderType_=e.loaderType,i.currentMediaInfo_=void 0,i.startingMediaInfo_=void 0,i.segmentMetadataTrack_=e.segmentMetadataTrack,i.goalBufferLength_=e.goalBufferLength,i.sourceType_=e.sourceType,i.sourceUpdater_=e.sourceUpdater,i.inbandTextTracks_=e.inbandTextTracks,i.state_="INIT",i.timelineChangeController_=e.timelineChangeController,i.shouldSaveSegmentTimingInfo_=!0,i.parse708captions_=e.parse708captions,i.useDtsForTimestampOffset_=e.useDtsForTimestampOffset,i.captionServices_=e.captionServices,i.experimentalExactManifestTimings=e.experimentalExactManifestTimings,i.checkBufferTimeout_=null,i.error_=void 0,i.currentTimeline_=-1,i.pendingSegment_=null,i.xhrOptions_=null,i.pendingSegments_=[],i.audioDisabled_=!1,i.isPendingTimestampOffset_=!1,i.gopBuffer_=[],i.timeMapping_=0,i.safeAppend_=11<=tr.browser.IE_VERSION,i.appendInitSegment_={audio:!0,video:!0},i.playlistOfLastInitSegment_={audio:null,video:null},i.callQueue_=[],i.loadQueue_=[],i.metadataQueue_={id3:[],caption:[]},i.waitingOnRemove_=!1,i.quotaExceededErrorRetryTimeout_=null,i.activeInitSegmentId_=null,i.initSegments_={},i.cacheEncryptionKeys_=e.cacheEncryptionKeys,i.keyCache_={},i.decrypter_=e.decrypter,i.syncController_=e.syncController,i.syncPoint_={segmentIndex:0,time:0},i.transmuxer_=i.createTransmuxer_(),i.triggerSyncInfoUpdate_=function(){return i.trigger("syncinfoupdate")},i.syncController_.on("syncinfoupdate",i.triggerSyncInfoUpdate_),i.mediaSource_.addEventListener("sourceopen",function(){i.isEndOfStream_()||(i.ended_=!1)}),i.fetchAtBuffer_=!1,i.logger_=Ro("SegmentLoader["+i.loaderType_+"]"),Object.defineProperty(ft(i),"state",{get:function(){return this.state_},set:function(e){e!==this.state_&&(this.logger_(this.state_+" -> "+e),this.state_=e,this.trigger("statechange"))}}),i.sourceUpdater_.on("ready",function(){i.hasEnoughInfoToAppend_()&&i.processCallQueue_()}),"main"===i.loaderType_&&i.timelineChangeController_.on("pendingtimelinechange",function(){i.hasEnoughInfoToAppend_()&&i.processCallQueue_()}),"audio"===i.loaderType_&&i.timelineChangeController_.on("timelinechange",function(){i.hasEnoughInfoToLoad_()&&i.processLoadQueue_(),i.hasEnoughInfoToAppend_()&&i.processCallQueue_()}),i}mt(e,n);var t=e.prototype;return t.createTransmuxer_=function(){return xl({remux:!1,alignGopsAtEnd:this.safeAppend_,keepOriginalTimestamps:!0,parse708captions:this.parse708captions_,captionServices:this.captionServices_})},t.resetStats_=function(){this.mediaBytesTransferred=0,this.mediaRequests=0,this.mediaRequestsAborted=0,this.mediaRequestsTimedout=0,this.mediaRequestsErrored=0,this.mediaTransferDuration=0,this.mediaSecondsLoaded=0,this.mediaAppends=0},t.dispose=function(){this.trigger("dispose"),this.state="DISPOSED",this.pause(),this.abort_(),this.transmuxer_&&this.transmuxer_.terminate(),this.resetStats_(),this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.syncController_&&this.triggerSyncInfoUpdate_&&this.syncController_.off("syncinfoupdate",this.triggerSyncInfoUpdate_),this.off()},t.setAudio=function(e){this.audioDisabled_=!e,e?this.appendInitSegment_.audio=!0:this.sourceUpdater_.removeAudio(0,this.duration_())},t.abort=function(){"WAITING"===this.state?(this.abort_(),this.state="READY",this.paused()||this.monitorBuffer_()):this.pendingSegment_&&(this.pendingSegment_=null)},t.abort_=function(){this.pendingSegment_&&this.pendingSegment_.abortRequests&&this.pendingSegment_.abortRequests(),this.pendingSegment_=null,this.callQueue_=[],this.loadQueue_=[],this.metadataQueue_.id3=[],this.metadataQueue_.caption=[],this.timelineChangeController_.clearPendingTimelineChange(this.loaderType_),this.waitingOnRemove_=!1,window.clearTimeout(this.quotaExceededErrorRetryTimeout_),this.quotaExceededErrorRetryTimeout_=null},t.checkForAbort_=function(e){return"APPENDING"!==this.state||this.pendingSegment_?!this.pendingSegment_||this.pendingSegment_.requestId!==e:(this.state="READY",!0)},t.error=function(e){return"undefined"!=typeof e&&(this.logger_("error occurred:",e),this.error_=e),this.pendingSegment_=null,this.error_},t.endOfStream=function(){this.ended_=!0,this.transmuxer_&&Il(this.transmuxer_),this.gopBuffer_.length=0,this.pause(),this.trigger("ended")},t.buffered_=function(){var e=this.getMediaInfo_();if(!this.sourceUpdater_||!e)return tr.createTimeRanges();if("main"===this.loaderType_){var t=e.hasAudio,i=e.hasVideo,e=e.isMuxed;if(i&&t&&!this.audioDisabled_&&!e)return this.sourceUpdater_.buffered();if(i)return this.sourceUpdater_.videoBuffered()}return this.sourceUpdater_.audioBuffered()},t.initSegmentForMap=function(e,t){if(void 0===t&&(t=!1),!e)return null;var i=Su(e),n=this.initSegments_[i];return t&&!n&&e.bytes&&(this.initSegments_[i]=n={resolvedUri:e.resolvedUri,byterange:e.byterange,bytes:e.bytes,tracks:e.tracks,timescales:e.timescales}),n||e},t.segmentKey=function(e,t){if(void 0===t&&(t=!1),!e)return null;var i=wu(e),n=this.keyCache_[i];this.cacheEncryptionKeys_&&t&&!n&&e.bytes&&(this.keyCache_[i]=n={resolvedUri:e.resolvedUri,bytes:e.bytes});e={resolvedUri:(n||e).resolvedUri};return n&&(e.bytes=n.bytes),e},t.couldBeginLoading_=function(){return this.playlist_&&!this.paused()},t.load=function(){if(this.monitorBuffer_(),this.playlist_)return"INIT"===this.state&&this.couldBeginLoading_()?this.init_():void(!this.couldBeginLoading_()||"READY"!==this.state&&"INIT"!==this.state||(this.state="READY"))},t.init_=function(){return this.state="READY",this.resetEverything(),this.monitorBuffer_()},t.playlist=function(e,t){if(void 0===t&&(t={}),e){var i=this.playlist_,n=this.pendingSegment_;this.playlist_=e,this.xhrOptions_=t,"INIT"===this.state&&(e.syncInfo={mediaSequence:e.mediaSequence,time:0},"main"===this.loaderType_&&this.syncController_.setDateTimeMappingForStart(e));var r=null;if(i&&(i.id?r=i.id:i.uri&&(r=i.uri)),this.logger_("playlist update ["+r+" => "+(e.id||e.uri)+"]"),this.trigger("syncinfoupdate"),"INIT"===this.state&&this.couldBeginLoading_())return this.init_();if(!i||i.uri!==e.uri)return null!==this.mediaIndex&&(e.endList?this.resyncLoader():this.resetLoader()),this.currentMediaInfo_=void 0,void this.trigger("playlistupdate");t=e.mediaSequence-i.mediaSequence;this.logger_("live window shift ["+t+"]"),null!==this.mediaIndex&&(this.mediaIndex-=t,this.mediaIndex<0?(this.mediaIndex=null,this.partIndex=null):(r=this.playlist_.segments[this.mediaIndex],!this.partIndex||r.parts&&r.parts.length&&r.parts[this.partIndex]||(r=this.mediaIndex,this.logger_("currently processing part (index "+this.partIndex+") no longer exists."),this.resetLoader(),this.mediaIndex=r))),n&&(n.mediaIndex-=t,n.mediaIndex<0?(n.mediaIndex=null,n.partIndex=null):(0<=n.mediaIndex&&(n.segment=e.segments[n.mediaIndex]),0<=n.partIndex&&n.segment.parts&&(n.part=n.segment.parts[n.partIndex]))),this.syncController_.saveExpiredSegmentInfo(i,e)}},t.pause=function(){this.checkBufferTimeout_&&(window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=null)},t.paused=function(){return null===this.checkBufferTimeout_},t.resetEverything=function(e){this.ended_=!1,this.appendInitSegment_={audio:!0,video:!0},this.resetLoader(),this.remove(0,1/0,e),this.transmuxer_&&(this.transmuxer_.postMessage({action:"clearAllMp4Captions"}),this.transmuxer_.postMessage({action:"reset"}))},t.resetLoader=function(){this.fetchAtBuffer_=!1,this.resyncLoader()},t.resyncLoader=function(){this.transmuxer_&&Il(this.transmuxer_),this.mediaIndex=null,this.partIndex=null,this.syncPoint_=null,this.isPendingTimestampOffset_=!1,this.callQueue_=[],this.loadQueue_=[],this.metadataQueue_.id3=[],this.metadataQueue_.caption=[],this.abort(),this.transmuxer_&&this.transmuxer_.postMessage({action:"clearParsedMp4Captions"})},t.remove=function(e,t,i,n){if(void 0===i&&(i=function(){}),void 0===n&&(n=!1),(t=t===1/0?this.duration_():t)<=e)this.logger_("skipping remove because end ${end} is <= start ${start}");else if(this.sourceUpdater_&&this.getMediaInfo_()){var r,a=1,s=function(){0===--a&&i()};for(r in!n&&this.audioDisabled_||(a++,this.sourceUpdater_.removeAudio(e,t,s)),!n&&"main"!==this.loaderType_||(this.gopBuffer_=function(e,t,i,n){for(var r=Math.ceil((t-n)*hl),a=Math.ceil((i-n)*hl),n=e.slice(),s=e.length;s--&&!(e[s].pts<=a););if(-1===s)return n;for(var o=s+1;o--&&!(e[o].pts<=r););return o=Math.max(o,0),n.splice(o,s-o+1),n}(this.gopBuffer_,e,t,this.timeMapping_),a++,this.sourceUpdater_.removeVideo(e,t,s)),this.inbandTextTracks_)rl(e,t,this.inbandTextTracks_[r]);rl(e,t,this.segmentMetadataTrack_),s()}else this.logger_("skipping remove because no source updater or starting media info")},t.monitorBuffer_=function(){this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=window.setTimeout(this.monitorBufferTick_.bind(this),1)},t.monitorBufferTick_=function(){"READY"===this.state&&this.fillBuffer_(),this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=window.setTimeout(this.monitorBufferTick_.bind(this),500)},t.fillBuffer_=function(){var e;this.sourceUpdater_.updating()||(e=this.chooseNextRequest_())&&("number"==typeof e.timestampOffset&&(this.isPendingTimestampOffset_=!1,this.timelineChangeController_.pendingTimelineChange({type:this.loaderType_,from:this.currentTimeline_,to:e.timeline})),this.loadSegment_(e))},t.isEndOfStream_=function(e,t,i){if(void 0===e&&(e=this.mediaIndex),void 0===t&&(t=this.playlist_),void 0===i&&(i=this.partIndex),!t||!this.mediaSource_)return!1;var n="number"==typeof e&&t.segments[e],e=e+1===t.segments.length,n=!n||!n.parts||i+1===n.parts.length;return t.endList&&"open"===this.mediaSource_.readyState&&e&&n},t.chooseNextRequest_=function(){var e=this.buffered_(),t=Ho(e)||0,i=qo(e,this.currentTime_()),n=!this.hasPlayed_()&&1<=i,r=i>=this.goalBufferLength_(),e=this.playlist_.segments;if(!e.length||n||r)return null;this.syncPoint_=this.syncPoint_||this.syncController_.getSyncPoint(this.playlist_,this.duration_(),this.currentTimeline_,this.currentTime_());var a,n={partIndex:null,mediaIndex:null,startOfSegment:null,playlist:this.playlist_,isSyncRequest:Boolean(!this.syncPoint_)};n.isSyncRequest?n.mediaIndex=function(e,t,i){t=t||[];for(var n=[],r=0,a=0;a=e.length-1&&s&&!this.seeking_()?null:this.generateSegmentInfo_(n)},t.generateSegmentInfo_=function(e){var t=e.independent,i=e.playlist,n=e.mediaIndex,r=e.startOfSegment,a=e.isSyncRequest,s=e.partIndex,o=e.forceTimestampOffset,u=e.getMediaInfoForTime,l=i.segments[n],e="number"==typeof s&&l.parts[s],t={requestId:"segment-loader-"+Math.random(),uri:e&&e.resolvedUri||l.resolvedUri,mediaIndex:n,partIndex:e?s:null,isSyncRequest:a,startOfSegment:r,playlist:i,bytes:null,encryptedBytes:null,timestampOffset:null,timeline:l.timeline,duration:e&&e.duration||l.duration,segment:l,part:e,byteLength:0,transmuxer:this.transmuxer_,getMediaInfoForTime:u,independent:t},o="undefined"!=typeof o?o:this.isPendingTimestampOffset_;t.timestampOffset=this.timestampOffsetForSegment_({segmentTimeline:l.timeline,currentTimeline:this.currentTimeline_,startOfSegment:r,buffered:this.buffered_(),overrideCheck:o});o=Ho(this.sourceUpdater_.audioBuffered());return"number"==typeof o&&(t.audioAppendStart=o-this.sourceUpdater_.audioTimestampOffset()),this.sourceUpdater_.videoBuffered().length&&(t.gopsToAlignWith=function(e,t,i){if("undefined"==typeof t||null===t||!e.length)return[];for(var n=Math.ceil((t-i+3)*hl),r=0;rn);r++);return e.slice(r)}(this.gopBuffer_,this.currentTime_()-this.sourceUpdater_.videoTimestampOffset(),this.timeMapping_)),t},t.timestampOffsetForSegment_=function(e){return i=(t=e).segmentTimeline,n=t.currentTimeline,r=t.startOfSegment,e=t.buffered,t.overrideCheck||i!==n?!(i "+p+" for "+e),t=m,i=v.vhs_.tech_,t[n=e]||(i.trigger({type:"usage",name:"vhs-608"}),i.trigger({type:"usage",name:"hls-608"}),/^cc708_/.test(r=n)&&(r="SERVICE"+n.split("_")[1]),(o=i.textTracks().getTrackById(r))?t[n]=o:(s=a=n,d=!1,(o=(i.options_.vhs&&i.options_.vhs.captionServices||{})[r])&&(a=o.label,s=o.language,d=o.default),t[n]=i.addRemoteTextTrack({kind:"captions",id:r,default:d,label:a,language:s},!1).track)),rl(h,p,m[e]),l=(f={captionArray:f,inbandTextTracks:m,timestampOffset:g}).inbandTextTracks,m=f.captionArray,c=f.timestampOffset,m&&(u=window.WebKitDataCue||window.VTTCue,m.forEach(function(e){var t=e.stream;l[t].addCue(new u(e.startTime+c,e.endTime+c,e.text))}))}),this.transmuxer_&&this.transmuxer_.postMessage({action:"clearParsedMp4Captions"})):this.metadataQueue_.caption.push(this.handleCaptions_.bind(this,e,t)):this.logger_("SegmentLoader received no captions from a caption event"))},t.handleId3_=function(e,t,i){var n,r,a,s;this.earlyAbortWhenNeeded_(e.stats),this.checkForAbort_(e.requestId)||(this.pendingSegment_.hasAppendedData_?(n=null===this.sourceUpdater_.videoTimestampOffset()?this.sourceUpdater_.audioTimestampOffset():this.sourceUpdater_.videoTimestampOffset(),r=this.inbandTextTracks_,a=i,s=this.vhs_.tech_,r.metadataTrack_||(r.metadataTrack_=s.addRemoteTextTrack({kind:"metadata",label:"Timed Metadata"},!1).track,r.metadataTrack_.inBandMetadataTrackDispatchType=a),nl({inbandTextTracks:this.inbandTextTracks_,metadataArray:t,timestampOffset:n,videoDuration:this.duration_()})):this.metadataQueue_.id3.push(this.handleId3_.bind(this,e,t,i)))},t.processMetadataQueue_=function(){this.metadataQueue_.id3.forEach(function(e){return e()}),this.metadataQueue_.caption.forEach(function(e){return e()}),this.metadataQueue_.id3=[],this.metadataQueue_.caption=[]},t.processCallQueue_=function(){var e=this.callQueue_;this.callQueue_=[],e.forEach(function(e){return e()})},t.processLoadQueue_=function(){var e=this.loadQueue_;this.loadQueue_=[],e.forEach(function(e){return e()})},t.hasEnoughInfoToLoad_=function(){if("audio"!==this.loaderType_)return!0;var e=this.pendingSegment_;return!!e&&(!this.getCurrentMediaInfo_()||!ul({timelineChangeController:this.timelineChangeController_,currentTimeline:this.currentTimeline_,segmentTimeline:e.timeline,loaderType:this.loaderType_,audioDisabled:this.audioDisabled_}))},t.getCurrentMediaInfo_=function(e){return(e=void 0===e?this.pendingSegment_:e)&&e.trackInfo||this.currentMediaInfo_},t.getMediaInfo_=function(e){return void 0===e&&(e=this.pendingSegment_),this.getCurrentMediaInfo_(e)||this.startingMediaInfo_},t.hasEnoughInfoToAppend_=function(){if(!this.sourceUpdater_.ready())return!1;if(this.waitingOnRemove_||this.quotaExceededErrorRetryTimeout_)return!1;var e=this.pendingSegment_,t=this.getCurrentMediaInfo_();if(!e||!t)return!1;var i=t.hasAudio,n=t.hasVideo,t=t.isMuxed;return!(n&&!e.videoTimingInfo)&&(!(i&&!this.audioDisabled_&&!t&&!e.audioTimingInfo)&&!ul({timelineChangeController:this.timelineChangeController_,currentTimeline:this.currentTimeline_,segmentTimeline:e.timeline,loaderType:this.loaderType_,audioDisabled:this.audioDisabled_}))},t.handleData_=function(e,t){if(this.earlyAbortWhenNeeded_(e.stats),!this.checkForAbort_(e.requestId))if(!this.callQueue_.length&&this.hasEnoughInfoToAppend_()){var i,n=this.pendingSegment_;if(this.setTimeMapping_(n.timeline),this.updateMediaSecondsLoaded_(n.part||n.segment),"closed"!==this.mediaSource_.readyState){if(e.map&&(e.map=this.initSegmentForMap(e.map,!0),n.segment.map=e.map),e.key&&this.segmentKey(e.key,!0),n.isFmp4=e.isFmp4,n.timingInfo=n.timingInfo||{},n.isFmp4?(this.trigger("fmp4"),n.timingInfo.start=n[ol(t.type)].start):(i=this.getCurrentMediaInfo_(),(i="main"===this.loaderType_&&i&&i.hasVideo)&&(r=n.videoTimingInfo.start),n.timingInfo.start=this.trueSegmentStart_({currentStart:n.timingInfo.start,playlist:n.playlist,mediaIndex:n.mediaIndex,currentVideoTimestampOffset:this.sourceUpdater_.videoTimestampOffset(),useVideoTimingInfo:i,firstVideoFrameTimeForData:r,videoTimingInfo:n.videoTimingInfo,audioTimingInfo:n.audioTimingInfo})),this.updateAppendInitSegmentStatus(n,t.type),this.updateSourceBufferTimestampOffset_(n),n.isSyncRequest){this.updateTimingInfoEnd_(n),this.syncController_.saveSegmentTimingInfo({segmentInfo:n,shouldSaveTimelineMapping:"main"===this.loaderType_});var r=this.chooseNextRequest_();if(r.mediaIndex!==n.mediaIndex||r.partIndex!==n.partIndex)return void this.logger_("sync segment was incorrect, not appending");this.logger_("sync segment was correct, appending")}n.hasAppendedData_=!0,this.processMetadataQueue_(),this.appendData_(n,t)}}else this.callQueue_.push(this.handleData_.bind(this,e,t))},t.updateAppendInitSegmentStatus=function(e,t){"main"!==this.loaderType_||"number"!=typeof e.timestampOffset||e.changedTimestampOffset||(this.appendInitSegment_={audio:!0,video:!0}),this.playlistOfLastInitSegment_[t]!==e.playlist&&(this.appendInitSegment_[t]=!0)},t.getInitSegmentAndUpdateState_=function(e){var t=e.type,i=e.initSegment,n=e.map,r=e.playlist;if(n){e=Su(n);if(this.activeInitSegmentId_===e)return null;i=this.initSegmentForMap(n,!0).bytes,this.activeInitSegmentId_=e}return i&&this.appendInitSegment_[t]?(this.playlistOfLastInitSegment_[t]=r,this.appendInitSegment_[t]=!1,this.activeInitSegmentId_=null,i):null},t.handleQuotaExceededError_=function(e,t){var i=this,n=e.segmentInfo,r=e.type,a=e.bytes,s=this.sourceUpdater_.audioBuffered(),o=this.sourceUpdater_.videoBuffered();1=n);r++);return e.slice(0,r).concat(t)}(this.gopBuffer_,i.gopInfo,this.safeAppend_)),this.state="APPENDING",this.trigger("appending"),this.waitForAppendsToComplete_(e)}},t.setTimeMapping_=function(e){e=this.syncController_.mappingForTimeline(e);null!==e&&(this.timeMapping_=e)},t.updateMediaSecondsLoaded_=function(e){"number"==typeof e.start&&"number"==typeof e.end?this.mediaSecondsLoaded+=e.end-e.start:this.mediaSecondsLoaded+=e.duration},t.shouldUpdateTransmuxerTimestampOffset_=function(e){return null!==e&&("main"===this.loaderType_&&e!==this.sourceUpdater_.videoTimestampOffset()||!this.audioDisabled_&&e!==this.sourceUpdater_.audioTimestampOffset())},t.trueSegmentStart_=function(e){var t=e.currentStart,i=e.playlist,n=e.mediaIndex,r=e.firstVideoFrameTimeForData,a=e.currentVideoTimestampOffset,s=e.useVideoTimingInfo,o=e.videoTimingInfo,e=e.audioTimingInfo;if("undefined"!=typeof t)return t;if(!s)return e.start;i=i.segments[n-1];return 0!==n&&i&&"undefined"!=typeof i.start&&i.end===r+a?o.start:r},t.waitForAppendsToComplete_=function(e){var t=this.getCurrentMediaInfo_(e);if(!t)return this.error({message:"No starting media returned, likely due to an unsupported media format.",blacklistDuration:1/0}),void this.trigger("error");var i=t.hasAudio,n=t.hasVideo,t=t.isMuxed,n="main"===this.loaderType_&&n,t=!this.audioDisabled_&&i&&!t;if(e.waitingOnAppends=0,!e.hasAppendedData_)return e.timingInfo||"number"!=typeof e.timestampOffset||(this.isPendingTimestampOffset_=!0),e.timingInfo={start:0},e.waitingOnAppends++,this.isPendingTimestampOffset_||(this.updateSourceBufferTimestampOffset_(e),this.processMetadataQueue_()),void this.checkAppendsDone_(e);n&&e.waitingOnAppends++,t&&e.waitingOnAppends++,n&&this.sourceUpdater_.videoQueueCallback(this.checkAppendsDone_.bind(this,e)),t&&this.sourceUpdater_.audioQueueCallback(this.checkAppendsDone_.bind(this,e))},t.checkAppendsDone_=function(e){this.checkForAbort_(e.requestId)||(e.waitingOnAppends--,0===e.waitingOnAppends&&this.handleAppendsDone_())},t.checkForIllegalMediaSwitch=function(e){var t,i,e=(t=this.loaderType_,i=this.getCurrentMediaInfo_(),e=e,"main"===t&&i&&e?e.hasAudio||e.hasVideo?i.hasVideo&&!e.hasVideo?"Only audio found in segment when we expected video. We can't switch to audio only from a stream that had video. To get rid of this message, please add codec information to the manifest.":!i.hasVideo&&e.hasVideo?"Video found in segment when we expected only audio. We can't switch to a stream with video from an audio only stream. To get rid of this message, please add codec information to the manifest.":null:"Neither audio nor video found in segment.":null);return!!e&&(this.error({message:e,blacklistDuration:1/0}),this.trigger("error"),!0)},t.updateSourceBufferTimestampOffset_=function(e){var t;null===e.timestampOffset||"number"!=typeof e.timingInfo.start||e.changedTimestampOffset||"main"!==this.loaderType_||(t=!1,e.timestampOffset-=this.getSegmentStartTimeForTimestampOffsetCalculation_({videoTimingInfo:e.segment.videoTimingInfo,audioTimingInfo:e.segment.audioTimingInfo,timingInfo:e.timingInfo}),e.changedTimestampOffset=!0,e.timestampOffset!==this.sourceUpdater_.videoTimestampOffset()&&(this.sourceUpdater_.videoTimestampOffset(e.timestampOffset),t=!0),e.timestampOffset!==this.sourceUpdater_.audioTimestampOffset()&&(this.sourceUpdater_.audioTimestampOffset(e.timestampOffset),t=!0),t&&this.trigger("timestampoffset"))},t.getSegmentStartTimeForTimestampOffsetCalculation_=function(e){var t=e.videoTimingInfo,i=e.audioTimingInfo,e=e.timingInfo;return this.useDtsForTimestampOffset_?t&&"number"==typeof t.transmuxedDecodeStart?t.transmuxedDecodeStart:i&&"number"==typeof i.transmuxedDecodeStart?i.transmuxedDecodeStart:e.start:e.start},t.updateTimingInfoEnd_=function(e){e.timingInfo=e.timingInfo||{};var t=this.getMediaInfo_(),t="main"===this.loaderType_&&t&&t.hasVideo&&e.videoTimingInfo?e.videoTimingInfo:e.audioTimingInfo;t&&(e.timingInfo.end="number"==typeof t.end?t.end:t.start+e.duration)},t.handleAppendsDone_=function(){if(this.pendingSegment_&&this.trigger("appendsdone"),!this.pendingSegment_)return this.state="READY",void(this.paused()||this.monitorBuffer_());var e=this.pendingSegment_;this.updateTimingInfoEnd_(e),this.shouldSaveSegmentTimingInfo_&&this.syncController_.saveSegmentTimingInfo({segmentInfo:e,shouldSaveTimelineMapping:"main"===this.loaderType_});var t=cl(e,this.sourceType_);if(t&&("warn"===t.severity?tr.log.warn(t.message):this.logger_(t.message)),this.recordThroughput_(e),this.pendingSegment_=null,this.state="READY",!e.isSyncRequest||(this.trigger("syncinfoupdate"),e.hasAppendedData_)){this.logger_("Appended "+sl(e)),this.addSegmentMetadataCue_(e),this.fetchAtBuffer_=!0,this.currentTimeline_!==e.timeline&&(this.timelineChangeController_.lastTimelineChange({type:this.loaderType_,from:this.currentTimeline_,to:e.timeline}),"main"!==this.loaderType_||this.audioDisabled_||this.timelineChangeController_.lastTimelineChange({type:"audio",from:this.currentTimeline_,to:e.timeline})),this.currentTimeline_=e.timeline,this.trigger("syncinfoupdate");var i=e.segment,t=e.part,i=i.end&&this.currentTime_()-i.end>3*e.playlist.targetDuration,t=t&&t.end&&this.currentTime_()-t.end>3*e.playlist.partTargetDuration;if(i||t)return this.logger_("bad "+(i?"segment":"part")+" "+sl(e)),void this.resetEverything();null!==this.mediaIndex&&this.trigger("bandwidthupdate"),this.trigger("progress"),this.mediaIndex=e.mediaIndex,this.partIndex=e.partIndex,this.isEndOfStream_(e.mediaIndex,e.playlist,e.partIndex)&&this.endOfStream(),this.trigger("appended"),e.hasAppendedData_&&this.mediaAppends++,this.paused()||this.monitorBuffer_()}else this.logger_("Throwing away un-appended sync request "+sl(e))},t.recordThroughput_=function(e){var t,i;e.duration<1/60?this.logger_("Ignoring segment's throughput because its duration of "+e.duration+" is less than the min to record "+1/60):(t=this.throughput.rate,i=Date.now()-e.endOfAllRequests+1,i=Math.floor(e.byteLength/i*8*1e3),this.throughput.rate+=(i-t)/++this.throughput.count)},t.addSegmentMetadataCue_=function(e){var t,i,n,r;this.segmentMetadataTrack_&&(i=(t=e.segment).start,r=t.end,al(i)&&al(r)&&(rl(i,r,this.segmentMetadataTrack_),n=window.WebKitDataCue||window.VTTCue,e={custom:t.custom,dateTimeObject:t.dateTimeObject,dateTimeString:t.dateTimeString,bandwidth:e.playlist.attributes.BANDWIDTH,resolution:e.playlist.attributes.RESOLUTION,codecs:e.playlist.attributes.CODECS,byteLength:e.byteLength,uri:e.uri,timeline:e.timeline,playlist:e.playlist.id,start:i,end:r},(r=new n(i,r,JSON.stringify(e))).value=e,this.segmentMetadataTrack_.addCue(r)))},e}(tr.EventTarget);function Rl(){}function Nl(e){return"string"!=typeof e?e:e.replace(/./,function(e){return e.toUpperCase()})}function Ul(e,t){var i=t[e+"Buffer"];return i&&i.updating||t.queuePending[e]}function Bl(e,t){if(0!==t.queue.length){var i=0,n=t.queue[i];if("mediaSource"!==n.type){if("mediaSource"!==e&&t.ready()&&"closed"!==t.mediaSource.readyState&&!Ul(e,t)){if(n.type!==e){if(null===(i=function(e,t){for(var i=0;i=e.playlist.segments.length){e=null;break}e=this.generateSegmentInfo_({playlist:e.playlist,mediaIndex:e.mediaIndex+1,startOfSegment:e.startOfSegment+e.duration,isSyncRequest:e.isSyncRequest})}return e},t.stopForError=function(e){this.error(e),this.state="READY",this.pause(),this.trigger("error")},t.segmentRequestFinished_=function(e,t,i){var n=this;if(this.subtitlesTrack_){if(this.saveTransferStats_(t.stats),!this.pendingSegment_)return this.state="READY",void(this.mediaRequestsAborted+=1);if(e)return e.code===Pl&&this.handleTimeout_(),e.code===Ll?this.mediaRequestsAborted+=1:this.mediaRequestsErrored+=1,void this.stopForError(e);var r=this.pendingSegment_;this.saveBandwidthRelatedStats_(r.duration,t.stats),this.state="APPENDING",this.trigger("appending");var a=r.segment;if(a.map&&(a.map.bytes=t.map.bytes),r.bytes=t.bytes,"function"!=typeof window.WebVTT&&this.subtitlesTrack_&&this.subtitlesTrack_.tech_){var s=function(){n.subtitlesTrack_.tech_.off("vttjsloaded",o),n.stopForError({message:"Error loading vtt.js"})},o=function(){n.subtitlesTrack_.tech_.off("vttjserror",s),n.segmentRequestFinished_(e,t,i)};return this.state="WAITING_ON_VTTJS",this.subtitlesTrack_.tech_.one("vttjsloaded",o),void this.subtitlesTrack_.tech_.one("vttjserror",s)}a.requested=!0;try{this.parseVTTCues_(r)}catch(e){return void this.stopForError({message:e.message})}if(this.updateTimeMapping_(r,this.syncController_.timelines[r.timeline],this.playlist_),r.cues.length?r.timingInfo={start:r.cues[0].startTime,end:r.cues[r.cues.length-1].endTime}:r.timingInfo={start:r.startOfSegment,end:r.startOfSegment+r.duration},r.isSyncRequest)return this.trigger("syncinfoupdate"),this.pendingSegment_=null,void(this.state="READY");r.byteLength=r.bytes.byteLength,this.mediaSecondsLoaded+=a.duration,r.cues.forEach(function(e){n.subtitlesTrack_.addCue(n.featuresNativeTextTracks_?new window.VTTCue(e.startTime,e.endTime,e.text):e)}),function(t){var e=t.cues;if(e)for(var i=0;iu)&&(r=void 0,r=o<0?i.start-Qo({defaultDuration:t.targetDuration,durationList:t.segments,startIndex:e.mediaIndex,endIndex:a}):i.end+Qo({defaultDuration:t.targetDuration,durationList:t.segments,startIndex:e.mediaIndex+1,endIndex:a}),this.discontinuities[s]={time:r,accuracy:u})}},t.dispose=function(){this.trigger("dispose"),this.off()},e}(tr.EventTarget),pc=function(t){function e(){var e=t.call(this)||this;return e.pendingTimelineChanges_={},e.lastTimelineChanges_={},e}mt(e,t);var i=e.prototype;return i.clearPendingTimelineChange=function(e){this.pendingTimelineChanges_[e]=null,this.trigger("pendingtimelinechange")},i.pendingTimelineChange=function(e){var t=e.type,i=e.from,e=e.to;return"number"==typeof i&&"number"==typeof e&&(this.pendingTimelineChanges_[t]={type:t,from:i,to:e},this.trigger("pendingtimelinechange")),this.pendingTimelineChanges_[t]},i.lastTimelineChange=function(e){var t=e.type,i=e.from,e=e.to;return"number"==typeof i&&"number"==typeof e&&(this.lastTimelineChanges_[t]={type:t,from:i,to:e},delete this.pendingTimelineChanges_[t],this.trigger("timelinechange")),this.lastTimelineChanges_[t]},i.dispose=function(){this.trigger("dispose"),this.pendingTimelineChanges_={},this.lastTimelineChanges_={},this.off()},e}(tr.EventTarget),fc=x(U(W(function(){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t,i){return e(i={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&i.path)}},i.exports),i.exports}var i=t(function(e){function n(e,t){for(var i=0;i>7))^f]=f;for(e=t=0;!c[e];e^=i||1,t=p[t]||1)for(s=16843009*h[n=h[i=h[d[c[e]=r=(r=t^t<<1^t<<2^t<<3^t<<4)>>8^255&r^99]=e]]]^65537*n^257*i^16843008*e,a=257*h[r]^16843008*r,f=0;f<4;f++)u[f][e]=a=a<<24^a>>>8,l[f][r]=s=s<<24^s>>>8;for(f=0;f<5;f++)u[f]=u[f].slice(0),l[f]=l[f].slice(0);return o}(),this._tables=[[c[0][0].slice(),c[0][1].slice(),c[0][2].slice(),c[0][3].slice(),c[0][4].slice()],[c[1][0].slice(),c[1][1].slice(),c[1][2].slice(),c[1][3].slice(),c[1][4].slice()]];var r=this._tables[0][4],a=this._tables[1],s=e.length,o=1;if(4!==s&&6!==s&&8!==s)throw new Error("Invalid aes key size");var u=e.slice(0),l=[];for(this._key=[u,l],t=s;t<4*s+28;t++)n=u[t-1],(t%s==0||8===s&&t%s==4)&&(n=r[n>>>24]<<24^r[n>>16&255]<<16^r[n>>8&255]<<8^r[255&n],t%s==0&&(n=n<<8^n>>>24^o<<24,o=o<<1^283*(o>>7))),u[t]=u[t-s]^n;for(i=0;t;i++,t--)n=u[3&i?t:t-4],l[i]=t<=4||i<4?n:a[0][r[n>>>24]]^a[1][r[n>>16&255]]^a[2][r[n>>8&255]]^a[3][r[255&n]]}return e.prototype.decrypt=function(e,t,i,n,r,a){for(var s,o,u,l=this._key[1],c=e^l[0],d=n^l[1],h=i^l[2],p=t^l[3],f=l.length/4-2,m=4,t=this._tables[1],g=t[0],y=t[1],v=t[2],_=t[3],b=t[4],T=0;T>>24]^y[d>>16&255]^v[h>>8&255]^_[255&p]^l[m],o=g[d>>>24]^y[h>>16&255]^v[p>>8&255]^_[255&c]^l[m+1],u=g[h>>>24]^y[p>>16&255]^v[c>>8&255]^_[255&d]^l[m+2],p=g[p>>>24]^y[c>>16&255]^v[d>>8&255]^_[255&h]^l[m+3],m+=4,c=s,d=o,h=u;for(T=0;T<4;T++)r[(3&-T)+a]=b[c>>>24]<<24^b[d>>16&255]<<16^b[h>>8&255]<<8^b[255&p]^l[m++],s=c,c=d,d=h,h=p,p=s},e}(),l=function(t){function e(){var e=t.call(this,a)||this;return e.jobs=[],e.delay=1,e.timeout_=null,e}r(e,t);var i=e.prototype;return i.processJob_=function(){this.jobs.shift()(),this.jobs.length?this.timeout_=setTimeout(this.processJob_.bind(this),this.delay):this.timeout_=null},i.push=function(e){this.jobs.push(e),this.timeout_||(this.timeout_=setTimeout(this.processJob_.bind(this),this.delay))},e}(a),g=function(e){return e<<24|(65280&e)<<8|(16711680&e)>>8|e>>>24},s=function(){function u(e,t,i,n){var r=u.STEP,a=new Int32Array(e.buffer),s=new Uint8Array(e.byteLength),o=0;for(this.asyncStream_=new l,this.asyncStream_.push(this.decryptChunk_(a.subarray(o,o+r),t,i,s)),o=r;o>7))^i]=i;for(x=xInv=0;!sbox[x];x^=x2||1,xInv=th[xInv]||1)for(s=(s=xInv^xInv<<1^xInv<<2^xInv<<3^xInv<<4)>>8^255&s^99,sbox[x]=s,sboxInv[s]=x,tDec=16843009*(x8=d[x4=d[x2=d[x]]])^65537*x4^257*x2^16843008*x,tEnc=257*d[s]^16843008*s,i=0;i<4;i++)encTable[i][x]=tEnc=tEnc<<24^tEnc>>>8,decTable[i][s]=tDec=tDec<<24^tDec>>>8;for(i=0;i<5;i++)encTable[i]=encTable[i].slice(0),decTable[i]=decTable[i].slice(0);return tables},aesTables=null,AES=function(){function AES(key){var i,j,tmp;aesTables||(aesTables=precompute()),this._tables=[[aesTables[0][0].slice(),aesTables[0][1].slice(),aesTables[0][2].slice(),aesTables[0][3].slice(),aesTables[0][4].slice()],[aesTables[1][0].slice(),aesTables[1][1].slice(),aesTables[1][2].slice(),aesTables[1][3].slice(),aesTables[1][4].slice()]];var sbox=this._tables[0][4],decTable=this._tables[1],keyLen=key.length,rcon=1;if(4!==keyLen&&6!==keyLen&&8!==keyLen)throw new Error("Invalid aes key size");var encKey=key.slice(0),decKey=[];for(this._key=[encKey,decKey],i=keyLen;i<4*keyLen+28;i++)tmp=encKey[i-1],(i%keyLen==0||8===keyLen&&i%keyLen==4)&&(tmp=sbox[tmp>>>24]<<24^sbox[tmp>>16&255]<<16^sbox[tmp>>8&255]<<8^sbox[255&tmp],i%keyLen==0&&(tmp=tmp<<8^tmp>>>24^rcon<<24,rcon=rcon<<1^283*(rcon>>7))),encKey[i]=encKey[i-keyLen]^tmp;for(j=0;i;j++,i--)tmp=encKey[3&j?i:i-4],decKey[j]=i<=4||j<4?tmp:decTable[0][sbox[tmp>>>24]]^decTable[1][sbox[tmp>>16&255]]^decTable[2][sbox[tmp>>8&255]]^decTable[3][sbox[255&tmp]]}var _proto;return AES.prototype.decrypt=function decrypt(encrypted0,encrypted1,encrypted2,encrypted3,out,offset){var key=this._key[1],a=encrypted0^key[0],b=encrypted3^key[1],c=encrypted2^key[2],d=encrypted1^key[3],a2,b2,c2,nInnerRounds=key.length/4-2,i,kIndex=4,table=this._tables[1],table0=table[0],table1=table[1],table2=table[2],table3=table[3],sbox=table[4];for(i=0;i>>24]^table1[b>>16&255]^table2[c>>8&255]^table3[255&d]^key[kIndex],b2=table0[b>>>24]^table1[c>>16&255]^table2[d>>8&255]^table3[255&a]^key[kIndex+1],c2=table0[c>>>24]^table1[d>>16&255]^table2[a>>8&255]^table3[255&b]^key[kIndex+2],d=table0[d>>>24]^table1[a>>16&255]^table2[b>>8&255]^table3[255&c]^key[kIndex+3],kIndex+=4,a=a2,b=b2,c=c2;for(i=0;i<4;i++)out[(3&-i)+offset]=sbox[a>>>24]<<24^sbox[b>>16&255]<<16^sbox[c>>8&255]<<8^sbox[255&d]^key[kIndex++],a2=a,a=b,b=c,c=d,d=a2},AES}(),AsyncStream=function(_Stream){function AsyncStream(){var _this;return(_this=_Stream.call(this,Stream)||this).jobs=[],_this.delay=1,_this.timeout_=null,_this}inheritsLoose(AsyncStream,_Stream);var _proto=AsyncStream.prototype;return _proto.processJob_=function processJob_(){this.jobs.shift()(),this.jobs.length?this.timeout_=setTimeout(this.processJob_.bind(this),this.delay):this.timeout_=null},_proto.push=function push(job){this.jobs.push(job),this.timeout_||(this.timeout_=setTimeout(this.processJob_.bind(this),this.delay))},AsyncStream}(Stream),ntoh=function ntoh(word){return word<<24|(65280&word)<<8|(16711680&word)>>8|word>>>24},decrypt=function decrypt(encrypted,key,initVector){var encrypted32=new Int32Array(encrypted.buffer,encrypted.byteOffset,encrypted.byteLength>>2),decipher=new AES(Array.prototype.slice.call(key)),decrypted=new Uint8Array(encrypted.byteLength),decrypted32=new Int32Array(decrypted.buffer),init0,init1,init2,init3,encrypted0,encrypted1,encrypted2,encrypted3,wordIx;for(init0=initVector[0],init1=initVector[1],init2=initVector[2],init3=initVector[3],wordIx=0;wordIx=0&&(kind="main-desc"),kind},stopLoaders=function stopLoaders(segmentLoader,mediaType){segmentLoader.abort(),segmentLoader.pause(),mediaType&&mediaType.activePlaylistLoader&&(mediaType.activePlaylistLoader.pause(),mediaType.activePlaylistLoader=null)},startLoaders=function startLoaders(playlistLoader,mediaType){mediaType.activePlaylistLoader=playlistLoader,playlistLoader.load()},onGroupChanged=function onGroupChanged(type,settings){return function(){var _settings$segmentLoad=settings.segmentLoaders,segmentLoader=_settings$segmentLoad[type],mainSegmentLoader=_settings$segmentLoad.main,mediaType=settings.mediaTypes[type],activeTrack=mediaType.activeTrack(),activeGroup=mediaType.getActiveGroup(),previousActiveLoader=mediaType.activePlaylistLoader,lastGroup=mediaType.lastGroup_;activeGroup&&lastGroup&&activeGroup.id===lastGroup.id||(mediaType.lastGroup_=activeGroup,mediaType.lastTrack_=activeTrack,stopLoaders(segmentLoader,mediaType),activeGroup&&!activeGroup.isMasterPlaylist&&(activeGroup.playlistLoader?(segmentLoader.resyncLoader(),startLoaders(activeGroup.playlistLoader,mediaType)):previousActiveLoader&&mainSegmentLoader.resetEverything()))}},onGroupChanging=function onGroupChanging(type,settings){return function(){var segmentLoader=settings.segmentLoaders[type],mediaType;settings.mediaTypes[type].lastGroup_=null,segmentLoader.abort(),segmentLoader.pause()}},onTrackChanged=function onTrackChanged(type,settings){return function(){var masterPlaylistLoader=settings.masterPlaylistLoader,_settings$segmentLoad2=settings.segmentLoaders,segmentLoader=_settings$segmentLoad2[type],mainSegmentLoader=_settings$segmentLoad2.main,mediaType=settings.mediaTypes[type],activeTrack=mediaType.activeTrack(),activeGroup=mediaType.getActiveGroup(),previousActiveLoader=mediaType.activePlaylistLoader,lastTrack=mediaType.lastTrack_;if((!lastTrack||!activeTrack||lastTrack.id!==activeTrack.id)&&(mediaType.lastGroup_=activeGroup,mediaType.lastTrack_=activeTrack,stopLoaders(segmentLoader,mediaType),activeGroup)){if(activeGroup.isMasterPlaylist){if(!activeTrack||!lastTrack||activeTrack.id===lastTrack.id)return;var mpc=settings.vhs.masterPlaylistController_,newPlaylist=mpc.selectPlaylist();if(mpc.media()===newPlaylist)return;return mediaType.logger_("track change. Switching master audio from "+lastTrack.id+" to "+activeTrack.id),masterPlaylistLoader.pause(),mainSegmentLoader.resetEverything(),void mpc.fastQualityChange_(newPlaylist)}if("AUDIO"===type){if(!activeGroup.playlistLoader)return mainSegmentLoader.setAudio(!0),void mainSegmentLoader.resetEverything();segmentLoader.setAudio(!0),mainSegmentLoader.setAudio(!1)}previousActiveLoader!==activeGroup.playlistLoader?(segmentLoader.track&&segmentLoader.track(activeTrack),segmentLoader.resetEverything(),startLoaders(activeGroup.playlistLoader,mediaType)):startLoaders(activeGroup.playlistLoader,mediaType)}}},onError={AUDIO:function AUDIO(type,settings){return function(){var segmentLoader=settings.segmentLoaders[type],mediaType=settings.mediaTypes[type],blacklistCurrentPlaylist=settings.blacklistCurrentPlaylist;stopLoaders(segmentLoader,mediaType);var activeTrack=mediaType.activeTrack(),activeGroup=mediaType.activeGroup(),id=(activeGroup.filter((function(group){return group.default}))[0]||activeGroup[0]).id,defaultTrack=mediaType.tracks[id];if(activeTrack!==defaultTrack){for(var trackId in videojs.log.warn("Problem encountered loading the alternate audio track.Switching back to default."),mediaType.tracks)mediaType.tracks[trackId].enabled=mediaType.tracks[trackId]===defaultTrack;mediaType.onTrackChanged()}else blacklistCurrentPlaylist({message:"Problem encountered loading the default audio track."})}},SUBTITLES:function SUBTITLES(type,settings){return function(){var segmentLoader=settings.segmentLoaders[type],mediaType=settings.mediaTypes[type];videojs.log.warn("Problem encountered loading the subtitle track.Disabling subtitle track."),stopLoaders(segmentLoader,mediaType);var track=mediaType.activeTrack();track&&(track.mode="disabled"),mediaType.onTrackChanged()}}},setupListeners={AUDIO:function AUDIO(type,playlistLoader,settings){if(playlistLoader){var tech=settings.tech,requestOptions=settings.requestOptions,segmentLoader=settings.segmentLoaders[type];playlistLoader.on("loadedmetadata",(function(){var media=playlistLoader.media();segmentLoader.playlist(media,requestOptions),(!tech.paused()||media.endList&&"none"!==tech.preload())&&segmentLoader.load()})),playlistLoader.on("loadedplaylist",(function(){segmentLoader.playlist(playlistLoader.media(),requestOptions),tech.paused()||segmentLoader.load()})),playlistLoader.on("error",onError[type](type,settings))}},SUBTITLES:function SUBTITLES(type,playlistLoader,settings){var tech=settings.tech,requestOptions=settings.requestOptions,segmentLoader=settings.segmentLoaders[type],mediaType=settings.mediaTypes[type];playlistLoader.on("loadedmetadata",(function(){var media=playlistLoader.media();segmentLoader.playlist(media,requestOptions),segmentLoader.track(mediaType.activeTrack()),(!tech.paused()||media.endList&&"none"!==tech.preload())&&segmentLoader.load()})),playlistLoader.on("loadedplaylist",(function(){segmentLoader.playlist(playlistLoader.media(),requestOptions),tech.paused()||segmentLoader.load()})),playlistLoader.on("error",onError[type](type,settings))}},initialize={AUDIO:function AUDIO(type,settings){var vhs=settings.vhs,sourceType=settings.sourceType,segmentLoader=settings.segmentLoaders[type],requestOptions=settings.requestOptions,mediaGroups=settings.master.mediaGroups,_settings$mediaTypes$=settings.mediaTypes[type],groups=_settings$mediaTypes$.groups,tracks=_settings$mediaTypes$.tracks,logger_=_settings$mediaTypes$.logger_,masterPlaylistLoader=settings.masterPlaylistLoader,audioOnlyMaster=isAudioOnly(masterPlaylistLoader.master);for(var groupId in mediaGroups[type]&&0!==Object.keys(mediaGroups[type]).length||(mediaGroups[type]={main:{default:{default:!0}}},audioOnlyMaster&&(mediaGroups[type].main.default.playlists=masterPlaylistLoader.master.playlists)),mediaGroups[type])for(var variantLabel in groups[groupId]||(groups[groupId]=[]),mediaGroups[type][groupId]){var properties=mediaGroups[type][groupId][variantLabel],playlistLoader=void 0;if(audioOnlyMaster?(logger_("AUDIO group '"+groupId+"' label '"+variantLabel+"' is a master playlist"),properties.isMasterPlaylist=!0,playlistLoader=null):playlistLoader="vhs-json"===sourceType&&properties.playlists?new PlaylistLoader(properties.playlists[0],vhs,requestOptions):properties.resolvedUri?new PlaylistLoader(properties.resolvedUri,vhs,requestOptions):properties.playlists&&"dash"===sourceType?new DashPlaylistLoader(properties.playlists[0],vhs,requestOptions,masterPlaylistLoader):null,properties=videojs.mergeOptions({id:variantLabel,playlistLoader:playlistLoader},properties),setupListeners[type](type,properties.playlistLoader,settings),groups[groupId].push(properties),void 0===tracks[variantLabel]){var track=new videojs.AudioTrack({id:variantLabel,kind:audioTrackKind_(properties),enabled:!1,language:properties.language,default:properties.default,label:variantLabel});tracks[variantLabel]=track}}segmentLoader.on("error",onError[type](type,settings))},SUBTITLES:function SUBTITLES(type,settings){var tech=settings.tech,vhs=settings.vhs,sourceType=settings.sourceType,segmentLoader=settings.segmentLoaders[type],requestOptions=settings.requestOptions,mediaGroups=settings.master.mediaGroups,_settings$mediaTypes$2=settings.mediaTypes[type],groups=_settings$mediaTypes$2.groups,tracks=_settings$mediaTypes$2.tracks,masterPlaylistLoader=settings.masterPlaylistLoader;for(var groupId in mediaGroups[type])for(var variantLabel in groups[groupId]||(groups[groupId]=[]),mediaGroups[type][groupId])if(!mediaGroups[type][groupId][variantLabel].forced){var properties=mediaGroups[type][groupId][variantLabel],playlistLoader=void 0;if("hls"===sourceType)playlistLoader=new PlaylistLoader(properties.resolvedUri,vhs,requestOptions);else if("dash"===sourceType){var playlists;if(!properties.playlists.filter((function(p){return p.excludeUntil!==1/0})).length)return;playlistLoader=new DashPlaylistLoader(properties.playlists[0],vhs,requestOptions,masterPlaylistLoader)}else"vhs-json"===sourceType&&(playlistLoader=new PlaylistLoader(properties.playlists?properties.playlists[0]:properties.resolvedUri,vhs,requestOptions));if(properties=videojs.mergeOptions({id:variantLabel,playlistLoader:playlistLoader},properties),setupListeners[type](type,properties.playlistLoader,settings),groups[groupId].push(properties),void 0===tracks[variantLabel]){var track=tech.addRemoteTextTrack({id:variantLabel,kind:"subtitles",default:properties.default&&properties.autoselect,language:properties.language,label:variantLabel},!1).track;tracks[variantLabel]=track}}segmentLoader.on("error",onError[type](type,settings))},"CLOSED-CAPTIONS":function CLOSEDCAPTIONS(type,settings){var tech=settings.tech,mediaGroups=settings.master.mediaGroups,_settings$mediaTypes$3=settings.mediaTypes[type],groups=_settings$mediaTypes$3.groups,tracks=_settings$mediaTypes$3.tracks;for(var groupId in mediaGroups[type])for(var variantLabel in groups[groupId]||(groups[groupId]=[]),mediaGroups[type][groupId]){var properties=mediaGroups[type][groupId][variantLabel];if(/^(?:CC|SERVICE)/.test(properties.instreamId)){var captionServices=tech.options_.vhs&&tech.options_.vhs.captionServices||{},newProps={label:variantLabel,language:properties.language,instreamId:properties.instreamId,default:properties.default&&properties.autoselect};if(captionServices[newProps.instreamId]&&(newProps=videojs.mergeOptions(newProps,captionServices[newProps.instreamId])),void 0===newProps.default&&delete newProps.default,groups[groupId].push(videojs.mergeOptions({id:variantLabel},properties)),void 0===tracks[variantLabel]){var track=tech.addRemoteTextTrack({id:newProps.instreamId,kind:"captions",default:newProps.default,language:newProps.language,label:newProps.label},!1).track;tracks[variantLabel]=track}}}}},groupMatch=function groupMatch(list,media){for(var i=0;i1&&isAudioOnly(settings.master))for(var i=0;i "+nextPlaylist.id;if(!currentPlaylist)return log(sharedLogLine+" as current playlist is not set"),!0;if(nextPlaylist.id===currentPlaylist.id)return!1;var isBuffered=Boolean(findRange(buffered,currentTime).length);if(!currentPlaylist.endList)return isBuffered||"number"!=typeof currentPlaylist.partTargetDuration?(log(sharedLogLine+" as current playlist is live"),!0):(log("not "+sharedLogLine+" as current playlist is live llhls, but currentTime isn't in buffered."),!1);var forwardBuffer=timeAheadOf(buffered,currentTime),maxBufferLowWaterLine=experimentalBufferBasedABR?Config.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE:Config.MAX_BUFFER_LOW_WATER_LINE;if(durationcurrBandwidth)&&forwardBuffer>=bufferLowWaterLine){var _logLine=sharedLogLine+" as forwardBuffer >= bufferLowWaterLine ("+forwardBuffer+" >= "+bufferLowWaterLine+")";return experimentalBufferBasedABR&&(_logLine+=" and next bandwidth > current bandwidth ("+nextBandwidth+" > "+currBandwidth+")"),log(_logLine),!0}return log("not "+sharedLogLine+" as no switching criteria met"),!1},MasterPlaylistController=function(_videojs$EventTarget){function MasterPlaylistController(options){var _this;_this=_videojs$EventTarget.call(this)||this;var src=options.src,handleManifestRedirects=options.handleManifestRedirects,withCredentials=options.withCredentials,tech=options.tech,bandwidth=options.bandwidth,externVhs=options.externVhs,useCueTags=options.useCueTags,blacklistDuration=options.blacklistDuration,enableLowInitialPlaylist=options.enableLowInitialPlaylist,sourceType=options.sourceType,cacheEncryptionKeys=options.cacheEncryptionKeys,experimentalBufferBasedABR=options.experimentalBufferBasedABR,experimentalLeastPixelDiffSelector=options.experimentalLeastPixelDiffSelector,captionServices=options.captionServices;if(!src)throw new Error("A non-empty playlist URL or JSON manifest string is required");var maxPlaylistRetries=options.maxPlaylistRetries;null==maxPlaylistRetries&&(maxPlaylistRetries=1/0),Vhs$1=externVhs,_this.experimentalBufferBasedABR=Boolean(experimentalBufferBasedABR),_this.experimentalLeastPixelDiffSelector=Boolean(experimentalLeastPixelDiffSelector),_this.withCredentials=withCredentials,_this.tech_=tech,_this.vhs_=tech.vhs,_this.sourceType_=sourceType,_this.useCueTags_=useCueTags,_this.blacklistDuration=blacklistDuration,_this.maxPlaylistRetries=maxPlaylistRetries,_this.enableLowInitialPlaylist=enableLowInitialPlaylist,_this.useCueTags_&&(_this.cueTagsTrack_=_this.tech_.addTextTrack("metadata","ad-cues"),_this.cueTagsTrack_.inBandMetadataTrackDispatchType=""),_this.requestOptions_={withCredentials:withCredentials,handleManifestRedirects:handleManifestRedirects,maxPlaylistRetries:maxPlaylistRetries,timeout:null},_this.on("error",_this.pauseLoading),_this.mediaTypes_=createMediaTypes(),_this.mediaSource=new window.MediaSource,_this.handleDurationChange_=_this.handleDurationChange_.bind(assertThisInitialized(_this)),_this.handleSourceOpen_=_this.handleSourceOpen_.bind(assertThisInitialized(_this)),_this.handleSourceEnded_=_this.handleSourceEnded_.bind(assertThisInitialized(_this)),_this.mediaSource.addEventListener("durationchange",_this.handleDurationChange_),_this.mediaSource.addEventListener("sourceopen",_this.handleSourceOpen_),_this.mediaSource.addEventListener("sourceended",_this.handleSourceEnded_),_this.seekable_=videojs.createTimeRanges(),_this.hasPlayed_=!1,_this.syncController_=new SyncController(options),_this.segmentMetadataTrack_=tech.addRemoteTextTrack({kind:"metadata",label:"segment-metadata"},!1).track,_this.decrypter_=new Decrypter,_this.sourceUpdater_=new SourceUpdater(_this.mediaSource),_this.inbandTextTracks_={},_this.timelineChangeController_=new TimelineChangeController;var segmentLoaderSettings={vhs:_this.vhs_,parse708captions:options.parse708captions,useDtsForTimestampOffset:options.useDtsForTimestampOffset,captionServices:captionServices,mediaSource:_this.mediaSource,currentTime:_this.tech_.currentTime.bind(_this.tech_),seekable:function seekable(){return _this.seekable()},seeking:function seeking(){return _this.tech_.seeking()},duration:function duration(){return _this.duration()},hasPlayed:function hasPlayed(){return _this.hasPlayed_},goalBufferLength:function goalBufferLength(){return _this.goalBufferLength()},bandwidth:bandwidth,syncController:_this.syncController_,decrypter:_this.decrypter_,sourceType:_this.sourceType_,inbandTextTracks:_this.inbandTextTracks_,cacheEncryptionKeys:cacheEncryptionKeys,sourceUpdater:_this.sourceUpdater_,timelineChangeController:_this.timelineChangeController_,experimentalExactManifestTimings:options.experimentalExactManifestTimings};_this.masterPlaylistLoader_="dash"===_this.sourceType_?new DashPlaylistLoader(src,_this.vhs_,_this.requestOptions_):new PlaylistLoader(src,_this.vhs_,_this.requestOptions_),_this.setupMasterPlaylistLoaderListeners_(),_this.mainSegmentLoader_=new SegmentLoader(videojs.mergeOptions(segmentLoaderSettings,{segmentMetadataTrack:_this.segmentMetadataTrack_,loaderType:"main"}),options),_this.audioSegmentLoader_=new SegmentLoader(videojs.mergeOptions(segmentLoaderSettings,{loaderType:"audio"}),options),_this.subtitleSegmentLoader_=new VTTSegmentLoader(videojs.mergeOptions(segmentLoaderSettings,{loaderType:"vtt",featuresNativeTextTracks:_this.tech_.featuresNativeTextTracks}),options),_this.setupSegmentLoaderListeners_(),_this.experimentalBufferBasedABR&&(_this.masterPlaylistLoader_.one("loadedplaylist",(function(){return _this.startABRTimer_()})),_this.tech_.on("pause",(function(){return _this.stopABRTimer_()})),_this.tech_.on("play",(function(){return _this.startABRTimer_()}))),loaderStats.forEach((function(stat){_this[stat+"_"]=sumLoaderStat.bind(assertThisInitialized(_this),stat)})),_this.logger_=logger("MPC"),_this.triggeredFmp4Usage=!1,"none"===_this.tech_.preload()?(_this.loadOnPlay_=function(){_this.loadOnPlay_=null,_this.masterPlaylistLoader_.load()},_this.tech_.one("play",_this.loadOnPlay_)):_this.masterPlaylistLoader_.load(),_this.timeToLoadedData__=-1,_this.mainAppendsToLoadedData__=-1,_this.audioAppendsToLoadedData__=-1;var event="none"===_this.tech_.preload()?"play":"loadstart";return _this.tech_.one(event,(function(){var timeToLoadedDataStart=Date.now();_this.tech_.one("loadeddata",(function(){_this.timeToLoadedData__=Date.now()-timeToLoadedDataStart,_this.mainAppendsToLoadedData__=_this.mainSegmentLoader_.mediaAppends,_this.audioAppendsToLoadedData__=_this.audioSegmentLoader_.mediaAppends}))})),_this}inheritsLoose(MasterPlaylistController,_videojs$EventTarget);var _proto=MasterPlaylistController.prototype;return _proto.mainAppendsToLoadedData_=function mainAppendsToLoadedData_(){return this.mainAppendsToLoadedData__},_proto.audioAppendsToLoadedData_=function audioAppendsToLoadedData_(){return this.audioAppendsToLoadedData__},_proto.appendsToLoadedData_=function appendsToLoadedData_(){var main=this.mainAppendsToLoadedData_(),audio=this.audioAppendsToLoadedData_();return-1===main||-1===audio?-1:main+audio},_proto.timeToLoadedData_=function timeToLoadedData_(){return this.timeToLoadedData__},_proto.checkABR_=function checkABR_(){var nextPlaylist=this.selectPlaylist();nextPlaylist&&this.shouldSwitchToMedia_(nextPlaylist)&&this.switchMedia_(nextPlaylist,"abr")},_proto.switchMedia_=function switchMedia_(playlist,cause,delay){var oldMedia=this.media(),oldId=oldMedia&&(oldMedia.id||oldMedia.uri),newId=playlist.id||playlist.uri;oldId&&oldId!==newId&&(this.logger_("switch media "+oldId+" -> "+newId+" from "+cause),this.tech_.trigger({type:"usage",name:"vhs-rendition-change-"+cause})),this.masterPlaylistLoader_.media(playlist,delay)},_proto.startABRTimer_=function startABRTimer_(){var _this2=this;this.stopABRTimer_(),this.abrTimer_=window.setInterval((function(){return _this2.checkABR_()}),250)},_proto.stopABRTimer_=function stopABRTimer_(){this.tech_.scrubbing&&this.tech_.scrubbing()||(window.clearInterval(this.abrTimer_),this.abrTimer_=null)},_proto.getAudioTrackPlaylists_=function getAudioTrackPlaylists_(){var master=this.master(),defaultPlaylists=master&&master.playlists||[];if(!master||!master.mediaGroups||!master.mediaGroups.AUDIO)return defaultPlaylists;var AUDIO=master.mediaGroups.AUDIO,groupKeys=Object.keys(AUDIO),track;if(Object.keys(this.mediaTypes_.AUDIO.groups).length)track=this.mediaTypes_.AUDIO.activeTrack();else{var defaultGroup=AUDIO.main||groupKeys.length&&AUDIO[groupKeys[0]];for(var label in defaultGroup)if(defaultGroup[label].default){track={label:label};break}}if(!track)return defaultPlaylists;var playlists=[];for(var group in AUDIO)if(AUDIO[group][track.label]){var properties=AUDIO[group][track.label];if(properties.playlists&&properties.playlists.length)playlists.push.apply(playlists,properties.playlists);else if(properties.uri)playlists.push(properties);else if(master.playlists.length)for(var i=0;i1&&(this.tech_.trigger({type:"usage",name:"vhs-alternate-audio"}),this.tech_.trigger({type:"usage",name:"hls-alternate-audio"})),this.useCueTags_&&(this.tech_.trigger({type:"usage",name:"vhs-playlist-cue-tags"}),this.tech_.trigger({type:"usage",name:"hls-playlist-cue-tags"}))},_proto.shouldSwitchToMedia_=function shouldSwitchToMedia_(nextPlaylist){var currentPlaylist=this.masterPlaylistLoader_.media()||this.masterPlaylistLoader_.pendingMedia_,currentTime=this.tech_.currentTime(),bufferLowWaterLine=this.bufferLowWaterLine(),bufferHighWaterLine=this.bufferHighWaterLine(),buffered=this.tech_.buffered();return shouldSwitchToMedia({buffered:buffered,currentTime:currentTime,currentPlaylist:currentPlaylist,nextPlaylist:nextPlaylist,bufferLowWaterLine:bufferLowWaterLine,bufferHighWaterLine:bufferHighWaterLine,duration:this.duration(),experimentalBufferBasedABR:this.experimentalBufferBasedABR,log:this.logger_})},_proto.setupSegmentLoaderListeners_=function setupSegmentLoaderListeners_(){var _this4=this;this.experimentalBufferBasedABR||(this.mainSegmentLoader_.on("bandwidthupdate",(function(){var nextPlaylist=_this4.selectPlaylist();_this4.shouldSwitchToMedia_(nextPlaylist)&&_this4.switchMedia_(nextPlaylist,"bandwidthupdate"),_this4.tech_.trigger("bandwidthupdate")})),this.mainSegmentLoader_.on("progress",(function(){_this4.trigger("progress")}))),this.mainSegmentLoader_.on("error",(function(){_this4.blacklistCurrentPlaylist(_this4.mainSegmentLoader_.error())})),this.mainSegmentLoader_.on("appenderror",(function(){_this4.error=_this4.mainSegmentLoader_.error_,_this4.trigger("error")})),this.mainSegmentLoader_.on("syncinfoupdate",(function(){_this4.onSyncInfoUpdate_()})),this.mainSegmentLoader_.on("timestampoffset",(function(){_this4.tech_.trigger({type:"usage",name:"vhs-timestamp-offset"}),_this4.tech_.trigger({type:"usage",name:"hls-timestamp-offset"})})),this.audioSegmentLoader_.on("syncinfoupdate",(function(){_this4.onSyncInfoUpdate_()})),this.audioSegmentLoader_.on("appenderror",(function(){_this4.error=_this4.audioSegmentLoader_.error_,_this4.trigger("error")})),this.mainSegmentLoader_.on("ended",(function(){_this4.logger_("main segment loader ended"),_this4.onEndOfStream()})),this.mainSegmentLoader_.on("earlyabort",(function(event){_this4.experimentalBufferBasedABR||(_this4.delegateLoaders_("all",["abort"]),_this4.blacklistCurrentPlaylist({message:"Aborted early because there isn't enough bandwidth to complete the request without rebuffering."},120))}));var updateCodecs=function updateCodecs(){if(!_this4.sourceUpdater_.hasCreatedSourceBuffers())return _this4.tryToCreateSourceBuffers_();var codecs=_this4.getCodecsOrExclude_();codecs&&_this4.sourceUpdater_.addOrChangeSourceBuffers(codecs)};this.mainSegmentLoader_.on("trackinfo",updateCodecs),this.audioSegmentLoader_.on("trackinfo",updateCodecs),this.mainSegmentLoader_.on("fmp4",(function(){_this4.triggeredFmp4Usage||(_this4.tech_.trigger({type:"usage",name:"vhs-fmp4"}),_this4.tech_.trigger({type:"usage",name:"hls-fmp4"}),_this4.triggeredFmp4Usage=!0)})),this.audioSegmentLoader_.on("fmp4",(function(){_this4.triggeredFmp4Usage||(_this4.tech_.trigger({type:"usage",name:"vhs-fmp4"}),_this4.tech_.trigger({type:"usage",name:"hls-fmp4"}),_this4.triggeredFmp4Usage=!0)})),this.audioSegmentLoader_.on("ended",(function(){_this4.logger_("audioSegmentLoader ended"),_this4.onEndOfStream()}))},_proto.mediaSecondsLoaded_=function mediaSecondsLoaded_(){return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded+this.mainSegmentLoader_.mediaSecondsLoaded)},_proto.load=function load(){this.mainSegmentLoader_.load(),this.mediaTypes_.AUDIO.activePlaylistLoader&&this.audioSegmentLoader_.load(),this.mediaTypes_.SUBTITLES.activePlaylistLoader&&this.subtitleSegmentLoader_.load()},_proto.smoothQualityChange_=function smoothQualityChange_(media){void 0===media&&(media=this.selectPlaylist()),this.fastQualityChange_(media)},_proto.fastQualityChange_=function fastQualityChange_(media){var _this5=this;void 0===media&&(media=this.selectPlaylist()),media!==this.masterPlaylistLoader_.media()?(this.switchMedia_(media,"fast-quality"),this.mainSegmentLoader_.resetEverything((function(){videojs.browser.IE_VERSION||videojs.browser.IS_EDGE?_this5.tech_.setCurrentTime(_this5.tech_.currentTime()+.04):_this5.tech_.setCurrentTime(_this5.tech_.currentTime())}))):this.logger_("skipping fastQualityChange because new media is same as old")},_proto.play=function play(){if(!this.setupFirstPlay()){this.tech_.ended()&&this.tech_.setCurrentTime(0),this.hasPlayed_&&this.load();var seekable=this.tech_.seekable();return this.tech_.duration()===1/0&&this.tech_.currentTime()this.maxPlaylistRetries?1/0:Date.now()+1e3*blacklistDuration,currentPlaylist.excludeUntil=excludeUntil,error.reason&&(currentPlaylist.lastExcludeReason_=error.reason),this.tech_.trigger("blacklistplaylist"),this.tech_.trigger({type:"usage",name:"vhs-rendition-blacklisted"}),this.tech_.trigger({type:"usage",name:"hls-rendition-blacklisted"});var nextPlaylist=this.selectPlaylist();if(!nextPlaylist)return this.error="Playback cannot continue. No available working or supported playlists.",void this.trigger("error");var logFn=error.internal?this.logger_:videojs.log.warn,errorMessage=error.message?" "+error.message:"";logFn((error.internal?"Internal problem":"Problem")+" encountered with playlist "+currentPlaylist.id+"."+errorMessage+" Switching to playlist "+nextPlaylist.id+"."),nextPlaylist.attributes.AUDIO!==currentPlaylist.attributes.AUDIO&&this.delegateLoaders_("audio",["abort","pause"]),nextPlaylist.attributes.SUBTITLES!==currentPlaylist.attributes.SUBTITLES&&this.delegateLoaders_("subtitle",["abort","pause"]),this.delegateLoaders_("main",["abort","pause"]);var delayDuration=nextPlaylist.targetDuration/2*1e3||5e3,shouldDelay="number"==typeof nextPlaylist.lastRequest&&Date.now()-nextPlaylist.lastRequest<=delayDuration;return this.switchMedia_(nextPlaylist,"exclude",isFinalRendition||shouldDelay)},_proto.pauseLoading=function pauseLoading(){this.delegateLoaders_("all",["abort","pause"]),this.stopABRTimer_()},_proto.delegateLoaders_=function delegateLoaders_(filter,fnNames){var _this7=this,loaders=[],dontFilterPlaylist="all"===filter;(dontFilterPlaylist||"main"===filter)&&loaders.push(this.masterPlaylistLoader_);var mediaTypes=[];(dontFilterPlaylist||"audio"===filter)&&mediaTypes.push("AUDIO"),(dontFilterPlaylist||"subtitle"===filter)&&(mediaTypes.push("CLOSED-CAPTIONS"),mediaTypes.push("SUBTITLES")),mediaTypes.forEach((function(mediaType){var loader=_this7.mediaTypes_[mediaType]&&_this7.mediaTypes_[mediaType].activePlaylistLoader;loader&&loaders.push(loader)})),["main","audio","subtitle"].forEach((function(name){var loader=_this7[name+"SegmentLoader_"];!loader||filter!==name&&"all"!==filter||loaders.push(loader)})),loaders.forEach((function(loader){return fnNames.forEach((function(fnName){"function"==typeof loader[fnName]&&loader[fnName]()}))}))},_proto.setCurrentTime=function setCurrentTime(currentTime){var buffered=findRange(this.tech_.buffered(),currentTime);return this.masterPlaylistLoader_&&this.masterPlaylistLoader_.media()&&this.masterPlaylistLoader_.media().segments?buffered&&buffered.length?currentTime:(this.mainSegmentLoader_.resetEverything(),this.mainSegmentLoader_.abort(),this.mediaTypes_.AUDIO.activePlaylistLoader&&(this.audioSegmentLoader_.resetEverything(),this.audioSegmentLoader_.abort()),this.mediaTypes_.SUBTITLES.activePlaylistLoader&&(this.subtitleSegmentLoader_.resetEverything(),this.subtitleSegmentLoader_.abort()),void this.load()):0},_proto.duration=function duration(){if(!this.masterPlaylistLoader_)return 0;var media=this.masterPlaylistLoader_.media();return media?media.endList?this.mediaSource?this.mediaSource.duration:Vhs$1.Playlist.duration(media):1/0:0},_proto.seekable=function seekable(){return this.seekable_},_proto.onSyncInfoUpdate_=function onSyncInfoUpdate_(){var audioSeekable;if(this.masterPlaylistLoader_){var media=this.masterPlaylistLoader_.media();if(media){var expired=this.syncController_.getExpiredTime(media,this.duration());if(null!==expired){var master=this.masterPlaylistLoader_.master,mainSeekable=Vhs$1.Playlist.seekable(media,expired,Vhs$1.Playlist.liveEdgeDelay(master,media));if(0!==mainSeekable.length){if(this.mediaTypes_.AUDIO.activePlaylistLoader){if(media=this.mediaTypes_.AUDIO.activePlaylistLoader.media(),null===(expired=this.syncController_.getExpiredTime(media,this.duration())))return;if(0===(audioSeekable=Vhs$1.Playlist.seekable(media,expired,Vhs$1.Playlist.liveEdgeDelay(master,media))).length)return}var oldEnd,oldStart;this.seekable_&&this.seekable_.length&&(oldEnd=this.seekable_.end(0),oldStart=this.seekable_.start(0)),audioSeekable?audioSeekable.start(0)>mainSeekable.end(0)||mainSeekable.start(0)>audioSeekable.end(0)?this.seekable_=mainSeekable:this.seekable_=videojs.createTimeRanges([[audioSeekable.start(0)>mainSeekable.start(0)?audioSeekable.start(0):mainSeekable.start(0),audioSeekable.end(0)0&&(duration=Math.max(duration,buffered.end(buffered.length-1))),this.mediaSource.duration!==duration&&this.sourceUpdater_.setDuration(duration)}},_proto.dispose=function dispose(){var _this8=this;this.trigger("dispose"),this.decrypter_.terminate(),this.masterPlaylistLoader_.dispose(),this.mainSegmentLoader_.dispose(),this.loadOnPlay_&&this.tech_.off("play",this.loadOnPlay_),["AUDIO","SUBTITLES"].forEach((function(type){var groups=_this8.mediaTypes_[type].groups;for(var id in groups)groups[id].forEach((function(group){group.playlistLoader&&group.playlistLoader.dispose()}))})),this.audioSegmentLoader_.dispose(),this.subtitleSegmentLoader_.dispose(),this.sourceUpdater_.dispose(),this.timelineChangeController_.dispose(),this.stopABRTimer_(),this.updateDuration_&&this.mediaSource.removeEventListener("sourceopen",this.updateDuration_),this.mediaSource.removeEventListener("durationchange",this.handleDurationChange_),this.mediaSource.removeEventListener("sourceopen",this.handleSourceOpen_),this.mediaSource.removeEventListener("sourceended",this.handleSourceEnded_),this.off()},_proto.master=function master(){return this.masterPlaylistLoader_.master},_proto.media=function media(){return this.masterPlaylistLoader_.media()||this.initialMedia_},_proto.areMediaTypesKnown_=function areMediaTypesKnown_(){var usingAudioLoader=!!this.mediaTypes_.AUDIO.activePlaylistLoader,hasMainMediaInfo=!!this.mainSegmentLoader_.getCurrentMediaInfo_(),hasAudioMediaInfo=!usingAudioLoader||!!this.audioSegmentLoader_.getCurrentMediaInfo_();return!(!hasMainMediaInfo||!hasAudioMediaInfo)},_proto.getCodecsOrExclude_=function getCodecsOrExclude_(){var _this9=this,media={main:this.mainSegmentLoader_.getCurrentMediaInfo_()||{},audio:this.audioSegmentLoader_.getCurrentMediaInfo_()||{}};media.video=media.main;var playlistCodecs=codecsForPlaylist(this.master(),this.media()),codecs={},usingAudioLoader=!!this.mediaTypes_.AUDIO.activePlaylistLoader;if(media.main.hasVideo&&(codecs.video=playlistCodecs.video||media.main.videoCodec||"avc1.4d400d"),media.main.isMuxed&&(codecs.video+=","+(playlistCodecs.audio||media.main.audioCodec||"mp4a.40.2")),(media.main.hasAudio&&!media.main.isMuxed||media.audio.hasAudio||usingAudioLoader)&&(codecs.audio=playlistCodecs.audio||media.main.audioCodec||media.audio.audioCodec||"mp4a.40.2",media.audio.isFmp4=media.main.hasAudio&&!media.main.isMuxed?media.main.isFmp4:media.audio.isFmp4),codecs.audio||codecs.video){var supportFunction=function supportFunction(isFmp4,codec){return isFmp4?browserSupportsCodec(codec):muxerSupportsCodec(codec)},unsupportedCodecs={},unsupportedAudio;if(["video","audio"].forEach((function(type){if(codecs.hasOwnProperty(type)&&!supportFunction(media[type].isFmp4,codecs[type])){var supporter=media[type].isFmp4?"browser":"muxer";unsupportedCodecs[supporter]=unsupportedCodecs[supporter]||[],unsupportedCodecs[supporter].push(codecs[type]),"audio"===type&&(unsupportedAudio=supporter)}})),usingAudioLoader&&unsupportedAudio&&this.media().attributes.AUDIO){var audioGroup=this.media().attributes.AUDIO;this.master().playlists.forEach((function(variant){var variantAudioGroup;(variant.attributes&&variant.attributes.AUDIO)===audioGroup&&variant!==_this9.media()&&(variant.excludeUntil=1/0)})),this.logger_("excluding audio group "+audioGroup+" as "+unsupportedAudio+' does not support codec(s): "'+codecs.audio+'"')}if(!Object.keys(unsupportedCodecs).length){if(this.sourceUpdater_.hasCreatedSourceBuffers()&&!this.sourceUpdater_.canChangeType()){var switchMessages=[];if(["video","audio"].forEach((function(type){var newCodec=(parseCodecs(_this9.sourceUpdater_.codecs[type]||"")[0]||{}).type,oldCodec=(parseCodecs(codecs[type]||"")[0]||{}).type;newCodec&&oldCodec&&newCodec.toLowerCase()!==oldCodec.toLowerCase()&&switchMessages.push('"'+_this9.sourceUpdater_.codecs[type]+'" -> "'+codecs[type]+'"')})),switchMessages.length)return void this.blacklistCurrentPlaylist({playlist:this.media(),message:"Codec switching not supported: "+switchMessages.join(", ")+".",blacklistDuration:1/0,internal:!0})}return codecs}var message=Object.keys(unsupportedCodecs).reduce((function(acc,supporter){return acc&&(acc+=", "),acc+=supporter+' does not support codec(s): "'+unsupportedCodecs[supporter].join(",")+'"'}),"")+".";this.blacklistCurrentPlaylist({playlist:this.media(),internal:!0,message:message,blacklistDuration:1/0})}else this.blacklistCurrentPlaylist({playlist:this.media(),message:"Could not determine codecs for playlist.",blacklistDuration:1/0})},_proto.tryToCreateSourceBuffers_=function tryToCreateSourceBuffers_(){if("open"===this.mediaSource.readyState&&!this.sourceUpdater_.hasCreatedSourceBuffers()&&this.areMediaTypesKnown_()){var codecs=this.getCodecsOrExclude_();if(codecs){this.sourceUpdater_.createSourceBuffers(codecs);var codecString=[codecs.video,codecs.audio].filter(Boolean).join(",");this.excludeIncompatibleVariants_(codecString)}}},_proto.excludeUnsupportedVariants_=function excludeUnsupportedVariants_(){var _this10=this,playlists=this.master().playlists,ids=[];Object.keys(playlists).forEach((function(key){var variant=playlists[key];if(-1===ids.indexOf(variant.id)){ids.push(variant.id);var codecs=codecsForPlaylist(_this10.master,variant),unsupported=[];!codecs.audio||muxerSupportsCodec(codecs.audio)||browserSupportsCodec(codecs.audio)||unsupported.push("audio codec "+codecs.audio),!codecs.video||muxerSupportsCodec(codecs.video)||browserSupportsCodec(codecs.video)||unsupported.push("video codec "+codecs.video),codecs.text&&"stpp.ttml.im1t"===codecs.text&&unsupported.push("text codec "+codecs.text),unsupported.length&&(variant.excludeUntil=1/0,_this10.logger_("excluding "+variant.id+" for unsupported: "+unsupported.join(", ")))}}))},_proto.excludeIncompatibleVariants_=function excludeIncompatibleVariants_(codecString){var _this11=this,ids=[],playlists=this.master().playlists,codecs=unwrapCodecList(parseCodecs(codecString)),codecCount_=codecCount(codecs),videoDetails=codecs.video&&parseCodecs(codecs.video)[0]||null,audioDetails=codecs.audio&&parseCodecs(codecs.audio)[0]||null;Object.keys(playlists).forEach((function(key){var variant=playlists[key];if(-1===ids.indexOf(variant.id)&&variant.excludeUntil!==1/0){ids.push(variant.id);var blacklistReasons=[],variantCodecs=codecsForPlaylist(_this11.masterPlaylistLoader_.master,variant),variantCodecCount=codecCount(variantCodecs);if(variantCodecs.audio||variantCodecs.video){if(variantCodecCount!==codecCount_&&blacklistReasons.push('codec count "'+variantCodecCount+'" !== "'+codecCount_+'"'),!_this11.sourceUpdater_.canChangeType()){var variantVideoDetails=variantCodecs.video&&parseCodecs(variantCodecs.video)[0]||null,variantAudioDetails=variantCodecs.audio&&parseCodecs(variantCodecs.audio)[0]||null;variantVideoDetails&&videoDetails&&variantVideoDetails.type.toLowerCase()!==videoDetails.type.toLowerCase()&&blacklistReasons.push('video codec "'+variantVideoDetails.type+'" !== "'+videoDetails.type+'"'),variantAudioDetails&&audioDetails&&variantAudioDetails.type.toLowerCase()!==audioDetails.type.toLowerCase()&&blacklistReasons.push('audio codec "'+variantAudioDetails.type+'" !== "'+audioDetails.type+'"')}blacklistReasons.length&&(variant.excludeUntil=1/0,_this11.logger_("blacklisting "+variant.id+": "+blacklistReasons.join(" && ")))}}}))},_proto.updateAdCues_=function updateAdCues_(media){var offset=0,seekable=this.seekable();seekable.length&&(offset=seekable.start(0)),updateAdCues(media,this.cueTagsTrack_,offset)},_proto.goalBufferLength=function goalBufferLength(){var currentTime=this.tech_.currentTime(),initial=Config.GOAL_BUFFER_LENGTH,rate=Config.GOAL_BUFFER_LENGTH_RATE,max=Math.max(initial,Config.MAX_GOAL_BUFFER_LENGTH);return Math.min(initial+currentTime*rate,max)},_proto.bufferLowWaterLine=function bufferLowWaterLine(){var currentTime=this.tech_.currentTime(),initial=Config.BUFFER_LOW_WATER_LINE,rate=Config.BUFFER_LOW_WATER_LINE_RATE,max=Math.max(initial,Config.MAX_BUFFER_LOW_WATER_LINE),newMax=Math.max(initial,Config.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE);return Math.min(initial+currentTime*rate,this.experimentalBufferBasedABR?newMax:max)},_proto.bufferHighWaterLine=function bufferHighWaterLine(){return Config.BUFFER_HIGH_WATER_LINE},MasterPlaylistController}(videojs.EventTarget),enableFunction=function enableFunction(loader,playlistID,changePlaylistFn){return function(enable){var playlist=loader.master.playlists[playlistID],incompatible=isIncompatible(playlist),currentlyEnabled=isEnabled(playlist);return void 0===enable?currentlyEnabled:(enable?delete playlist.disabled:playlist.disabled=!0,enable===currentlyEnabled||incompatible||(changePlaylistFn(),enable?loader.trigger("renditionenabled"):loader.trigger("renditiondisabled")),enable)}},Representation=function Representation(vhsHandler,playlist,id){var mpc=vhsHandler.masterPlaylistController_,smoothQualityChange,changeType,qualityChangeFunction=mpc[(vhsHandler.options_.smoothQualityChange?"smooth":"fast")+"QualityChange_"].bind(mpc);if(playlist.attributes){var resolution=playlist.attributes.RESOLUTION;this.width=resolution&&resolution.width,this.height=resolution&&resolution.height,this.bandwidth=playlist.attributes.BANDWIDTH}this.codecs=codecsForPlaylist(mpc.master(),playlist),this.playlist=playlist,this.id=id,this.enabled=enableFunction(vhsHandler.playlists,playlist.id,qualityChangeFunction)},renditionSelectionMixin=function renditionSelectionMixin(vhsHandler){vhsHandler.representations=function(){var master=vhsHandler.masterPlaylistController_.master(),playlists=isAudioOnly(master)?vhsHandler.masterPlaylistController_.getAudioTrackPlaylists_():master.playlists;return playlists?playlists.filter((function(media){return!isIncompatible(media)})).map((function(e,i){return new Representation(vhsHandler,e,e.id)})):[]}},timerCancelEvents=["seeking","seeked","pause","playing","error"],PlaybackWatcher=function(){function PlaybackWatcher(options){var _this=this;this.masterPlaylistController_=options.masterPlaylistController,this.tech_=options.tech,this.seekable=options.seekable,this.allowSeeksWithinUnsafeLiveWindow=options.allowSeeksWithinUnsafeLiveWindow,this.liveRangeSafeTimeDelta=options.liveRangeSafeTimeDelta,this.media=options.media,this.consecutiveUpdates=0,this.lastRecordedTime=null,this.timer_=null,this.checkCurrentTimeTimeout_=null,this.logger_=logger("PlaybackWatcher"),this.logger_("initialize");var playHandler=function playHandler(){return _this.monitorCurrentTime_()},canPlayHandler=function canPlayHandler(){return _this.monitorCurrentTime_()},waitingHandler=function waitingHandler(){return _this.techWaiting_()},cancelTimerHandler=function cancelTimerHandler(){return _this.cancelTimer_()},mpc=this.masterPlaylistController_,loaderTypes=["main","subtitle","audio"],loaderChecks={};loaderTypes.forEach((function(type){loaderChecks[type]={reset:function reset(){return _this.resetSegmentDownloads_(type)},updateend:function updateend(){return _this.checkSegmentDownloads_(type)}},mpc[type+"SegmentLoader_"].on("appendsdone",loaderChecks[type].updateend),mpc[type+"SegmentLoader_"].on("playlistupdate",loaderChecks[type].reset),_this.tech_.on(["seeked","seeking"],loaderChecks[type].reset)}));var setSeekingHandlers=function setSeekingHandlers(fn){["main","audio"].forEach((function(type){mpc[type+"SegmentLoader_"][fn]("appended",_this.seekingAppendCheck_)}))};this.seekingAppendCheck_=function(){_this.fixesBadSeeks_()&&(_this.consecutiveUpdates=0,_this.lastRecordedTime=_this.tech_.currentTime(),setSeekingHandlers("off"))},this.clearSeekingAppendCheck_=function(){return setSeekingHandlers("off")},this.watchForBadSeeking_=function(){_this.clearSeekingAppendCheck_(),setSeekingHandlers("on")},this.tech_.on("seeked",this.clearSeekingAppendCheck_),this.tech_.on("seeking",this.watchForBadSeeking_),this.tech_.on("waiting",waitingHandler),this.tech_.on(timerCancelEvents,cancelTimerHandler),this.tech_.on("canplay",canPlayHandler),this.tech_.one("play",playHandler),this.dispose=function(){_this.clearSeekingAppendCheck_(),_this.logger_("dispose"),_this.tech_.off("waiting",waitingHandler),_this.tech_.off(timerCancelEvents,cancelTimerHandler),_this.tech_.off("canplay",canPlayHandler),_this.tech_.off("play",playHandler),_this.tech_.off("seeking",_this.watchForBadSeeking_),_this.tech_.off("seeked",_this.clearSeekingAppendCheck_),loaderTypes.forEach((function(type){mpc[type+"SegmentLoader_"].off("appendsdone",loaderChecks[type].updateend),mpc[type+"SegmentLoader_"].off("playlistupdate",loaderChecks[type].reset),_this.tech_.off(["seeked","seeking"],loaderChecks[type].reset)})),_this.checkCurrentTimeTimeout_&&window.clearTimeout(_this.checkCurrentTimeTimeout_),_this.cancelTimer_()}}var _proto=PlaybackWatcher.prototype;return _proto.monitorCurrentTime_=function monitorCurrentTime_(){this.checkCurrentTime_(),this.checkCurrentTimeTimeout_&&window.clearTimeout(this.checkCurrentTimeTimeout_),this.checkCurrentTimeTimeout_=window.setTimeout(this.monitorCurrentTime_.bind(this),250)},_proto.resetSegmentDownloads_=function resetSegmentDownloads_(type){var loader=this.masterPlaylistController_[type+"SegmentLoader_"];this[type+"StalledDownloads_"]>0&&this.logger_("resetting possible stalled download count for "+type+" loader"),this[type+"StalledDownloads_"]=0,this[type+"Buffered_"]=loader.buffered_()},_proto.checkSegmentDownloads_=function checkSegmentDownloads_(type){var mpc=this.masterPlaylistController_,loader=mpc[type+"SegmentLoader_"],buffered=loader.buffered_(),isBufferedDifferent=isRangeDifferent(this[type+"Buffered_"],buffered);this[type+"Buffered_"]=buffered,isBufferedDifferent?this.resetSegmentDownloads_(type):(this[type+"StalledDownloads_"]++,this.logger_("found #"+this[type+"StalledDownloads_"]+" "+type+" appends that did not increase buffer (possible stalled download)",{playlistId:loader.playlist_&&loader.playlist_.id,buffered:timeRangesToArray(buffered)}),this[type+"StalledDownloads_"]<10||(this.logger_(type+" loader stalled download exclusion"),this.resetSegmentDownloads_(type),this.tech_.trigger({type:"usage",name:"vhs-"+type+"-download-exclusion"}),"subtitle"!==type&&mpc.blacklistCurrentPlaylist({message:"Excessive "+type+" segment downloading detected."},1/0)))},_proto.checkCurrentTime_=function checkCurrentTime_(){if(!this.tech_.paused()&&!this.tech_.seeking()){var currentTime=this.tech_.currentTime(),buffered=this.tech_.buffered();if(this.lastRecordedTime===currentTime&&(!buffered.length||currentTime+.1>=buffered.end(buffered.length-1)))return this.techWaiting_();this.consecutiveUpdates>=5&¤tTime===this.lastRecordedTime?(this.consecutiveUpdates++,this.waiting_()):currentTime===this.lastRecordedTime?this.consecutiveUpdates++:(this.consecutiveUpdates=0,this.lastRecordedTime=currentTime)}},_proto.cancelTimer_=function cancelTimer_(){this.consecutiveUpdates=0,this.timer_&&(this.logger_("cancelTimer_"),clearTimeout(this.timer_)),this.timer_=null},_proto.fixesBadSeeks_=function fixesBadSeeks_(){var seeking;if(!this.tech_.seeking())return!1;var seekable=this.seekable(),currentTime=this.tech_.currentTime(),isAfterSeekableRange,seekTo,seekableEnd;this.afterSeekableWindow_(seekable,currentTime,this.media(),this.allowSeeksWithinUnsafeLiveWindow)&&(seekTo=seekable.end(seekable.length-1));if(this.beforeSeekableWindow_(seekable,currentTime)){var seekableStart=seekable.start(0);seekTo=seekableStart+(seekableStart===seekable.end(0)?0:.1)}if(void 0!==seekTo)return this.logger_("Trying to seek outside of seekable at time "+currentTime+" with seekable range "+printableRange(seekable)+". Seeking to "+seekTo+"."),this.tech_.setCurrentTime(seekTo),!0;for(var sourceUpdater=this.masterPlaylistController_.sourceUpdater_,buffered=this.tech_.buffered(),audioBuffered=sourceUpdater.audioBuffer?sourceUpdater.audioBuffered():null,videoBuffered=sourceUpdater.videoBuffer?sourceUpdater.videoBuffered():null,media=this.media(),minAppendedDuration=media.partTargetDuration?media.partTargetDuration:2*(media.targetDuration-1/30),bufferedToCheck=[audioBuffered,videoBuffered],i=0;i "+currentRange.end(0)+"]. Attempting to resume playback by seeking to the current time."),this.tech_.trigger({type:"usage",name:"vhs-unknown-waiting"}),void this.tech_.trigger({type:"usage",name:"hls-unknown-waiting"})):void 0}},_proto.techWaiting_=function techWaiting_(){var seekable=this.seekable(),currentTime=this.tech_.currentTime();if(this.tech_.seeking()||null!==this.timer_)return!0;if(this.beforeSeekableWindow_(seekable,currentTime)){var livePoint=seekable.end(seekable.length-1);return this.logger_("Fell out of live window at time "+currentTime+". Seeking to live point (seekable end) "+livePoint),this.cancelTimer_(),this.tech_.setCurrentTime(livePoint),this.tech_.trigger({type:"usage",name:"vhs-live-resync"}),this.tech_.trigger({type:"usage",name:"hls-live-resync"}),!0}var sourceUpdater=this.tech_.vhs.masterPlaylistController_.sourceUpdater_,buffered=this.tech_.buffered(),videoUnderflow;if(this.videoUnderflow_({audioBuffered:sourceUpdater.audioBuffered(),videoBuffered:sourceUpdater.videoBuffered(),currentTime:currentTime}))return this.cancelTimer_(),this.tech_.setCurrentTime(currentTime),this.tech_.trigger({type:"usage",name:"vhs-video-underflow"}),this.tech_.trigger({type:"usage",name:"hls-video-underflow"}),!0;var nextRange=findNextRange(buffered,currentTime);if(nextRange.length>0){var difference=nextRange.start(0)-currentTime;return this.logger_("Stopped at "+currentTime+", setting timer for "+difference+", seeking to "+nextRange.start(0)),this.cancelTimer_(),this.timer_=setTimeout(this.skipTheGap_.bind(this),1e3*difference,currentTime),!0}return!1},_proto.afterSeekableWindow_=function afterSeekableWindow_(seekable,currentTime,playlist,allowSeeksWithinUnsafeLiveWindow){if(void 0===allowSeeksWithinUnsafeLiveWindow&&(allowSeeksWithinUnsafeLiveWindow=!1),!seekable.length)return!1;var allowedEnd=seekable.end(seekable.length-1)+.1,isLive;return!playlist.endList&&allowSeeksWithinUnsafeLiveWindow&&(allowedEnd=seekable.end(seekable.length-1)+3*playlist.targetDuration),currentTime>allowedEnd},_proto.beforeSeekableWindow_=function beforeSeekableWindow_(seekable,currentTime){return!!(seekable.length&&seekable.start(0)>0&¤tTime2)return{start:start,end:end}}return null},PlaybackWatcher}(),defaultOptions={errorInterval:30,getSource:function getSource(next){var tech,sourceObj;return next(this.tech({IWillNotUseThisInPlugins:!0}).currentSource_||this.currentSource())}},initPlugin=function initPlugin(player,options){var lastCalled=0,seekTo=0,localOptions=videojs.mergeOptions(defaultOptions,options);player.ready((function(){player.trigger({type:"usage",name:"vhs-error-reload-initialized"}),player.trigger({type:"usage",name:"hls-error-reload-initialized"})}));var loadedMetadataHandler=function loadedMetadataHandler(){seekTo&&player.currentTime(seekTo)},setSource=function setSource(sourceObj){null!=sourceObj&&(seekTo=player.duration()!==1/0&&player.currentTime()||0,player.one("loadedmetadata",loadedMetadataHandler),player.src(sourceObj),player.trigger({type:"usage",name:"vhs-error-reload"}),player.trigger({type:"usage",name:"hls-error-reload"}),player.play())},errorHandler=function errorHandler(){return Date.now()-lastCalled<1e3*localOptions.errorInterval?(player.trigger({type:"usage",name:"vhs-error-reload-canceled"}),void player.trigger({type:"usage",name:"hls-error-reload-canceled"})):localOptions.getSource&&"function"==typeof localOptions.getSource?(lastCalled=Date.now(),localOptions.getSource.call(player,setSource)):void videojs.log.error("ERROR: reloadSourceOnError - The option getSource must be a function!")},cleanupEvents=function cleanupEvents(){player.off("loadedmetadata",loadedMetadataHandler),player.off("error",errorHandler),player.off("dispose",cleanupEvents)},reinitPlugin=function reinitPlugin(newOptions){cleanupEvents(),initPlugin(player,newOptions)};player.on("error",errorHandler),player.on("dispose",cleanupEvents),player.reloadSourceOnError=reinitPlugin},reloadSourceOnError=function reloadSourceOnError(options){initPlugin(this,options)},version$4="2.14.0",version$3="6.0.1",version$2="0.21.0",version$1="4.7.0",version="3.1.2",Vhs={PlaylistLoader:PlaylistLoader,Playlist:Playlist,utils:utils,STANDARD_PLAYLIST_SELECTOR:lastBandwidthSelector,INITIAL_PLAYLIST_SELECTOR:lowestBitrateCompatibleVariantSelector,lastBandwidthSelector:lastBandwidthSelector,movingAverageBandwidthSelector:movingAverageBandwidthSelector,comparePlaylistBandwidth:comparePlaylistBandwidth,comparePlaylistResolution:comparePlaylistResolution,xhr:xhrFactory()};Object.keys(Config).forEach((function(prop){Object.defineProperty(Vhs,prop,{get:function get(){return videojs.log.warn("using Vhs."+prop+" is UNSAFE be sure you know what you are doing"),Config[prop]},set:function set(value){videojs.log.warn("using Vhs."+prop+" is UNSAFE be sure you know what you are doing"),"number"!=typeof value||value<0?videojs.log.warn("value of Vhs."+prop+" must be greater than or equal to 0"):Config[prop]=value}})}));var LOCAL_STORAGE_KEY="videojs-vhs",handleVhsMediaChange=function handleVhsMediaChange(qualityLevels,playlistLoader){for(var newPlaylist=playlistLoader.media(),selectedIndex=-1,i=0;i=1e7&&playerBandwidthEst>=1e7?Math.max(playerBandwidthEst,networkInfoBandwidthEstBitsPerSec):networkInfoBandwidthEstBitsPerSec}return playerBandwidthEst},set:function set(bandwidth){this.masterPlaylistController_.mainSegmentLoader_.bandwidth=bandwidth,this.masterPlaylistController_.mainSegmentLoader_.throughput={rate:0,count:0}}},systemBandwidth:{get:function get(){var invBandwidth=1/(this.bandwidth||1),invThroughput,systemBitrate;return invThroughput=this.throughput>0?1/this.throughput:0,Math.floor(1/(invBandwidth+invThroughput))},set:function set(){videojs.log.error('The "systemBandwidth" property is read-only')}}}),this.options_.bandwidth&&(this.bandwidth=this.options_.bandwidth),this.options_.throughput&&(this.throughput=this.options_.throughput),Object.defineProperties(this.stats,{bandwidth:{get:function get(){return _this3.bandwidth||0},enumerable:!0},mediaRequests:{get:function get(){return _this3.masterPlaylistController_.mediaRequests_()||0},enumerable:!0},mediaRequestsAborted:{get:function get(){return _this3.masterPlaylistController_.mediaRequestsAborted_()||0},enumerable:!0},mediaRequestsTimedout:{get:function get(){return _this3.masterPlaylistController_.mediaRequestsTimedout_()||0},enumerable:!0},mediaRequestsErrored:{get:function get(){return _this3.masterPlaylistController_.mediaRequestsErrored_()||0},enumerable:!0},mediaTransferDuration:{get:function get(){return _this3.masterPlaylistController_.mediaTransferDuration_()||0},enumerable:!0},mediaBytesTransferred:{get:function get(){return _this3.masterPlaylistController_.mediaBytesTransferred_()||0},enumerable:!0},mediaSecondsLoaded:{get:function get(){return _this3.masterPlaylistController_.mediaSecondsLoaded_()||0},enumerable:!0},mediaAppends:{get:function get(){return _this3.masterPlaylistController_.mediaAppends_()||0},enumerable:!0},mainAppendsToLoadedData:{get:function get(){return _this3.masterPlaylistController_.mainAppendsToLoadedData_()||0},enumerable:!0},audioAppendsToLoadedData:{get:function get(){return _this3.masterPlaylistController_.audioAppendsToLoadedData_()||0},enumerable:!0},appendsToLoadedData:{get:function get(){return _this3.masterPlaylistController_.appendsToLoadedData_()||0},enumerable:!0},timeToLoadedData:{get:function get(){return _this3.masterPlaylistController_.timeToLoadedData_()||0},enumerable:!0},buffered:{get:function get(){return timeRangesToArray(_this3.tech_.buffered())},enumerable:!0},currentTime:{get:function get(){return _this3.tech_.currentTime()},enumerable:!0},currentSource:{get:function get(){return _this3.tech_.currentSource_},enumerable:!0},currentTech:{get:function get(){return _this3.tech_.name_},enumerable:!0},duration:{get:function get(){return _this3.tech_.duration()},enumerable:!0},master:{get:function get(){return _this3.playlists.master},enumerable:!0},playerDimensions:{get:function get(){return _this3.tech_.currentDimensions()},enumerable:!0},seekable:{get:function get(){return timeRangesToArray(_this3.tech_.seekable())},enumerable:!0},timestamp:{get:function get(){return Date.now()},enumerable:!0},videoPlaybackQuality:{get:function get(){return _this3.tech_.getVideoPlaybackQuality()},enumerable:!0}}),this.tech_.one("canplay",this.masterPlaylistController_.setupFirstPlay.bind(this.masterPlaylistController_)),this.tech_.on("bandwidthupdate",(function(){_this3.options_.useBandwidthFromLocalStorage&&updateVhsLocalStorage({bandwidth:_this3.bandwidth,throughput:Math.round(_this3.throughput)})})),this.masterPlaylistController_.on("selectedinitialmedia",(function(){renditionSelectionMixin(_this3)})),this.masterPlaylistController_.sourceUpdater_.on("createdsourcebuffers",(function(){_this3.setupEme_()})),this.on(this.masterPlaylistController_,"progress",(function(){this.tech_.trigger("progress")})),this.on(this.masterPlaylistController_,"firstplay",(function(){this.ignoreNextSeekingEvent_=!0})),this.setupQualityLevels_(),this.tech_.el()&&(this.mediaSourceUrl_=window.URL.createObjectURL(this.masterPlaylistController_.mediaSource),this.tech_.src(this.mediaSourceUrl_))}},_proto.createKeySessions_=function createKeySessions_(){var _this4=this,audioPlaylistLoader=this.masterPlaylistController_.mediaTypes_.AUDIO.activePlaylistLoader;this.logger_("waiting for EME key session creation"),waitForKeySessionCreation({player:this.player_,sourceKeySystems:this.source_.keySystems,audioMedia:audioPlaylistLoader&&audioPlaylistLoader.media(),mainPlaylists:this.playlists.master.playlists}).then((function(){_this4.logger_("created EME key session"),_this4.masterPlaylistController_.sourceUpdater_.initializedEme()})).catch((function(err){_this4.logger_("error while creating EME key session",err),_this4.player_.error({message:"Failed to initialize media keys for EME",code:3})}))},_proto.handleWaitingForKey_=function handleWaitingForKey_(){this.logger_("waitingforkey fired, attempting to create any new key sessions"),this.createKeySessions_()},_proto.setupEme_=function setupEme_(){var _this5=this,audioPlaylistLoader=this.masterPlaylistController_.mediaTypes_.AUDIO.activePlaylistLoader,didSetupEmeOptions=setupEmeOptions({player:this.player_,sourceKeySystems:this.source_.keySystems,media:this.playlists.media(),audioMedia:audioPlaylistLoader&&audioPlaylistLoader.media()});this.player_.tech_.on("keystatuschange",(function(e){"output-restricted"===e.status&&_this5.masterPlaylistController_.blacklistCurrentPlaylist({playlist:_this5.masterPlaylistController_.media(),message:"DRM keystatus changed to "+e.status+". Playlist will fail to play. Check for HDCP content.",blacklistDuration:1/0})})),this.handleWaitingForKey_=this.handleWaitingForKey_.bind(this),this.player_.tech_.on("waitingforkey",this.handleWaitingForKey_),11!==videojs.browser.IE_VERSION&&didSetupEmeOptions?this.createKeySessions_():this.masterPlaylistController_.sourceUpdater_.initializedEme()},_proto.setupQualityLevels_=function setupQualityLevels_(){var _this6=this,player=videojs.players[this.tech_.options_.playerId];player&&player.qualityLevels&&!this.qualityLevels_&&(this.qualityLevels_=player.qualityLevels(),this.masterPlaylistController_.on("selectedinitialmedia",(function(){handleVhsLoadedMetadata(_this6.qualityLevels_,_this6)})),this.playlists.on("mediachange",(function(){handleVhsMediaChange(_this6.qualityLevels_,_this6.playlists)})))},VhsHandler.version=function version$5(){return{"@videojs/http-streaming":"2.14.0","mux.js":"6.0.1","mpd-parser":"0.21.0","m3u8-parser":"4.7.0","aes-decrypter":"3.1.2"}},_proto.version=function version(){return this.constructor.version()},_proto.canChangeType=function canChangeType(){return SourceUpdater.canChangeType()},_proto.play=function play(){this.masterPlaylistController_.play()},_proto.setCurrentTime=function setCurrentTime(currentTime){this.masterPlaylistController_.setCurrentTime(currentTime)},_proto.duration=function duration(){return this.masterPlaylistController_.duration()},_proto.seekable=function seekable(){return this.masterPlaylistController_.seekable()},_proto.dispose=function dispose(){this.playbackWatcher_&&this.playbackWatcher_.dispose(),this.masterPlaylistController_&&this.masterPlaylistController_.dispose(),this.qualityLevels_&&this.qualityLevels_.dispose(),this.player_&&(delete this.player_.vhs,delete this.player_.dash,delete this.player_.hls),this.tech_&&this.tech_.vhs&&delete this.tech_.vhs,this.tech_&&delete this.tech_.hls,this.mediaSourceUrl_&&window.URL.revokeObjectURL&&(window.URL.revokeObjectURL(this.mediaSourceUrl_),this.mediaSourceUrl_=null),this.tech_&&this.tech_.off("waitingforkey",this.handleWaitingForKey_),_Component.prototype.dispose.call(this)},_proto.convertToProgramTime=function convertToProgramTime(time,callback){return getProgramTime({playlist:this.masterPlaylistController_.media(),time:time,callback:callback})},_proto.seekToProgramTime=function seekToProgramTime$1(programTime,callback,pauseAfterSeek,retryCount){return void 0===pauseAfterSeek&&(pauseAfterSeek=!0),void 0===retryCount&&(retryCount=2),seekToProgramTime({programTime:programTime,playlist:this.masterPlaylistController_.media(),retryCount:retryCount,pauseAfterSeek:pauseAfterSeek,seekTo:this.options_.seekTo,tech:this.options_.tech,callback:callback})},VhsHandler}(videojs.getComponent("Component")),VhsSourceHandler={name:"videojs-http-streaming",VERSION:"2.14.0",canHandleSource:function canHandleSource(srcObj,options){void 0===options&&(options={});var localOptions=videojs.mergeOptions(videojs.options,options);return VhsSourceHandler.canPlayType(srcObj.type,localOptions)},handleSource:function handleSource(source,tech,options){void 0===options&&(options={});var localOptions=videojs.mergeOptions(videojs.options,options);return tech.vhs=new VhsHandler(source,tech,localOptions),videojs.hasOwnProperty("hls")||Object.defineProperty(tech,"hls",{get:function get(){return videojs.log.warn("player.tech().hls is deprecated. Use player.tech().vhs instead."),tech.vhs},configurable:!0}),tech.vhs.xhr=xhrFactory(),tech.vhs.src(source.src,source.type),tech.vhs},canPlayType:function canPlayType(type,options){void 0===options&&(options={});var _videojs$mergeOptions=videojs.mergeOptions(videojs.options,options),_videojs$mergeOptions2=_videojs$mergeOptions.vhs,_videojs$mergeOptions3=(_videojs$mergeOptions2=void 0===_videojs$mergeOptions2?{}:_videojs$mergeOptions2).overrideNative,overrideNative=void 0===_videojs$mergeOptions3?!videojs.browser.IS_ANY_SAFARI:_videojs$mergeOptions3,_videojs$mergeOptions4=_videojs$mergeOptions.hls,_videojs$mergeOptions5=(_videojs$mergeOptions4=void 0===_videojs$mergeOptions4?{}:_videojs$mergeOptions4).overrideNative,legacyOverrideNative=void 0!==_videojs$mergeOptions5&&_videojs$mergeOptions5,supportedType=simpleTypeFromSourceType(type),canUseMsePlayback;return supportedType&&(!Vhs.supportsTypeNatively(supportedType)||legacyOverrideNative||overrideNative)?"maybe":""}},supportsNativeMediaSources,registerPlugin;(function supportsNativeMediaSources(){return browserSupportsCodec("avc1.4d400d,mp4a.40.2")}()&&videojs.getTech("Html5").registerSourceHandler(VhsSourceHandler,0),videojs.VhsHandler=VhsHandler,Object.defineProperty(videojs,"HlsHandler",{get:function get(){return videojs.log.warn("videojs.HlsHandler is deprecated. Use videojs.VhsHandler instead."),VhsHandler},configurable:!0}),videojs.VhsSourceHandler=VhsSourceHandler,Object.defineProperty(videojs,"HlsSourceHandler",{get:function get(){return videojs.log.warn("videojs.HlsSourceHandler is deprecated. Use videojs.VhsSourceHandler instead."),VhsSourceHandler},configurable:!0}),videojs.Vhs=Vhs,Object.defineProperty(videojs,"Hls",{get:function get(){return videojs.log.warn("videojs.Hls is deprecated. Use videojs.Vhs instead."),Vhs},configurable:!0}),videojs.use||(videojs.registerComponent("Hls",Vhs),videojs.registerComponent("Vhs",Vhs)),videojs.options.vhs=videojs.options.vhs||{},videojs.options.hls=videojs.options.hls||{},videojs.getPlugin&&videojs.getPlugin("reloadSourceOnError"))||(videojs.registerPlugin||videojs.plugin)("reloadSourceOnError",reloadSourceOnError);return videojs})); \ No newline at end of file +var e;n(null,(e=s).subarray(0,e.byteLength-e[e.byteLength-1]))})}return u.prototype.decryptChunk_=function(t,i,n,r){return function(){var e=function(e,t,i){for(var n,r,a,s,o=new Int32Array(e.buffer,e.byteOffset,e.byteLength>>2),u=new m(Array.prototype.slice.call(t)),e=new Uint8Array(e.byteLength),l=new Int32Array(e.buffer),c=i[0],d=i[1],h=i[2],p=i[3],f=0;f "+n+" from "+t),this.tech_.trigger({type:"usage",name:"vhs-rendition-change-"+t})),this.masterPlaylistLoader_.media(e,i)},t.startABRTimer_=function(){var e=this;this.stopABRTimer_(),this.abrTimer_=window.setInterval(function(){return e.checkABR_()},250)},t.stopABRTimer_=function(){this.tech_.scrubbing&&this.tech_.scrubbing()||(window.clearInterval(this.abrTimer_),this.abrTimer_=null)},t.getAudioTrackPlaylists_=function(){var e=this.master(),t=e&&e.playlists||[];if(!e||!e.mediaGroups||!e.mediaGroups.AUDIO)return t;var i,n=e.mediaGroups.AUDIO,r=Object.keys(n);if(Object.keys(this.mediaTypes_.AUDIO.groups).length)i=this.mediaTypes_.AUDIO.activeTrack();else{var a,s=n.main||r.length&&n[r[0]];for(a in s)if(s[a].default){i={label:a};break}}if(!i)return t;var o,u=[];for(o in n)if(n[o][i.label]){var l=n[o][i.label];if(l.playlists&&l.playlists.length)u.push.apply(u,l.playlists);else if(l.uri)u.push(l);else if(e.playlists.length)for(var c=0;c "+r.id;if(!t)return l(c+" as current playlist is not set"),!0;if(r.id===t.id)return!1;e=Boolean(Uo(i,n).length);if(!t.endList)return e||"number"!=typeof t.partTargetDuration?(l(c+" as current playlist is live"),!0):(l("not "+c+" as current playlist is live llhls, but currentTime isn't in buffered."),!1);i=qo(i,n),n=u?El.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE:El.MAX_BUFFER_LOW_WATER_LINE;if(o= bufferLowWaterLine ("+i+" >= "+a+")";return u&&(a+=" and next bandwidth > current bandwidth ("+n+" > "+r+")"),l(a),!0}return l("not "+c+" as no switching criteria met"),!1}({buffered:this.tech_.buffered(),currentTime:i,currentPlaylist:t,nextPlaylist:e,bufferLowWaterLine:n,bufferHighWaterLine:r,duration:this.duration(),experimentalBufferBasedABR:this.experimentalBufferBasedABR,log:this.logger_})},t.setupSegmentLoaderListeners_=function(){var t=this;this.experimentalBufferBasedABR||(this.mainSegmentLoader_.on("bandwidthupdate",function(){var e=t.selectPlaylist();t.shouldSwitchToMedia_(e)&&t.switchMedia_(e,"bandwidthupdate"),t.tech_.trigger("bandwidthupdate")}),this.mainSegmentLoader_.on("progress",function(){t.trigger("progress")})),this.mainSegmentLoader_.on("error",function(){t.blacklistCurrentPlaylist(t.mainSegmentLoader_.error())}),this.mainSegmentLoader_.on("appenderror",function(){t.error=t.mainSegmentLoader_.error_,t.trigger("error")}),this.mainSegmentLoader_.on("syncinfoupdate",function(){t.onSyncInfoUpdate_()}),this.mainSegmentLoader_.on("timestampoffset",function(){t.tech_.trigger({type:"usage",name:"vhs-timestamp-offset"}),t.tech_.trigger({type:"usage",name:"hls-timestamp-offset"})}),this.audioSegmentLoader_.on("syncinfoupdate",function(){t.onSyncInfoUpdate_()}),this.audioSegmentLoader_.on("appenderror",function(){t.error=t.audioSegmentLoader_.error_,t.trigger("error")}),this.mainSegmentLoader_.on("ended",function(){t.logger_("main segment loader ended"),t.onEndOfStream()}),this.mainSegmentLoader_.on("earlyabort",function(e){t.experimentalBufferBasedABR||(t.delegateLoaders_("all",["abort"]),t.blacklistCurrentPlaylist({message:"Aborted early because there isn't enough bandwidth to complete the request without rebuffering."},120))});function e(){if(!t.sourceUpdater_.hasCreatedSourceBuffers())return t.tryToCreateSourceBuffers_();var e=t.getCodecsOrExclude_();e&&t.sourceUpdater_.addOrChangeSourceBuffers(e)}this.mainSegmentLoader_.on("trackinfo",e),this.audioSegmentLoader_.on("trackinfo",e),this.mainSegmentLoader_.on("fmp4",function(){t.triggeredFmp4Usage||(t.tech_.trigger({type:"usage",name:"vhs-fmp4"}),t.tech_.trigger({type:"usage",name:"hls-fmp4"}),t.triggeredFmp4Usage=!0)}),this.audioSegmentLoader_.on("fmp4",function(){t.triggeredFmp4Usage||(t.tech_.trigger({type:"usage",name:"vhs-fmp4"}),t.tech_.trigger({type:"usage",name:"hls-fmp4"}),t.triggeredFmp4Usage=!0)}),this.audioSegmentLoader_.on("ended",function(){t.logger_("audioSegmentLoader ended"),t.onEndOfStream()})},t.mediaSecondsLoaded_=function(){return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded+this.mainSegmentLoader_.mediaSecondsLoaded)},t.load=function(){this.mainSegmentLoader_.load(),this.mediaTypes_.AUDIO.activePlaylistLoader&&this.audioSegmentLoader_.load(),this.mediaTypes_.SUBTITLES.activePlaylistLoader&&this.subtitleSegmentLoader_.load()},t.smoothQualityChange_=function(e){void 0===e&&(e=this.selectPlaylist()),this.fastQualityChange_(e)},t.fastQualityChange_=function(e){var t=this;(e=void 0===e?this.selectPlaylist():e)!==this.masterPlaylistLoader_.media()?(this.switchMedia_(e,"fast-quality"),this.mainSegmentLoader_.resetEverything(function(){tr.browser.IE_VERSION||tr.browser.IS_EDGE?t.tech_.setCurrentTime(t.tech_.currentTime()+.04):t.tech_.setCurrentTime(t.tech_.currentTime())})):this.logger_("skipping fastQualityChange because new media is same as old")},t.play=function(){if(!this.setupFirstPlay()){this.tech_.ended()&&this.tech_.setCurrentTime(0),this.hasPlayed_&&this.load();var e=this.tech_.seekable();return this.tech_.duration()===1/0&&this.tech_.currentTime()this.maxPlaylistRetries?1/0:Date.now()+1e3*t,i.excludeUntil=a,e.reason&&(i.lastExcludeReason_=e.reason),this.tech_.trigger("blacklistplaylist"),this.tech_.trigger({type:"usage",name:"vhs-rendition-blacklisted"}),this.tech_.trigger({type:"usage",name:"hls-rendition-blacklisted"});r=this.selectPlaylist();if(!r)return this.error="Playback cannot continue. No available working or supported playlists.",void this.trigger("error");t=e.internal?this.logger_:tr.log.warn,a=e.message?" "+e.message:"";t((e.internal?"Internal problem":"Problem")+" encountered with playlist "+i.id+"."+a+" Switching to playlist "+r.id+"."),r.attributes.AUDIO!==i.attributes.AUDIO&&this.delegateLoaders_("audio",["abort","pause"]),r.attributes.SUBTITLES!==i.attributes.SUBTITLES&&this.delegateLoaders_("subtitle",["abort","pause"]),this.delegateLoaders_("main",["abort","pause"]);a=r.targetDuration/2*1e3||5e3,a="number"==typeof r.lastRequest&&Date.now()-r.lastRequest<=a;return this.switchMedia_(r,"exclude",s||a)},t.pauseLoading=function(){this.delegateLoaders_("all",["abort","pause"]),this.stopABRTimer_()},t.delegateLoaders_=function(i,e){var n=this,r=[],t="all"===i;!t&&"main"!==i||r.push(this.masterPlaylistLoader_);var a=[];!t&&"audio"!==i||a.push("AUDIO"),!t&&"subtitle"!==i||(a.push("CLOSED-CAPTIONS"),a.push("SUBTITLES")),a.forEach(function(e){e=n.mediaTypes_[e]&&n.mediaTypes_[e].activePlaylistLoader;e&&r.push(e)}),["main","audio","subtitle"].forEach(function(e){var t=n[e+"SegmentLoader_"];!t||i!==e&&"all"!==i||r.push(t)}),r.forEach(function(t){return e.forEach(function(e){"function"==typeof t[e]&&t[e]()})})},t.setCurrentTime=function(e){var t=Uo(this.tech_.buffered(),e);return this.masterPlaylistLoader_&&this.masterPlaylistLoader_.media()&&this.masterPlaylistLoader_.media().segments?t&&t.length?e:(this.mainSegmentLoader_.resetEverything(),this.mainSegmentLoader_.abort(),this.mediaTypes_.AUDIO.activePlaylistLoader&&(this.audioSegmentLoader_.resetEverything(),this.audioSegmentLoader_.abort()),this.mediaTypes_.SUBTITLES.activePlaylistLoader&&(this.subtitleSegmentLoader_.resetEverything(),this.subtitleSegmentLoader_.abort()),void this.load()):0},t.duration=function(){if(!this.masterPlaylistLoader_)return 0;var e=this.masterPlaylistLoader_.media();return e?e.endList?this.mediaSource?this.mediaSource.duration:Ql.Playlist.duration(e):1/0:0},t.seekable=function(){return this.seekable_},t.onSyncInfoUpdate_=function(){var e;if(this.masterPlaylistLoader_){var t=this.masterPlaylistLoader_.media();if(t){var i=this.syncController_.getExpiredTime(t,this.duration());if(null!==i){var n,r,a=this.masterPlaylistLoader_.master,s=Ql.Playlist.seekable(t,i,Ql.Playlist.liveEdgeDelay(a,t));if(0!==s.length){if(this.mediaTypes_.AUDIO.activePlaylistLoader){if(t=this.mediaTypes_.AUDIO.activePlaylistLoader.media(),null===(i=this.syncController_.getExpiredTime(t,this.duration())))return;if(0===(e=Ql.Playlist.seekable(t,i,Ql.Playlist.liveEdgeDelay(a,t))).length)return}this.seekable_&&this.seekable_.length&&(n=this.seekable_.end(0),r=this.seekable_.start(0)),!e||e.start(0)>s.end(0)||s.start(0)>e.end(0)?this.seekable_=s:this.seekable_=tr.createTimeRanges([[(e.start(0)>s.start(0)?e:s).start(0),(e.end(0) "'+a[e]+'"')}),u.length)return void this.blacklistCurrentPlaylist({playlist:this.media(),message:"Codec switching not supported: "+u.join(", ")+".",blacklistDuration:1/0,internal:!0})}return a}t=Object.keys(o).reduce(function(e,t){return e&&(e+=", "),e+=t+' does not support codec(s): "'+o[t].join(",")+'"'},"")+".";this.blacklistCurrentPlaylist({playlist:this.media(),internal:!0,message:t,blacklistDuration:1/0})}else this.blacklistCurrentPlaylist({playlist:this.media(),message:"Could not determine codecs for playlist.",blacklistDuration:1/0})},t.tryToCreateSourceBuffers_=function(){var e;"open"!==this.mediaSource.readyState||this.sourceUpdater_.hasCreatedSourceBuffers()||!this.areMediaTypesKnown_()||(e=this.getCodecsOrExclude_())&&(this.sourceUpdater_.createSourceBuffers(e),e=[e.video,e.audio].filter(Boolean).join(","),this.excludeIncompatibleVariants_(e))},t.excludeUnsupportedVariants_=function(){var n=this,r=this.master().playlists,a=[];Object.keys(r).forEach(function(e){var t,i=r[e];-1===a.indexOf(i.id)&&(a.push(i.id),t=[],!(e=$u(n.master,i)).audio||yr(e.audio)||gr(e.audio)||t.push("audio codec "+e.audio),!e.video||yr(e.video)||gr(e.video)||t.push("video codec "+e.video),e.text&&"stpp.ttml.im1t"===e.text&&t.push("text codec "+e.text),t.length&&(i.excludeUntil=1/0,n.logger_("excluding "+i.id+" for unsupported: "+t.join(", "))))})},t.excludeIncompatibleVariants_=function(e){var r=this,a=[],s=this.master().playlists,e=Yu(pr(e)),o=Qu(e),u=e.video&&pr(e.video)[0]||null,l=e.audio&&pr(e.audio)[0]||null;Object.keys(s).forEach(function(e){var t,i,n=s[e];-1===a.indexOf(n.id)&&n.excludeUntil!==1/0&&(a.push(n.id),t=[],i=$u(r.masterPlaylistLoader_.master,n),e=Qu(i),(i.audio||i.video)&&(e!==o&&t.push('codec count "'+e+'" !== "'+o+'"'),r.sourceUpdater_.canChangeType()||(e=i.video&&pr(i.video)[0]||null,i=i.audio&&pr(i.audio)[0]||null,e&&u&&e.type.toLowerCase()!==u.type.toLowerCase()&&t.push('video codec "'+e.type+'" !== "'+u.type+'"'),i&&l&&i.type.toLowerCase()!==l.type.toLowerCase()&&t.push('audio codec "'+i.type+'" !== "'+l.type+'"')),t.length&&(n.excludeUntil=1/0,r.logger_("blacklisting "+n.id+": "+t.join(" && ")))))})},t.updateAdCues_=function(e){var t=0,i=this.seekable();i.length&&(t=i.start(0)),function(e,t,i){if(void 0===i&&(i=0),e.segments)for(var n=i,r=0;r=r.adStartTime&&t<=r.adEndTime)return r}return null}(t,n+u.duration/2)){if("cueIn"in u){o.endTime=n,o.adEndTime=n,n+=u.duration,o=null;continue}if(n=t.end(t.length-1)))return this.techWaiting_();5<=this.consecutiveUpdates&&e===this.lastRecordedTime?(this.consecutiveUpdates++,this.waiting_()):e===this.lastRecordedTime?this.consecutiveUpdates++:(this.consecutiveUpdates=0,this.lastRecordedTime=e)}},t.cancelTimer_=function(){this.consecutiveUpdates=0,this.timer_&&(this.logger_("cancelTimer_"),clearTimeout(this.timer_)),this.timer_=null},t.fixesBadSeeks_=function(){if(!this.tech_.seeking())return!1;var e,t=this.seekable(),i=this.tech_.currentTime();if(this.afterSeekableWindow_(t,i,this.media(),this.allowSeeksWithinUnsafeLiveWindow)&&(e=t.end(t.length-1)),"undefined"!=typeof(e=this.beforeSeekableWindow_(t,i)?(a=t.start(0))+(a===t.end(0)?0:.1):e))return this.logger_("Trying to seek outside of seekable at time "+i+" with seekable range "+Fo(t)+". Seeking to "+e+"."),this.tech_.setCurrentTime(e),!0;for(var n=this.masterPlaylistController_.sourceUpdater_,r=this.tech_.buffered(),a=n.audioBuffer?n.audioBuffered():null,t=n.videoBuffer?n.videoBuffered():null,n=this.media(),s=n.partTargetDuration||2*(n.targetDuration-fl),o=[a,t],u=0;u "+t.end(0)+"]. Attempting to resume playback by seeking to the current time."),this.tech_.trigger({type:"usage",name:"vhs-unknown-waiting"}),this.tech_.trigger({type:"usage",name:"hls-unknown-waiting"})))},t.techWaiting_=function(){var e=this.seekable(),t=this.tech_.currentTime();if(this.tech_.seeking()||null!==this.timer_)return!0;if(this.beforeSeekableWindow_(e,t)){var i=e.end(e.length-1);return this.logger_("Fell out of live window at time "+t+". Seeking to live point (seekable end) "+i),this.cancelTimer_(),this.tech_.setCurrentTime(i),this.tech_.trigger({type:"usage",name:"vhs-live-resync"}),this.tech_.trigger({type:"usage",name:"hls-live-resync"}),!0}e=this.tech_.vhs.masterPlaylistController_.sourceUpdater_,i=this.tech_.buffered();if(this.videoUnderflow_({audioBuffered:e.audioBuffered(),videoBuffered:e.videoBuffered(),currentTime:t}))return this.cancelTimer_(),this.tech_.setCurrentTime(t),this.tech_.trigger({type:"usage",name:"vhs-video-underflow"}),this.tech_.trigger({type:"usage",name:"hls-video-underflow"}),!0;e=Bo(i,t);if(0 0) { elements[0].parentNode.removeChild(elements[0]); @@ -446,8 +452,8 @@ License.VERSION = version; // Register the plugin with video.js. - videojs__default["default"].registerPlugin('license', License); + videojs__default['default'].registerPlugin('license', License); return License; -})); +}))); diff --git a/public/_player/videojs/dist/videojs-license.min.js b/public/_player/videojs/dist/videojs-license.min.js index 700ed15..812d4bc 100644 --- a/public/_player/videojs/dist/videojs-license.min.js +++ b/public/_player/videojs/dist/videojs-license.min.js @@ -1,2 +1,2 @@ /*! @name videojs-license @version 0.1.0 @license MIT */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("video.js")):"function"==typeof define&&define.amd?define(["video.js"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).videojsLicense=t(e.videojs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function l(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}var o=l((function(e){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports})),i=l((function(e){function t(n,l){return e.exports=t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n,l)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})),s=l((function(e){e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,i(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports})),r=n.default.getPlugin("plugin"),a=n.default.getComponent("Component"),c=n.default.getComponent("MenuButton"),u={license:"none",title:"",author:"",languages:{license:"License",loading:"Loading"}},d=function(e){function t(t,l){var i;return(i=e.call(this,t)||this).playerId=i.player.id(),i.options=n.default.mergeOptions(u,l),"none"===l.license?o(i):(i.player.ready((function(){i.player.addClass("vjs-license"),i.buildUI(),(n.default.browser.IS_IOS||n.default.browser.IS_ANDROID)&&i.mobileBuildUI()})),i.player.on("userinactive",(function(){document.getElementById(i.playerId).querySelectorAll(".vjs-menu").forEach((function(e){e.classList.remove("vjs-lock-open")}))})),i.player.on("click",(function(e){"VIDEO"===e.target.tagName&&document.getElementById(i.playerId).querySelectorAll(".vjs-menu").forEach((function(e){e.classList.remove("vjs-lock-open")}))})),i.player.on("loadstart",(function(e){i.removeElementsByClass("vjs-license-clear"),n.default.browser.IS_IOS||n.default.browser.IS_ANDROID?i.mobileBuildTopLevelMenu():i.buildTopLevelMenu()})),i)}s(t,e);var l=t.prototype;return l.buildUI=function(){var e=this.playerId,t=this,l=function(l){function o(n,o){var i;return(i=l.call(this,n,o)||this).addClass("vjs-license"),i.controlText(t.options.languages.loading),n.one("canplaythrough",(function(e){i.controlText(t.options.languages.settings)})),i.menu.contentEl_.id=e+"-vjs-license-default",i}return s(o,l),o.prototype.handleClick=function(){n.default.browser.IS_IOS||n.default.browser.IS_ANDROID?this.player.getChild("licenseMenuMobileModal").el().style.display="block":(this.el().classList.toggle("vjs-toogle-btn"),this.menu.el().classList.toggle("vjs-lock-open"))},o}(c);n.default.registerComponent("licenseMenuButton",l),this.player.getChild("controlBar").addChild("licenseMenuButton"),this.player.getChild("controlBar").getChild("fullscreenToggle")&&this.player.getChild("controlBar").el().insertBefore(this.player.getChild("controlBar").getChild("licenseMenuButton").el(),this.player.getChild("controlBar").getChild("fullscreenToggle").el())},l.buildTopLevelMenu=function(){var e=this.player.getChild("controlBar").getChild("licenseMenuButton").menu.contentEl_;e.innerHTML="",e.classList.add("vjs-license-top-level");var t=document.createElement("li");t.className="vjs-license-top-level-header";var n=document.createElement("span");n.innerHTML="About",n.className="vjs-license-top-level-header-titel",t.appendChild(n),e.appendChild(t);var l=document.createElement("li");if(l.innerHTML=this.buildItemTitel(),l.className="vjs-license-top-level-item",e.appendChild(l),this.options.author){var o=document.createElement("li");o.innerHTML=this.buildItemAuthor(),o.className="vjs-license-top-level-item",e.appendChild(o)}var i=document.createElement("li");i.innerHTML=this.buildItemLicense(),i.className="vjs-license-top-level-item",e.appendChild(i)},l.mobileBuildUI=function(){var e=function(e){function t(t,n){return e.call(this,t,n)||this}return s(t,e),t.prototype.createEl=function(){return n.default.createEl("div",{className:"vjs-license-mobile"})},t}(a);n.default.registerComponent("licenseMenuMobileModal",e),n.default.dom.prependTo(this.player.addChild("licenseMenuMobileModal").el(),document.body)},l.mobileBuildTopLevelMenu=function(){var e=this,t=this.player.getChild("licenseMenuMobileModal"),n=document.createElement("ul");n.className="vjs-license-mob-top-level vjs-setting-menu-clear",t.el().appendChild(n);var l=document.createElement("li");l.innerHTML="About",l.className="vjs-setting-menu-mobile-top-header",n.appendChild(l);var o=document.createElement("li");if(o.innerHTML=this.buildItemTitel(),o.className="vjs-license-top-level-item",this.options.author){var i=document.createElement("li");i.innerHTML=this.buildItemAuthor(),i.className="vjs-license-top-level-item"}var s=document.createElement("li");s.innerHTML=this.buildItemLicense(),s.className="vjs-license-top-level-item";var r=document.createElement("li");r.innerHTML="Close",r.className="setting-menu-footer-default",r.onclick=function(t){e.player.getChild("settingsMenuMobileModal").el().style.display="none"},n.appendChild(r)},l.buildItemTitel=function(){var e="";return this.options.title&&(e=""+this.options.title),"Titel: "+e},l.buildItemAuthor=function(){var e="";return this.options.author&&(e=" by "+this.options.author),"Author: "+e},l.buildItemLicense=function(){var e=new RegExp("[0-9]+.[0-9]+$"),t="4.0",n=this.options.license.match(e);null!==n&&(t=n[0]);var l=null;switch(this.options.license.replace(e,"").trim()){case"CC0":l="https://creativecommons.org/licenses/zero/1.0/";break;case"CC BY":l="https://creativecommons.org/licenses/by/"+t+"/";break;case"CC BY-SA":l="https://creativecommons.org/licenses/by-sa/"+t+"/";break;case"CC BY-NC":l="https://creativecommons.org/licenses/by-nc/"+t+"/";break;case"CC BY-NC-SA":l="https://creativecommons.org/licenses/by-nc-sa/"+t+"/";break;case"CC BY-ND":l="https://creativecommons.org/licenses/by-nd/"+t+"/";break;case"CC BY-NC-ND":l="https://creativecommons.org/licenses/by-nc-nd/"+t+"/"}return"License: "+(l?''+this.options.license+"":this.options.license)},l.removeElementsByClass=function(e){document.querySelectorAll(".vjs-sm-top-level").forEach((function(e){e.classList.remove("vjs-hidden")}));for(var t=document.getElementsByClassName(e);t.length>0;)t[0].parentNode.removeChild(t[0])},t}(r);return d.defaultState={},d.VERSION="0.1.0",n.default.registerPlugin("license",d),d})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("video.js"),require("global/document")):"function"==typeof define&&define.amd?define(["video.js","global/document"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).videojsLicense=t(e.videojs,e.document)}(this,(function(e,t){"use strict";function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=l(e),o=l(t);function i(e,t,l){return e(l={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&l.path)}},l.exports),l.exports}var s=i((function(e){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0})),r=i((function(e){function t(l,n){return e.exports=t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,t(l,n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0})),a=i((function(e){e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0})),c=n.default.getPlugin("plugin"),u=n.default.getComponent("Component"),d=n.default.getComponent("MenuButton"),p={license:"none",title:"",author:"",languages:{license:"License",loading:"Loading"}},f=function(e){function t(t,l){var i;return(i=e.call(this,t)||this).playerId=i.player.id(),i.options=n.default.mergeOptions(p,l),"none"===l.license?s(i):(i.player.ready((function(){i.player.addClass("vjs-license"),i.buildUI(),(n.default.browser.IS_IOS||n.default.browser.IS_ANDROID)&&i.mobileBuildUI()})),i.player.on("userinactive",(function(){o.default.getElementById(i.playerId).querySelectorAll(".vjs-menu").forEach((function(e){e.classList.remove("vjs-lock-open")}))})),i.player.on("click",(function(e){"VIDEO"===e.target.tagName&&o.default.getElementById(i.playerId).querySelectorAll(".vjs-menu").forEach((function(e){e.classList.remove("vjs-lock-open")}))})),i.player.on("loadstart",(function(e){i.removeElementsByClass("vjs-license-clear"),n.default.browser.IS_IOS||n.default.browser.IS_ANDROID?i.mobileBuildTopLevelMenu():i.buildTopLevelMenu()})),i)}a(t,e);var l=t.prototype;return l.buildUI=function(){var e=this.playerId,t=this,l=function(l){function o(n,o){var i;return(i=l.call(this,n,o)||this).addClass("vjs-license"),i.controlText(t.options.languages.loading),n.one("canplaythrough",(function(e){i.controlText(t.options.languages.settings)})),i.menu.contentEl_.id=e+"-vjs-license-default",i}return a(o,l),o.prototype.handleClick=function(){n.default.browser.IS_IOS||n.default.browser.IS_ANDROID?this.player.getChild("licenseMenuMobileModal").el().style.display="block":(this.el().classList.toggle("vjs-toogle-btn"),this.menu.el().classList.toggle("vjs-lock-open"))},o}(d);n.default.registerComponent("licenseMenuButton",l),this.player.getChild("controlBar").addChild("licenseMenuButton"),this.player.getChild("controlBar").getChild("fullscreenToggle")&&this.player.getChild("controlBar").el().insertBefore(this.player.getChild("controlBar").getChild("licenseMenuButton").el(),this.player.getChild("controlBar").getChild("fullscreenToggle").el())},l.buildTopLevelMenu=function(){var e=this.player.getChild("controlBar").getChild("licenseMenuButton").menu.contentEl_;e.innerHTML="",e.classList.add("vjs-license-top-level");var t=o.default.createElement("li");t.className="vjs-license-top-level-header";var l=o.default.createElement("span");l.innerHTML="About",l.className="vjs-license-top-level-header-titel",t.appendChild(l),e.appendChild(t);var n=o.default.createElement("li");if(n.innerHTML=this.buildItemTitel(),n.className="vjs-license-top-level-item",e.appendChild(n),this.options.author){var i=o.default.createElement("li");i.innerHTML=this.buildItemAuthor(),i.className="vjs-license-top-level-item",e.appendChild(i)}var s=o.default.createElement("li");s.innerHTML=this.buildItemLicense(),s.className="vjs-license-top-level-item",e.appendChild(s)},l.mobileBuildUI=function(){var e=function(e){function t(t,l){return e.call(this,t,l)||this}return a(t,e),t.prototype.createEl=function(){return n.default.createEl("div",{className:"vjs-license-mobile"})},t}(u);n.default.registerComponent("licenseMenuMobileModal",e),n.default.dom.prependTo(this.player.addChild("licenseMenuMobileModal").el(),o.default.body)},l.mobileBuildTopLevelMenu=function(){var e=this,t=this.player.getChild("licenseMenuMobileModal"),l=o.default.createElement("ul");l.className="vjs-license-mob-top-level vjs-setting-menu-clear",t.el().appendChild(l);var n=o.default.createElement("li");n.innerHTML="About",n.className="vjs-setting-menu-mobile-top-header",l.appendChild(n);var i=o.default.createElement("li");if(i.innerHTML=this.buildItemTitel(),i.className="vjs-license-top-level-item",this.options.author){var s=o.default.createElement("li");s.innerHTML=this.buildItemAuthor(),s.className="vjs-license-top-level-item"}var r=o.default.createElement("li");r.innerHTML=this.buildItemLicense(),r.className="vjs-license-top-level-item";var a=o.default.createElement("li");a.innerHTML="Close",a.className="setting-menu-footer-default",a.onclick=function(t){e.player.getChild("settingsMenuMobileModal").el().style.display="none"},l.appendChild(a)},l.buildItemTitel=function(){var e="";return this.options.title&&(e=""+this.options.title),"Title: "+e},l.buildItemAuthor=function(){var e="";return this.options.author&&(e=" by "+this.options.author),"Author: "+e},l.buildItemLicense=function(){var e=new RegExp("[0-9]+.[0-9]+$"),t="4.0",l=this.options.license.match(e);null!==l&&(t=l[0]);var n=null;switch(this.options.license.replace(e,"").trim()){case"CC0":n="https://creativecommons.org/licenses/zero/1.0/";break;case"CC BY":n="https://creativecommons.org/licenses/by/"+t+"/";break;case"CC BY-SA":n="https://creativecommons.org/licenses/by-sa/"+t+"/";break;case"CC BY-NC":n="https://creativecommons.org/licenses/by-nc/"+t+"/";break;case"CC BY-NC-SA":n="https://creativecommons.org/licenses/by-nc-sa/"+t+"/";break;case"CC BY-ND":n="https://creativecommons.org/licenses/by-nd/"+t+"/";break;case"CC BY-NC-ND":n="https://creativecommons.org/licenses/by-nc-nd/"+t+"/"}return"License: "+(n?''+this.options.license+"":this.options.license)},l.removeElementsByClass=function(e){o.default.querySelectorAll(".vjs-sm-top-level").forEach((function(e){e.classList.remove("vjs-hidden")}));for(var t=o.default.getElementsByClassName(e);t.length>0;)t[0].parentNode.removeChild(t[0])},t}(c);return f.defaultState={},f.VERSION="0.1.0",n.default.registerPlugin("license",f),f})); diff --git a/public/_playersite/index.html b/public/_playersite/index.html index 431a503..77a34cc 100644 --- a/public/_playersite/index.html +++ b/public/_playersite/index.html @@ -14,7 +14,7 @@ {{#if channel_creator_name}} {{/if}} - + @@ -99,7 +99,7 @@ background-color: {{bgcolor_header}}; } .header-title { - color: {{textcolor_titel}}; + color: {{textcolor_title}}; font-size: 1.4rem; font-weight: 400; padding-left: .5em; @@ -181,7 +181,7 @@ } } .content-headline { - color: {{textcolor_titel}}; + color: {{textcolor_title}}; font-size: 1.5rem; font-weight: 500; } @@ -195,13 +195,13 @@ } } .channel-stats { - color: {{textcolor_titel}}; + color: {{textcolor_title}}; font-weight: 500; padding-top: 0.6em; padding-bottom: 0.8em; } .channel-stats-icon { - color: {{textcolor_titel}}; + color: {{textcolor_title}}; font-size: 1.3rem !important; height: 1em; margin-right: 0.5em; @@ -344,14 +344,14 @@ display: flex; } .close { - color: {{textcolor_titel}}; + color: {{textcolor_title}}; float: right; font-size: 28px; font-weight: bold; } .close:hover, .close:focus { - color: {{textcolor_titel}}; + color: {{textcolor_title}}; text-decoration: none; cursor: pointer; } @@ -364,7 +364,7 @@
-

{{titel}}

+

{{title}}

@@ -397,7 +397,9 @@ live_tv
+ {{#if share}} share SHARE + {{/if}}

@@ -411,8 +413,10 @@ Creator: {{channel_creator_name}}
{{/if}} {{#if channel_license}} + {{#ifnoteq channel_license "none"}} Content license:
+ {{/ifnoteq}} {{/if}}

diff --git a/public/index.html b/public/index.html index 738e826..a972073 100644 --- a/public/index.html +++ b/public/index.html @@ -2,12 +2,12 @@ - + - - + + Restreamer diff --git a/src/Footer.js b/src/Footer.js index 8a87d31..a6c645b 100644 --- a/src/Footer.js +++ b/src/Footer.js @@ -132,7 +132,7 @@ function Resources(props) { const core = $resources.core; return ( - + {(system.cpu_used >= 75 || system.mem_used >= 75 || core.memfs_used >= 75 || core.disk_used >= 75 || core.net_used >= 75) && ( )} diff --git a/src/Header.js b/src/Header.js index 9278b84..0cdfffa 100644 --- a/src/Header.js +++ b/src/Header.js @@ -182,10 +182,7 @@ function AboutModal(props) { - Release:{' '} - - v{Version.UI} - + Release: {Version.UI} Repo:{' '} diff --git a/src/I18n.js b/src/I18n.js index 22f8f3e..958e1c9 100644 --- a/src/I18n.js +++ b/src/I18n.js @@ -10,6 +10,7 @@ import { messages as FR } from './locales/fr/messages.js'; import { messages as IT } from './locales/it/messages.js'; import { messages as PT } from './locales/pt/messages.js'; import { messages as ES } from './locales/es/messages.js'; +import { messages as RU } from './locales/ru/messages.js'; import * as Storage from './utils/storage'; i18n.loadLocaleData('en', { plurals: plurals.en }); @@ -18,6 +19,7 @@ i18n.loadLocaleData('fr', { plurals: plurals.fr }); i18n.loadLocaleData('it', { plurals: plurals.it }); i18n.loadLocaleData('pt', { plurals: plurals.pt }); i18n.loadLocaleData('es', { plurals: plurals.es }); +i18n.loadLocaleData('ru', { plurals: plurals.ru }); i18n.load({ en: EN, de: DE, @@ -25,6 +27,7 @@ i18n.load({ it: IT, pt: PT, es: ES, + ru: RU, }); const getLanguage = (defaultLanguage, supportedLanguages) => { @@ -53,7 +56,7 @@ const getBrowserLanguage = (defaultLanguage) => { return match[0].toLowerCase(); }; -i18n.activate(getLanguage('en', ['en', 'de', 'fr', 'it', 'pt', 'es'])); +i18n.activate(getLanguage('en', ['en', 'de', 'fr', 'it', 'pt', 'es', 'ru'])); export default function Provider(props) { return {props.children}; diff --git a/src/locales/de/messages.js b/src/locales/de/messages.js index b20ff10..327e87f 100644 --- a/src/locales/de/messages.js +++ b/src/locales/de/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{"<0>Show probe details":"<0>Details der Überprüfung anzeigen","ALSA":"ALSA","API endpoint not found. Settings not saved.":"API-Endpunkt nicht gefunden. Einstellungen nicht gespeichert.","AVFoundation":"AVFoundation","Abort":"Abbrechen","About":"Über","Add":"Hinzufügen","Add Publication":"Publikation hinzufügen","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Fügen Sie externe Widgets und Stile zur Publikationsseite hinzu. Einige Beispiele finden Sie auf der Hilfeseite.","Add new channel":"Neuen Kanal hinzufügen","Add: {0}":["Hinzufügen: ",["0"]],"Address":"Adresse","Address for the background image.":"Adresse des Hintergrundbildes.","Address to listen on for HTTP requests.":"Die Adresse für das Abhören von HTTP-Anfragen.","Address to listen on for HTTPS requests.":"Die Adresse für das Abhören von HTTPS-Anfragen.","Adjust publication site colors and background as you like.":"Farben und den Hintergrund der Publikationsseite nach Belieben anpassen.","Advanced monitoring":"Erweiterte Systemüberwachung","Advanced settings":"Erweiterte Einstellungen","Advanced setup":"Erweiterte Einrichtung","Alerting by email":"Benachrichtigung per E-Mail","All":"Alle","All important system settings.":"Alle wichtigen Systemeinstellungen.","Allow all referrer":"Erlaube alle Referrer","Allow counting how many viewers the stream has.":"Erlaubt das Zählen der Anzahl des Publikums vom Stream.","Amplitude":"Amplitude","An environment variable sets this value.":"Eine Umgebungsvariable legt diesen Wert fest.","App":"App","Application":"Anwendung","Are you sure you want to abort the wizard?":"Sind Sie sicher, dass Sie den Assistenten abbrechen wollen?","Audio":"Audio","Audio Device":"Audiogerät","Audio device":"Audiogerät","Audio from device":"Audio von Gerät","Audio settings":"Audio-Einstellungen","Audio setup":"Audio-Einrichtung","Auth0":"Auth0","Auth0 Tenant":"Auth0 Tenant","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 ist derzeit nicht verfügbar, da diese Schnittstelle von einer unsicheren Quelle geladen wurde.","Author":"Autor","Authorization":"Autorisierung","Autoplay":"Autoplay","Available":"Verfügbar","Back":"Zurück","Background colors":"Hintergrundfarben","Background image":"Hintergrundbild","Backup URL":"Backup-URL","Backup server":"Backup-Server","Backup stream":"Backupstream","Backup stream key":"Backup stream key","Bandwidth":"Bandbreite","Bandwidth control":"Bandbreitensteuerung","Banner":"Banner","Basic":"Basic","Beep factor":"Piep-Faktor","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Beschreiben Sie kurz, was die Zuschauenden während des Live-Streams sehen werden.","Button color":"Farbe des Knopfes","Cache for files on /data.":"Cache für Dateien auf /data.","Cache time (Seconds)":"Cache-Zeit (Sek)","Cache types":"Cache-Typen","Capture clicks":"Klicks erfassen","Capture cursor":"Mauszeiger erfassen","Channel \"{0}\" saved":["Kanal \"",["0"],"\" gespeichert"],"Channels":"Kanäle","Check for updates":"Nach Updates suchen","Check the requirements":"Anforderungen prüfen","Choose a video stream":"Videostream wählen","Choose an audio stream":"Audiostream wählen","Choose an input device ...":"Eingabegerät wählen …","Choose codec ...":"Codec wählen …","Choose tenant ...":"Wähle einen Tenant","Chunk":"Segment","Close":"Schliessen","Code injection":"Code Injection","Codec":"Codec","Color":"Farbe","Config":"Konfiguration","Confirm password":"Bestätigen Sie das Passwort","Connect":"Verbinden","Connected device":"Verbundenes Gerät","Connected since <0/>":"Verbunden für <0/>","Connecting ...":"Verbinde ...","Connecting to Restreamer Core ...":"Mit Restreamer Core verbinden …","Connecting to Restreamer Core failed probably because of mixed content.":"Die Verbindung zu Restreamer Core ist wahrscheinlich wegen gemischter Inhalte fehlgeschlagen.","Content":"Inhalt","Cores":"Cores","Create user":"Benutzer anlegen","Creative Commons":"Creative Commons","Custom ...":"Individuell …","Custom JSON config for datarhei Core.":"Individuelle JSON Konfiguration für den datarhei Core.","Custom audio device":"Individuelles Audiogerät","Custom audio index":"Individueller Audio-Index","Custom bitrate (kbit/s)":"Individuelle Bitrate (kbit/s)","Custom code injection":"Injektion von Individuellem Code","Custom delay":"Individuelle Verzögerung","Custom device":"Individuelles Gerät","Custom format":"Individuelles Format","Custom framerate":"Individuelle Bildfrequenz","Custom keyframe interval":"Individuelles Keyframe-Intervall","Custom layout":"Individuelles Aussehen","Custom sampling (Hz)":"Individuelle Abtastung (Hz)","Custom scale":"Individuelle Skalierung","Custom size":"Individuelle Größe","Custom video device":"Individuelles Videogerät","Custom video index":"Individueller Video-Index","Data copied to clipboard":"Daten wurden in die Zwischenablage kopiert","Death color":"Death color","Decoder":"Decoder","Default":"Standard","Delay":"Verzögerung","Delay (ms)":"Verzögerung (ms)","Delete":"Löschen","Deleting a publication service cannot be reversed. The publication stops immediately.":"Die Löschung eines Publikationsdienstes kann nicht rückgängig gemacht werden. Die Veröffentlichung wird sofort gestoppt.","Delivering mode":"Zustellmodus","Description":"Beschreibung","Design":"Design","Device":"Gerät","Disconnect":"Trennen","Disconnect & Continue":"Trennen und fortfahren","Disconnecting ...":"Trennen ...","Disk":"Festplatte","Disk cache":"Festplatten Zwischenspeicher","Disk storage":"Festplattenspeicher","Do you really want to restart the application now?":"Möchten Sie die Anwendung wirklich neu starten?","Do you want to delete \"{0}\"?":["Soll \"",["0"],"\" gelöscht werden?"],"Do you want to delete {title}?":["Möchten Sie ",["title"]," löschen?"],"Do you want to disconnect \"{0}\"?":["Möchten Sie die Verbindung zu „",["0"],"“ unterbrechen?"],"Docs":"Dokumente","Documentation":"Dokumentation","Dup. frames":"Duplizierte Frames","EDIT: Player":"EDIT: Player","EDIT: Publication Website":"BEARBEITEN: Publikation Website","Edit":"Bearbeiten","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Bearbeiten Sie die Audio- und Videoquellen für den Live-Stream. Fügen Sie eine Beschreibung hinzu, und legen Sie die gewünschte Inhaltslizenz fest.","Edit: {title}":["Bearbeiten: ",["title"]],"Embed":"Einbetten","Enable RTMP server ...":"RTMP-Server aktivieren …","Enable a periodic beep every second with this value times the carrier frequency":"Periodischen Piepton jede Sekunde mit diesem Wert mal der Trägerfrequenz aktivieren","Enable backup stream":"Backupstream aktivieren","Enable nerd statistics":"Nerd-Statistiken einschalten","Enable primary stream":"Primären Stream aktivieren","Enable snapshots":"Momentaufnahme aktivieren","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Es wird dringend empfohlen, die Autorisierung zu aktivieren. Andernfalls kann jeder auf diese Instanz zugreifen.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Es wird dringend empfohlen, die Basisauthentifizierung zu aktivieren. Andernfalls könnte jeder Daten in /memfs schreiben.","Encoder":"Encoder","Encoding":"Kodierung","Encryption":"Verschlüsselung","Enter a name for the new channel.":"Einen Namen für den neuen Kanal eingeben.","Enter password":"Passwort eingeben","Enter the address of your network source:":"Adresse des Netzwerkquelle eintragen:","Enter username":"Anmeldename eingeben","Entropy coder":"Entropy coder","Error":"Fehler","Error while copying data to clipboard":"Fehler beim Kopieren von Daten in die Zwischenablage","Error: {0}":["Fehler: ",["0"]],"Expands the area above the channel list (live chat).":"Erweitert den Bereich oberhalb der Kanalliste (Live-Chat).","Expands the area under the channel description (comment boxes).":"Erweitert den Bereich unter der Kanalbeschreibung (Kommentarfelder).","Expert mode":"Expertenmodus","Extend channel list":"Kanalliste erweitern","Extend content":"Inhalt erweitern","Extend footer":"Fußzeile erweitern","Extend header":"Header erweitern","FFmpeg":"FFmpeg","FPS":"FPS","Failed to correctly cleanup previous process data":"Frühere Prozessdaten konnten nicht korrekt bereinigt werden","Failed to create publication service ({0})":["Publikationsdienst konnte nicht erstellt werden (",["0"],")"],"Failed to create publication website files.":"Die Dateien der Publikations-Website konnten nicht erstellt werden.","Failed to probe the source. Please check the <0>probe details.":"Prüfen der Quelle ist fehlgeschlagen. <0>Details der Überprüfung ansehen.","Failed to refresh token: {0}":["Token konnte nicht aktualisiert werden: ",["0"]],"Failed to save ingest metadata":"Speichern der Ingest-Metadaten fehlgeschlagen","Failed to stop process":"Prozess konnte nicht angehalten werden","Failed to store player size setting.":"Die Einstellung für die Playergröße konnte nicht gespeichert werden.","Failed to store publication service ({0})":["Publikationsdienst konnte nicht gespeichert werden (",["0"],")"],"Failed to update ingest process ({0})":["Aktualisierung des Ingest-Prozesses fehlgeschlagen (",["0"],")"],"Failed to update the player":"Aktualisierung des Players fehlgeschlagen","Failed to verify the source. Please check the address.":"Die Quelle konnte nicht verifiziert werden. Bitte Adresse prüfen.","Finish":"Speichern","Flags":"Flaggen","For Javascripts.":"Für Javascripte.","For Stylesheets.":"Für Stylesheets.","Force input framerate":"Bildfrequenz für die Eingabe erzwingen","Format":"Format","Frame drops":"Verlorene Frames","Framebuffer":"Bildspeicher","Framerate":"Bildfrequenz","Frequency (Hz)":"Frequenz (Hz)","GET":"GET","General":"Allgemein","Google Analytics ID":"Google Analytics ID","Google Analytics Tracker Name":"Name Google Analytics Tracker","HLS":"HLS","HLS URL":"HLS URL","HLS statistic for the In-memory storage":"HLS-Statistik für den In-Memory-Speicher","HTTP and HTTPS":"HTTP und HTTPS","HTTP port":"HTTP Port","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"HTTPS Port","Hardware device":"Hardwaregerät","Header":"Kopfzeile","Headline":"Überschrift","Hosted Restreamer interface":"Gehostete Restreamer-Oberfläche","Human readable name on the service.":"Von Menschen lesbarer Name des Dienstes.","IP address":"IP-Adresse","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Wenn Sie die Ports geändert haben, kann es sein, dass Restreamer Core bereits neu gestartet wurde, aber jetzt auf einem anderen Port verfügbar ist.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Wenn Sie Let’s Encrypt TLS aktiviert haben, kann es einige Zeit dauern, die Zertifikate zu erwerben. Stellen Sie sicher, dass Restreamer Core über Port 80 aus dem Internet erreichbar ist. Bitte überprüfen Sie das Protokoll in der Konsole von Restreamer Core.","Ignore IP ranges":"IP-Bereiche ignorieren","Image URL":"Bild-URL","Imprint":"Impressum","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"Neben dem Player bietet der Restreamer eine komplette Landingpage, mit der Sie Ihren Live-Stream einfach und schnell präsentieren können.","In-memory":"In-memory","In-memory storage":"In-Memory-Speicher","Incompatible":"Inkompatibel","Inherit":"Übernehmen","Inject 1":"Inject 1","Inject 2":"Inject 2","Inject 3":"Inject 3","Inject 4":"Inject 4","Internal HLS server":"Interner HLS-Server","Internal RTMP server":"Interner RTMP-Server","Interval (seconds)":"Intervall (Sekunden)","Issue alert":"Fehler melden","Keyframe interval (seconds)":"Keyframe-Intervall (Sekunden)","Layout":"Layout","Let's Encrypt certification":"Zertifizierung mit Let’s Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let’s Encrypt erfordert einen oder mehrere öffentliche Domainnamen und einen zugänglichen Port 80/TCP.","Level":"Level","Level of system protocol.":"Ebene des Systemprotokolls.","License":"Lizenz","Life color":"Life color","Linecolor":"Linienfarbe","Link":"Link","Link, mouseover":"Link, Mouseover","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Liste der IP-Bereiche in CIDR-Notation, z. B. 127.0.0.1/32, die von der Statistik nicht erfasst werden sollen - ein IP-Bereich pro Zeile. Leer lassen, um alle Sitzungen aufzuzeichnen.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Liste der zu cachenden Dateierweiterungen (z. B. \".html\"), eine pro Zeile. Leer lassen, um alle Dateitypen zu cachen.","List size (segments)":"Listengröße (Segmente)","Live-Streaming to Facebook Live RTMP service":"Live-Streaming zum Facebook Live RTMP-Dienst","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Live-Streaming zum Instagram. Für den Stream-Schlüssel wird ein Dienst wie <0>Yellow Duck benötigt.","Live-Streaming to Twitch Live RTMP Service.":"Live-Streaming zu Twitch.","Live-Streaming to Vimeos Live RTMP Service":"Live-Streaming zu Vimeo","Livesource ID":"Livesource-ID","Log level":"Protokollierungsebene","Logging":"Protokollieren","Login":"Anmelden","Login failed: Couldn't load API details":"Login fehlgeschlagen: Konnte die API-Details nicht laden","Login failed: {0}":["Login fehlgeschlagen: ",["0"]],"Login/JWT authorization":"Anmeldung/JWT-Autorisierung","Logo":"Logo","Logout":"Abmelden","MB":"MB","Main Source":"Hauptquelle","Main channel":"Hauptkanal","Main channel not found":"Hauptkanal nicht gefunden","Main channel saved":"Hauptkanal gespeichert","Main page channel (index.html).":"Kanal auf der Startseite (index.html)","Maintainer:":"Gepflegt von:","Maximum allowed cache size, 0 for unlimited.":"Maximal zulässige Cache-Größe, 0 für unbegrenzt.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Maximal erlaubte MB RAM für /memfs, 0 für unbegrenzt.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Maximal erlaubte MB, die von der Festplatte verbraucht werden dürfen. 0 für unbegrenzt.","Maximum bandwidth Mbit/s":"Maximale Bandbreite Mbit/s","Maximum delay in milliseconds.":"Maximale Latenz (Ms).","Maximum file size (Megabytes)":"Maximale Dateigröße (MB)","Maximum file size to put in cache.":"Maximale Dateigröße, die in den Cache gestellt wird.","Maximum log histroy":"Maximale Protokollhistorie","Maximum log lines":"Maximale Protokollzeilen","Maximum size (Megabytes)":"Maximale Größe (Megabytes)","Maximum viewer idle time (Seconds)":"Maximale Zuschauer Leerzeit (Sekunden)","Maximum viewers":"Maximale Anzahl von Zuschauenden","Memory":"Arbeitsspeicher","Meta information":"Meta-Informationen","Metadata":"Metadaten","Mold":"Mold","More about Twitter's copyright <0>here.":"Mehr über Twitter’s Urheberrecht <0>hier.","More about YouTube's copyright <0>here.":"Mehr über das Urheberrecht von YouTube <0>hier.","More about licenses here":"Mehr über die Lizenzen hier","More about the service":"Mehr über den Service","Mute":"Stumm","Name":"Name","Name for the template. If the name already exists, it will be overwritten.":"Templatename. Wenn der Name existiert, wird er überschrieben.","Network":"Netzwerk","Network source":"Netzwerk-Quelle","Next":"Weiter","Next: Audio":"Weiter: Audio","Next: Video setup":"Weiter: Video-Einrichtung","No":"Nein","No audio":"Kein Audio","No audio stream available":"Kein Audiostream verfügbar","No live stream was detected. Please check the software that sends the stream.":"Es wurde kein Livestream erkannt. Bitte die Software überprüfen, die den Stream sendet.","No source selected":"Keine Quelle ausgewählt","No suitable encoder found.":"Keine passender Encoder gefunden.","No video":"Kein Video","No video stream available":"Kein Videostream verfügbar","Node ID":"Knoten-ID","Noise":"Rauschen","None":"Keine","Notes":"Hinweise","Number of log lines to keep.":"Anzahl der Protokollzeilen, die aufbewahrt werden sollen.","Number of logs to keep for each process.":"Anzahl der Protokolle, die je Prozess aufbewahrt werden sollen.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Ein Referrer pro Zeile, wie http://www.beispiel.com","Open":"Öffnen","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Passthrough (Kopieren) sollte nur bei Bedarf deaktiviert werden. Jede Kodierung erfordert zusätzliche CPU/GPU-Ressourcen.","Password":"Passwort","Password for authorization.":"Passwort für die Autorisierung.","Password for the device.":"Passwort von dem Gerät.","Persist viewer statistics":"Betrachterstatistiken beibehalten","Pixel format":"Pixelformat","Plan: <0>Starter":"Plan: <0>Starter","Platforms":"Plattformen","Playback":"Wiedergabe","Player":"Player","Player URL":"Player-URL","Player settings saved":"Playereinstellungen gespeichert","Playersite":"Playerseite","Playlist":"Wiedergabeliste","Please check the <0>process log":"Bitte <0>Prozessprotokoll prüfen","Please contact the operator of the service and check what happens.":"An den Betreiber des Dienstes wenden und prüfen, was passiert ist.","Please select a file to upload.":"Datei zum Hochladen auswählen.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"„Passthrough (Kopieren)“ sollte nur deaktiviert werden, wenn es erforderlich ist. Jedes weitere Encoding benötigt zusätzliche CPU/GPU Ressourcen.","Please wait. Probe stream data ...":"Bitte warten — der Stream wird geprüft ...","Please wait. Setting up the stream ...":"Bitte warten — einrichten des Streams ...","Port":"Port","Position":"Position","Preset":"Voreinstellung","Primary stream":"Primärer Stream","Primary stream key":"Primärer Stream-Schlüssel","Probe":"Prüfen","Process":"Prozess","Process control":"Prozesskontrolle","Process debug":"Prozess-Fehlerbehebung","Process debug report":"Prozess-Fehlerbehebungsbericht","Process details":"Prozess-Details","Process report":"Prozess-Bericht","Processing & Control":"Verarbeitung & Steuerung","Profile":"Profil","Protocol":"Protokoll","Protocols":"Protokolle","Public domain/s":"Öffentliceh Domain/s","Publication service not found":"Publikationsdienst nicht gefunden","Publication website settings saved":"Einstellungen der Publication Webseite gespeichert","Publications":"Publikationen","Pull Mode":"Abholmodus","Pull or recieve the data:":"Daten abholen oder empfangen:","Quality":"Qualität","RGB test pattern":"RGB-Testbild","RTMP app for publishing.":"RTMP-App für die Veröffentlichung.","RTMP server":"RTMP-Server","RTMP server is not enabled":"RTMP-Server ist nicht aktiviert","RTMP server listen address.":"RTMP-Server Lauschadresse.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"RTMP-Token für die Veröffentlichung und Wiedergabe. Das Token ist der Wert des URL-Abfrageparameters „token“.","RTMP/S":"RTMP/S","RTMPS server":"RTMPS-Server","RTSP":"RTSP","Raspberry Pi camera":"Raspberry Pi Kamera","Rate control":"Ratenkontrolle","Ratio":"Verhältnis","Read input at native speed":"Eingabe mit nativer Geschwindigkeit lesen","Receive Mode":"Empfangsmodus","Reconnect":"Wiederverbinden","Reconnect delay (seconds)":"Verzögerung beim Wiederherstellen der Verbindung (Sekunden)","Reconnecting in {0}s":["Wiederverbinden in ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["Die Wiederherstellung der Verbindung zum Restreamer Core ist in den letzten ",["RETRIES"]," Sekunden fehlgeschlagen."],"Reconnecting to Restreamer Core failed.":"Die Wiederherstellung der Verbindung zu Restreamer Core ist fehlgeschlagen.","Region":"Region","Reload":"Erneut laden","Remove the oldest entries if the /memfs is full":"Älteste Einträge entfernen, wenn das /memfs voll ist","Requires activation":"Aktivierung erforderlich","Restart":"Neustart","Restart required":"Neustart erforderlich","Restarting":"Neustart","Restarting Restreamer Core ...":"Neustart von Restreamer Core …","Restarting the application failed.":"Neustart der Anwendung ist fehlgeschlagen.","Restreamer Service":"Restreamer Service","Retrieving stream data ...":"Abrufen von Streamdaten ...","Retry":"Wiederholen","Rule":"Regel","Sampling":"Sampling","Save":"Speichern","Scale":"Skalierung","Seconds to keep files in cache.":"Sekunden, um Dateien im Cache zu halten.","Seconds until a process is restarted.":"Sekunden, bis ein Prozess neu gestartet wird.","Seconds until a staled process is terminated.":"Sekunden, bis ein hängender Prozess beendet wird.","Seconds until the snapshot/thumbnail of the video source is updated.":"Sekunden, bis ein Vorschaubild (JPEG) der Videoquelle aktualisiert wird.","Security":"Sicherheit","Security token":"Sicherheit Token","Seekbar color":"Seekbar Farbe","Segment length (seconds)":"Segmentlänge (Sek)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Das Segment wird nach Ablauf dieser Zeit auf dem folgenden Keyframe geschnitten. 2 wird empfohlen.","Segmentation":"Segmentierung","Select a device:":"Auswahl Gerät:","Select audio Source:":"Audioquelle auswählen:","Select source ...":"Auswahl Quelle ...","Select video source:":"Videoquelle auswählen:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Wählen Sie aus, ob Sie den Stream von einer <0>Netzwerkquelle (z. B. einer Netzwerkkamera) oder dem <1>internen RTMP-Server (z. B. OBS-Streams an den Restreamer) beziehen.","Select your encoding setting:":"Einstellungen für die Encodierung:","Selected":"Ausgewählt","Selected channel":"Auswahl","Selection":"Auswahl","Send anonymous metrics (helps us for future development)":"Sende anonyme Anwendungsdaten (Hilft den Restreamer kontinuierlich zu verbessern)","Send stream to this address:":"Sende den Stream an diese Adresse:","Send video to Framebuffer":"Sendet das Video zum Bildspeicher","Server":"Server","Service":"Service","Service name":"Name des Dienstes","Service token for monitoring.":"Servicetoken für die Überwachung.","Sessions":"Zuschauer","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Legt eine Begrenzung der Bandbreite in Mbit/s für die ausgehende HLS-Datenübertragung fest. Alle Dienste, wie RTMP und ausgehende Prozesse, werden in die Berechnung einbezogen. Wenn die Bandbreite überschritten wird, erhalten HLS-Zuschauende den HTTP-Statuscode 509 (Bandwidth Limit Exceeded). 0 ist unbegrenzt.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Legt ein Limit für die Zuschauenden in der HLS-Sitzungen fest. Wenn das Limit überschritten wird, erhalten HLS-Zuschauende den HTTP-Statuscode 509 (Bandbreitenlimit überschritten). 0 ist unbegrenzt.","Setting for connection to the service.":"Einstellung für die Anbindung an den Service.","Settings":"Einstellungen","Settings (expert mode)":"Einstellungen (Experten-Modus)","Settings for /data path. The access is protected by":"Eintellungen für den /data Pfad. Der Zugriff wird geschützt durch","Settings for /memfs path.":"Einstellung für den /memfs Pfad.","Settings saved. All changes will be applied after restarting the application.":"Einstellungen gespeichert. Die Änderungen werden nach einem Neustart der Anwendungen übernommen.","Shows a reference to the project.":"Zeigt einen Hinweis auf das Projekt.","Sign up (free)":"Anmelden (Kostenlos)","Silence":"Stille","Silence Audio":"Stilles Audio","Sine":"Sinus","Sitename":"Seitenname","Size":"Grösse","Snapshot":"Vorschaubild","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Socket-Zeitüberschreitung (Mikrosekunden)","Software":"Software","Source":"Quelle","Speed":"Geschwindigkeit","Stale timeout (seconds)":"Zeitüberschreitung (Sekunden)","Statistics":"Statistiken","Storage":"Speicherplatz","Stores the viewer statistics to the disk.":"Speichert die Zuschauerstatistik auf der Festplatte.","Stream":"Stream","Stream URL":"Stream-URL","Stream key":"Stream-Schlüssel","Stream name":"Streamname","Stream names":"Streamnamen","Support datarhei Restreamer":"Unterstütze datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Unterstützt HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT und mehr.","System":"System","Template":"Vorlage","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Vorlage, die für die Erstellung der Publikations-Website verwendet werden soll. Mit der Schaltfläche „Löschen“ wird die Auswahl aus dem System entfernt.","Terms":"Bedingungen","Test pattern":"Testbild","Test pattern (extended)":"Testbild (erweitert)","Text colors":"Textfarben","The amplitude (0.0 - 1.0) of the generated audio stream":"Die Amplitude (0,0 - 1,0) des erzeugten Audiostreams","The application is using an older version of the settings.":"Die Applikation verwendet eine ältere Version der Einstellungen.","The bitrate of the audio stream.":"Die Bitrate des Audiostreams.","The carrier frequency":"Trägerfrequenz","The channel \"{0}\" could not be deleted":["Der Kanal \"",["0"],"\\“ konnte nicht gelöscht werden"],"The channel \"{0}\" has been deleted":["Der Kanal \"",["0"],"\\“ wurde gelöscht"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"Die Löschung dieses Kanals kann nicht rückgängig gemacht werden. Alle Veröffentlichungen dieses Kanals werden entfernt.","The input profile is not complete. Please define a video and audio source.":"Unvollständiges Eingangsprofil. Video- und Audioquelle definieren.","The layout of the audio stream.":"Anordnung des Audiostreams.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"Die maximale Anzahl von Wiedergabelistensegmenten. 0 enthält alle Segmente. 6 wird empfohlen.","The noise color":"Audio-Rauschfarbe","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"Die Person, die ein Werk mit dieser Urkunde verbunden hat, hat das Werk der Allgemeinheit gewidmet, indem sie auf alle ihre Rechte an dem Werk weltweit nach dem Urheberrecht, einschließlich aller verwandten und benachbarten Rechte, verzichtet, soweit dies gesetzlich zulässig ist. Sie können das Werk vervielfältigen, verändern, verbreiten und aufführen, auch für kommerzielle Zwecke, alles ohne um Erlaubnis zu fragen.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"Der öffentlich erreichbare Domänenname des Hosts, auf dem der Restreamer läuft. Trennen Sie mehrere Domänennamen durch ein Komma.","The publication service \"{0}\" could not be deleted":["Der Publikationsdienst \"",["0"],"\" konnte nicht gelöscht werden"],"The publication service \"{0}\" has been created":["Der Publikationsdienst \"",["0"],"\" wurde erstellt"],"The publication service \"{0}\" has been deleted":["Der Publikationsdienst wurde \"",["0"],"\" gelöscht"],"The publication service has been created":"Der Publikationsdienst wurde erstellt","The sample rate of the audio stream.":"Abtastrate des Audiostreams.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["Die ausgewählte Datei ist zu groß (",["0"]," Bytes). Es sind nur ",["1"]," Bytes erlaubt."],"The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}":["Der ausgewählte Dateityp (",["0"],") ist nun erlaubt. Erlaubte Dateitypen sind ",["imageAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}":["Der ausgewählte Dateityp (",["0"],") ist nun erlaubt. Erlaubte Dateitypen sind ",["logoAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}":["Der ausgewählte Dateityp (",["0"],") ist nicht erlaubt. Die erlaubten Dateitypen sind ",["templateAcceptString"]],"The settings for \"{0}\" have been saved":["Die Einstellungen für \"",["0"],"\" wurden gespeichert"],"The source doesn't provide any audio streams.":"Die Quelle stellt keine Audiostreams zur Verfügung.","The source doesn't provide any audio streams. Please check the <0>probe details.":"Die Quelle stellt keine Audiostreams zur Verfügung. Bitte die <0>Details der Überprüfung ansehen.","The source doesn't provide any compatible audio streams.":"Die Quelle stellt keine kompatiblen Audiostreams zur Verfügung.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"Die Quelle stellt keine kompatiblen Videostreams zur Verfügung. Bitte die <0>Anforderungen prüfen.","The source doesn't provide any video streams. Please check the <0>probe details.":"Die Quelle stellt keine Videostreams zur Verfügung. Bitte die <0>Details der Überprüfung ansehen.","The source doesn't provide any video streams. Please check the device.":"Die Quelle stellt keine Videostreams zur Verfügung. Bitte die Quelle prüfen.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"Die Videoquelle stellt keinen kompatiblen Audiokanal zur Verfügung. <0>Silence Audio wird empfohlen. Dienste wie z.B. YouTube, Facebook & Co. benötigen einen Audiokanal.","The video source is compatible. Select the desired resolution:":"Die Videoquelle ist kompatibel. Gewünschte Auflösung auswählen:","There are updates available. Here you get more information.":"Es sind Updates verfügbar. Hier erhalten Sie weitere Informationen.","There war an error during upload: {0}":["Beim Hochladen ist ein Fehler aufgetreten: ",["0"]],"There was a problem storing the settings. Settings not saved.":"Es gab ein Problem beim Speichern der Einstellungen. Einstellungen nicht gespeichert.","There was an error connecting to Restreamer Core at {0}.":["Es ist ein Fehler beim Verbinden mit Restreamer Core bei ",["0"]," aufgetreten."],"There was an error during upload: {0}":["Beim Hochladen ist ein Fehler aufgetreten: ",["0"]],"There was an error setting up the stream.":"Es ist ein Fehler beim Einrichten des Streams aufgetreten.","There were some errors in the settings. Settings not saved.":"Es gab einige Fehler in den Einstellungen. Einstellungen nicht gespeichert.","There's no login method available.":"Es ist keine Methode für die Anmeldung verfügbar.","This is a dummy service that explains to you the concepts of service.":"Dies ist ein Dummy-Dienst, der Ihnen die Konzepte des Dienstes erklärt.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Bitte Geduld. Es kann einen Moment dauern, bis der Restreamer Core neu gestartet ist …","This is to mention the copyright regulations for the target of this service.":"Dies ist ein Hinweis auf die urheberrechtlichen Bestimmungen für das Ziel dieses Dienstes.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Diese Lizenz erlaubt Wiederverwendern das Kopieren und Verteilen des Materials in jedem Medium oder Format nur in unangepasster Form und nur so lange, wie die Nennung des Urhebers erfolgt. Die Lizenz erlaubt die kommerzielle Nutzung.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Diese Lizenz erlaubt es Wiederverwendern, das Material in jedem Medium oder Format in unangepasster Form zu kopieren und zu verbreiten, und zwar nur für nicht-kommerzielle Zwecke und nur so lange, wie der Urheber genannt wird.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Diese Lizenz erlaubt es Wiederverwendern, das Material zu verbreiten, zu remixen, zu adaptieren und darauf aufzubauen, und zwar in jedem Medium oder Format und nur für nicht-kommerzielle Zwecke und nur so lange, wie die Nennung des Urhebers erfolgt.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Diese Lizenz erlaubt es Wiederverwendern, das Material zu verbreiten, zu remixen, zu adaptieren und darauf aufzubauen, und zwar in jedem Medium oder Format und nur für nicht-kommerzielle Zwecke, und nur solange der Urheber genannt wird. Wenn Sie das Material umarbeiten, anpassen oder darauf aufbauen, müssen Sie das geänderte Material unter identischen Bedingungen lizenzieren.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Diese Lizenz erlaubt es Wiederverwendern, das Material in jedem Medium oder Format zu verbreiten, zu remixen, anzupassen und darauf aufzubauen, solange der Urheber genannt wird. Die Lizenz erlaubt die kommerzielle Nutzung.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Diese Lizenz erlaubt es Wiederverwendern, das Material in jedem Medium oder Format zu verbreiten, zu remixen, anzupassen und darauf aufzubauen, solange der Urheber genannt wird. Die Lizenz erlaubt die kommerzielle Nutzung. Wenn Sie das Material umarbeiten, anpassen oder darauf aufbauen, müssen Sie das geänderte Material unter identischen Bedingungen lizenzieren.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Diese Quelle kann nicht bearbeitet werden, während sie in Gebrauch ist. Um fortzufahren, müssen Sie die Verbindung zur Quelle unterbrechen.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Diese Version der Benutzeroberfläche unterstützt nicht das verfügbare FFmpeg-Binary (",["0"],"). Die Benutzeroberfläche erfordert ",["1"],". Bitte verwenden Sie eine unterstützte FFmpeg-Binärdatei."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Diese Version der Benutzeroberfläche unterstützt nicht den angeschlossenen Kern (",["0"],"). Die Benutzeroberfläche erfordert ",["1"],". Bitte verwenden Sie eine kompatible Version der UI."],"This version of the UI is compatible.":"Die verwendete Version der Benutzeroberfläche ist kompatibel.","Time until an inactive viewer connection is treated as closed.":"Zeit bis eine inaktive Zuschauerverbindung als geschlossen behandelt wird.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Überträgt Schnappschüsse der Hauptquelle an einen HTTP/S Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Überträgt den Audiokanal der Hauptquelle an einen Icecast Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle als HTTP-Live-Streaming (HLS) an einen HTTP/S-Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle als MPEG-DASH an einen HTTP/S Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen Brightcove Live-Service. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Übertragen Sie die Hauptquelle an einen CDN77 RTMP Service. Mehr über die Einrichtung <0>hier.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Übertragen Sie die Hauptquelle an einen DaCast RTMP Service. Mehr über die Einrichtung <0>hier.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Übertragen Sie die Hauptquelle an einen MPEG-TS-Dienst. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen MPEG-TS-Dienst. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen RTSP-Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen Red5/Pro Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen SRT Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen UDP-Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen WOWZA Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Überträgt die Hauptquelle auf eine datarhei Core Ressource. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle auf eine livespotting.com Ressource. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Übertragen Sie die Hauptquelle an die Akamai (MSL) Media Services Live. Weitere Details zu den MSL-Encoder-Einstellungen finden Sie <0>hier.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Übertragen Sie die Hauptquelle an den Bitmovin-Cloud-Encoding-Service, ein leistungsstarkes Tool für Live-Streaming. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an den Restream RTMP Service. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Überträgt Ihr Video als RTMP-Stream mit dem erforderlichen, in YouTube Studio generierten Schlüssel. Weitere Informationen zum Einrichten eines Live-Streams finden Sie in der <0>Creator Academy von YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Überträgt Ihren Videostream mit dem erforderlichen Schlüssel, der in Twitter Producer generiert wurde. Weitere Informationen zum Einrichten eines Livestreams finden Sie unter <0>Producer von Twitter.","Tune":"Optimieren","UDP transport":"UDP-Transport","Unable to load the config.":"Die Konfiguration kann nicht geladen werden.","Unique ident on the service.":"Einzigartige Identität für den Service.","Unknown":"Unbekannt","Unselected":"Nicht gewählt","Upload":"Hochladen","Uploading the file failed":"Die Dateiübertragung ist fehlgeschlagen","Uploading the logo failed":"Hochladen des Logos fehlgeschlagen","Uptime":"Betriebszeit","Use Auth0 for your running Restreamer Core. More <0>details.":"Verwenden Sie Auth0 für Ihren laufenden Restreamer Core. Mehr <0>Details.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Verwenden Sie den Assistenten (<0/>) für eine schnelle und einfache Einrichtung, oder bearbeiten Sie (<1/>) die Quellen direkt im benutzerdefinierten Modus.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Copyright und die richtige Bildlizenz wählen. Ob frei für alle oder stark eingeschränkt. Überlege kurz, was andere mit dem Video machen dürfen.","User registration":"Benutzerregistrierung","Username":"Anmeldename","Username for authorization.":"Anmeldename für die Autorisierung.","Username for the device.":"Anmeldename von dem Gerät.","VPU ID":"VPU-ID","Video":"Video","Video device":"Videogerät","Video settings":"Videoeinstellungen","Video setup":"Video-Einrichtung","Video source":"Videoquelle","Viewer":"Zuschauende","Virtual source":"Virtuelle-Quelle","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Willkommen bei Restreamer v2, der Lösung für die schnelle und einfache Veröffentlichung von Videos. Kostenlos für private und kommerzielle Nutzung. Weitere Hilfe in der <0>Dokumentation.","Write protection":"Schreibschutz","YUV test pattern":"YUV-Testbild","Yes":"Ja","You can't abort the wizard because at least one input must be defined.":"Sie können den Assistenten nicht abbrechen, da mindestens ein Eingang definiert sein muss.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Konfiguration geändert. Damit die Änderungen wirksam werden muss die Anwendung neu starten. Jetzt neu starten?","You have to reconnect manually":"Verbindung manuell wiederherstellen","You have unsaved changes. Please save them before you can control the service again.":"Ungespeicherte Änderungen. Bitte speichern, bevor der Dienst wieder gesteuert werden kann.","Your stream needs to be encoded, but there's no suitable encoder available.":"Ihr Stream muss kodiert werden, aber es ist kein geeigneter Encoder verfügbar.","Your stream needs to be encoded. Choose the desired encoder:":"Stream muss kodiert werden. Gewünschten Encoder wählen:","blue":"blau","brown":"braun","iframe code":"iframe Code","kbit/s":"kbit/s","pink":"rosa","velvet":"velvet","violet":"violett","white":"weiß"}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{"<0>Compatibility list":"<0>Kompatibilitätsliste","<0>Show probe details":"<0>Details der Überprüfung anzeigen","ALSA":"ALSA","API endpoint not found. Settings not saved.":"API-Endpunkt nicht gefunden. Einstellungen nicht gespeichert.","AVFoundation":"AVFoundation","Abort":"Abbrechen","About":"Über","Add":"Hinzufügen","Add Publication":"Publikation hinzufügen","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Fügen Sie externe Widgets und Stile zur Publikationsseite hinzu. Einige Beispiele finden Sie auf der Hilfeseite.","Add new channel":"Neuen Kanal hinzufügen","Add: {0}":["Hinzufügen: ",["0"]],"Address":"Adresse","Address for the background image.":"Adresse des Hintergrundbildes.","Address to listen on for HTTP requests.":"Die Adresse für das Abhören von HTTP-Anfragen.","Address to listen on for HTTPS requests.":"Die Adresse für das Abhören von HTTPS-Anfragen.","Adjust publication site colors and background as you like.":"Farben und den Hintergrund der Publikationsseite nach Belieben anpassen.","Advanced monitoring":"Erweiterte Systemüberwachung","Advanced settings":"Erweiterte Einstellungen","Advanced setup":"Erweiterte Einrichtung","Alerting by email":"Benachrichtigung per E-Mail","All":"Alle","All important system settings.":"Alle wichtigen Systemeinstellungen.","Allow all referrer":"Erlaube alle Referrer","Allow counting how many viewers the stream has.":"Erlaubt das Zählen der Anzahl des Publikums vom Stream.","Amplitude":"Amplitude","An environment variable sets this value.":"Eine Umgebungsvariable legt diesen Wert fest.","App":"App","Application":"Anwendung","Are you sure you want to abort the wizard?":"Sind Sie sicher, dass Sie den Assistenten abbrechen wollen?","Audio":"Audio","Audio Device":"Audiogerät","Audio device":"Audiogerät","Audio from device":"Audio von Gerät","Audio settings":"Audio-Einstellungen","Audio setup":"Audio-Einrichtung","Auth0":"Auth0","Auth0 Tenant":"Auth0 Tenant","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 ist derzeit nicht verfügbar, da diese Schnittstelle von einer unsicheren Quelle geladen wurde.","Author":"Autor","Authorization":"Autorisierung","Automatic cleanup of all media data":"Automatische Bereinigung aller Mediadateien","Autoplay":"Autoplay","Available":"Verfügbar","Back":"Zurück","Background colors":"Hintergrundfarben","Background image":"Hintergrundbild","Backup URL":"Backup-URL","Backup server":"Backup-Server","Backup stream":"Backupstream","Backup stream key":"Backup stream key","Bandwidth":"Bandbreite","Bandwidth control":"Bandbreitensteuerung","Banner":"Banner","Basic":"Basic","Beep factor":"Piep-Faktor","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Beschreiben Sie kurz, was die Zuschauenden während des Live-Streams sehen werden.","Button color":"Farbe des Knopfes","Cache for files on /data.":"Cache für Dateien auf /data.","Cache time (Seconds)":"Cache-Zeit (Sek)","Cache types":"Cache-Typen","Capture clicks":"Klicks erfassen","Capture cursor":"Mauszeiger erfassen","Channel \"{0}\" saved":["Kanal \"",["0"],"\" gespeichert"],"Channels":"Kanäle","Check for updates":"Nach Updates suchen","Check the requirements":"Anforderungen prüfen","Choose a video stream":"Videostream wählen","Choose an audio stream":"Audiostream wählen","Choose an input device ...":"Eingabegerät wählen …","Choose codec ...":"Codec wählen …","Choose tenant ...":"Wähle einen Tenant","Chunk":"Segment","Close":"Schliessen","Code injection":"Code Injection","Codec":"Codec","Color":"Farbe","Config":"Konfiguration","Confirm password":"Bestätigen Sie das Passwort","Connect":"Verbinden","Connected device":"Verbundenes Gerät","Connected since <0/>":"Verbunden für <0/>","Connecting ...":"Verbinde ...","Connecting to Restreamer Core ...":"Mit Restreamer Core verbinden …","Connecting to Restreamer Core failed probably because of mixed content.":"Die Verbindung zu Restreamer Core ist wahrscheinlich wegen gemischter Inhalte fehlgeschlagen.","Content":"Inhalt","Content URL":"Content URL","Cores":"Cores","Create user":"Benutzer anlegen","Creative Commons":"Creative Commons","Custom ...":"Individuell …","Custom JSON config for datarhei Core.":"Individuelle JSON Konfiguration für den datarhei Core.","Custom audio device":"Individuelles Audiogerät","Custom audio index":"Individueller Audio-Index","Custom bitrate (kbit/s)":"Individuelle Bitrate (kbit/s)","Custom code injection":"Injektion von Individuellem Code","Custom delay":"Individuelle Verzögerung","Custom device":"Individuelles Gerät","Custom format":"Individuelles Format","Custom framerate":"Individuelle Bildfrequenz","Custom keyframe interval":"Individuelles Keyframe-Intervall","Custom layout":"Individuelles Aussehen","Custom sampling (Hz)":"Individuelle Abtastung (Hz)","Custom scale":"Individuelle Skalierung","Custom size":"Individuelle Größe","Custom video device":"Individuelles Videogerät","Custom video index":"Individueller Video-Index","Data copied to clipboard":"Daten wurden in die Zwischenablage kopiert","Death color":"Death color","Decoder":"Decoder","Default":"Standard","Delay":"Verzögerung","Delay (ms)":"Verzögerung (ms)","Delete":"Löschen","Deleting a publication service cannot be reversed. The publication stops immediately.":"Die Löschung eines Publikationsdienstes kann nicht rückgängig gemacht werden. Die Veröffentlichung wird sofort gestoppt.","Delivering mode":"Zustellmodus","Description":"Beschreibung","Design":"Design","Device":"Gerät","Disconnect":"Trennen","Disconnect & Continue":"Trennen und fortfahren","Disconnecting ...":"Trennen ...","Disk":"Festplatte","Disk cache":"Festplatten Zwischenspeicher","Disk storage":"Festplattenspeicher","Do you really want to restart the application now?":"Möchten Sie die Anwendung wirklich neu starten?","Do you want to delete \"{0}\"?":["Soll \"",["0"],"\" gelöscht werden?"],"Do you want to delete {title}?":["Möchten Sie ",["title"]," löschen?"],"Do you want to disconnect \"{0}\"?":["Möchten Sie die Verbindung zu „",["0"],"“ unterbrechen?"],"Docs":"Dokumente","Documentation":"Dokumentation","Dup. frames":"Duplizierte Frames","EDIT: Player":"EDIT: Player","EDIT: Publication Website":"BEARBEITEN: Publikation Website","Edit":"Bearbeiten","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Bearbeiten Sie die Audio- und Videoquellen für den Live-Stream. Fügen Sie eine Beschreibung hinzu, und legen Sie die gewünschte Inhaltslizenz fest.","Edit: {title}":["Bearbeiten: ",["title"]],"Embed":"Einbetten","Enable RTMP server ...":"RTMP-Server aktivieren …","Enable a periodic beep every second with this value times the carrier frequency":"Periodischen Piepton jede Sekunde mit diesem Wert mal der Trägerfrequenz aktivieren","Enable backup stream":"Backupstream aktivieren","Enable nerd statistics":"Nerd-Statistiken einschalten","Enable primary stream":"Primären Stream aktivieren","Enable snapshots":"Momentaufnahme aktivieren","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Es wird dringend empfohlen, die Autorisierung zu aktivieren. Andernfalls kann jeder auf diese Instanz zugreifen.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Es wird dringend empfohlen, die Basisauthentifizierung zu aktivieren. Andernfalls könnte jeder Daten in /memfs schreiben.","Encoder":"Encoder","Encoding":"Kodierung","Encryption":"Verschlüsselung","Enter a name for the new channel.":"Einen Namen für den neuen Kanal eingeben.","Enter password":"Passwort eingeben","Enter the address of your network source:":"Adresse des Netzwerkquelle eintragen:","Enter username":"Anmeldename eingeben","Entropy coder":"Entropy coder","Error":"Fehler","Error while copying data to clipboard":"Fehler beim Kopieren von Daten in die Zwischenablage","Error: {0}":["Fehler: ",["0"]],"Expands the area above the channel list (live chat).":"Erweitert den Bereich oberhalb der Kanalliste (Live-Chat).","Expands the area under the channel description (comment boxes).":"Erweitert den Bereich unter der Kanalbeschreibung (Kommentarfelder).","Expert mode":"Expertenmodus","Extend channel list":"Kanalliste erweitern","Extend content":"Inhalt erweitern","Extend footer":"Fußzeile erweitern","Extend header":"Header erweitern","FFmpeg":"FFmpeg","FPS":"FPS","Failed to create publication service ({0})":["Publikationsdienst konnte nicht erstellt werden (",["0"],")"],"Failed to create publication website files.":"Die Dateien der Publikations-Website konnten nicht erstellt werden.","Failed to probe the source. Please check the <0>probe details.":"Prüfen der Quelle ist fehlgeschlagen. <0>Details der Überprüfung ansehen.","Failed to refresh token: {0}":["Token konnte nicht aktualisiert werden: ",["0"]],"Failed to save ingest metadata":"Speichern der Ingest-Metadaten fehlgeschlagen","Failed to stop process":"Prozess konnte nicht angehalten werden","Failed to store player size setting.":"Die Einstellung für die Playergröße konnte nicht gespeichert werden.","Failed to store publication service ({0})":["Publikationsdienst konnte nicht gespeichert werden (",["0"],")"],"Failed to update ingest process ({0})":["Aktualisierung des Ingest-Prozesses fehlgeschlagen (",["0"],")"],"Failed to update the player":"Aktualisierung des Players fehlgeschlagen","Failed to verify the source. Please check the address.":"Die Quelle konnte nicht verifiziert werden. Bitte Adresse prüfen.","Finish":"Speichern","Flags":"Flaggen","For Javascripts.":"Für Javascripte.","For Stylesheets.":"Für Stylesheets.","Force input framerate":"Bildfrequenz für die Eingabe erzwingen","Format":"Format","Frame drops":"Verlorene Frames","Framebuffer":"Bildspeicher","Framerate":"Bildfrequenz","Frequency (Hz)":"Frequenz (Hz)","GET":"GET","General":"Allgemein","Google Analytics ID":"Google Analytics ID","Google Analytics Tracker Name":"Name Google Analytics Tracker","HLS":"HLS","HLS statistic for the In-memory storage":"HLS-Statistik für den In-Memory-Speicher","HTTP and HTTPS":"HTTP und HTTPS","HTTP port":"HTTP Port","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"HTTPS Port","Hardware device":"Hardwaregerät","Header":"Kopfzeile","Headline":"Überschrift","Hosted Restreamer interface":"Gehostete Restreamer-Oberfläche","Human readable name on the service.":"Von Menschen lesbarer Name des Dienstes.","IP address":"IP-Adresse","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Wenn Sie die Ports geändert haben, kann es sein, dass Restreamer Core bereits neu gestartet wurde, aber jetzt auf einem anderen Port verfügbar ist.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Wenn Sie Let’s Encrypt TLS aktiviert haben, kann es einige Zeit dauern, die Zertifikate zu erwerben. Stellen Sie sicher, dass Restreamer Core über Port 80 aus dem Internet erreichbar ist. Bitte überprüfen Sie das Protokoll in der Konsole von Restreamer Core.","Ignore IP ranges":"IP-Bereiche ignorieren","Image URL":"Bild-URL","Imprint":"Impressum","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"Neben dem Player bietet der Restreamer eine komplette Landingpage, mit der Sie Ihren Live-Stream einfach und schnell präsentieren können.","In-memory":"In-memory","In-memory storage":"In-Memory-Speicher","Incompatible":"Inkompatibel","Inherit":"Übernehmen","Inject 1":"Inject 1","Inject 2":"Inject 2","Inject 3":"Inject 3","Inject 4":"Inject 4","Internal HLS server":"Interner HLS-Server","Internal RTMP server":"Interner RTMP-Server","Interval (seconds)":"Intervall (Sekunden)","Issue alert":"Fehler melden","Keyframe interval (seconds)":"Keyframe-Intervall (Sekunden)","Layout":"Layout","Let's Encrypt certification":"Zertifizierung mit Let’s Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let’s Encrypt erfordert einen oder mehrere öffentliche Domainnamen und einen zugänglichen Port 80/TCP.","Level":"Level","Level of system protocol.":"Ebene des Systemprotokolls.","License":"Lizenz","Life color":"Life color","Linecolor":"Linienfarbe","Link":"Link","Link, mouseover":"Link, Mouseover","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Liste der IP-Bereiche in CIDR-Notation, z. B. 127.0.0.1/32, die von der Statistik nicht erfasst werden sollen - ein IP-Bereich pro Zeile. Leer lassen, um alle Sitzungen aufzuzeichnen.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Liste der zu cachenden Dateierweiterungen (z. B. \".html\"), eine pro Zeile. Leer lassen, um alle Dateitypen zu cachen.","List size (segments)":"Listengröße (Segmente)","Live-Streaming to Facebook Live RTMP service":"Live-Streaming zum Facebook Live RTMP-Dienst","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Live-Streaming zum Instagram. Für den Stream-Schlüssel wird ein Dienst wie <0>Yellow Duck benötigt.","Live-Streaming to Twitch Live RTMP Service.":"Live-Streaming zu Twitch.","Live-Streaming to Vimeo Live RTMP Service":"Live-Streaming zu Vimeo","Livesource ID":"Livesource-ID","Log level":"Protokollierungsebene","Logging":"Protokollieren","Login":"Anmelden","Login failed: Couldn't load API details":"Login fehlgeschlagen: Konnte die API-Details nicht laden","Login failed: {0}":["Login fehlgeschlagen: ",["0"]],"Login/JWT authorization":"Anmeldung/JWT-Autorisierung","Logo":"Logo","Logout":"Abmelden","MB":"MB","Main Source":"Hauptquelle","Main channel":"Hauptkanal","Main channel not found":"Hauptkanal nicht gefunden","Main channel saved":"Hauptkanal gespeichert","Main page channel (index.html).":"Kanal auf der Startseite (index.html)","Maintainer:":"Gepflegt von:","Maximum allowed cache size, 0 for unlimited.":"Maximal zulässige Cache-Größe, 0 für unbegrenzt.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Maximal erlaubte MB RAM für /memfs, 0 für unbegrenzt.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Maximal erlaubte MB, die von der Festplatte verbraucht werden dürfen. 0 für unbegrenzt.","Maximum bandwidth Mbit/s":"Maximale Bandbreite Mbit/s","Maximum delay in milliseconds.":"Maximale Latenz (Ms).","Maximum file size (Megabytes)":"Maximale Dateigröße (MB)","Maximum file size to put in cache.":"Maximale Dateigröße, die in den Cache gestellt wird.","Maximum log histroy":"Maximale Protokollhistorie","Maximum log lines":"Maximale Protokollzeilen","Maximum size (Megabytes)":"Maximale Größe (Megabytes)","Maximum viewer idle time (Seconds)":"Maximale Zuschauer Leerzeit (Sekunden)","Maximum viewers":"Maximale Anzahl von Zuschauenden","Memory":"Arbeitsspeicher","Meta information":"Meta-Informationen","Metadata":"Metadaten","Mold":"Mold","More about Twitter's copyright <0>here.":"Mehr über Twitter’s Urheberrecht <0>hier.","More about YouTube's copyright <0>here.":"Mehr über das Urheberrecht von YouTube <0>hier.","More about licenses here":"Mehr über die Lizenzen hier","More about the service":"Mehr über den Service","Mute":"Stumm","Name":"Name","Name for the template. If the name already exists, it will be overwritten.":"Templatename. Wenn der Name existiert, wird er überschrieben.","Network":"Netzwerk","Network source":"Netzwerk-Quelle","Next":"Weiter","Next: Audio":"Weiter: Audio","Next: Video setup":"Weiter: Video-Einrichtung","No":"Nein","No audio":"Kein Audio","No audio stream available":"Kein Audiostream verfügbar","No input device available":"Kein Eingabegerät vorhanden","No live stream was detected. Please check the software that sends the stream.":"Es wurde kein Livestream erkannt. Bitte die Software überprüfen, die den Stream sendet.","No source selected":"Keine Quelle ausgewählt","No sources available":"Keine Quellen verfügbar","No suitable encoder found.":"Keine passender Encoder gefunden.","No video":"Kein Video","No video stream available":"Kein Videostream verfügbar","Node ID":"Knoten-ID","Noise":"Rauschen","None":"Keine","Notes":"Hinweise","Number of log lines to keep.":"Anzahl der Protokollzeilen, die aufbewahrt werden sollen.","Number of logs to keep for each process.":"Anzahl der Protokolle, die je Prozess aufbewahrt werden sollen.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Ein Referrer pro Zeile, wie http://www.beispiel.com","Open":"Öffnen","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Passthrough (Kopieren) sollte nur bei Bedarf deaktiviert werden. Jede Kodierung erfordert zusätzliche CPU/GPU-Ressourcen.","Password":"Passwort","Password for authorization.":"Passwort für die Autorisierung.","Password for the device.":"Passwort von dem Gerät.","Persist viewer statistics":"Betrachterstatistiken beibehalten","Pixel format":"Pixelformat","Plan: <0>Starter":"Plan: <0>Starter","Platforms":"Plattformen","Playback":"Wiedergabe","Player":"Player","Player URL":"Player-URL","Player settings saved":"Playereinstellungen gespeichert","Playersite":"Playerseite","Playlist":"Wiedergabeliste","Please check the <0>process log":"Bitte <0>Prozessprotokoll prüfen","Please contact the operator of the service and check what happens.":"An den Betreiber des Dienstes wenden und prüfen, was passiert ist.","Please select a file to upload.":"Datei zum Hochladen auswählen.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"„Passthrough (Kopieren)“ sollte nur deaktiviert werden, wenn es erforderlich ist. Jedes weitere Encoding benötigt zusätzliche CPU/GPU Ressourcen.","Please wait. Probe stream data ...":"Bitte warten — der Stream wird geprüft ...","Please wait. Setting up the stream ...":"Bitte warten — einrichten des Streams ...","Port":"Port","Position":"Position","Preset":"Voreinstellung","Primary stream":"Primärer Stream","Primary stream key":"Primärer Stream-Schlüssel","Probe":"Prüfen","Process":"Prozess","Process control":"Prozesskontrolle","Process debug":"Prozess-Fehlerbehebung","Process debug report":"Prozess-Fehlerbehebungsbericht","Process details":"Prozess-Details","Process report":"Prozess-Bericht","Processing & Control":"Verarbeitung & Steuerung","Profile":"Profil","Protocol":"Protokoll","Protocols":"Protokolle","Public domain/s":"Öffentliceh Domain/s","Publication service not found":"Publikationsdienst nicht gefunden","Publication website settings saved":"Einstellungen der Publication Webseite gespeichert","Publications":"Publikationen","Pull Mode":"Abholmodus","Pull or recieve the data:":"Daten abholen oder empfangen:","Quality":"Qualität","RGB test pattern":"RGB-Testbild","RTMP app for publishing.":"RTMP-App für die Veröffentlichung.","RTMP server":"RTMP-Server","RTMP server is not enabled":"RTMP-Server ist nicht aktiviert","RTMP server listen address.":"RTMP-Server Lauschadresse.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"RTMP-Token für die Veröffentlichung und Wiedergabe. Das Token ist der Wert des URL-Abfrageparameters „token“.","RTMP/S":"RTMP/S","RTMPS server":"RTMPS-Server","RTSP":"RTSP","Raspberry Pi camera":"Raspberry Pi Kamera","Rate control":"Ratenkontrolle","Ratio":"Verhältnis","Read input at native speed":"Eingabe mit nativer Geschwindigkeit lesen","Receive Mode":"Empfangsmodus","Reconnect":"Wiederverbinden","Reconnect delay (seconds)":"Verzögerung beim Wiederherstellen der Verbindung (Sekunden)","Reconnecting in {0}s":["Wiederverbinden in ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["Die Wiederherstellung der Verbindung zum Restreamer Core ist in den letzten ",["RETRIES"]," Sekunden fehlgeschlagen."],"Reconnecting to Restreamer Core failed.":"Die Wiederherstellung der Verbindung zu Restreamer Core ist fehlgeschlagen.","Refresh":"Aktualisieren","Region":"Region","Reload":"Erneut laden","Remove the oldest entries if the /memfs is full":"Älteste Einträge entfernen, wenn das /memfs voll ist","Requires activation":"Aktivierung erforderlich","Restart":"Neustart","Restart required":"Neustart erforderlich","Restarting":"Neustart","Restarting Restreamer Core ...":"Neustart von Restreamer Core …","Restarting the application failed.":"Neustart der Anwendung ist fehlgeschlagen.","Restreamer Service":"Restreamer Service","Retrieving stream data ...":"Abrufen von Streamdaten ...","Retry":"Wiederholen","Rule":"Regel","Sampling":"Sampling","Save":"Speichern","Scale":"Skalierung","Seconds to keep files in cache.":"Sekunden, um Dateien im Cache zu halten.","Seconds until a process is restarted.":"Sekunden, bis ein Prozess neu gestartet wird.","Seconds until a staled process is terminated.":"Sekunden, bis ein hängender Prozess beendet wird.","Seconds until the snapshot/thumbnail of the video source is updated.":"Sekunden, bis ein Vorschaubild (JPEG) der Videoquelle aktualisiert wird.","Security":"Sicherheit","Security token":"Sicherheit Token","Seekbar color":"Seekbar Farbe","Segment length (seconds)":"Segmentlänge (Sek)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Das Segment wird nach Ablauf dieser Zeit auf dem folgenden Keyframe geschnitten. 2 wird empfohlen.","Segmentation":"Segmentierung","Select a device:":"Auswahl Gerät:","Select audio source:":"Audio-Quelle auswählen:","Select source ...":"Auswahl Quelle ...","Select video source:":"Videoquelle auswählen:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Wählen Sie aus, ob Sie den Stream von einer <0>Netzwerkquelle (z. B. einer Netzwerkkamera) oder dem <1>internen RTMP-Server (z. B. OBS-Streams an den Restreamer) beziehen.","Select your encoding setting:":"Einstellungen für die Encodierung:","Selected":"Ausgewählt","Selected channel":"Auswahl","Selection":"Auswahl","Send anonymous metrics (helps us for future development)":"Sende anonyme Anwendungsdaten (Hilft den Restreamer kontinuierlich zu verbessern)","Send stream to this address:":"Sende den Stream an diese Adresse:","Send video to Framebuffer":"Sendet das Video zum Bildspeicher","Server":"Server","Service":"Service","Service name":"Name des Dienstes","Service token for monitoring.":"Servicetoken für die Überwachung.","Sessions":"Zuschauer","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Legt eine Begrenzung der Bandbreite in Mbit/s für die ausgehende HLS-Datenübertragung fest. Alle Dienste, wie RTMP und ausgehende Prozesse, werden in die Berechnung einbezogen. Wenn die Bandbreite überschritten wird, erhalten HLS-Zuschauende den HTTP-Statuscode 509 (Bandwidth Limit Exceeded). 0 ist unbegrenzt.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Legt ein Limit für die Zuschauenden in der HLS-Sitzungen fest. Wenn das Limit überschritten wird, erhalten HLS-Zuschauende den HTTP-Statuscode 509 (Bandbreitenlimit überschritten). 0 ist unbegrenzt.","Setting for connection to the service.":"Einstellung für die Anbindung an den Service.","Settings":"Einstellungen","Settings (expert mode)":"Einstellungen (Experten-Modus)","Settings for /data path. The access is protected by":"Eintellungen für den /data Pfad. Der Zugriff wird geschützt durch","Settings for /memfs path.":"Einstellung für den /memfs Pfad.","Settings saved. All changes will be applied after restarting the application.":"Einstellungen gespeichert. Die Änderungen werden nach einem Neustart der Anwendungen übernommen.","Share button":"Share-Button","Shows a reference to the project.":"Zeigt einen Hinweis auf das Projekt.","Sign up (free)":"Anmelden (Kostenlos)","Silence":"Stille","Silence Audio":"Stilles Audio","Sine":"Sinus","Sitename":"Seitenname","Size":"Grösse","Snapshot":"Vorschaubild","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Socket-Zeitüberschreitung (Mikrosekunden)","Software":"Software","Source":"Quelle","Speed":"Geschwindigkeit","Stale timeout (seconds)":"Zeitüberschreitung (Sekunden)","Statistics":"Statistiken","Storage":"Speicherplatz","Stores the viewer statistics to the disk.":"Speichert die Zuschauerstatistik auf der Festplatte.","Stream":"Stream","Stream URL":"Stream-URL","Stream key":"Stream-Schlüssel","Stream name":"Streamname","Stream names":"Streamnamen","Support datarhei Restreamer":"Unterstütze datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Unterstützt HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT und mehr.","System":"System","Template":"Vorlage","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Vorlage, die für die Erstellung der Publikations-Website verwendet werden soll. Mit der Schaltfläche „Löschen“ wird die Auswahl aus dem System entfernt.","Terms":"Bedingungen","Test pattern":"Testbild","Test pattern (extended)":"Testbild (erweitert)","Text colors":"Textfarben","The amplitude (0.0 - 1.0) of the generated audio stream":"Die Amplitude (0,0 - 1,0) des erzeugten Audiostreams","The application is using an older version of the settings.":"Die Applikation verwendet eine ältere Version der Einstellungen.","The bitrate of the audio stream.":"Die Bitrate des Audiostreams.","The carrier frequency":"Trägerfrequenz","The channel \"{0}\" could not be deleted":["Der Kanal \"",["0"],"\\“ konnte nicht gelöscht werden"],"The channel \"{0}\" has been deleted":["Der Kanal \"",["0"],"\\“ wurde gelöscht"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"Die Löschung dieses Kanals kann nicht rückgängig gemacht werden. Alle Veröffentlichungen dieses Kanals werden entfernt.","The input profile is not complete. Please define a video and audio source.":"Unvollständiges Eingangsprofil. Video- und Audioquelle definieren.","The layout of the audio stream.":"Anordnung des Audiostreams.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"Die maximale Anzahl von Wiedergabelistensegmenten. 0 enthält alle Segmente. 6 wird empfohlen.","The noise color":"Audio-Rauschfarbe","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"Die Person, die ein Werk mit dieser Urkunde verbunden hat, hat das Werk der Allgemeinheit gewidmet, indem sie auf alle ihre Rechte an dem Werk weltweit nach dem Urheberrecht, einschließlich aller verwandten und benachbarten Rechte, verzichtet, soweit dies gesetzlich zulässig ist. Sie können das Werk vervielfältigen, verändern, verbreiten und aufführen, auch für kommerzielle Zwecke, alles ohne um Erlaubnis zu fragen.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"Der öffentlich erreichbare Domänenname des Hosts, auf dem der Restreamer läuft. Trennen Sie mehrere Domänennamen durch ein Komma.","The publication service \"{0}\" could not be deleted":["Der Publikationsdienst \"",["0"],"\" konnte nicht gelöscht werden"],"The publication service \"{0}\" has been created":["Der Publikationsdienst \"",["0"],"\" wurde erstellt"],"The publication service \"{0}\" has been deleted":["Der Publikationsdienst wurde \"",["0"],"\" gelöscht"],"The publication service has been created":"Der Publikationsdienst wurde erstellt","The sample rate of the audio stream.":"Abtastrate des Audiostreams.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["Die ausgewählte Datei ist zu groß (",["0"]," Bytes). Es sind nur ",["1"]," Bytes erlaubt."],"The selected file type ({0}) is not allowed. Allowed file types are {types}":["Der ausgewählte Dateityp (",["0"],") ist nich erlaubt. Erlaubte Dateitypen sind ",["types"]],"The settings for \"{0}\" have been saved":["Die Einstellungen für \"",["0"],"\" wurden gespeichert"],"The source doesn't provide any audio streams.":"Die Quelle stellt keine Audiostreams zur Verfügung.","The source doesn't provide any audio streams. Please check the <0>probe details.":"Die Quelle stellt keine Audiostreams zur Verfügung. Bitte die <0>Details der Überprüfung ansehen.","The source doesn't provide any compatible audio streams.":"Die Quelle stellt keine kompatiblen Audiostreams zur Verfügung.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"Die Quelle stellt keine kompatiblen Videostreams zur Verfügung. Bitte die <0>Anforderungen prüfen.","The source doesn't provide any video streams. Please check the <0>probe details.":"Die Quelle stellt keine Videostreams zur Verfügung. Bitte die <0>Details der Überprüfung ansehen.","The source doesn't provide any video streams. Please check the device.":"Die Quelle stellt keine Videostreams zur Verfügung. Bitte die Quelle prüfen.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"Die Videoquelle stellt keinen kompatiblen Audiokanal zur Verfügung. <0>Silence Audio wird empfohlen. Dienste wie z.B. YouTube, Facebook & Co. benötigen einen Audiokanal.","The video source is compatible. Select the desired resolution:":"Die Videoquelle ist kompatibel. Gewünschte Auflösung auswählen:","There are updates available. Here you get more information.":"Es sind Updates verfügbar. Hier erhalten Sie weitere Informationen.","There was a problem storing the settings. Settings not saved.":"Es gab ein Problem beim Speichern der Einstellungen. Einstellungen nicht gespeichert.","There was an error connecting to Restreamer Core at {0}.":["Es ist ein Fehler beim Verbinden mit Restreamer Core bei ",["0"]," aufgetreten."],"There was an error during upload: {0}":["Beim Hochladen ist ein Fehler aufgetreten: ",["0"]],"There was an error setting up the stream.":"Es ist ein Fehler beim Einrichten des Streams aufgetreten.","There were some errors in the settings. Settings not saved.":"Es gab einige Fehler in den Einstellungen. Einstellungen nicht gespeichert.","There's no login method available.":"Es ist keine Methode für die Anmeldung verfügbar.","This is a dummy service that explains to you the concepts of service.":"Dies ist ein Dummy-Dienst, der Ihnen die Konzepte des Dienstes erklärt.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Bitte Geduld. Es kann einen Moment dauern, bis der Restreamer Core neu gestartet ist …","This is to mention the copyright regulations for the target of this service.":"Dies ist ein Hinweis auf die urheberrechtlichen Bestimmungen für das Ziel dieses Dienstes.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Diese Lizenz erlaubt Wiederverwendern das Kopieren und Verteilen des Materials in jedem Medium oder Format nur in unangepasster Form und nur so lange, wie die Nennung des Urhebers erfolgt. Die Lizenz erlaubt die kommerzielle Nutzung.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Diese Lizenz erlaubt es Wiederverwendern, das Material in jedem Medium oder Format in unangepasster Form zu kopieren und zu verbreiten, und zwar nur für nicht-kommerzielle Zwecke und nur so lange, wie der Urheber genannt wird.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Diese Lizenz erlaubt es Wiederverwendern, das Material zu verbreiten, zu remixen, zu adaptieren und darauf aufzubauen, und zwar in jedem Medium oder Format und nur für nicht-kommerzielle Zwecke und nur so lange, wie die Nennung des Urhebers erfolgt.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Diese Lizenz erlaubt es Wiederverwendern, das Material zu verbreiten, zu remixen, zu adaptieren und darauf aufzubauen, und zwar in jedem Medium oder Format und nur für nicht-kommerzielle Zwecke, und nur solange der Urheber genannt wird. Wenn Sie das Material umarbeiten, anpassen oder darauf aufbauen, müssen Sie das geänderte Material unter identischen Bedingungen lizenzieren.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Diese Lizenz erlaubt es Wiederverwendern, das Material in jedem Medium oder Format zu verbreiten, zu remixen, anzupassen und darauf aufzubauen, solange der Urheber genannt wird. Die Lizenz erlaubt die kommerzielle Nutzung.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Diese Lizenz erlaubt es Wiederverwendern, das Material in jedem Medium oder Format zu verbreiten, zu remixen, anzupassen und darauf aufzubauen, solange der Urheber genannt wird. Die Lizenz erlaubt die kommerzielle Nutzung. Wenn Sie das Material umarbeiten, anpassen oder darauf aufbauen, müssen Sie das geänderte Material unter identischen Bedingungen lizenzieren.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Diese Quelle kann nicht bearbeitet werden, während sie in Gebrauch ist. Um fortzufahren, müssen Sie die Verbindung zur Quelle unterbrechen.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Diese Version der Benutzeroberfläche unterstützt nicht das verfügbare FFmpeg-Binary (",["0"],"). Die Benutzeroberfläche erfordert ",["1"],". Bitte verwenden Sie eine unterstützte FFmpeg-Binärdatei."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Diese Version der Benutzeroberfläche unterstützt nicht den angeschlossenen Kern (",["0"],"). Die Benutzeroberfläche erfordert ",["1"],". Bitte verwenden Sie eine kompatible Version der UI."],"This version of the UI is compatible.":"Die verwendete Version der Benutzeroberfläche ist kompatibel.","Time until an inactive viewer connection is treated as closed.":"Zeit bis eine inaktive Zuschauerverbindung als geschlossen behandelt wird.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Überträgt Schnappschüsse der Hauptquelle an einen HTTP/S Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Überträgt den Audiokanal der Hauptquelle an einen Icecast Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle als HTTP-Live-Streaming (HLS) an einen HTTP/S-Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle als MPEG-DASH an einen HTTP/S Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen Brightcove Live-Service. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Übertragen Sie die Hauptquelle an einen CDN77 RTMP Service. Mehr über die Einrichtung <0>hier.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Übertragen Sie die Hauptquelle an einen DaCast RTMP Service. Mehr über die Einrichtung <0>hier.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Übertragen Sie die Hauptquelle an einen MPEG-TS-Dienst. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen MPEG-TS-Dienst. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen RTSP-Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen Red5/Pro Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen SRT Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen UDP-Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an einen WOWZA Server. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Überträgt die Hauptquelle auf eine datarhei Core Ressource. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle auf eine livespotting.com Ressource. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Übertragen Sie die Hauptquelle an die Akamai (MSL) Media Services Live. Weitere Details zu den MSL-Encoder-Einstellungen finden Sie <0>hier.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Übertragen Sie die Hauptquelle an den Bitmovin-Cloud-Encoding-Service, ein leistungsstarkes Tool für Live-Streaming. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Übertragen Sie die Hauptquelle an den Restream RTMP Service. Weitere Details zu den Einstellungen finden Sie <0>hier.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Überträgt Ihr Video als RTMP-Stream mit dem erforderlichen, in YouTube Studio generierten Schlüssel. Weitere Informationen zum Einrichten eines Live-Streams finden Sie in der <0>Creator Academy von YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Überträgt Ihren Videostream mit dem erforderlichen Schlüssel, der in Twitter Producer generiert wurde. Weitere Informationen zum Einrichten eines Livestreams finden Sie unter <0>Producer von Twitter.","Tune":"Optimieren","UDP transport":"UDP-Transport","Unable to load the config.":"Die Konfiguration kann nicht geladen werden.","Unique ident on the service.":"Einzigartige Identität für den Service.","Unknown":"Unbekannt","Unselected":"Nicht gewählt","Upload":"Hochladen","Uploading the file failed":"Die Dateiübertragung ist fehlgeschlagen","Uploading the logo failed":"Hochladen des Logos fehlgeschlagen","Uptime":"Betriebszeit","Use Auth0 for your running Restreamer Core. More <0>details.":"Verwenden Sie Auth0 für Ihren laufenden Restreamer Core. Mehr <0>Details.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Verwenden Sie den Assistenten (<0/>) für eine schnelle und einfache Einrichtung, oder bearbeiten Sie (<1/>) die Quellen direkt im benutzerdefinierten Modus.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Copyright und die richtige Bildlizenz wählen. Ob frei für alle oder stark eingeschränkt. Überlege kurz, was andere mit dem Video machen dürfen.","User registration":"Benutzerregistrierung","Username":"Anmeldename","Username for authorization.":"Anmeldename für die Autorisierung.","Username for the device.":"Anmeldename von dem Gerät.","VPU ID":"VPU-ID","Video":"Video","Video device":"Videogerät","Video settings":"Videoeinstellungen","Video setup":"Video-Einrichtung","Video source":"Videoquelle","Viewer":"Zuschauende","Virtual source":"Virtuelle-Quelle","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Willkommen bei Restreamer v2, der Lösung für die schnelle und einfache Veröffentlichung von Videos. Kostenlos für private und kommerzielle Nutzung. Weitere Hilfe in der <0>Dokumentation.","Write protection":"Schreibschutz","YUV test pattern":"YUV-Testbild","Yes":"Ja","You can't abort the wizard because at least one input must be defined.":"Sie können den Assistenten nicht abbrechen, da mindestens ein Eingang definiert sein muss.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Konfiguration geändert. Damit die Änderungen wirksam werden muss die Anwendung neu starten. Jetzt neu starten?","You have to reconnect manually":"Verbindung manuell wiederherstellen","You have unsaved changes. Please save them before you can control the service again.":"Ungespeicherte Änderungen. Bitte speichern, bevor der Dienst wieder gesteuert werden kann.","Your stream needs to be encoded, but there's no suitable encoder available.":"Ihr Stream muss kodiert werden, aber es ist kein geeigneter Encoder verfügbar.","Your stream needs to be encoded. Choose the desired encoder:":"Stream muss kodiert werden. Gewünschten Encoder wählen:","blue":"blau","brown":"braun","iframe code":"iframe Code","kbit/s":"kbit/s","pink":"rosa","velvet":"velvet","violet":"violett","white":"weiß"}}; \ No newline at end of file diff --git a/src/locales/de/messages.po b/src/locales/de/messages.po index f1b07b0..37b0d7e 100644 --- a/src/locales/de/messages.po +++ b/src/locales/de/messages.po @@ -1,24 +1,28 @@ msgid "" msgstr "" -"Project-Id-Version: Restreamer\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Ingo Oppermann \n" -"Language-Team: \n" -"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: POEditor.com\n" +"Project-Id-Version: Restreamer\n" +"Language: de\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" "Plural-Forms: \n" -"X-Generator: Poedit 3.0.1\n" -#: src/views/Edit/Profile.js:372 -#: src/views/Edit/Profile.js:501 +#: src/misc/EncodingSelect.js:224 +msgid "<0>Compatibility list" +msgstr "<0>Kompatibilitätsliste" + +#: src/views/Edit/Profile.js:380 +#: src/views/Edit/Profile.js:510 msgid "<0>Show probe details" msgstr "<0>Details der Überprüfung anzeigen" -#: src/views/Edit/Sources/ALSA.js:150 +#: src/views/Edit/Sources/ALSA.js:156 msgid "ALSA" msgstr "ALSA" @@ -26,26 +30,26 @@ msgstr "ALSA" msgid "API endpoint not found. Settings not saved." msgstr "API-Endpunkt nicht gefunden. Einstellungen nicht gespeichert." -#: src/views/Edit/Sources/AVFoundation.js:211 +#: src/views/Edit/Sources/AVFoundation.js:221 msgid "AVFoundation" msgstr "AVFoundation" #: src/misc/ChannelList.js:356 -#: src/views/Edit/Profile.js:402 -#: src/views/Edit/Wizard/index.js:1136 -#: src/views/Edit/index.js:547 -#: src/views/Edit/index.js:573 -#: src/views/Edit/index.js:592 +#: src/views/Edit/Profile.js:410 +#: src/views/Edit/Wizard/index.js:1153 +#: src/views/Edit/index.js:549 +#: src/views/Edit/index.js:575 +#: src/views/Edit/index.js:594 #: src/views/Publication/Add.js:362 #: src/views/Publication/Edit.js:601 -#: src/views/Settings.js:1967 -#: src/views/Settings.js:2026 -#: src/views/Settings.js:2048 +#: src/views/Settings.js:1972 +#: src/views/Settings.js:2031 +#: src/views/Settings.js:2053 msgid "Abort" msgstr "Abbrechen" -#: src/Header.js:286 -#: src/Header.js:327 +#: src/Header.js:283 +#: src/Header.js:324 msgid "About" msgstr "Über" @@ -57,7 +61,7 @@ msgstr "Hinzufügen" msgid "Add Publication" msgstr "Publikation hinzufügen" -#: src/views/Playersite.js:679 +#: src/views/Playersite.js:692 msgid "Add external widgets and styles to the publication site. You can find some examples on the help page." msgstr "Fügen Sie externe Widgets und Stile zur Publikationsseite hinzu. Einige Beispiele finden Sie auf der Hilfeseite." @@ -69,10 +73,10 @@ msgstr "Neuen Kanal hinzufügen" msgid "Add: {0}" msgstr "Hinzufügen: {0}" -#: src/views/Edit/Sources/Network.js:339 +#: src/views/Edit/Sources/Network.js:355 #: src/views/Edit/Wizard/Sources/Network.js:66 #: src/views/Publication/Services/Brightcove.js:95 -#: src/views/Publication/Services/Core.js:99 +#: src/views/Publication/Services/Core.js:100 #: src/views/Publication/Services/DASH.js:192 #: src/views/Publication/Services/HLS.js:181 #: src/views/Publication/Services/Icecast.js:160 @@ -84,23 +88,23 @@ msgstr "Hinzufügen: {0}" #: src/views/Publication/Services/SRT.js:161 #: src/views/Publication/Services/UDP.js:127 #: src/views/Publication/Services/WOWZA.js:132 -#: src/views/Settings.js:1297 +#: src/views/Settings.js:1302 msgid "Address" msgstr "Adresse" -#: src/views/Playersite.js:616 +#: src/views/Playersite.js:629 msgid "Address for the background image." msgstr "Adresse des Hintergrundbildes." -#: src/views/Settings.js:1326 +#: src/views/Settings.js:1331 msgid "Address to listen on for HTTP requests." msgstr "Die Adresse für das Abhören von HTTP-Anfragen." -#: src/views/Settings.js:1339 +#: src/views/Settings.js:1344 msgid "Address to listen on for HTTPS requests." msgstr "Die Adresse für das Abhören von HTTPS-Anfragen." -#: src/views/Playersite.js:501 +#: src/views/Playersite.js:514 msgid "Adjust publication site colors and background as you like." msgstr "Farben und den Hintergrund der Publikationsseite nach Belieben anpassen." @@ -108,7 +112,7 @@ msgstr "Farben und den Hintergrund der Publikationsseite nach Belieben anpassen. msgid "Advanced monitoring" msgstr "Erweiterte Systemüberwachung" -#: src/views/Edit/Sources/Network.js:380 +#: src/views/Edit/Sources/Network.js:396 #: src/views/Publication/Services/DASH.js:204 #: src/views/Publication/Services/HLS.js:193 #: src/views/Publication/Services/Icecast.js:170 @@ -121,7 +125,7 @@ msgstr "Erweiterte Systemüberwachung" msgid "Advanced settings" msgstr "Erweiterte Einstellungen" -#: src/views/Edit/Wizard/index.js:280 +#: src/views/Edit/Wizard/index.js:287 msgid "Advanced setup" msgstr "Erweiterte Einrichtung" @@ -137,11 +141,11 @@ msgstr "Alle" msgid "All important system settings." msgstr "Alle wichtigen Systemeinstellungen." -#: src/views/Settings.js:1473 +#: src/views/Settings.js:1478 msgid "Allow all referrer" msgstr "Erlaube alle Referrer" -#: src/views/Settings.js:1513 +#: src/views/Settings.js:1518 msgid "Allow counting how many viewers the stream has." msgstr "Erlaubt das Zählen der Anzahl des Publikums vom Stream." @@ -153,8 +157,8 @@ msgstr "Amplitude" msgid "An environment variable sets this value." msgstr "Eine Umgebungsvariable legt diesen Wert fest." -#: src/views/Publication/Services/Core.js:109 -#: src/views/Settings.js:1811 +#: src/views/Publication/Services/Core.js:107 +#: src/views/Settings.js:1816 msgid "App" msgstr "App" @@ -164,7 +168,7 @@ msgstr "App" msgid "Application" msgstr "Anwendung" -#: src/views/Edit/Wizard/index.js:1155 +#: src/views/Edit/Wizard/index.js:1172 msgid "Are you sure you want to abort the wizard?" msgstr "Sind Sie sicher, dass Sie den Assistenten abbrechen wollen?" @@ -172,27 +176,27 @@ msgstr "Sind Sie sicher, dass Sie den Assistenten abbrechen wollen?" msgid "Audio" msgstr "Audio" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:92 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:111 msgid "Audio Device" msgstr "Audiogerät" -#: src/views/Edit/Sources/ALSA.js:101 -#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/ALSA.js:114 +#: src/views/Edit/Sources/AVFoundation.js:159 msgid "Audio device" msgstr "Audiogerät" -#: src/views/Edit/Wizard/index.js:858 -#: src/views/Edit/Wizard/index.js:870 +#: src/views/Edit/Wizard/index.js:875 +#: src/views/Edit/Wizard/index.js:887 msgid "Audio from device" msgstr "Audio von Gerät" -#: src/views/Edit/Profile.js:417 -#: src/views/Edit/ProfileSummary.js:89 +#: src/views/Edit/Profile.js:425 +#: src/views/Edit/ProfileSummary.js:90 #: src/views/Publication/Edit.js:533 msgid "Audio settings" msgstr "Audio-Einstellungen" -#: src/views/Edit/Wizard/index.js:811 +#: src/views/Edit/Wizard/index.js:828 msgid "Audio setup" msgstr "Audio-Einrichtung" @@ -208,43 +212,47 @@ msgstr "Auth0 Tenant" msgid "Auth0 is currently not available because this interface is loaded from an insecure origin." msgstr "Auth0 ist derzeit nicht verfügbar, da diese Schnittstelle von einer unsicheren Quelle geladen wurde." -#: src/misc/controls/Metadata.js:74 +#: src/misc/controls/Metadata.js:71 msgid "Author" msgstr "Autor" #: src/views/Settings.js:1143 -#: src/views/Settings.js:1410 +#: src/views/Settings.js:1415 msgid "Authorization" msgstr "Autorisierung" -#: src/views/Publication/Player.js:434 +#: src/misc/controls/HLS.js:83 +msgid "Automatic cleanup of all media data" +msgstr "Automatische Bereinigung aller Mediadateien" + +#: src/views/Publication/Player.js:437 msgid "Autoplay" msgstr "Autoplay" -#: src/views/Playersite.js:434 +#: src/views/Playersite.js:445 msgid "Available" msgstr "Verfügbar" -#: src/views/Edit/Profile.js:532 -#: src/views/Edit/Wizard/index.js:394 -#: src/views/Edit/Wizard/index.js:630 -#: src/views/Edit/Wizard/index.js:895 -#: src/views/Edit/Wizard/index.js:1007 -#: src/views/Edit/Wizard/index.js:1065 -#: src/views/Edit/Wizard/index.js:1147 +#: src/views/Edit/Profile.js:541 +#: src/views/Edit/Wizard/index.js:408 +#: src/views/Edit/Wizard/index.js:647 +#: src/views/Edit/Wizard/index.js:912 +#: src/views/Edit/Wizard/index.js:1024 +#: src/views/Edit/Wizard/index.js:1082 +#: src/views/Edit/Wizard/index.js:1164 #: src/views/Publication/Add.js:528 msgid "Back" msgstr "Zurück" -#: src/views/Playersite.js:550 +#: src/views/Playersite.js:563 msgid "Background colors" msgstr "Hintergrundfarben" -#: src/views/Playersite.js:603 +#: src/views/Playersite.js:616 msgid "Background image" msgstr "Hintergrundbild" -#: src/views/Publication/Services/Akamai.js:195 +#: src/views/Publication/Services/Akamai.js:196 msgid "Backup URL" msgstr "Backup-URL" @@ -256,7 +264,7 @@ msgstr "Backup-Server" msgid "Backup stream" msgstr "Backupstream" -#: src/views/Publication/Services/Facebook.js:128 +#: src/views/Publication/Services/Facebook.js:124 msgid "Backup stream key" msgstr "Backup stream key" @@ -265,7 +273,7 @@ msgstr "Backup stream key" msgid "Bandwidth" msgstr "Bandbreite" -#: src/views/Settings.js:1368 +#: src/views/Settings.js:1373 msgid "Bandwidth control" msgstr "Bandbreitensteuerung" @@ -274,7 +282,7 @@ msgid "Banner" msgstr "Banner" #: src/views/Login.js:241 -#: src/views/Settings.js:1415 +#: src/views/Settings.js:1420 msgid "Basic" msgstr "Basic" @@ -287,40 +295,40 @@ msgstr "Piep-Faktor" msgid "Bitrate" msgstr "Bitrate" -#: src/views/Edit/Wizard/index.js:996 -#: src/views/Edit/index.js:508 +#: src/views/Edit/Wizard/index.js:1013 +#: src/views/Edit/index.js:510 msgid "Briefly describe what the audience will see during the live stream." msgstr "Beschreiben Sie kurz, was die Zuschauenden während des Live-Streams sehen werden." -#: src/views/Publication/Player.js:349 +#: src/views/Publication/Player.js:352 msgid "Button color" msgstr "Farbe des Knopfes" -#: src/views/Settings.js:1682 +#: src/views/Settings.js:1687 msgid "Cache for files on /data." msgstr "Cache für Dateien auf /data." -#: src/views/Settings.js:1710 +#: src/views/Settings.js:1715 msgid "Cache time (Seconds)" msgstr "Cache-Zeit (Sek)" -#: src/views/Settings.js:1738 +#: src/views/Settings.js:1743 msgid "Cache types" msgstr "Cache-Typen" -#: src/views/Edit/Sources/AVFoundation.js:188 +#: src/views/Edit/Sources/AVFoundation.js:197 msgid "Capture clicks" msgstr "Klicks erfassen" -#: src/views/Edit/Sources/AVFoundation.js:185 +#: src/views/Edit/Sources/AVFoundation.js:194 msgid "Capture cursor" msgstr "Mauszeiger erfassen" -#: src/views/Edit/index.js:326 +#: src/views/Edit/index.js:327 msgid "Channel \"{0}\" saved" msgstr "Kanal \"{0}\" gespeichert" -#: src/views/Edit/Sources/ALSA.js:124 +#: src/views/Edit/Sources/ALSA.js:129 msgid "Channels" msgstr "Kanäle" @@ -340,14 +348,14 @@ msgstr "Videostream wählen" msgid "Choose an audio stream" msgstr "Audiostream wählen" -#: src/views/Edit/Sources/ALSA.js:90 +#: src/views/Edit/Sources/ALSA.js:96 #: src/views/Edit/Sources/Framebuffer.js:80 #: src/views/Edit/Sources/Raspicam.js:84 -#: src/views/Edit/Sources/V4L.js:84 +#: src/views/Edit/Sources/V4L.js:90 msgid "Choose an input device ..." msgstr "Eingabegerät wählen …" -#: src/misc/EncodingSelect.js:190 +#: src/misc/EncodingSelect.js:202 msgid "Choose codec ..." msgstr "Codec wählen …" @@ -360,28 +368,28 @@ msgstr "Wähle einen Tenant" msgid "Chunk" msgstr "Segment" -#: src/misc/ModalContent.js:87 -#: src/views/Playersite.js:769 +#: src/misc/ModalContent.js:77 +#: src/views/Playersite.js:782 #: src/views/Publication/Add.js:525 #: src/views/Publication/Edit.js:565 -#: src/views/Publication/Player.js:444 +#: src/views/Publication/Player.js:447 msgid "Close" msgstr "Schliessen" -#: src/views/Playersite.js:352 +#: src/views/Playersite.js:354 msgid "Code injection" msgstr "Code Injection" -#: src/misc/EncodingSelect.js:188 +#: src/misc/EncodingSelect.js:200 msgid "Codec" msgstr "Codec" #: src/views/Edit/Sources/VirtualAudio.js:110 -#: src/views/Publication/Player.js:317 +#: src/views/Publication/Player.js:320 msgid "Color" msgstr "Farbe" -#: src/views/Settings.js:1277 +#: src/views/Settings.js:1282 msgid "Config" msgstr "Konfiguration" @@ -393,7 +401,7 @@ msgstr "Bestätigen Sie das Passwort" msgid "Connect" msgstr "Verbinden" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:134 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:157 msgid "Connected device" msgstr "Verbundenes Gerät" @@ -402,7 +410,7 @@ msgid "Connected since <0/>" msgstr "Verbunden für <0/>" #: src/misc/ActionButton.js:12 -#: src/views/Main/index.js:308 +#: src/views/Main/index.js:305 #: src/views/Publication/Process.js:40 msgid "Connecting ..." msgstr "Verbinde ..." @@ -415,12 +423,16 @@ msgstr "Mit Restreamer Core verbinden …" msgid "Connecting to Restreamer Core failed probably because of mixed content." msgstr "Die Verbindung zu Restreamer Core ist wahrscheinlich wegen gemischter Inhalte fehlgeschlagen." -#: src/misc/controls/Metadata.js:73 -#: src/views/Playersite.js:646 -#: src/views/Playersite.js:663 +#: src/misc/controls/Metadata.js:70 +#: src/views/Playersite.js:659 +#: src/views/Playersite.js:676 msgid "Content" msgstr "Inhalt" +#: src/views/Main/index.js:365 +msgid "Content URL" +msgstr "" + #: src/Footer.js:193 msgid "Cores" msgstr "Cores" @@ -442,22 +454,22 @@ msgstr "Creative Commons" #: src/misc/coders/settings/Video.js:115 #: src/misc/coders/settings/Video.js:181 #: src/misc/coders/settings/Video.js:220 -#: src/views/Edit/Sources/ALSA.js:95 -#: src/views/Edit/Sources/AVFoundation.js:114 -#: src/views/Edit/Sources/AVFoundation.js:147 -#: src/views/Edit/Sources/V4L.js:90 +#: src/views/Edit/Sources/ALSA.js:101 +#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/V4L.js:96 msgid "Custom ..." msgstr "Individuell …" -#: src/views/Settings.js:1283 +#: src/views/Settings.js:1288 msgid "Custom JSON config for datarhei Core." msgstr "Individuelle JSON Konfiguration für den datarhei Core." -#: src/views/Edit/Sources/ALSA.js:102 +#: src/views/Edit/Sources/ALSA.js:115 msgid "Custom audio device" msgstr "Individuelles Audiogerät" -#: src/views/Edit/Sources/AVFoundation.js:154 +#: src/views/Edit/Sources/AVFoundation.js:160 msgid "Custom audio index" msgstr "Individueller Audio-Index" @@ -466,7 +478,7 @@ msgstr "Individueller Audio-Index" msgid "Custom bitrate (kbit/s)" msgstr "Individuelle Bitrate (kbit/s)" -#: src/views/Playersite.js:674 +#: src/views/Playersite.js:687 msgid "Custom code injection" msgstr "Injektion von Individuellem Code" @@ -506,35 +518,36 @@ msgstr "Individuelle Skalierung" msgid "Custom size" msgstr "Individuelle Größe" -#: src/views/Edit/Sources/V4L.js:97 +#: src/views/Edit/Sources/V4L.js:110 msgid "Custom video device" msgstr "Individuelles Videogerät" -#: src/views/Edit/Sources/AVFoundation.js:121 +#: src/views/Edit/Sources/AVFoundation.js:127 msgid "Custom video index" msgstr "Individueller Video-Index" -#: src/misc/TextFieldCopy.js:44 +#: src/misc/CopyButton.js:20 +#: src/misc/TextFieldCopy.js:33 #: src/misc/Textarea.js:46 msgid "Data copied to clipboard" msgstr "Daten wurden in die Zwischenablage kopiert" -#: src/views/Edit/Sources/VirtualVideo.js:164 +#: src/views/Edit/Sources/VirtualVideo.js:167 msgid "Death color" msgstr "Death color" -#: src/misc/EncodingSelect.js:198 -#: src/views/Edit/Wizard/index.js:611 +#: src/misc/EncodingSelect.js:210 +#: src/views/Edit/Wizard/index.js:628 msgid "Decoder" msgstr "Decoder" -#: src/views/Edit/Sources/AVFoundation.js:109 -#: src/views/Edit/Sources/AVFoundation.js:143 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:61 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:87 -#: src/views/Playersite.js:440 -#: src/views/Playersite.js:513 -#: src/views/Playersite.js:557 +#: src/views/Edit/Sources/AVFoundation.js:115 +#: src/views/Edit/Sources/AVFoundation.js:149 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:76 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:105 +#: src/views/Playersite.js:451 +#: src/views/Playersite.js:526 +#: src/views/Playersite.js:570 msgid "Default" msgstr "Standard" @@ -542,13 +555,13 @@ msgstr "Standard" msgid "Delay" msgstr "Verzögerung" -#: src/views/Edit/Sources/ALSA.js:127 +#: src/views/Edit/Sources/ALSA.js:132 msgid "Delay (ms)" msgstr "Verzögerung (ms)" -#: src/views/Edit/index.js:561 -#: src/views/Edit/index.js:597 -#: src/views/Playersite.js:461 +#: src/views/Edit/index.js:563 +#: src/views/Edit/index.js:599 +#: src/views/Playersite.js:474 #: src/views/Publication/Edit.js:574 #: src/views/Publication/Edit.js:606 msgid "Delete" @@ -563,18 +576,18 @@ msgstr "Die Löschung eines Publikationsdienstes kann nicht rückgängig gemacht msgid "Delivering mode" msgstr "Zustellmodus" -#: src/misc/controls/Metadata.js:88 -#: src/misc/controls/Metadata.js:113 +#: src/misc/controls/Metadata.js:85 +#: src/misc/controls/Metadata.js:110 msgid "Description" msgstr "Beschreibung" -#: src/views/Playersite.js:350 -#: src/views/Playersite.js:496 +#: src/views/Playersite.js:352 +#: src/views/Playersite.js:509 msgid "Design" msgstr "Design" #: src/views/Edit/Sources/Framebuffer.js:87 -#: src/views/Edit/Wizard/index.js:873 +#: src/views/Edit/Wizard/index.js:890 #: src/views/Publication/Services/Framebuffer.js:93 msgid "Device" msgstr "Gerät" @@ -585,7 +598,7 @@ msgstr "Gerät" msgid "Disconnect" msgstr "Trennen" -#: src/views/Edit/index.js:578 +#: src/views/Edit/index.js:580 msgid "Disconnect & Continue" msgstr "Trennen und fortfahren" @@ -594,12 +607,12 @@ msgstr "Trennen und fortfahren" msgid "Disconnecting ..." msgstr "Trennen ..." -#: src/views/Settings.js:1645 +#: src/views/Settings.js:1650 msgid "Disk" msgstr "Festplatte" -#: src/views/Settings.js:1679 -#: src/views/Settings.js:1687 +#: src/views/Settings.js:1684 +#: src/views/Settings.js:1692 msgid "Disk cache" msgstr "Festplatten Zwischenspeicher" @@ -608,11 +621,11 @@ msgstr "Festplatten Zwischenspeicher" msgid "Disk storage" msgstr "Festplattenspeicher" -#: src/views/Settings.js:2058 +#: src/views/Settings.js:2063 msgid "Do you really want to restart the application now?" msgstr "Möchten Sie die Anwendung wirklich neu starten?" -#: src/views/Edit/index.js:589 +#: src/views/Edit/index.js:591 msgid "Do you want to delete \"{0}\"?" msgstr "Soll \"{0}\" gelöscht werden?" @@ -620,12 +633,12 @@ msgstr "Soll \"{0}\" gelöscht werden?" msgid "Do you want to delete {title}?" msgstr "Möchten Sie {title} löschen?" -#: src/views/Edit/index.js:570 +#: src/views/Edit/index.js:572 msgid "Do you want to disconnect \"{0}\"?" msgstr "Möchten Sie die Verbindung zu „{0}“ unterbrechen?" -#: src/Header.js:292 -#: src/Header.js:333 +#: src/Header.js:289 +#: src/Header.js:330 msgid "Docs" msgstr "Dokumente" @@ -645,19 +658,19 @@ msgstr "Dokumentation" msgid "Dup. frames" msgstr "Duplizierte Frames" -#: src/views/Publication/Player.js:282 +#: src/views/Publication/Player.js:285 msgid "EDIT: Player" msgstr "EDIT: Player" -#: src/views/Playersite.js:344 +#: src/views/Playersite.js:346 msgid "EDIT: Publication Website" msgstr "BEARBEITEN: Publikation Website" -#: src/views/Edit/index.js:390 +#: src/views/Edit/index.js:391 msgid "Edit" msgstr "Bearbeiten" -#: src/views/Edit/index.js:416 +#: src/views/Edit/index.js:417 msgid "Edit the audio and video sources for the live stream. Add a description, and set your desired content license." msgstr "Bearbeiten Sie die Audio- und Videoquellen für den Live-Stream. Fügen Sie eine Beschreibung hinzu, und legen Sie die gewünschte Inhaltslizenz fest." @@ -665,11 +678,11 @@ msgstr "Bearbeiten Sie die Audio- und Videoquellen für den Live-Stream. Fügen msgid "Edit: {title}" msgstr "Bearbeiten: {title}" -#: src/views/Publication/Player.js:316 +#: src/views/Publication/Player.js:319 msgid "Embed" msgstr "Einbetten" -#: src/views/Edit/Sources/Network.js:561 +#: src/views/Edit/Sources/Network.js:577 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:55 msgid "Enable RTMP server ..." msgstr "RTMP-Server aktivieren …" @@ -679,16 +692,16 @@ msgid "Enable a periodic beep every second with this value times the carrier fre msgstr "Periodischen Piepton jede Sekunde mit diesem Wert mal der Trägerfrequenz aktivieren" #: src/views/Publication/Services/Dummy.js:278 -#: src/views/Publication/Services/Facebook.js:147 +#: src/views/Publication/Services/Facebook.js:139 msgid "Enable backup stream" msgstr "Backupstream aktivieren" -#: src/views/Publication/Player.js:424 +#: src/views/Publication/Player.js:427 msgid "Enable nerd statistics" msgstr "Nerd-Statistiken einschalten" #: src/views/Publication/Services/Dummy.js:277 -#: src/views/Publication/Services/Facebook.js:146 +#: src/views/Publication/Services/Facebook.js:138 msgid "Enable primary stream" msgstr "Primären Stream aktivieren" @@ -696,15 +709,15 @@ msgstr "Primären Stream aktivieren" msgid "Enable snapshots" msgstr "Momentaufnahme aktivieren" -#: src/views/Settings.js:1428 +#: src/views/Settings.js:1433 msgid "Enabling authorization is strongly advised. Otherwise, anybody can access this instance." msgstr "Es wird dringend empfohlen, die Autorisierung zu aktivieren. Andernfalls kann jeder auf diese Instanz zugreifen." -#: src/views/Settings.js:1588 +#: src/views/Settings.js:1593 msgid "Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs." msgstr "Es wird dringend empfohlen, die Basisauthentifizierung zu aktivieren. Andernfalls könnte jeder Daten in /memfs schreiben." -#: src/views/Edit/Wizard/index.js:617 +#: src/views/Edit/Wizard/index.js:634 msgid "Encoder" msgstr "Encoder" @@ -730,7 +743,7 @@ msgstr "Einen Namen für den neuen Kanal eingeben." msgid "Enter password" msgstr "Passwort eingeben" -#: src/views/Edit/Sources/Network.js:332 +#: src/views/Edit/Sources/Network.js:348 #: src/views/Edit/Wizard/Sources/Network.js:59 msgid "Enter the address of your network source:" msgstr "Adresse des Netzwerkquelle eintragen:" @@ -743,7 +756,7 @@ msgstr "Anmeldename eingeben" msgid "Entropy coder" msgstr "Entropy coder" -#: src/views/Edit/Wizard/index.js:1101 +#: src/views/Edit/Wizard/index.js:1118 #: src/views/Incompatible.js:30 #: src/views/Invalid.js:29 #: src/views/Publication/Process.js:63 @@ -751,45 +764,46 @@ msgstr "Entropy coder" msgid "Error" msgstr "Fehler" -#: src/misc/TextFieldCopy.js:46 +#: src/misc/CopyButton.js:22 +#: src/misc/TextFieldCopy.js:35 #: src/misc/Textarea.js:48 msgid "Error while copying data to clipboard" msgstr "Fehler beim Kopieren von Daten in die Zwischenablage" -#: src/views/Main/index.js:327 +#: src/views/Main/index.js:324 #: src/views/Publication/Process.js:64 msgid "Error: {0}" msgstr "Fehler: {0}" -#: src/views/Playersite.js:719 +#: src/views/Playersite.js:732 msgid "Expands the area above the channel list (live chat)." msgstr "Erweitert den Bereich oberhalb der Kanalliste (Live-Chat)." -#: src/views/Playersite.js:739 +#: src/views/Playersite.js:752 msgid "Expands the area under the channel description (comment boxes)." msgstr "Erweitert den Bereich unter der Kanalbeschreibung (Kommentarfelder)." -#: src/views/Settings.js:1194 +#: src/views/Settings.js:1199 msgid "Expert mode" msgstr "Expertenmodus" -#: src/views/Playersite.js:704 +#: src/views/Playersite.js:717 msgid "Extend channel list" msgstr "Kanalliste erweitern" -#: src/views/Playersite.js:724 +#: src/views/Playersite.js:737 msgid "Extend content" msgstr "Inhalt erweitern" -#: src/views/Playersite.js:744 +#: src/views/Playersite.js:757 msgid "Extend footer" msgstr "Fußzeile erweitern" -#: src/views/Playersite.js:684 +#: src/views/Playersite.js:697 msgid "Extend header" msgstr "Header erweitern" -#: src/views/Settings.js:1931 +#: src/views/Settings.js:1936 msgid "FFmpeg" msgstr "FFmpeg" @@ -798,20 +812,16 @@ msgstr "FFmpeg" msgid "FPS" msgstr "FPS" -#: src/views/Edit/index.js:290 -msgid "Failed to correctly cleanup previous process data" -msgstr "Frühere Prozessdaten konnten nicht korrekt bereinigt werden" - #: src/views/Publication/Add.js:180 msgid "Failed to create publication service ({0})" msgstr "Publikationsdienst konnte nicht erstellt werden ({0})" -#: src/views/Playersite.js:308 +#: src/views/Playersite.js:310 msgid "Failed to create publication website files." msgstr "Die Dateien der Publikations-Website konnten nicht erstellt werden." -#: src/views/Edit/Profile.js:333 -#: src/views/Edit/Profile.js:462 +#: src/views/Edit/Profile.js:341 +#: src/views/Edit/Profile.js:471 msgid "Failed to probe the source. Please check the <0>probe details." msgstr "Prüfen der Quelle ist fehlgeschlagen. <0>Details der Überprüfung ansehen." @@ -819,7 +829,7 @@ msgstr "Prüfen der Quelle ist fehlgeschlagen. <0>Details der Überprüfung msgid "Failed to refresh token: {0}" msgstr "Token konnte nicht aktualisiert werden: {0}" -#: src/views/Edit/index.js:303 +#: src/views/Edit/index.js:304 msgid "Failed to save ingest metadata" msgstr "Speichern der Ingest-Metadaten fehlgeschlagen" @@ -827,7 +837,7 @@ msgstr "Speichern der Ingest-Metadaten fehlgeschlagen" msgid "Failed to stop process" msgstr "Prozess konnte nicht angehalten werden" -#: src/views/Playersite.js:301 +#: src/views/Playersite.js:303 msgid "Failed to store player size setting." msgstr "Die Einstellung für die Playergröße konnte nicht gespeichert werden." @@ -835,36 +845,36 @@ msgstr "Die Einstellung für die Playergröße konnte nicht gespeichert werden." msgid "Failed to store publication service ({0})" msgstr "Publikationsdienst konnte nicht gespeichert werden ({0})" -#: src/views/Edit/index.js:296 +#: src/views/Edit/index.js:297 msgid "Failed to update ingest process ({0})" msgstr "Aktualisierung des Ingest-Prozesses fehlgeschlagen ({0})" -#: src/views/Edit/index.js:309 +#: src/views/Edit/index.js:310 msgid "Failed to update the player" msgstr "Aktualisierung des Players fehlgeschlagen" -#: src/views/Edit/Wizard/index.js:361 -#: src/views/Edit/Wizard/index.js:821 +#: src/views/Edit/Wizard/index.js:375 +#: src/views/Edit/Wizard/index.js:838 msgid "Failed to verify the source. Please check the address." msgstr "Die Quelle konnte nicht verifiziert werden. Bitte Adresse prüfen." -#: src/views/Edit/Profile.js:540 +#: src/views/Edit/Profile.js:549 msgid "Finish" msgstr "Speichern" -#: src/views/Edit/Sources/VirtualVideo.js:170 +#: src/views/Edit/Sources/VirtualVideo.js:182 msgid "Flags" msgstr "Flaggen" -#: src/views/Playersite.js:759 +#: src/views/Playersite.js:772 msgid "For Javascripts." msgstr "Für Javascripte." -#: src/views/Playersite.js:699 +#: src/views/Playersite.js:712 msgid "For Stylesheets." msgstr "Für Stylesheets." -#: src/views/Edit/Sources/Network.js:423 +#: src/views/Edit/Sources/Network.js:439 msgid "Force input framerate" msgstr "Bildfrequenz für die Eingabe erzwingen" @@ -881,7 +891,7 @@ msgid "Framebuffer" msgstr "Bildspeicher" #: src/misc/coders/settings/Video.js:135 -#: src/views/Edit/Sources/Network.js:436 +#: src/views/Edit/Sources/Network.js:452 msgid "Framerate" msgstr "Bildfrequenz" @@ -889,21 +899,22 @@ msgstr "Bildfrequenz" msgid "Frequency (Hz)" msgstr "Frequenz (Hz)" -#: src/views/Publication/Services/Facebook.js:119 -#: src/views/Publication/Services/Facebook.js:141 +#: src/views/Publication/Services/Core.js:129 +#: src/views/Publication/Services/Facebook.js:115 +#: src/views/Publication/Services/Facebook.js:133 #: src/views/Publication/Services/Instagram.js:88 -#: src/views/Publication/Services/Restream.js:124 -#: src/views/Publication/Services/Twitch.js:137 +#: src/views/Publication/Services/Restream.js:120 +#: src/views/Publication/Services/Twitch.js:133 #: src/views/Publication/Services/Twitter.js:179 #: src/views/Publication/Services/Youtube.js:177 msgid "GET" msgstr "GET" -#: src/views/Edit/Sources/Network.js:455 -#: src/views/Edit/index.js:399 -#: src/views/Edit/index.js:411 -#: src/views/Playersite.js:348 -#: src/views/Playersite.js:361 +#: src/views/Edit/Sources/Network.js:471 +#: src/views/Edit/index.js:400 +#: src/views/Edit/index.js:412 +#: src/views/Playersite.js:350 +#: src/views/Playersite.js:363 #: src/views/Publication/Add.js:372 #: src/views/Publication/Edit.js:386 #: src/views/Publication/Services/DASH.js:211 @@ -918,52 +929,49 @@ msgstr "GET" msgid "General" msgstr "Allgemein" -#: src/views/Publication/Player.js:407 +#: src/views/Publication/Player.js:410 msgid "Google Analytics ID" msgstr "Google Analytics ID" -#: src/views/Publication/Player.js:417 +#: src/views/Publication/Player.js:420 msgid "Google Analytics Tracker Name" msgstr "Name Google Analytics Tracker" -#: src/views/Edit/index.js:469 +#: src/views/Edit/index.js:471 +#: src/views/Main/index.js:369 msgid "HLS" msgstr "HLS" -#: src/views/Main/index.js:367 -msgid "HLS URL" -msgstr "HLS URL" - -#: src/views/Settings.js:1505 +#: src/views/Settings.js:1510 msgid "HLS statistic for the In-memory storage" msgstr "HLS-Statistik für den In-Memory-Speicher" -#: src/views/Edit/Sources/Network.js:413 +#: src/views/Edit/Sources/Network.js:429 msgid "HTTP and HTTPS" msgstr "HTTP und HTTPS" -#: src/views/Settings.js:1318 +#: src/views/Settings.js:1323 msgid "HTTP port" msgstr "HTTP Port" -#: src/views/Settings.js:1347 +#: src/views/Settings.js:1352 msgid "HTTPS (SSL/TLS)" msgstr "HTTPS (SSL/TLS)" -#: src/views/Settings.js:1331 +#: src/views/Settings.js:1336 msgid "HTTPS port" msgstr "HTTPS Port" -#: src/views/Edit/Sources/V4L.js:145 -#: src/views/Edit/Wizard/Sources/V4L.js:120 +#: src/views/Edit/Sources/V4L.js:151 +#: src/views/Edit/Wizard/Sources/V4L.js:140 msgid "Hardware device" msgstr "Hardwaregerät" -#: src/views/Playersite.js:566 +#: src/views/Playersite.js:579 msgid "Header" msgstr "Kopfzeile" -#: src/views/Playersite.js:522 +#: src/views/Playersite.js:535 msgid "Headline" msgstr "Überschrift" @@ -971,7 +979,7 @@ msgstr "Überschrift" msgid "Hosted Restreamer interface" msgstr "Gehostete Restreamer-Oberfläche" -#: src/views/Settings.js:1253 +#: src/views/Settings.js:1258 msgid "Human readable name on the service." msgstr "Von Menschen lesbarer Name des Dienstes." @@ -979,32 +987,32 @@ msgstr "Von Menschen lesbarer Name des Dienstes." msgid "IP address" msgstr "IP-Adresse" -#: src/views/Settings.js:2003 +#: src/views/Settings.js:2008 msgid "If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port." msgstr "Wenn Sie die Ports geändert haben, kann es sein, dass Restreamer Core bereits neu gestartet wurde, aber jetzt auf einem anderen Port verfügbar ist." -#: src/views/Settings.js:1997 +#: src/views/Settings.js:2002 msgid "If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core." msgstr "Wenn Sie Let’s Encrypt TLS aktiviert haben, kann es einige Zeit dauern, die Zertifikate zu erwerben. Stellen Sie sicher, dass Restreamer Core über Port 80 aus dem Internet erreichbar ist. Bitte überprüfen Sie das Protokoll in der Konsole von Restreamer Core." -#: src/views/Settings.js:1520 +#: src/views/Settings.js:1525 msgid "Ignore IP ranges" msgstr "IP-Bereiche ignorieren" -#: src/views/Playersite.js:611 -#: src/views/Publication/Player.js:363 +#: src/views/Playersite.js:624 +#: src/views/Publication/Player.js:366 msgid "Image URL" msgstr "Bild-URL" -#: src/views/Playersite.js:636 +#: src/views/Playersite.js:649 msgid "Imprint" msgstr "Impressum" -#: src/views/Playersite.js:366 +#: src/views/Playersite.js:368 msgid "In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly." msgstr "Neben dem Player bietet der Restreamer eine komplette Landingpage, mit der Sie Ihren Live-Stream einfach und schnell präsentieren können." -#: src/views/Settings.js:1572 +#: src/views/Settings.js:1577 msgid "In-memory" msgstr "In-memory" @@ -1022,19 +1030,19 @@ msgstr "Inkompatibel" msgid "Inherit" msgstr "Übernehmen" -#: src/views/Playersite.js:694 +#: src/views/Playersite.js:707 msgid "Inject 1" msgstr "Inject 1" -#: src/views/Playersite.js:714 +#: src/views/Playersite.js:727 msgid "Inject 2" msgstr "Inject 2" -#: src/views/Playersite.js:734 +#: src/views/Playersite.js:747 msgid "Inject 3" msgstr "Inject 3" -#: src/views/Playersite.js:754 +#: src/views/Playersite.js:767 msgid "Inject 4" msgstr "Inject 4" @@ -1050,8 +1058,8 @@ msgstr "Interner RTMP-Server" msgid "Interval (seconds)" msgstr "Intervall (Sekunden)" -#: src/Header.js:298 -#: src/Header.js:339 +#: src/Header.js:295 +#: src/Header.js:336 msgid "Issue alert" msgstr "Fehler melden" @@ -1063,11 +1071,11 @@ msgstr "Keyframe-Intervall (Sekunden)" msgid "Layout" msgstr "Layout" -#: src/views/Settings.js:1352 +#: src/views/Settings.js:1357 msgid "Let's Encrypt certification" msgstr "Zertifizierung mit Let’s Encrypt" -#: src/views/Settings.js:1360 +#: src/views/Settings.js:1365 msgid "Let's Encrypt requires one or more public domain names and an accessible port 80/TCP." msgstr "Let’s Encrypt erfordert einen oder mehrere öffentliche Domainnamen und einen zugänglichen Port 80/TCP." @@ -1075,42 +1083,42 @@ msgstr "Let’s Encrypt erfordert einen oder mehrere öffentliche Domainnamen un msgid "Level" msgstr "Level" -#: src/views/Settings.js:1913 +#: src/views/Settings.js:1918 msgid "Level of system protocol." msgstr "Ebene des Systemprotokolls." -#: src/views/Edit/Wizard/index.js:1044 -#: src/views/Edit/index.js:402 -#: src/views/Edit/index.js:523 +#: src/views/Edit/Wizard/index.js:1061 +#: src/views/Edit/index.js:403 +#: src/views/Edit/index.js:525 msgid "License" msgstr "Lizenz" -#: src/views/Edit/Sources/VirtualVideo.js:167 +#: src/views/Edit/Sources/VirtualVideo.js:176 msgid "Life color" msgstr "Life color" -#: src/views/Playersite.js:593 +#: src/views/Playersite.js:606 msgid "Linecolor" msgstr "Linienfarbe" -#: src/views/Playersite.js:531 -#: src/views/Publication/Player.js:393 +#: src/views/Playersite.js:544 +#: src/views/Publication/Player.js:396 msgid "Link" msgstr "Link" -#: src/views/Playersite.js:540 +#: src/views/Playersite.js:553 msgid "Link, mouseover" msgstr "Link, Mouseover" -#: src/views/Settings.js:1528 +#: src/views/Settings.js:1533 msgid "List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions." msgstr "Liste der IP-Bereiche in CIDR-Notation, z. B. 127.0.0.1/32, die von der Statistik nicht erfasst werden sollen - ein IP-Bereich pro Zeile. Leer lassen, um alle Sitzungen aufzuzeichnen." -#: src/views/Settings.js:1746 +#: src/views/Settings.js:1751 msgid "List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types." msgstr "Liste der zu cachenden Dateierweiterungen (z. B. \".html\"), eine pro Zeile. Leer lassen, um alle Dateitypen zu cachen." -#: src/misc/controls/HLS.js:71 +#: src/misc/controls/HLS.js:74 msgid "List size (segments)" msgstr "Listengröße (Segmente)" @@ -1127,27 +1135,27 @@ msgid "Live-Streaming to Twitch Live RTMP Service." msgstr "Live-Streaming zu Twitch." #: src/views/Publication/Services/Vimeo.js:12 -msgid "Live-Streaming to Vimeos Live RTMP Service" +msgid "Live-Streaming to Vimeo Live RTMP Service" msgstr "Live-Streaming zu Vimeo" #: src/views/Publication/Services/Livespotting.js:94 msgid "Livesource ID" msgstr "Livesource-ID" -#: src/views/Settings.js:1865 +#: src/views/Settings.js:1870 msgid "Log level" msgstr "Protokollierungsebene" #: src/misc/modals/Process.js:90 #: src/views/Settings.js:1147 -#: src/views/Settings.js:1841 +#: src/views/Settings.js:1846 msgid "Logging" msgstr "Protokollieren" #: src/views/Login.js:297 #: src/views/Login.js:391 #: src/views/Login.js:406 -#: src/views/Publication/Services/Akamai.js:123 +#: src/views/Publication/Services/Akamai.js:124 msgid "Login" msgstr "Anmelden" @@ -1163,15 +1171,15 @@ msgstr "Login fehlgeschlagen: Konnte die API-Details nicht laden" msgid "Login failed: {0}" msgstr "Login fehlgeschlagen: {0}" -#: src/views/Settings.js:1420 +#: src/views/Settings.js:1425 msgid "Login/JWT authorization" msgstr "Anmeldung/JWT-Autorisierung" -#: src/views/Publication/Player.js:318 +#: src/views/Publication/Player.js:321 msgid "Logo" msgstr "Logo" -#: src/Header.js:310 +#: src/Header.js:307 msgid "Logout" msgstr "Abmelden" @@ -1179,12 +1187,12 @@ msgstr "Abmelden" msgid "MB" msgstr "MB" -#: src/views/Edit/index.js:379 +#: src/views/Edit/index.js:380 msgid "Main Source" msgstr "Hauptquelle" -#: src/views/Main/index.js:263 -#: src/views/Playersite.js:386 +#: src/views/Main/index.js:260 +#: src/views/Playersite.js:389 msgid "Main channel" msgstr "Hauptkanal" @@ -1192,11 +1200,11 @@ msgstr "Hauptkanal" msgid "Main channel not found" msgstr "Hauptkanal nicht gefunden" -#: src/views/Edit/Wizard/index.js:181 +#: src/views/Edit/Wizard/index.js:188 msgid "Main channel saved" msgstr "Hauptkanal gespeichert" -#: src/views/Playersite.js:409 +#: src/views/Playersite.js:412 msgid "Main page channel (index.html)." msgstr "Kanal auf der Startseite (index.html)" @@ -1209,19 +1217,19 @@ msgstr "Kanal auf der Startseite (index.html)" msgid "Maintainer:" msgstr "Gepflegt von:" -#: src/views/Settings.js:1705 +#: src/views/Settings.js:1710 msgid "Maximum allowed cache size, 0 for unlimited." msgstr "Maximal zulässige Cache-Größe, 0 für unbegrenzt." -#: src/views/Settings.js:1627 +#: src/views/Settings.js:1632 msgid "Maximum allowed megabytes of RAM for /memfs, 0 for unlimited." msgstr "Maximal erlaubte MB RAM für /memfs, 0 für unbegrenzt." -#: src/views/Settings.js:1671 +#: src/views/Settings.js:1676 msgid "Maximum allowed megabytes to consume from hard disk. 0 for unlimited." msgstr "Maximal erlaubte MB, die von der Festplatte verbraucht werden dürfen. 0 für unbegrenzt." -#: src/views/Settings.js:1389 +#: src/views/Settings.js:1394 msgid "Maximum bandwidth Mbit/s" msgstr "Maximale Bandbreite Mbit/s" @@ -1229,34 +1237,34 @@ msgstr "Maximale Bandbreite Mbit/s" msgid "Maximum delay in milliseconds." msgstr "Maximale Latenz (Ms)." -#: src/views/Settings.js:1723 +#: src/views/Settings.js:1728 msgid "Maximum file size (Megabytes)" msgstr "Maximale Dateigröße (MB)" -#: src/views/Settings.js:1731 +#: src/views/Settings.js:1736 msgid "Maximum file size to put in cache." msgstr "Maximale Dateigröße, die in den Cache gestellt wird." -#: src/views/Settings.js:1949 +#: src/views/Settings.js:1954 msgid "Maximum log histroy" msgstr "Maximale Protokollhistorie" -#: src/views/Settings.js:1918 -#: src/views/Settings.js:1936 +#: src/views/Settings.js:1923 +#: src/views/Settings.js:1941 msgid "Maximum log lines" msgstr "Maximale Protokollzeilen" -#: src/views/Settings.js:1619 -#: src/views/Settings.js:1663 -#: src/views/Settings.js:1697 +#: src/views/Settings.js:1624 +#: src/views/Settings.js:1668 +#: src/views/Settings.js:1702 msgid "Maximum size (Megabytes)" msgstr "Maximale Größe (Megabytes)" -#: src/views/Settings.js:1537 +#: src/views/Settings.js:1542 msgid "Maximum viewer idle time (Seconds)" msgstr "Maximale Zuschauer Leerzeit (Sekunden)" -#: src/views/Settings.js:1373 +#: src/views/Settings.js:1378 msgid "Maximum viewers" msgstr "Maximale Anzahl von Zuschauenden" @@ -1264,12 +1272,12 @@ msgstr "Maximale Anzahl von Zuschauenden" msgid "Memory" msgstr "Arbeitsspeicher" -#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:402 msgid "Meta information" msgstr "Meta-Informationen" -#: src/views/Edit/Wizard/index.js:989 -#: src/views/Edit/index.js:503 +#: src/views/Edit/Wizard/index.js:1006 +#: src/views/Edit/index.js:505 msgid "Metadata" msgstr "Metadaten" @@ -1291,44 +1299,44 @@ msgstr "Mehr über das Urheberrecht von YouTube <0>hier." msgid "More about licenses here" msgstr "Mehr über die Lizenzen hier" -#: src/views/Settings.js:1222 +#: src/views/Settings.js:1227 msgid "More about the service" msgstr "Mehr über den Service" -#: src/views/Publication/Player.js:435 +#: src/views/Publication/Player.js:438 msgid "Mute" msgstr "Stumm" #: src/misc/ChannelList.js:380 -#: src/misc/controls/Metadata.js:79 -#: src/misc/controls/Metadata.js:101 -#: src/views/Playersite.js:476 -#: src/views/Settings.js:1245 +#: src/misc/controls/Metadata.js:76 +#: src/misc/controls/Metadata.js:98 +#: src/views/Playersite.js:489 +#: src/views/Settings.js:1250 msgid "Name" msgstr "Name" -#: src/views/Playersite.js:481 +#: src/views/Playersite.js:494 msgid "Name for the template. If the name already exists, it will be overwritten." msgstr "Templatename. Wenn der Name existiert, wird er überschrieben." #: src/views/Settings.js:1142 -#: src/views/Settings.js:1292 +#: src/views/Settings.js:1297 msgid "Network" msgstr "Netzwerk" -#: src/views/Edit/Sources/Network.js:668 +#: src/views/Edit/Sources/Network.js:684 #: src/views/Edit/Wizard/Sources/Network.js:110 msgid "Network source" msgstr "Netzwerk-Quelle" -#: src/views/Edit/Wizard/index.js:399 -#: src/views/Edit/Wizard/index.js:635 -#: src/views/Edit/Wizard/index.js:900 -#: src/views/Edit/Wizard/index.js:1012 +#: src/views/Edit/Wizard/index.js:413 +#: src/views/Edit/Wizard/index.js:652 +#: src/views/Edit/Wizard/index.js:917 +#: src/views/Edit/Wizard/index.js:1029 msgid "Next" msgstr "Weiter" -#: src/views/Edit/Profile.js:405 +#: src/views/Edit/Profile.js:413 msgid "Next: Audio" msgstr "Weiter: Audio" @@ -1336,12 +1344,12 @@ msgstr "Weiter: Audio" msgid "Next: Video setup" msgstr "Weiter: Video-Einrichtung" -#: src/views/Edit/Wizard/index.js:1165 +#: src/views/Edit/Wizard/index.js:1182 msgid "No" msgstr "Nein" #: src/views/Edit/Sources/NoAudio.js:45 -#: src/views/Edit/Wizard/index.js:884 +#: src/views/Edit/Wizard/index.js:901 msgid "No audio" msgstr "Kein Audio" @@ -1349,7 +1357,12 @@ msgstr "Kein Audio" msgid "No audio stream available" msgstr "Kein Audiostream verfügbar" -#: src/views/Edit/Wizard/index.js:359 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:70 +#: src/views/Edit/Wizard/Sources/V4L.js:99 +msgid "No input device available" +msgstr "Kein Eingabegerät vorhanden" + +#: src/views/Edit/Wizard/index.js:373 msgid "No live stream was detected. Please check the software that sends the stream." msgstr "Es wurde kein Livestream erkannt. Bitte die Software überprüfen, die den Stream sendet." @@ -1357,12 +1370,16 @@ msgstr "Es wurde kein Livestream erkannt. Bitte die Software überprüfen, die d msgid "No source selected" msgstr "Keine Quelle ausgewählt" -#: src/misc/EncodingSelect.js:152 +#: src/views/Edit/SourceSelect.js:174 +msgid "No sources available" +msgstr "Keine Quellen verfügbar" + +#: src/misc/EncodingSelect.js:164 msgid "No suitable encoder found." msgstr "Keine passender Encoder gefunden." -#: src/views/Main/index.js:289 -#: src/views/Publication/Player.js:291 +#: src/views/Main/index.js:286 +#: src/views/Publication/Player.js:294 msgid "No video" msgstr "Kein Video" @@ -1370,7 +1387,7 @@ msgstr "Kein Video" msgid "No video stream available" msgstr "Kein Videostream verfügbar" -#: src/views/Settings.js:1238 +#: src/views/Settings.js:1243 msgid "Node ID" msgstr "Knoten-ID" @@ -1378,36 +1395,36 @@ msgstr "Knoten-ID" msgid "Noise" msgstr "Rauschen" -#: src/views/Edit/Sources/AVFoundation.js:139 +#: src/views/Edit/Sources/AVFoundation.js:145 #: src/views/Edit/Summary.js:30 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:98 msgid "None" msgstr "Keine" -#: src/views/Playersite.js:351 -#: src/views/Playersite.js:631 +#: src/views/Playersite.js:353 +#: src/views/Playersite.js:644 msgid "Notes" msgstr "Hinweise" -#: src/views/Settings.js:1926 -#: src/views/Settings.js:1944 +#: src/views/Settings.js:1931 +#: src/views/Settings.js:1949 msgid "Number of log lines to keep." msgstr "Anzahl der Protokollzeilen, die aufbewahrt werden sollen." -#: src/views/Settings.js:1957 +#: src/views/Settings.js:1962 msgid "Number of logs to keep for each process." msgstr "Anzahl der Protokolle, die je Prozess aufbewahrt werden sollen." -#: src/views/Playersite.js:800 -#: src/views/Publication/Player.js:463 +#: src/views/Playersite.js:813 +#: src/views/Publication/Player.js:466 msgid "OK" msgstr "OK" -#: src/views/Settings.js:1492 +#: src/views/Settings.js:1497 msgid "One referrer per line, e.g. http://www.example.com" msgstr "Ein Referrer pro Zeile, wie http://www.beispiel.com" -#: src/views/Playersite.js:785 +#: src/views/Playersite.js:798 msgid "Open" msgstr "Öffnen" @@ -1415,32 +1432,32 @@ msgstr "Öffnen" msgid "Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources." msgstr "Passthrough (Kopieren) sollte nur bei Bedarf deaktiviert werden. Jede Kodierung erfordert zusätzliche CPU/GPU-Ressourcen." -#: src/views/Edit/Sources/Network.js:366 +#: src/views/Edit/Sources/Network.js:382 #: src/views/Edit/Wizard/Sources/Network.js:88 #: src/views/Login.js:282 -#: src/views/Publication/Services/Akamai.js:133 +#: src/views/Publication/Services/Akamai.js:134 #: src/views/Publication/Services/DASH.js:198 #: src/views/Publication/Services/DaCast.js:142 #: src/views/Publication/Services/HLS.js:187 #: src/views/Publication/Services/RTSP.js:156 #: src/views/Publication/Services/Red5.js:157 #: src/views/Publication/Services/WOWZA.js:178 -#: src/views/Settings.js:1448 -#: src/views/Settings.js:1606 +#: src/views/Settings.js:1453 +#: src/views/Settings.js:1611 msgid "Password" msgstr "Passwort" -#: src/views/Settings.js:1454 -#: src/views/Settings.js:1614 +#: src/views/Settings.js:1459 +#: src/views/Settings.js:1619 msgid "Password for authorization." msgstr "Passwort für die Autorisierung." -#: src/views/Edit/Sources/Network.js:371 +#: src/views/Edit/Sources/Network.js:387 #: src/views/Edit/Wizard/Sources/Network.js:90 msgid "Password for the device." msgstr "Passwort von dem Gerät." -#: src/views/Settings.js:1550 +#: src/views/Settings.js:1555 msgid "Persist viewer statistics" msgstr "Betrachterstatistiken beibehalten" @@ -1456,9 +1473,9 @@ msgstr "Plan: <0>Starter" msgid "Platforms" msgstr "Plattformen" -#: src/views/Publication/Player.js:320 +#: src/views/Publication/Player.js:323 #: src/views/Settings.js:1144 -#: src/views/Settings.js:1463 +#: src/views/Settings.js:1468 msgid "Playback" msgstr "Wiedergabe" @@ -1466,16 +1483,16 @@ msgstr "Wiedergabe" msgid "Player" msgstr "Player" -#: src/views/Publication/Player.js:325 +#: src/views/Publication/Player.js:328 msgid "Player URL" msgstr "Player-URL" -#: src/views/Publication/Player.js:254 +#: src/views/Publication/Player.js:257 msgid "Player settings saved" msgstr "Playereinstellungen gespeichert" -#: src/Header.js:270 -#: src/views/Playersite.js:372 +#: src/Header.js:267 +#: src/views/Playersite.js:375 msgid "Playersite" msgstr "Playerseite" @@ -1484,15 +1501,15 @@ msgstr "Playerseite" msgid "Playlist" msgstr "Wiedergabeliste" -#: src/views/Main/index.js:332 +#: src/views/Main/index.js:329 msgid "Please check the <0>process log" msgstr "Bitte <0>Prozessprotokoll prüfen" -#: src/views/Publication/Services/Akamai.js:28 +#: src/views/Publication/Services/Akamai.js:29 #: src/views/Publication/Services/Bitmovin.js:23 #: src/views/Publication/Services/Brightcove.js:23 -#: src/views/Publication/Services/CDN77.js:24 -#: src/views/Publication/Services/Core.js:25 +#: src/views/Publication/Services/CDN77.js:23 +#: src/views/Publication/Services/Core.js:26 #: src/views/Publication/Services/DASH.js:35 #: src/views/Publication/Services/DaCast.js:26 #: src/views/Publication/Services/HLS.js:37 @@ -1511,8 +1528,8 @@ msgid "Please contact the operator of the service and check what happens." msgstr "An den Betreiber des Dienstes wenden und prüfen, was passiert ist." #: src/views/Playersite.js:122 -#: src/views/Playersite.js:196 -#: src/views/Publication/Player.js:157 +#: src/views/Playersite.js:197 +#: src/views/Publication/Player.js:159 msgid "Please select a file to upload." msgstr "Datei zum Hochladen auswählen." @@ -1520,21 +1537,21 @@ msgstr "Datei zum Hochladen auswählen." msgid "Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources." msgstr "„Passthrough (Kopieren)“ sollte nur deaktiviert werden, wenn es erforderlich ist. Jedes weitere Encoding benötigt zusätzliche CPU/GPU Ressourcen." -#: src/views/Edit/Wizard/index.js:418 -#: src/views/Edit/Wizard/index.js:916 +#: src/views/Edit/Wizard/index.js:435 +#: src/views/Edit/Wizard/index.js:933 msgid "Please wait. Probe stream data ..." msgstr "Bitte warten — der Stream wird geprüft ..." -#: src/views/Edit/Wizard/index.js:1086 +#: src/views/Edit/Wizard/index.js:1103 msgid "Please wait. Setting up the stream ..." msgstr "Bitte warten — einrichten des Streams ..." #: src/views/Publication/Services/Bitmovin.js:92 -#: src/views/Settings.js:1798 +#: src/views/Settings.js:1803 msgid "Port" msgstr "Port" -#: src/views/Publication/Player.js:378 +#: src/views/Publication/Player.js:381 msgid "Position" msgstr "Position" @@ -1552,20 +1569,20 @@ msgstr "Primärer Stream" msgid "Primary stream key" msgstr "Primärer Stream-Schlüssel" -#: src/views/Edit/Sources/ALSA.js:131 -#: src/views/Edit/Sources/AVFoundation.js:192 +#: src/views/Edit/Sources/ALSA.js:136 +#: src/views/Edit/Sources/AVFoundation.js:201 #: src/views/Edit/Sources/Framebuffer.js:110 -#: src/views/Edit/Sources/Network.js:489 -#: src/views/Edit/Sources/Network.js:536 -#: src/views/Edit/Sources/Network.js:583 +#: src/views/Edit/Sources/Network.js:505 +#: src/views/Edit/Sources/Network.js:552 +#: src/views/Edit/Sources/Network.js:599 #: src/views/Edit/Sources/Raspicam.js:113 -#: src/views/Edit/Sources/V4L.js:126 +#: src/views/Edit/Sources/V4L.js:131 #: src/views/Edit/Sources/VirtualAudio.js:169 -#: src/views/Edit/Sources/VirtualVideo.js:176 +#: src/views/Edit/Sources/VirtualVideo.js:188 msgid "Probe" msgstr "Prüfen" -#: src/views/Edit/index.js:491 +#: src/views/Edit/index.js:493 #: src/views/Publication/Add.js:433 #: src/views/Publication/Edit.js:441 msgid "Process" @@ -1580,40 +1597,41 @@ msgstr "Prozesskontrolle" msgid "Process debug" msgstr "Prozess-Fehlerbehebung" -#: src/views/Main/index.js:407 +#: src/views/Main/index.js:413 #: src/views/Publication/Edit.js:591 msgid "Process debug report" msgstr "Prozess-Fehlerbehebungsbericht" -#: src/views/Main/index.js:383 -#: src/views/Main/index.js:399 +#: src/views/Main/index.js:389 +#: src/views/Main/index.js:405 #: src/views/Publication/Edit.js:468 #: src/views/Publication/Edit.js:583 msgid "Process details" msgstr "Prozess-Details" -#: src/views/Main/index.js:386 +#: src/views/Main/index.js:392 msgid "Process report" msgstr "Prozess-Bericht" -#: src/views/Edit/index.js:400 -#: src/views/Edit/index.js:461 +#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:463 msgid "Processing & Control" msgstr "Verarbeitung & Steuerung" #: src/misc/coders/Encoders/video/H264NVENC.js:92 +#: src/misc/coders/Encoders/video/H264VAAPI.js:82 #: src/misc/coders/settings/Video.js:142 -#: src/views/Edit/Wizard/index.js:590 +#: src/views/Edit/Wizard/index.js:607 msgid "Profile" msgstr "Profil" -#: src/views/Edit/Sources/Network.js:504 -#: src/views/Publication/Services/Akamai.js:143 -#: src/views/Publication/Services/Akamai.js:181 +#: src/views/Edit/Sources/Network.js:520 +#: src/views/Publication/Services/Akamai.js:144 +#: src/views/Publication/Services/Akamai.js:182 #: src/views/Publication/Services/Bitmovin.js:86 #: src/views/Publication/Services/Brightcove.js:87 -#: src/views/Publication/Services/CDN77.js:91 -#: src/views/Publication/Services/Core.js:90 +#: src/views/Publication/Services/CDN77.js:90 +#: src/views/Publication/Services/Core.js:91 #: src/views/Publication/Services/DASH.js:186 #: src/views/Publication/Services/DaCast.js:110 #: src/views/Publication/Services/DaCast.js:168 @@ -1634,7 +1652,7 @@ msgstr "Protokoll" msgid "Protocols" msgstr "Protokolle" -#: src/views/Settings.js:1302 +#: src/views/Settings.js:1307 msgid "Public domain/s" msgstr "Öffentliceh Domain/s" @@ -1643,7 +1661,7 @@ msgstr "Öffentliceh Domain/s" msgid "Publication service not found" msgstr "Publikationsdienst nicht gefunden" -#: src/views/Playersite.js:317 +#: src/views/Playersite.js:319 msgid "Publication website settings saved" msgstr "Einstellungen der Publication Webseite gespeichert" @@ -1651,15 +1669,16 @@ msgstr "Einstellungen der Publication Webseite gespeichert" msgid "Publications" msgstr "Publikationen" -#: src/views/Edit/Sources/Network.js:641 +#: src/views/Edit/Sources/Network.js:657 msgid "Pull Mode" msgstr "Abholmodus" -#: src/views/Edit/Sources/Network.js:640 +#: src/views/Edit/Sources/Network.js:656 msgid "Pull or recieve the data:" msgstr "Daten abholen oder empfangen:" #: src/misc/Progress.js:90 +#: src/misc/coders/Encoders/video/H264VAAPI.js:137 msgid "Quality" msgstr "Qualität" @@ -1667,37 +1686,37 @@ msgstr "Qualität" msgid "RGB test pattern" msgstr "RGB-Testbild" -#: src/views/Settings.js:1819 +#: src/views/Settings.js:1824 msgid "RTMP app for publishing." msgstr "RTMP-App für die Veröffentlichung." -#: src/views/Settings.js:1760 +#: src/views/Settings.js:1765 msgid "RTMP server" msgstr "RTMP-Server" -#: src/views/Edit/Sources/Network.js:556 +#: src/views/Edit/Sources/Network.js:572 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:50 msgid "RTMP server is not enabled" msgstr "RTMP-Server ist nicht aktiviert" -#: src/views/Settings.js:1806 +#: src/views/Settings.js:1811 msgid "RTMP server listen address." msgstr "RTMP-Server Lauschadresse." -#: src/views/Settings.js:1832 +#: src/views/Settings.js:1837 msgid "RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'" msgstr "RTMP-Token für die Veröffentlichung und Wiedergabe. Das Token ist der Wert des URL-Abfrageparameters „token“." #: src/views/Settings.js:1146 -#: src/views/Settings.js:1755 +#: src/views/Settings.js:1760 msgid "RTMP/S" msgstr "RTMP/S" -#: src/views/Settings.js:1767 +#: src/views/Settings.js:1772 msgid "RTMPS server" msgstr "RTMPS-Server" -#: src/views/Edit/Sources/Network.js:389 +#: src/views/Edit/Sources/Network.js:405 msgid "RTSP" msgstr "RTSP" @@ -1707,6 +1726,7 @@ msgid "Raspberry Pi camera" msgstr "Raspberry Pi Kamera" #: src/misc/coders/Encoders/video/H264NVENC.js:144 +#: src/misc/coders/Encoders/video/H264VAAPI.js:63 msgid "Rate control" msgstr "Ratenkontrolle" @@ -1714,11 +1734,11 @@ msgstr "Ratenkontrolle" msgid "Ratio" msgstr "Verhältnis" -#: src/views/Edit/Sources/Network.js:418 +#: src/views/Edit/Sources/Network.js:434 msgid "Read input at native speed" msgstr "Eingabe mit nativer Geschwindigkeit lesen" -#: src/views/Edit/Sources/Network.js:642 +#: src/views/Edit/Sources/Network.js:658 msgid "Receive Mode" msgstr "Empfangsmodus" @@ -1732,13 +1752,13 @@ msgstr "Wiederverbinden" msgid "Reconnect delay (seconds)" msgstr "Verzögerung beim Wiederherstellen der Verbindung (Sekunden)" -#: src/views/Main/index.js:343 +#: src/views/Main/index.js:340 #: src/views/Publication/Process.js:68 #: src/views/Publication/Process.js:81 msgid "Reconnecting in {0}s" msgstr "Wiederverbinden in {0}s" -#: src/views/Settings.js:1994 +#: src/views/Settings.js:1999 msgid "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." msgstr "Die Wiederherstellung der Verbindung zum Restreamer Core ist in den letzten {RETRIES} Sekunden fehlgeschlagen." @@ -1746,6 +1766,14 @@ msgstr "Die Wiederherstellung der Verbindung zum Restreamer Core ist in den letz msgid "Reconnecting to Restreamer Core failed." msgstr "Die Wiederherstellung der Verbindung zu Restreamer Core ist fehlgeschlagen." +#: src/views/Edit/Sources/ALSA.js:122 +#: src/views/Edit/Sources/AVFoundation.js:181 +#: src/views/Edit/Sources/V4L.js:117 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:135 +#: src/views/Edit/Wizard/Sources/V4L.js:120 +msgid "Refresh" +msgstr "Aktualisieren" + #: src/views/Publication/Services/Restream.js:86 #: src/views/Publication/Services/Twitch.js:78 #: src/views/Publication/Services/Twitter.js:150 @@ -1754,36 +1782,36 @@ msgid "Region" msgstr "Region" #: src/views/Password.js:159 -#: src/views/Settings.js:2014 +#: src/views/Settings.js:2019 msgid "Reload" msgstr "Erneut laden" -#: src/views/Settings.js:1632 +#: src/views/Settings.js:1637 msgid "Remove the oldest entries if the /memfs is full" msgstr "Älteste Einträge entfernen, wenn das /memfs voll ist" -#: src/views/Settings.js:1779 +#: src/views/Settings.js:1784 msgid "Requires activation" msgstr "Aktivierung erforderlich" -#: src/views/Settings.js:1201 -#: src/views/Settings.js:2031 -#: src/views/Settings.js:2044 -#: src/views/Settings.js:2053 +#: src/views/Settings.js:1206 +#: src/views/Settings.js:2036 +#: src/views/Settings.js:2049 +#: src/views/Settings.js:2058 msgid "Restart" msgstr "Neustart" -#: src/views/Settings.js:2022 +#: src/views/Settings.js:2027 msgid "Restart required" msgstr "Neustart erforderlich" #: src/views/Password.js:136 -#: src/views/Settings.js:1982 +#: src/views/Settings.js:1987 msgid "Restarting" msgstr "Neustart" #: src/views/Password.js:141 -#: src/views/Settings.js:1987 +#: src/views/Settings.js:1992 msgid "Restarting Restreamer Core ..." msgstr "Neustart von Restreamer Core …" @@ -1791,15 +1819,15 @@ msgstr "Neustart von Restreamer Core …" msgid "Restarting the application failed." msgstr "Neustart der Anwendung ist fehlgeschlagen." -#: src/views/Settings.js:1229 +#: src/views/Settings.js:1234 msgid "Restreamer Service" msgstr "Restreamer Service" -#: src/views/Main/index.js:242 +#: src/views/Main/index.js:239 msgid "Retrieving stream data ..." msgstr "Abrufen von Streamdaten ..." -#: src/views/Edit/Wizard/index.js:1111 +#: src/views/Edit/Wizard/index.js:1128 #: src/views/Invalid.js:43 #: src/views/Settings.js:1116 msgid "Retry" @@ -1813,13 +1841,13 @@ msgstr "Regel" msgid "Sampling" msgstr "Sampling" -#: src/views/Edit/Wizard/index.js:1070 -#: src/views/Edit/index.js:558 -#: src/views/Playersite.js:775 +#: src/views/Edit/Wizard/index.js:1087 +#: src/views/Edit/index.js:560 +#: src/views/Playersite.js:788 #: src/views/Publication/Add.js:534 #: src/views/Publication/Edit.js:571 -#: src/views/Publication/Player.js:449 -#: src/views/Settings.js:1972 +#: src/views/Publication/Player.js:452 +#: src/views/Settings.js:1977 msgid "Save" msgstr "Speichern" @@ -1827,7 +1855,7 @@ msgstr "Speichern" msgid "Scale" msgstr "Skalierung" -#: src/views/Settings.js:1718 +#: src/views/Settings.js:1723 msgid "Seconds to keep files in cache." msgstr "Sekunden, um Dateien im Cache zu halten." @@ -1843,24 +1871,24 @@ msgstr "Sekunden, bis ein hängender Prozess beendet wird." msgid "Seconds until the snapshot/thumbnail of the video source is updated." msgstr "Sekunden, bis ein Vorschaubild (JPEG) der Videoquelle aktualisiert wird." -#: src/views/Settings.js:1468 +#: src/views/Settings.js:1473 msgid "Security" msgstr "Sicherheit" -#: src/views/Publication/Services/Core.js:127 +#: src/views/Publication/Services/Core.js:122 #: src/views/Publication/Services/Livespotting.js:103 msgid "Security token" msgstr "Sicherheit Token" -#: src/views/Publication/Player.js:339 +#: src/views/Publication/Player.js:342 msgid "Seekbar color" msgstr "Seekbar Farbe" -#: src/misc/controls/HLS.js:59 +#: src/misc/controls/HLS.js:62 msgid "Segment length (seconds)" msgstr "Segmentlänge (Sek)" -#: src/misc/controls/HLS.js:64 +#: src/misc/controls/HLS.js:67 msgid "Segment will be cut on the following keyframe after this time has passed. 2 is recommended." msgstr "Das Segment wird nach Ablauf dieser Zeit auf dem folgenden Keyframe geschnitten. 2 wird empfohlen." @@ -1869,20 +1897,20 @@ msgstr "Das Segment wird nach Ablauf dieser Zeit auf dem folgenden Keyframe gesc msgid "Segmentation" msgstr "Segmentierung" -#: src/views/Edit/Sources/ALSA.js:114 -#: src/views/Edit/Sources/AVFoundation.js:166 +#: src/views/Edit/Sources/ALSA.js:108 +#: src/views/Edit/Sources/AVFoundation.js:172 #: src/views/Edit/Sources/Framebuffer.js:99 #: src/views/Edit/Sources/Raspicam.js:96 -#: src/views/Edit/Sources/V4L.js:109 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:101 +#: src/views/Edit/Sources/V4L.js:103 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:120 #: src/views/Edit/Wizard/Sources/Raspicam.js:95 -#: src/views/Edit/Wizard/Sources/V4L.js:98 +#: src/views/Edit/Wizard/Sources/V4L.js:114 msgid "Select a device:" msgstr "Auswahl Gerät:" #: src/views/Edit/Sources/VirtualAudio.js:84 -msgid "Select audio Source:" -msgstr "Audioquelle auswählen:" +msgid "Select audio source:" +msgstr "Audio-Quelle auswählen:" #: src/views/Edit/Sources/VirtualVideo.js:114 msgid "Select source ..." @@ -1892,32 +1920,32 @@ msgstr "Auswahl Quelle ..." msgid "Select video source:" msgstr "Videoquelle auswählen:" -#: src/views/Edit/Wizard/index.js:261 +#: src/views/Edit/Wizard/index.js:268 msgid "Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer)." msgstr "Wählen Sie aus, ob Sie den Stream von einer <0>Netzwerkquelle (z. B. einer Netzwerkkamera) oder dem <1>internen RTMP-Server (z. B. OBS-Streams an den Restreamer) beziehen." -#: src/misc/EncodingSelect.js:184 +#: src/misc/EncodingSelect.js:196 msgid "Select your encoding setting:" msgstr "Einstellungen für die Encodierung:" -#: src/views/Playersite.js:575 +#: src/views/Playersite.js:588 msgid "Selected" msgstr "Ausgewählt" -#: src/views/Playersite.js:392 +#: src/views/Playersite.js:395 msgid "Selected channel" msgstr "Auswahl" -#: src/views/Playersite.js:438 +#: src/views/Playersite.js:449 msgid "Selection" msgstr "Auswahl" -#: src/views/Settings.js:1185 +#: src/views/Settings.js:1190 msgid "Send anonymous metrics (helps us for future development)" msgstr "Sende anonyme Anwendungsdaten (Hilft den Restreamer kontinuierlich zu verbessern)" -#: src/views/Edit/Sources/Network.js:526 -#: src/views/Edit/Sources/Network.js:573 +#: src/views/Edit/Sources/Network.js:542 +#: src/views/Edit/Sources/Network.js:589 #: src/views/Edit/Wizard/Sources/InternalHLS.js:48 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:68 msgid "Send stream to this address:" @@ -1931,10 +1959,10 @@ msgstr "Sendet das Video zum Bildspeicher" msgid "Server" msgstr "Server" -#: src/Header.js:260 +#: src/Header.js:257 #: src/views/Login.js:246 #: src/views/Settings.js:1140 -#: src/views/Settings.js:1215 +#: src/views/Settings.js:1220 msgid "Service" msgstr "Service" @@ -1943,7 +1971,7 @@ msgstr "Service" msgid "Service name" msgstr "Name des Dienstes" -#: src/views/Settings.js:1266 +#: src/views/Settings.js:1271 msgid "Service token for monitoring." msgstr "Servicetoken für die Überwachung." @@ -1951,15 +1979,15 @@ msgstr "Servicetoken für die Überwachung." msgid "Sessions" msgstr "Zuschauer" -#: src/views/Settings.js:1397 +#: src/views/Settings.js:1402 msgid "Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Legt eine Begrenzung der Bandbreite in Mbit/s für die ausgehende HLS-Datenübertragung fest. Alle Dienste, wie RTMP und ausgehende Prozesse, werden in die Berechnung einbezogen. Wenn die Bandbreite überschritten wird, erhalten HLS-Zuschauende den HTTP-Statuscode 509 (Bandwidth Limit Exceeded). 0 ist unbegrenzt." -#: src/views/Settings.js:1381 +#: src/views/Settings.js:1386 msgid "Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Legt ein Limit für die Zuschauenden in der HLS-Sitzungen fest. Wenn das Limit überschritten wird, erhalten HLS-Zuschauende den HTTP-Statuscode 509 (Bandbreitenlimit überschritten). 0 ist unbegrenzt." -#: src/views/Settings.js:1220 +#: src/views/Settings.js:1225 msgid "Setting for connection to the service." msgstr "Einstellung für die Anbindung an den Service." @@ -1971,11 +1999,11 @@ msgstr "Einstellungen" msgid "Settings (expert mode)" msgstr "Einstellungen (Experten-Modus)" -#: src/views/Settings.js:1648 +#: src/views/Settings.js:1653 msgid "Settings for /data path. The access is protected by" msgstr "Eintellungen für den /data Pfad. Der Zugriff wird geschützt durch" -#: src/views/Settings.js:1575 +#: src/views/Settings.js:1580 msgid "Settings for /memfs path." msgstr "Einstellung für den /memfs Pfad." @@ -1983,7 +2011,11 @@ msgstr "Einstellung für den /memfs Pfad." msgid "Settings saved. All changes will be applied after restarting the application." msgstr "Einstellungen gespeichert. Die Änderungen werden nach einem Neustart der Anwendungen übernommen." -#: src/views/Playersite.js:420 +#: src/views/Playersite.js:417 +msgid "Share button" +msgstr "Share-Button" + +#: src/views/Playersite.js:431 msgid "Shows a reference to the project." msgstr "Zeigt einen Hinweis auf das Projekt." @@ -1995,7 +2027,7 @@ msgstr "Anmelden (Kostenlos)" msgid "Silence" msgstr "Stille" -#: src/views/Edit/Wizard/index.js:881 +#: src/views/Edit/Wizard/index.js:898 msgid "Silence Audio" msgstr "Stilles Audio" @@ -2003,7 +2035,7 @@ msgstr "Stilles Audio" msgid "Sine" msgstr "Sinus" -#: src/views/Playersite.js:378 +#: src/views/Playersite.js:381 msgid "Sitename" msgstr "Seitenname" @@ -2011,7 +2043,8 @@ msgstr "Seitenname" msgid "Size" msgstr "Grösse" -#: src/views/Edit/index.js:480 +#: src/views/Edit/index.js:482 +#: src/views/Main/index.js:372 msgid "Snapshot" msgstr "Vorschaubild" @@ -2019,7 +2052,7 @@ msgstr "Vorschaubild" msgid "Social-login (OAuth2, 2FA)" msgstr "Social-login (OAuth2, 2FA)" -#: src/views/Edit/Sources/Network.js:402 +#: src/views/Edit/Sources/Network.js:418 msgid "Socket timeout (microseconds)" msgstr "Socket-Zeitüberschreitung (Mikrosekunden)" @@ -2040,33 +2073,33 @@ msgstr "Geschwindigkeit" msgid "Stale timeout (seconds)" msgstr "Zeitüberschreitung (Sekunden)" -#: src/views/Publication/Player.js:319 -#: src/views/Settings.js:1500 +#: src/views/Publication/Player.js:322 +#: src/views/Settings.js:1505 msgid "Statistics" msgstr "Statistiken" #: src/views/Settings.js:1145 -#: src/views/Settings.js:1567 +#: src/views/Settings.js:1572 msgid "Storage" msgstr "Speicherplatz" -#: src/views/Settings.js:1558 +#: src/views/Settings.js:1563 msgid "Stores the viewer statistics to the disk." msgstr "Speichert die Zuschauerstatistik auf der Festplatte." #: src/views/Edit/StreamSelect.js:30 #: src/views/Edit/StreamSelect.js:36 #: src/views/Edit/StreamSelect.js:81 -#: src/views/Edit/Wizard/index.js:861 +#: src/views/Edit/Wizard/index.js:878 msgid "Stream" msgstr "Stream" -#: src/views/Publication/Services/Akamai.js:155 -#: src/views/Publication/Services/CDN77.js:103 +#: src/views/Publication/Services/Akamai.js:156 +#: src/views/Publication/Services/CDN77.js:102 msgid "Stream URL" msgstr "Stream-URL" -#: src/views/Publication/Services/CDN77.js:114 +#: src/views/Publication/Services/CDN77.js:113 #: src/views/Publication/Services/DaCast.js:153 #: src/views/Publication/Services/Dummy.js:274 #: src/views/Publication/Services/Instagram.js:84 @@ -2079,41 +2112,41 @@ msgid "Stream key" msgstr "Stream-Schlüssel" #: src/views/Publication/Services/Brightcove.js:101 -#: src/views/Publication/Services/Core.js:118 +#: src/views/Publication/Services/Core.js:113 #: src/views/Publication/Services/Red5.js:136 #: src/views/Publication/Services/WOWZA.js:158 msgid "Stream name" msgstr "Streamname" -#: src/views/Publication/Services/Akamai.js:166 +#: src/views/Publication/Services/Akamai.js:167 msgid "Stream names" msgstr "Streamnamen" -#: src/views/Playersite.js:414 +#: src/views/Playersite.js:425 msgid "Support datarhei Restreamer" msgstr "Unterstütze datarhei Restreamer" -#: src/views/Edit/Sources/Network.js:345 +#: src/views/Edit/Sources/Network.js:361 #: src/views/Edit/Wizard/Sources/Network.js:72 msgid "Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more." msgstr "Unterstützt HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT und mehr." #: src/Footer.js:184 -#: src/Header.js:278 -#: src/views/Settings.js:1846 +#: src/Header.js:275 +#: src/views/Settings.js:1851 msgid "System" msgstr "System" -#: src/views/Playersite.js:349 -#: src/views/Playersite.js:429 +#: src/views/Playersite.js:351 +#: src/views/Playersite.js:440 msgid "Template" msgstr "Vorlage" -#: src/views/Playersite.js:451 +#: src/views/Playersite.js:462 msgid "Template to be used for creating the publication website. The delete button removes the selection from the system." msgstr "Vorlage, die für die Erstellung der Publikations-Website verwendet werden soll. Mit der Schaltfläche „Löschen“ wird die Auswahl aus dem System entfernt." -#: src/views/Playersite.js:653 +#: src/views/Playersite.js:666 msgid "Terms" msgstr "Bedingungen" @@ -2125,7 +2158,7 @@ msgstr "Testbild" msgid "Test pattern (extended)" msgstr "Testbild (erweitert)" -#: src/views/Playersite.js:506 +#: src/views/Playersite.js:519 msgid "Text colors" msgstr "Textfarben" @@ -2133,7 +2166,7 @@ msgstr "Textfarben" msgid "The amplitude (0.0 - 1.0) of the generated audio stream" msgstr "Die Amplitude (0,0 - 1,0) des erzeugten Audiostreams" -#: src/views/Settings.js:1205 +#: src/views/Settings.js:1210 msgid "The application is using an older version of the settings." msgstr "Die Applikation verwendet eine ältere Version der Einstellungen." @@ -2145,20 +2178,20 @@ msgstr "Die Bitrate des Audiostreams." msgid "The carrier frequency" msgstr "Trägerfrequenz" -#: src/views/Edit/index.js:351 +#: src/views/Edit/index.js:352 msgid "The channel \"{0}\" could not be deleted" msgstr "Der Kanal \"{0}\\“ konnte nicht gelöscht werden" -#: src/views/Edit/index.js:360 +#: src/views/Edit/index.js:361 msgid "The channel \"{0}\" has been deleted" msgstr "Der Kanal \"{0}\\“ wurde gelöscht" -#: src/views/Edit/index.js:602 +#: src/views/Edit/index.js:604 msgid "The deletion of this channel can not be recovered. All publications of this channel will be removed." msgstr "Die Löschung dieses Kanals kann nicht rückgängig gemacht werden. Alle Veröffentlichungen dieses Kanals werden entfernt." -#: src/views/Edit/Wizard/index.js:161 -#: src/views/Edit/index.js:283 +#: src/views/Edit/Wizard/index.js:170 +#: src/views/Edit/index.js:290 msgid "The input profile is not complete. Please define a video and audio source." msgstr "Unvollständiges Eingangsprofil. Video- und Audioquelle definieren." @@ -2166,7 +2199,7 @@ msgstr "Unvollständiges Eingangsprofil. Video- und Audioquelle definieren." msgid "The layout of the audio stream." msgstr "Anordnung des Audiostreams." -#: src/misc/controls/HLS.js:76 +#: src/misc/controls/HLS.js:79 msgid "The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended." msgstr "Die maximale Anzahl von Wiedergabelistensegmenten. 0 enthält alle Segmente. 6 wird empfohlen." @@ -2178,7 +2211,7 @@ msgstr "Audio-Rauschfarbe" msgid "The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission." msgstr "Die Person, die ein Werk mit dieser Urkunde verbunden hat, hat das Werk der Allgemeinheit gewidmet, indem sie auf alle ihre Rechte an dem Werk weltweit nach dem Urheberrecht, einschließlich aller verwandten und benachbarten Rechte, verzichtet, soweit dies gesetzlich zulässig ist. Sie können das Werk vervielfältigen, verändern, verbreiten und aufführen, auch für kommerzielle Zwecke, alles ohne um Erlaubnis zu fragen." -#: src/views/Settings.js:1310 +#: src/views/Settings.js:1315 msgid "The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma." msgstr "Der öffentlich erreichbare Domänenname des Hosts, auf dem der Restreamer läuft. Trennen Sie mehrere Domänennamen durch ein Komma." @@ -2202,68 +2235,58 @@ msgstr "Der Publikationsdienst wurde erstellt" msgid "The sample rate of the audio stream." msgstr "Abtastrate des Audiostreams." -#: src/views/Playersite.js:151 -#: src/views/Playersite.js:225 -#: src/views/Publication/Player.js:186 +#: src/views/Playersite.js:152 +#: src/views/Playersite.js:227 +#: src/views/Publication/Player.js:189 msgid "The selected file is too big ({0} bytes). Only {1} bytes are allowed." msgstr "Die ausgewählte Datei ist zu groß ({0} Bytes). Es sind nur {1} Bytes erlaubt." -#: src/views/Playersite.js:140 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}" -msgstr "Der ausgewählte Dateityp ({0}) ist nun erlaubt. Erlaubte Dateitypen sind {imageAcceptString}" - -#: src/views/Publication/Player.js:175 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}" -msgstr "Der ausgewählte Dateityp ({0}) ist nun erlaubt. Erlaubte Dateitypen sind {logoAcceptString}" - -#: src/views/Playersite.js:214 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}" -msgstr "Der ausgewählte Dateityp ({0}) ist nicht erlaubt. Die erlaubten Dateitypen sind {templateAcceptString}" +#: src/views/Playersite.js:141 +#: src/views/Playersite.js:216 +#: src/views/Publication/Player.js:178 +msgid "The selected file type ({0}) is not allowed. Allowed file types are {types}" +msgstr "Der ausgewählte Dateityp ({0}) ist nich erlaubt. Erlaubte Dateitypen sind {types}" #: src/views/Publication/Edit.js:230 msgid "The settings for \"{0}\" have been saved" msgstr "Die Einstellungen für \"{0}\" wurden gespeichert" -#: src/views/Edit/Wizard/index.js:829 +#: src/views/Edit/Wizard/index.js:846 msgid "The source doesn't provide any audio streams." msgstr "Die Quelle stellt keine Audiostreams zur Verfügung." -#: src/views/Edit/Profile.js:478 +#: src/views/Edit/Profile.js:487 msgid "The source doesn't provide any audio streams. Please check the <0>probe details." msgstr "Die Quelle stellt keine Audiostreams zur Verfügung. Bitte die <0>Details der Überprüfung ansehen." -#: src/views/Edit/Wizard/index.js:837 +#: src/views/Edit/Wizard/index.js:854 msgid "The source doesn't provide any compatible audio streams." msgstr "Die Quelle stellt keine kompatiblen Audiostreams zur Verfügung." -#: src/views/Edit/Wizard/index.js:378 +#: src/views/Edit/Wizard/index.js:392 msgid "The source doesn't provide any compatible video streams. Please check the <0>requirements." msgstr "Die Quelle stellt keine kompatiblen Videostreams zur Verfügung. Bitte die <0>Anforderungen prüfen." -#: src/views/Edit/Profile.js:349 +#: src/views/Edit/Profile.js:357 msgid "The source doesn't provide any video streams. Please check the <0>probe details." msgstr "Die Quelle stellt keine Videostreams zur Verfügung. Bitte die <0>Details der Überprüfung ansehen." -#: src/views/Edit/Wizard/index.js:370 +#: src/views/Edit/Wizard/index.js:384 msgid "The source doesn't provide any video streams. Please check the device." msgstr "Die Quelle stellt keine Videostreams zur Verfügung. Bitte die Quelle prüfen." -#: src/views/Edit/Wizard/index.js:848 +#: src/views/Edit/Wizard/index.js:865 msgid "The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel." msgstr "Die Videoquelle stellt keinen kompatiblen Audiokanal zur Verfügung. <0>Silence Audio wird empfohlen. Dienste wie z.B. YouTube, Facebook & Co. benötigen einen Audiokanal." -#: src/views/Edit/Wizard/index.js:586 +#: src/views/Edit/Wizard/index.js:603 msgid "The video source is compatible. Select the desired resolution:" msgstr "Die Videoquelle ist kompatibel. Gewünschte Auflösung auswählen:" -#: src/views/Settings.js:1177 +#: src/views/Settings.js:1182 msgid "There are updates available. Here you get more information." msgstr "Es sind Updates verfügbar. Hier erhalten Sie weitere Informationen." -#: src/views/Playersite.js:238 -msgid "There war an error during upload: {0}" -msgstr "Beim Hochladen ist ein Fehler aufgetreten: {0}" - #: src/views/Settings.js:911 msgid "There was a problem storing the settings. Settings not saved." msgstr "Es gab ein Problem beim Speichern der Einstellungen. Einstellungen nicht gespeichert." @@ -2272,12 +2295,13 @@ msgstr "Es gab ein Problem beim Speichern der Einstellungen. Einstellungen nicht msgid "There was an error connecting to Restreamer Core at {0}." msgstr "Es ist ein Fehler beim Verbinden mit Restreamer Core bei {0} aufgetreten." -#: src/views/Playersite.js:164 -#: src/views/Publication/Player.js:199 +#: src/views/Playersite.js:165 +#: src/views/Playersite.js:240 +#: src/views/Publication/Player.js:202 msgid "There was an error during upload: {0}" msgstr "Beim Hochladen ist ein Fehler aufgetreten: {0}" -#: src/views/Edit/Wizard/index.js:1106 +#: src/views/Edit/Wizard/index.js:1123 msgid "There was an error setting up the stream." msgstr "Es ist ein Fehler beim Einrichten des Streams aufgetreten." @@ -2325,7 +2349,7 @@ msgstr "Diese Lizenz erlaubt es Wiederverwendern, das Material in jedem Medium o msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." msgstr "Diese Lizenz erlaubt es Wiederverwendern, das Material in jedem Medium oder Format zu verbreiten, zu remixen, anzupassen und darauf aufzubauen, solange der Urheber genannt wird. Die Lizenz erlaubt die kommerzielle Nutzung. Wenn Sie das Material umarbeiten, anpassen oder darauf aufbauen, müssen Sie das geänderte Material unter identischen Bedingungen lizenzieren." -#: src/views/Edit/index.js:583 +#: src/views/Edit/index.js:585 msgid "This source cannot be edited while it is in use. To continue, you have to disconnect the source." msgstr "Diese Quelle kann nicht bearbeitet werden, während sie in Gebrauch ist. Um fortzufahren, müssen Sie die Verbindung zur Quelle unterbrechen." @@ -2341,12 +2365,12 @@ msgstr "Diese Version der Benutzeroberfläche unterstützt nicht den angeschloss msgid "This version of the UI is compatible." msgstr "Die verwendete Version der Benutzeroberfläche ist kompatibel." -#: src/views/Settings.js:1545 +#: src/views/Settings.js:1550 msgid "Time until an inactive viewer connection is treated as closed." msgstr "Zeit bis eine inaktive Zuschauerverbindung als geschlossen behandelt wird." -#: src/views/Settings.js:1258 -#: src/views/Settings.js:1824 +#: src/views/Settings.js:1263 +#: src/views/Settings.js:1829 msgid "Token" msgstr "Token" @@ -2391,7 +2415,7 @@ msgid "Transmit the main source to an RTSP Server. More details about the settin msgstr "Übertragen Sie die Hauptquelle an einen RTSP-Server. Weitere Details zu den Einstellungen finden Sie <0>hier." #: src/views/Publication/Services/Red5.js:17 -msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." +msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." msgstr "Übertragen Sie die Hauptquelle an einen Red5/Pro Server. Weitere Details zu den Einstellungen finden Sie <0>hier." #: src/views/Publication/Services/SRT.js:25 @@ -2406,7 +2430,7 @@ msgstr "Übertragen Sie die Hauptquelle an einen UDP-Server. Weitere Details zu msgid "Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here." msgstr "Übertragen Sie die Hauptquelle an einen WOWZA Server. Weitere Details zu den Einstellungen finden Sie <0>hier." -#: src/views/Publication/Services/Core.js:17 +#: src/views/Publication/Services/Core.js:18 msgid "Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here." msgstr "Überträgt die Hauptquelle auf eine datarhei Core Ressource. Weitere Details zu den Einstellungen finden Sie <0>hier." @@ -2414,7 +2438,7 @@ msgstr "Überträgt die Hauptquelle auf eine datarhei Core Ressource. Weitere De msgid "Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here." msgstr "Übertragen Sie die Hauptquelle auf eine livespotting.com Ressource. Weitere Details zu den Einstellungen finden Sie <0>hier." -#: src/views/Publication/Services/Akamai.js:16 +#: src/views/Publication/Services/Akamai.js:17 msgid "Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here." msgstr "Übertragen Sie die Hauptquelle an die Akamai (MSL) Media Services Live. Weitere Details zu den MSL-Encoder-Einstellungen finden Sie <0>hier." @@ -2439,7 +2463,7 @@ msgstr "Überträgt Ihren Videostream mit dem erforderlichen Schlüssel, der in msgid "Tune" msgstr "Optimieren" -#: src/views/Edit/Sources/Network.js:393 +#: src/views/Edit/Sources/Network.js:409 #: src/views/Edit/Wizard/Sources/Network.js:77 msgid "UDP transport" msgstr "UDP-Transport" @@ -2448,7 +2472,7 @@ msgstr "UDP-Transport" msgid "Unable to load the config." msgstr "Die Konfiguration kann nicht geladen werden." -#: src/views/Settings.js:1240 +#: src/views/Settings.js:1245 msgid "Unique ident on the service." msgstr "Einzigartige Identität für den Service." @@ -2456,22 +2480,22 @@ msgstr "Einzigartige Identität für den Service." msgid "Unknown" msgstr "Unbekannt" -#: src/views/Playersite.js:584 +#: src/views/Playersite.js:597 msgid "Unselected" msgstr "Nicht gewählt" -#: src/views/Playersite.js:469 -#: src/views/Playersite.js:486 -#: src/views/Playersite.js:621 -#: src/views/Publication/Player.js:370 +#: src/views/Playersite.js:482 +#: src/views/Playersite.js:499 +#: src/views/Playersite.js:634 +#: src/views/Publication/Player.js:373 msgid "Upload" msgstr "Hochladen" -#: src/views/Playersite.js:279 +#: src/views/Playersite.js:281 msgid "Uploading the file failed" msgstr "Die Dateiübertragung ist fehlgeschlagen" -#: src/views/Publication/Player.js:229 +#: src/views/Publication/Player.js:232 msgid "Uploading the logo failed" msgstr "Hochladen des Logos fehlgeschlagen" @@ -2485,15 +2509,15 @@ msgstr "Betriebszeit" msgid "Use Auth0 for your running Restreamer Core. More <0>details." msgstr "Verwenden Sie Auth0 für Ihren laufenden Restreamer Core. Mehr <0>Details." -#: src/views/Edit/index.js:425 +#: src/views/Edit/index.js:426 msgid "Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode." msgstr "Verwenden Sie den Assistenten (<0/>) für eine schnelle und einfache Einrichtung, oder bearbeiten Sie (<1/>) die Quellen direkt im benutzerdefinierten Modus." -#: src/views/Edit/Wizard/index.js:1051 +#: src/views/Edit/Wizard/index.js:1068 msgid "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." -#: src/views/Edit/index.js:528 +#: src/views/Edit/index.js:530 msgid "Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Copyright und die richtige Bildlizenz wählen. Ob frei für alle oder stark eingeschränkt. Überlege kurz, was andere mit dem Video machen dürfen." @@ -2501,7 +2525,7 @@ msgstr "Copyright und die richtige Bildlizenz wählen. Ob frei für alle oder st msgid "User registration" msgstr "Benutzerregistrierung" -#: src/views/Edit/Sources/Network.js:354 +#: src/views/Edit/Sources/Network.js:370 #: src/views/Edit/Wizard/Sources/Network.js:81 #: src/views/Login.js:272 #: src/views/Publication/Services/DASH.js:195 @@ -2510,17 +2534,17 @@ msgstr "Benutzerregistrierung" #: src/views/Publication/Services/RTSP.js:153 #: src/views/Publication/Services/Red5.js:146 #: src/views/Publication/Services/WOWZA.js:168 -#: src/views/Settings.js:1435 -#: src/views/Settings.js:1593 +#: src/views/Settings.js:1440 +#: src/views/Settings.js:1598 msgid "Username" msgstr "Anmeldename" -#: src/views/Settings.js:1441 -#: src/views/Settings.js:1601 +#: src/views/Settings.js:1446 +#: src/views/Settings.js:1606 msgid "Username for authorization." msgstr "Anmeldename für die Autorisierung." -#: src/views/Edit/Sources/Network.js:359 +#: src/views/Edit/Sources/Network.js:375 #: src/views/Edit/Wizard/Sources/Network.js:83 msgid "Username for the device." msgstr "Anmeldename von dem Gerät." @@ -2533,24 +2557,24 @@ msgstr "VPU-ID" msgid "Video" msgstr "Video" -#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:126 #: src/views/Edit/Sources/Raspicam.js:89 -#: src/views/Edit/Sources/V4L.js:96 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:66 +#: src/views/Edit/Sources/V4L.js:109 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 #: src/views/Edit/Wizard/Sources/Raspicam.js:86 -#: src/views/Edit/Wizard/Sources/V4L.js:89 +#: src/views/Edit/Wizard/Sources/V4L.js:105 msgid "Video device" msgstr "Videogerät" -#: src/views/Edit/Profile.js:313 -#: src/views/Edit/ProfileSummary.js:65 +#: src/views/Edit/Profile.js:320 +#: src/views/Edit/ProfileSummary.js:66 #: src/views/Publication/Edit.js:517 msgid "Video settings" msgstr "Videoeinstellungen" -#: src/views/Edit/Wizard/index.js:257 -#: src/views/Edit/Wizard/index.js:341 -#: src/views/Edit/Wizard/index.js:579 +#: src/views/Edit/Wizard/index.js:264 +#: src/views/Edit/Wizard/index.js:354 +#: src/views/Edit/Wizard/index.js:596 msgid "Video setup" msgstr "Video-Einrichtung" @@ -2566,7 +2590,7 @@ msgid "Viewer" msgstr "Zuschauende" #: src/views/Edit/Sources/VirtualAudio.js:187 -#: src/views/Edit/Sources/VirtualVideo.js:194 +#: src/views/Edit/Sources/VirtualVideo.js:206 msgid "Virtual source" msgstr "Virtuelle-Quelle" @@ -2574,7 +2598,7 @@ msgstr "Virtuelle-Quelle" msgid "Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs." msgstr "Willkommen bei Restreamer v2, der Lösung für die schnelle und einfache Veröffentlichung von Videos. Kostenlos für private und kommerzielle Nutzung. Weitere Hilfe in der <0>Dokumentation." -#: src/views/Settings.js:1580 +#: src/views/Settings.js:1585 msgid "Write protection" msgstr "Schreibschutz" @@ -2582,19 +2606,19 @@ msgstr "Schreibschutz" msgid "YUV test pattern" msgstr "YUV-Testbild" -#: src/views/Edit/Wizard/index.js:1160 +#: src/views/Edit/Wizard/index.js:1177 msgid "Yes" msgstr "Ja" -#: src/views/Edit/Wizard/index.js:1142 +#: src/views/Edit/Wizard/index.js:1159 msgid "You can't abort the wizard because at least one input must be defined." msgstr "Sie können den Assistenten nicht abbrechen, da mindestens ein Eingang definiert sein muss." -#: src/views/Settings.js:2036 +#: src/views/Settings.js:2041 msgid "You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?" msgstr "Konfiguration geändert. Damit die Änderungen wirksam werden muss die Anwendung neu starten. Jetzt neu starten?" -#: src/views/Main/index.js:350 +#: src/views/Main/index.js:347 #: src/views/Publication/Process.js:73 msgid "You have to reconnect manually" msgstr "Verbindung manuell wiederherstellen" @@ -2603,11 +2627,11 @@ msgstr "Verbindung manuell wiederherstellen" msgid "You have unsaved changes. Please save them before you can control the service again." msgstr "Ungespeicherte Änderungen. Bitte speichern, bevor der Dienst wieder gesteuert werden kann." -#: src/views/Edit/Wizard/index.js:599 +#: src/views/Edit/Wizard/index.js:616 msgid "Your stream needs to be encoded, but there's no suitable encoder available." msgstr "Ihr Stream muss kodiert werden, aber es ist kein geeigneter Encoder verfügbar." -#: src/views/Edit/Wizard/index.js:606 +#: src/views/Edit/Wizard/index.js:623 msgid "Your stream needs to be encoded. Choose the desired encoder:" msgstr "Stream muss kodiert werden. Gewünschten Encoder wählen:" @@ -2619,7 +2643,7 @@ msgstr "blau" msgid "brown" msgstr "braun" -#: src/views/Publication/Player.js:328 +#: src/views/Publication/Player.js:331 msgid "iframe code" msgstr "iframe Code" diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index d772e05..85030f3 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{"<0>Show probe details":"<0>Show probe details","ALSA":"ALSA","API endpoint not found. Settings not saved.":"API endpoint not found. Settings not saved.","AVFoundation":"AVFoundation","Abort":"Abort","About":"About","Add":"Add","Add Publication":"Add Publication","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Add external widgets and styles to the publication site. You can find some examples on the help page.","Add new channel":"Add new channel","Add: {0}":["Add: ",["0"]],"Address":"Address","Address for the background image.":"Address for the background image.","Address to listen on for HTTP requests.":"Address to listen on for HTTP requests.","Address to listen on for HTTPS requests.":"Address to listen on for HTTPS requests.","Adjust publication site colors and background as you like.":"Adjust publication site colors and background as you like.","Advanced monitoring":"Advanced monitoring","Advanced settings":"Advanced settings","Advanced setup":"Advanced setup","Alerting by email":"Alerting by email","All":"All","All important system settings.":"All important system settings.","Allow all referrer":"Allow all referrer","Allow counting how many viewers the stream has.":"Allow counting how many viewers the stream has.","Amplitude":"Amplitude","An environment variable sets this value.":"An environment variable sets this value.","App":"App","Application":"Application","Are you sure you want to abort the wizard?":"Are you sure you want to abort the wizard?","Audio":"Audio","Audio Device":"Audio Device","Audio device":"Audio device","Audio from device":"Audio from device","Audio settings":"Audio settings","Audio setup":"Audio setup","Auth0":"Auth0","Auth0 Tenant":"Auth0 Tenant","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 is currently not available because this interface is loaded from an insecure origin.","Author":"Author","Authorization":"Authorization","Autoplay":"Autoplay","Available":"Available","Back":"Back","Background colors":"Background colors","Background image":"Background image","Backup URL":"Backup URL","Backup server":"Backup server","Backup stream":"Backup stream","Backup stream key":"Backup stream key","Bandwidth":"Bandwidth","Bandwidth control":"Bandwidth control","Banner":"Banner","Basic":"Basic","Beep factor":"Beep factor","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Briefly describe what the audience will see during the live stream.","Button color":"Button color","Cache for files on /data.":"Cache for files on /data.","Cache time (Seconds)":"Cache time (Seconds)","Cache types":"Cache types","Capture clicks":"Capture clicks","Capture cursor":"Capture cursor","Channel \"{0}\" saved":["Channel \"",["0"],"\" saved"],"Channels":"Channels","Check for updates":"Check for updates","Check the requirements":"Check the requirements","Choose a video stream":"Choose a video stream","Choose an audio stream":"Choose an audio stream","Choose an input device ...":"Choose an input device ...","Choose codec ...":"Choose codec ...","Choose tenant ...":"Choose tenant ...","Chunk":"Chunk","Close":"Close","Code injection":"Code injection","Codec":"Codec","Color":"Color","Config":"Config","Confirm password":"Confirm password","Connect":"Connect","Connected device":"Connected device","Connected since <0/>":"Connected since <0/>","Connecting ...":"Connecting ...","Connecting to Restreamer Core ...":"Connecting to Restreamer Core ...","Connecting to Restreamer Core failed probably because of mixed content.":"Connecting to Restreamer Core failed probably because of mixed content.","Content":"Content","Cores":"Cores","Create user":"Create user","Creative Commons":"Creative Commons","Custom ...":"Custom ...","Custom JSON config for datarhei Core.":"Custom JSON config for datarhei Core.","Custom audio device":"Custom audio device","Custom audio index":"Custom audio index","Custom bitrate (kbit/s)":"Custom bitrate (kbit/s)","Custom code injection":"Custom code injection","Custom delay":"Custom delay","Custom device":"Custom device","Custom format":"Custom format","Custom framerate":"Custom framerate","Custom keyframe interval":"Custom keyframe interval","Custom layout":"Custom layout","Custom sampling (Hz)":"Custom sampling (Hz)","Custom scale":"Custom scale","Custom size":"Custom size","Custom video device":"Custom video device","Custom video index":"Custom video index","Data copied to clipboard":"Data copied to clipboard","Death color":"Death color","Decoder":"Decoder","Default":"Default","Delay":"Delay","Delay (ms)":"Delay (ms)","Delete":"Delete","Deleting a publication service cannot be reversed. The publication stops immediately.":"Deleting a publication service cannot be reversed. The publication stops immediately.","Delivering mode":"Delivering mode","Description":"Description","Design":"Design","Device":"Device","Disconnect":"Disconnect","Disconnect & Continue":"Disconnect & Continue","Disconnecting ...":"Disconnecting ...","Disk":"Disk","Disk cache":"Disk cache","Disk storage":"Disk storage","Do you really want to restart the application now?":"Do you really want to restart the application now?","Do you want to delete \"{0}\"?":["Do you want to delete \"",["0"],"\"?"],"Do you want to delete {title}?":["Do you want to delete ",["title"],"?"],"Do you want to disconnect \"{0}\"?":["Do you want to disconnect \"",["0"],"\"?"],"Docs":"Docs","Documentation":"Documentation","Dup. frames":"Dup. frames","EDIT: Player":"EDIT: Player","EDIT: Publication Website":"EDIT: Publication Website","Edit":"Edit","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Edit the audio and video sources for the live stream. Add a description, and set your desired content license.","Edit: {title}":["Edit: ",["title"]],"Embed":"Embed","Enable RTMP server ...":"Enable RTMP server ...","Enable a periodic beep every second with this value times the carrier frequency":"Enable a periodic beep every second with this value times the carrier frequency","Enable backup stream":"Enable backup stream","Enable nerd statistics":"Enable nerd statistics","Enable primary stream":"Enable primary stream","Enable snapshots":"Enable snapshots","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Enabling authorization is strongly advised. Otherwise, anybody can access this instance.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.","Encoder":"Encoder","Encoding":"Encoding","Encryption":"Encryption","Enter a name for the new channel.":"Enter a name for the new channel.","Enter password":"Enter password","Enter the address of your network source:":"Enter the address of your network source:","Enter username":"Enter username","Entropy coder":"Entropy coder","Error":"Error","Error while copying data to clipboard":"Error while copying data to clipboard","Error: {0}":["Error: ",["0"]],"Expands the area above the channel list (live chat).":"Expands the area above the channel list (live chat).","Expands the area under the channel description (comment boxes).":"Expands the area under the channel description (comment boxes).","Expert mode":"Expert mode","Extend channel list":"Extend channel list","Extend content":"Extend content","Extend footer":"Extend footer","Extend header":"Extend header","FFmpeg":"FFmpeg","FPS":"FPS","Failed to correctly cleanup previous process data":"Failed to correctly cleanup previous process data","Failed to create publication service ({0})":["Failed to create publication service (",["0"],")"],"Failed to create publication website files.":"Failed to create publication website files.","Failed to probe the source. Please check the <0>probe details.":"Failed to probe the source. Please check the <0>probe details.","Failed to refresh token: {0}":["Failed to refresh token: ",["0"]],"Failed to save ingest metadata":"Failed to save ingest metadata","Failed to stop process":"Failed to stop process","Failed to store player size setting.":"Failed to store player size setting.","Failed to store publication service ({0})":["Failed to store publication service (",["0"],")"],"Failed to update ingest process ({0})":["Failed to update ingest process (",["0"],")"],"Failed to update the player":"Failed to update the player","Failed to verify the source. Please check the address.":"Failed to verify the source. Please check the address.","Finish":"Finish","Flags":"Flags","For Javascripts.":"For Javascripts.","For Stylesheets.":"For Stylesheets.","Force input framerate":"Force input framerate","Format":"Format","Frame drops":"Frame drops","Framebuffer":"Framebuffer","Framerate":"Framerate","Frequency (Hz)":"Frequency (Hz)","GET":"GET","General":"General","Google Analytics ID":"Google Analytics ID","Google Analytics Tracker Name":"Google Analytics Tracker Name","HLS":"HLS","HLS URL":"HLS URL","HLS statistic for the In-memory storage":"HLS statistic for the In-memory storage","HTTP and HTTPS":"HTTP and HTTPS","HTTP port":"HTTP port","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"HTTPS port","Hardware device":"Hardware device","Header":"Header","Headline":"Headline","Hosted Restreamer interface":"Hosted Restreamer interface","Human readable name on the service.":"Human readable name on the service.","IP address":"IP address","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.","Ignore IP ranges":"Ignore IP ranges","Image URL":"Image URL","Imprint":"Imprint","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.","In-memory":"In-memory","In-memory storage":"In-memory storage","Incompatible":"Incompatible","Inherit":"Inherit","Inject 1":"Inject 1","Inject 2":"Inject 2","Inject 3":"Inject 3","Inject 4":"Inject 4","Internal HLS server":"Internal HLS server","Internal RTMP server":"Internal RTMP server","Interval (seconds)":"Interval (seconds)","Issue alert":"Issue alert","Keyframe interval (seconds)":"Keyframe interval (seconds)","Layout":"Layout","Let's Encrypt certification":"Let's Encrypt certification","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.","Level":"Level","Level of system protocol.":"Level of system protocol.","License":"License","Life color":"Life color","Linecolor":"Linecolor","Link":"Link","Link, mouseover":"Link, mouseover","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.","List size (segments)":"List size (segments)","Live-Streaming to Facebook Live RTMP service":"Live-Streaming to Facebook Live RTMP service","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Live-Streaming to Twitch Live RTMP Service.","Live-Streaming to Vimeos Live RTMP Service":"Live-Streaming to Vimeos Live RTMP Service","Livesource ID":"Livesource ID","Log level":"Log level","Logging":"Logging","Login":"Login","Login failed: Couldn't load API details":"Login failed: Couldn't load API details","Login failed: {0}":["Login failed: ",["0"]],"Login/JWT authorization":"Login/JWT authorization","Logo":"Logo","Logout":"Logout","MB":"MB","Main Source":"Main Source","Main channel":"Main channel","Main channel not found":"Main channel not found","Main channel saved":"Main channel saved","Main page channel (index.html).":"Main page channel (index.html).","Maintainer:":"Maintainer:","Maximum allowed cache size, 0 for unlimited.":"Maximum allowed cache size, 0 for unlimited.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Maximum allowed megabytes to consume from hard disk. 0 for unlimited.","Maximum bandwidth Mbit/s":"Maximum bandwidth Mbit/s","Maximum delay in milliseconds.":"Maximum delay in milliseconds.","Maximum file size (Megabytes)":"Maximum file size (Megabytes)","Maximum file size to put in cache.":"Maximum file size to put in cache.","Maximum log histroy":"Maximum log histroy","Maximum log lines":"Maximum log lines","Maximum size (Megabytes)":"Maximum size (Megabytes)","Maximum viewer idle time (Seconds)":"Maximum viewer idle time (Seconds)","Maximum viewers":"Maximum viewers","Memory":"Memory","Meta information":"Meta information","Metadata":"Metadata","Mold":"Mold","More about Twitter's copyright <0>here.":"More about Twitter's copyright <0>here.","More about YouTube's copyright <0>here.":"More about YouTube's copyright <0>here.","More about licenses here":"More about licenses here","More about the service":"More about the service","Mute":"Mute","Name":"Name","Name for the template. If the name already exists, it will be overwritten.":"Name for the template. If the name already exists, it will be overwritten.","Network":"Network","Network source":"Network source","Next":"Next","Next: Audio":"Next: Audio","Next: Video setup":"Next: Video setup","No":"No","No audio":"No audio","No audio stream available":"No audio stream available","No live stream was detected. Please check the software that sends the stream.":"No live stream was detected. Please check the software that sends the stream.","No source selected":"No source selected","No suitable encoder found.":"No suitable encoder found.","No video":"No video","No video stream available":"No video stream available","Node ID":"Node ID","Noise":"Noise","None":"None","Notes":"Notes","Number of log lines to keep.":"Number of log lines to keep.","Number of logs to keep for each process.":"Number of logs to keep for each process.","OK":"OK","One referrer per line, e.g. http://www.example.com":"One referrer per line, e.g. http://www.example.com","Open":"Open","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.","Password":"Password","Password for authorization.":"Password for authorization.","Password for the device.":"Password for the device.","Persist viewer statistics":"Persist viewer statistics","Pixel format":"Pixel format","Plan: <0>Starter":"Plan: <0>Starter","Platforms":"Platforms","Playback":"Playback","Player":"Player","Player URL":"Player URL","Player settings saved":"Player settings saved","Playersite":"Playersite","Playlist":"Playlist","Please check the <0>process log":"Please check the <0>process log","Please contact the operator of the service and check what happens.":"Please contact the operator of the service and check what happens.","Please select a file to upload.":"Please select a file to upload.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.","Please wait. Probe stream data ...":"Please wait. Probe stream data ...","Please wait. Setting up the stream ...":"Please wait. Setting up the stream ...","Port":"Port","Position":"Position","Preset":"Preset","Primary stream":"Primary stream","Primary stream key":"Primary stream key","Probe":"Probe","Process":"Process","Process control":"Process control","Process debug":"Process debug","Process debug report":"Process debug report","Process details":"Process details","Process report":"Process report","Processing & Control":"Processing & Control","Profile":"Profile","Protocol":"Protocol","Protocols":"Protocols","Public domain/s":"Public domain/s","Publication service not found":"Publication service not found","Publication website settings saved":"Publication website settings saved","Publications":"Publications","Pull Mode":"Pull Mode","Pull or recieve the data:":"Pull or recieve the data:","Quality":"Quality","RGB test pattern":"RGB test pattern","RTMP app for publishing.":"RTMP app for publishing.","RTMP server":"RTMP server","RTMP server is not enabled":"RTMP server is not enabled","RTMP server listen address.":"RTMP server listen address.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'","RTMP/S":"RTMP/S","RTMPS server":"RTMPS server","RTSP":"RTSP","Raspberry Pi camera":"Raspberry Pi camera","Rate control":"Rate control","Ratio":"Ratio","Read input at native speed":"Read input at native speed","Receive Mode":"Receive Mode","Reconnect":"Reconnect","Reconnect delay (seconds)":"Reconnect delay (seconds)","Reconnecting in {0}s":["Reconnecting in ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["Reconnecting to Restreamer Core failed for the last ",["RETRIES"]," seconds."],"Reconnecting to Restreamer Core failed.":"Reconnecting to Restreamer Core failed.","Region":"Region","Reload":"Reload","Remove the oldest entries if the /memfs is full":"Remove the oldest entries if the /memfs is full","Requires activation":"Requires activation","Restart":"Restart","Restart required":"Restart required","Restarting":"Restarting","Restarting Restreamer Core ...":"Restarting Restreamer Core ...","Restarting the application failed.":"Restarting the application failed.","Restreamer Service":"Restreamer Service","Retrieving stream data ...":"Retrieving stream data ...","Retry":"Retry","Rule":"Rule","Sampling":"Sampling","Save":"Save","Scale":"Scale","Seconds to keep files in cache.":"Seconds to keep files in cache.","Seconds until a process is restarted.":"Seconds until a process is restarted.","Seconds until a staled process is terminated.":"Seconds until a staled process is terminated.","Seconds until the snapshot/thumbnail of the video source is updated.":"Seconds until the snapshot/thumbnail of the video source is updated.","Security":"Security","Security token":"Security token","Seekbar color":"Seekbar color","Segment length (seconds)":"Segment length (seconds)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Segment will be cut on the following keyframe after this time has passed. 2 is recommended.","Segmentation":"Segmentation","Select a device:":"Select a device:","Select audio Source:":"Select audio Source:","Select source ...":"Select source ...","Select video source:":"Select video source:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).","Select your encoding setting:":"Select your encoding setting:","Selected":"Selected","Selected channel":"Selected channel","Selection":"Selection","Send anonymous metrics (helps us for future development)":"Send anonymous metrics (helps us for future development)","Send stream to this address:":"Send stream to this address:","Send video to Framebuffer":"Send video to Framebuffer","Server":"Server","Service":"Service","Service name":"Service name","Service token for monitoring.":"Service token for monitoring.","Sessions":"Sessions","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.","Setting for connection to the service.":"Setting for connection to the service.","Settings":"Settings","Settings (expert mode)":"Settings (expert mode)","Settings for /data path. The access is protected by":"Settings for /data path. The access is protected by","Settings for /memfs path.":"Settings for /memfs path.","Settings saved. All changes will be applied after restarting the application.":"Settings saved. All changes will be applied after restarting the application.","Shows a reference to the project.":"Shows a reference to the project.","Sign up (free)":"Sign up (free)","Silence":"Silence","Silence Audio":"Silence Audio","Sine":"Sine","Sitename":"Sitename","Size":"Size","Snapshot":"Snapshot","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Socket timeout (microseconds)","Software":"Software","Source":"Source","Speed":"Speed","Stale timeout (seconds)":"Stale timeout (seconds)","Statistics":"Statistics","Storage":"Storage","Stores the viewer statistics to the disk.":"Stores the viewer statistics to the disk.","Stream":"Stream","Stream URL":"Stream URL","Stream key":"Stream key","Stream name":"Stream name","Stream names":"Stream names","Support datarhei Restreamer":"Support datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.","System":"System","Template":"Template","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Template to be used for creating the publication website. The delete button removes the selection from the system.","Terms":"Terms","Test pattern":"Test pattern","Test pattern (extended)":"Test pattern (extended)","Text colors":"Text colors","The amplitude (0.0 - 1.0) of the generated audio stream":"The amplitude (0.0 - 1.0) of the generated audio stream","The application is using an older version of the settings.":"The application is using an older version of the settings.","The bitrate of the audio stream.":"The bitrate of the audio stream.","The carrier frequency":"The carrier frequency","The channel \"{0}\" could not be deleted":["The channel \"",["0"],"\" could not be deleted"],"The channel \"{0}\" has been deleted":["The channel \"",["0"],"\" has been deleted"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"The deletion of this channel can not be recovered. All publications of this channel will be removed.","The input profile is not complete. Please define a video and audio source.":"The input profile is not complete. Please define a video and audio source.","The layout of the audio stream.":"The layout of the audio stream.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.","The noise color":"The noise color","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.","The publication service \"{0}\" could not be deleted":["The publication service \"",["0"],"\" could not be deleted"],"The publication service \"{0}\" has been created":["The publication service \"",["0"],"\" has been created"],"The publication service \"{0}\" has been deleted":["The publication service \"",["0"],"\" has been deleted"],"The publication service has been created":"The publication service has been created","The sample rate of the audio stream.":"The sample rate of the audio stream.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["The selected file is too big (",["0"]," bytes). Only ",["1"]," bytes are allowed."],"The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}":["The selected file type (",["0"],") is now allowed. Allowed file types are ",["imageAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}":["The selected file type (",["0"],") is now allowed. Allowed file types are ",["logoAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}":["The selected file type (",["0"],") is now allowed. Allowed file types are ",["templateAcceptString"]],"The settings for \"{0}\" have been saved":["The settings for \"",["0"],"\" have been saved"],"The source doesn't provide any audio streams.":"The source doesn't provide any audio streams.","The source doesn't provide any audio streams. Please check the <0>probe details.":"The source doesn't provide any audio streams. Please check the <0>probe details.","The source doesn't provide any compatible audio streams.":"The source doesn't provide any compatible audio streams.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"The source doesn't provide any compatible video streams. Please check the <0>requirements.","The source doesn't provide any video streams. Please check the <0>probe details.":"The source doesn't provide any video streams. Please check the <0>probe details.","The source doesn't provide any video streams. Please check the device.":"The source doesn't provide any video streams. Please check the device.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.","The video source is compatible. Select the desired resolution:":"The video source is compatible. Select the desired resolution:","There are updates available. Here you get more information.":"There are updates available. Here you get more information.","There war an error during upload: {0}":["There war an error during upload: ",["0"]],"There was a problem storing the settings. Settings not saved.":"There was a problem storing the settings. Settings not saved.","There was an error connecting to Restreamer Core at {0}.":["There was an error connecting to Restreamer Core at ",["0"],"."],"There was an error during upload: {0}":["There was an error during upload: ",["0"]],"There was an error setting up the stream.":"There was an error setting up the stream.","There were some errors in the settings. Settings not saved.":"There were some errors in the settings. Settings not saved.","There's no login method available.":"There's no login method available.","This is a dummy service that explains to you the concepts of service.":"This is a dummy service that explains to you the concepts of service.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..","This is to mention the copyright regulations for the target of this service.":"This is to mention the copyright regulations for the target of this service.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"This source cannot be edited while it is in use. To continue, you have to disconnect the source.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["This version of the UI doesn't support the available FFmpeg binary (",["0"],"). The UI requires ",["1"],". Please use a supported FFmpeg binary."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["This version of the UI doesn't support the connected Core (",["0"],"). The UI requires ",["1"],". Please use a compatible version of the UI."],"This version of the UI is compatible.":"This version of the UI is compatible.","Time until an inactive viewer connection is treated as closed.":"Time until an inactive viewer connection is treated as closed.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Transmit the main source to an SRT Server. More details about the settings can be found <0>here.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Transmit the main source to an UDP Server. More details about the settings can be found <0>here.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.","Tune":"Tune","UDP transport":"UDP transport","Unable to load the config.":"Unable to load the config.","Unique ident on the service.":"Unique ident on the service.","Unknown":"Unknown","Unselected":"Unselected","Upload":"Upload","Uploading the file failed":"Uploading the file failed","Uploading the logo failed":"Uploading the logo failed","Uptime":"Uptime","Use Auth0 for your running Restreamer Core. More <0>details.":"Use Auth0 for your running Restreamer Core. More <0>details.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.","User registration":"User registration","Username":"Username","Username for authorization.":"Username for authorization.","Username for the device.":"Username for the device.","VPU ID":"VPU ID","Video":"Video","Video device":"Video device","Video settings":"Video settings","Video setup":"Video setup","Video source":"Video source","Viewer":"Viewer","Virtual source":"Virtual source","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.","Write protection":"Write protection","YUV test pattern":"YUV test pattern","Yes":"Yes","You can't abort the wizard because at least one input must be defined.":"You can't abort the wizard because at least one input must be defined.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?","You have to reconnect manually":"You have to reconnect manually","You have unsaved changes. Please save them before you can control the service again.":"You have unsaved changes. Please save them before you can control the service again.","Your stream needs to be encoded, but there's no suitable encoder available.":"Your stream needs to be encoded, but there's no suitable encoder available.","Your stream needs to be encoded. Choose the desired encoder:":"Your stream needs to be encoded. Choose the desired encoder:","blue":"blue","brown":"brown","iframe code":"iframe code","kbit/s":"kbit/s","pink":"pink","velvet":"velvet","violet":"violet","white":"white"}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{"<0>Compatibility list":"<0>Compatibility list","<0>Show probe details":"<0>Show probe details","ALSA":"ALSA","API endpoint not found. Settings not saved.":"API endpoint not found. Settings not saved.","AVFoundation":"AVFoundation","Abort":"Abort","About":"About","Add":"Add","Add Publication":"Add Publication","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Add external widgets and styles to the publication site. You can find some examples on the help page.","Add new channel":"Add new channel","Add: {0}":["Add: ",["0"]],"Address":"Address","Address for the background image.":"Address for the background image.","Address to listen on for HTTP requests.":"Address to listen on for HTTP requests.","Address to listen on for HTTPS requests.":"Address to listen on for HTTPS requests.","Adjust publication site colors and background as you like.":"Adjust publication site colors and background as you like.","Advanced monitoring":"Advanced monitoring","Advanced settings":"Advanced settings","Advanced setup":"Advanced setup","Alerting by email":"Alerting by email","All":"All","All important system settings.":"All important system settings.","Allow all referrer":"Allow all referrer","Allow counting how many viewers the stream has.":"Allow counting how many viewers the stream has.","Amplitude":"Amplitude","An environment variable sets this value.":"An environment variable sets this value.","App":"App","Application":"Application","Are you sure you want to abort the wizard?":"Are you sure you want to abort the wizard?","Audio":"Audio","Audio Device":"Audio Device","Audio device":"Audio device","Audio from device":"Audio from device","Audio settings":"Audio settings","Audio setup":"Audio setup","Auth0":"Auth0","Auth0 Tenant":"Auth0 Tenant","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 is currently not available because this interface is loaded from an insecure origin.","Author":"Author","Authorization":"Authorization","Automatic cleanup of all media data":"Automatic cleanup of all media data","Autoplay":"Autoplay","Available":"Available","Back":"Back","Background colors":"Background colors","Background image":"Background image","Backup URL":"Backup URL","Backup server":"Backup server","Backup stream":"Backup stream","Backup stream key":"Backup stream key","Bandwidth":"Bandwidth","Bandwidth control":"Bandwidth control","Banner":"Banner","Basic":"Basic","Beep factor":"Beep factor","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Briefly describe what the audience will see during the live stream.","Button color":"Button color","Cache for files on /data.":"Cache for files on /data.","Cache time (Seconds)":"Cache time (Seconds)","Cache types":"Cache types","Capture clicks":"Capture clicks","Capture cursor":"Capture cursor","Channel \"{0}\" saved":["Channel \"",["0"],"\" saved"],"Channels":"Channels","Check for updates":"Check for updates","Check the requirements":"Check the requirements","Choose a video stream":"Choose a video stream","Choose an audio stream":"Choose an audio stream","Choose an input device ...":"Choose an input device ...","Choose codec ...":"Choose codec ...","Choose tenant ...":"Choose tenant ...","Chunk":"Chunk","Close":"Close","Code injection":"Code injection","Codec":"Codec","Color":"Color","Config":"Config","Confirm password":"Confirm password","Connect":"Connect","Connected device":"Connected device","Connected since <0/>":"Connected since <0/>","Connecting ...":"Connecting ...","Connecting to Restreamer Core ...":"Connecting to Restreamer Core ...","Connecting to Restreamer Core failed probably because of mixed content.":"Connecting to Restreamer Core failed probably because of mixed content.","Content":"Content","Content URL":"Content URL","Cores":"Cores","Create user":"Create user","Creative Commons":"Creative Commons","Custom ...":"Custom ...","Custom JSON config for datarhei Core.":"Custom JSON config for datarhei Core.","Custom audio device":"Custom audio device","Custom audio index":"Custom audio index","Custom bitrate (kbit/s)":"Custom bitrate (kbit/s)","Custom code injection":"Custom code injection","Custom delay":"Custom delay","Custom device":"Custom device","Custom format":"Custom format","Custom framerate":"Custom framerate","Custom keyframe interval":"Custom keyframe interval","Custom layout":"Custom layout","Custom sampling (Hz)":"Custom sampling (Hz)","Custom scale":"Custom scale","Custom size":"Custom size","Custom video device":"Custom video device","Custom video index":"Custom video index","Data copied to clipboard":"Data copied to clipboard","Death color":"Death color","Decoder":"Decoder","Default":"Default","Delay":"Delay","Delay (ms)":"Delay (ms)","Delete":"Delete","Deleting a publication service cannot be reversed. The publication stops immediately.":"Deleting a publication service cannot be reversed. The publication stops immediately.","Delivering mode":"Delivering mode","Description":"Description","Design":"Design","Device":"Device","Disconnect":"Disconnect","Disconnect & Continue":"Disconnect & Continue","Disconnecting ...":"Disconnecting ...","Disk":"Disk","Disk cache":"Disk cache","Disk storage":"Disk storage","Do you really want to restart the application now?":"Do you really want to restart the application now?","Do you want to delete \"{0}\"?":["Do you want to delete \"",["0"],"\"?"],"Do you want to delete {title}?":["Do you want to delete ",["title"],"?"],"Do you want to disconnect \"{0}\"?":["Do you want to disconnect \"",["0"],"\"?"],"Docs":"Docs","Documentation":"Documentation","Dup. frames":"Dup. frames","EDIT: Player":"EDIT: Player","EDIT: Publication Website":"EDIT: Publication Website","Edit":"Edit","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Edit the audio and video sources for the live stream. Add a description, and set your desired content license.","Edit: {title}":["Edit: ",["title"]],"Embed":"Embed","Enable RTMP server ...":"Enable RTMP server ...","Enable a periodic beep every second with this value times the carrier frequency":"Enable a periodic beep every second with this value times the carrier frequency","Enable backup stream":"Enable backup stream","Enable nerd statistics":"Enable nerd statistics","Enable primary stream":"Enable primary stream","Enable snapshots":"Enable snapshots","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Enabling authorization is strongly advised. Otherwise, anybody can access this instance.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.","Encoder":"Encoder","Encoding":"Encoding","Encryption":"Encryption","Enter a name for the new channel.":"Enter a name for the new channel.","Enter password":"Enter password","Enter the address of your network source:":"Enter the address of your network source:","Enter username":"Enter username","Entropy coder":"Entropy coder","Error":"Error","Error while copying data to clipboard":"Error while copying data to clipboard","Error: {0}":["Error: ",["0"]],"Expands the area above the channel list (live chat).":"Expands the area above the channel list (live chat).","Expands the area under the channel description (comment boxes).":"Expands the area under the channel description (comment boxes).","Expert mode":"Expert mode","Extend channel list":"Extend channel list","Extend content":"Extend content","Extend footer":"Extend footer","Extend header":"Extend header","FFmpeg":"FFmpeg","FPS":"FPS","Failed to create publication service ({0})":["Failed to create publication service (",["0"],")"],"Failed to create publication website files.":"Failed to create publication website files.","Failed to probe the source. Please check the <0>probe details.":"Failed to probe the source. Please check the <0>probe details.","Failed to refresh token: {0}":["Failed to refresh token: ",["0"]],"Failed to save ingest metadata":"Failed to save ingest metadata","Failed to stop process":"Failed to stop process","Failed to store player size setting.":"Failed to store player size setting.","Failed to store publication service ({0})":["Failed to store publication service (",["0"],")"],"Failed to update ingest process ({0})":["Failed to update ingest process (",["0"],")"],"Failed to update the player":"Failed to update the player","Failed to verify the source. Please check the address.":"Failed to verify the source. Please check the address.","Finish":"Finish","Flags":"Flags","For Javascripts.":"For Javascripts.","For Stylesheets.":"For Stylesheets.","Force input framerate":"Force input framerate","Format":"Format","Frame drops":"Frame drops","Framebuffer":"Framebuffer","Framerate":"Framerate","Frequency (Hz)":"Frequency (Hz)","GET":"GET","General":"General","Google Analytics ID":"Google Analytics ID","Google Analytics Tracker Name":"Google Analytics Tracker Name","HLS":"HLS","HLS statistic for the In-memory storage":"HLS statistic for the In-memory storage","HTTP and HTTPS":"HTTP and HTTPS","HTTP port":"HTTP port","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"HTTPS port","Hardware device":"Hardware device","Header":"Header","Headline":"Headline","Hosted Restreamer interface":"Hosted Restreamer interface","Human readable name on the service.":"Human readable name on the service.","IP address":"IP address","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.","Ignore IP ranges":"Ignore IP ranges","Image URL":"Image URL","Imprint":"Imprint","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.","In-memory":"In-memory","In-memory storage":"In-memory storage","Incompatible":"Incompatible","Inherit":"Inherit","Inject 1":"Inject 1","Inject 2":"Inject 2","Inject 3":"Inject 3","Inject 4":"Inject 4","Internal HLS server":"Internal HLS server","Internal RTMP server":"Internal RTMP server","Interval (seconds)":"Interval (seconds)","Issue alert":"Issue alert","Keyframe interval (seconds)":"Keyframe interval (seconds)","Layout":"Layout","Let's Encrypt certification":"Let's Encrypt certification","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.","Level":"Level","Level of system protocol.":"Level of system protocol.","License":"License","Life color":"Life color","Linecolor":"Linecolor","Link":"Link","Link, mouseover":"Link, mouseover","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.","List size (segments)":"List size (segments)","Live-Streaming to Facebook Live RTMP service":"Live-Streaming to Facebook Live RTMP service","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Live-Streaming to Twitch Live RTMP Service.","Live-Streaming to Vimeo Live RTMP Service":"Live-Streaming to Vimeo Live RTMP Service","Livesource ID":"Livesource ID","Log level":"Log level","Logging":"Logging","Login":"Login","Login failed: Couldn't load API details":"Login failed: Couldn't load API details","Login failed: {0}":["Login failed: ",["0"]],"Login/JWT authorization":"Login/JWT authorization","Logo":"Logo","Logout":"Logout","MB":"MB","Main Source":"Main Source","Main channel":"Main channel","Main channel not found":"Main channel not found","Main channel saved":"Main channel saved","Main page channel (index.html).":"Main page channel (index.html).","Maintainer:":"Maintainer:","Maximum allowed cache size, 0 for unlimited.":"Maximum allowed cache size, 0 for unlimited.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Maximum allowed megabytes to consume from hard disk. 0 for unlimited.","Maximum bandwidth Mbit/s":"Maximum bandwidth Mbit/s","Maximum delay in milliseconds.":"Maximum delay in milliseconds.","Maximum file size (Megabytes)":"Maximum file size (Megabytes)","Maximum file size to put in cache.":"Maximum file size to put in cache.","Maximum log histroy":"Maximum log histroy","Maximum log lines":"Maximum log lines","Maximum size (Megabytes)":"Maximum size (Megabytes)","Maximum viewer idle time (Seconds)":"Maximum viewer idle time (Seconds)","Maximum viewers":"Maximum viewers","Memory":"Memory","Meta information":"Meta information","Metadata":"Metadata","Mold":"Mold","More about Twitter's copyright <0>here.":"More about Twitter's copyright <0>here.","More about YouTube's copyright <0>here.":"More about YouTube's copyright <0>here.","More about licenses here":"More about licenses here","More about the service":"More about the service","Mute":"Mute","Name":"Name","Name for the template. If the name already exists, it will be overwritten.":"Name for the template. If the name already exists, it will be overwritten.","Network":"Network","Network source":"Network source","Next":"Next","Next: Audio":"Next: Audio","Next: Video setup":"Next: Video setup","No":"No","No audio":"No audio","No audio stream available":"No audio stream available","No input device available":"No input device available","No live stream was detected. Please check the software that sends the stream.":"No live stream was detected. Please check the software that sends the stream.","No source selected":"No source selected","No sources available":"No sources available","No suitable encoder found.":"No suitable encoder found.","No video":"No video","No video stream available":"No video stream available","Node ID":"Node ID","Noise":"Noise","None":"None","Notes":"Notes","Number of log lines to keep.":"Number of log lines to keep.","Number of logs to keep for each process.":"Number of logs to keep for each process.","OK":"OK","One referrer per line, e.g. http://www.example.com":"One referrer per line, e.g. http://www.example.com","Open":"Open","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.","Password":"Password","Password for authorization.":"Password for authorization.","Password for the device.":"Password for the device.","Persist viewer statistics":"Persist viewer statistics","Pixel format":"Pixel format","Plan: <0>Starter":"Plan: <0>Starter","Platforms":"Platforms","Playback":"Playback","Player":"Player","Player URL":"Player URL","Player settings saved":"Player settings saved","Playersite":"Playersite","Playlist":"Playlist","Please check the <0>process log":"Please check the <0>process log","Please contact the operator of the service and check what happens.":"Please contact the operator of the service and check what happens.","Please select a file to upload.":"Please select a file to upload.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.","Please wait. Probe stream data ...":"Please wait. Probe stream data ...","Please wait. Setting up the stream ...":"Please wait. Setting up the stream ...","Port":"Port","Position":"Position","Preset":"Preset","Primary stream":"Primary stream","Primary stream key":"Primary stream key","Probe":"Probe","Process":"Process","Process control":"Process control","Process debug":"Process debug","Process debug report":"Process debug report","Process details":"Process details","Process report":"Process report","Processing & Control":"Processing & Control","Profile":"Profile","Protocol":"Protocol","Protocols":"Protocols","Public domain/s":"Public domain/s","Publication service not found":"Publication service not found","Publication website settings saved":"Publication website settings saved","Publications":"Publications","Pull Mode":"Pull Mode","Pull or recieve the data:":"Pull or recieve the data:","Quality":"Quality","RGB test pattern":"RGB test pattern","RTMP app for publishing.":"RTMP app for publishing.","RTMP server":"RTMP server","RTMP server is not enabled":"RTMP server is not enabled","RTMP server listen address.":"RTMP server listen address.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'","RTMP/S":"RTMP/S","RTMPS server":"RTMPS server","RTSP":"RTSP","Raspberry Pi camera":"Raspberry Pi camera","Rate control":"Rate control","Ratio":"Ratio","Read input at native speed":"Read input at native speed","Receive Mode":"Receive Mode","Reconnect":"Reconnect","Reconnect delay (seconds)":"Reconnect delay (seconds)","Reconnecting in {0}s":["Reconnecting in ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["Reconnecting to Restreamer Core failed for the last ",["RETRIES"]," seconds."],"Reconnecting to Restreamer Core failed.":"Reconnecting to Restreamer Core failed.","Refresh":"Refresh","Region":"Region","Reload":"Reload","Remove the oldest entries if the /memfs is full":"Remove the oldest entries if the /memfs is full","Requires activation":"Requires activation","Restart":"Restart","Restart required":"Restart required","Restarting":"Restarting","Restarting Restreamer Core ...":"Restarting Restreamer Core ...","Restarting the application failed.":"Restarting the application failed.","Restreamer Service":"Restreamer Service","Retrieving stream data ...":"Retrieving stream data ...","Retry":"Retry","Rule":"Rule","Sampling":"Sampling","Save":"Save","Scale":"Scale","Seconds to keep files in cache.":"Seconds to keep files in cache.","Seconds until a process is restarted.":"Seconds until a process is restarted.","Seconds until a staled process is terminated.":"Seconds until a staled process is terminated.","Seconds until the snapshot/thumbnail of the video source is updated.":"Seconds until the snapshot/thumbnail of the video source is updated.","Security":"Security","Security token":"Security token","Seekbar color":"Seekbar color","Segment length (seconds)":"Segment length (seconds)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Segment will be cut on the following keyframe after this time has passed. 2 is recommended.","Segmentation":"Segmentation","Select a device:":"Select a device:","Select audio source:":"Select audio source:","Select source ...":"Select source ...","Select video source:":"Select video source:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).","Select your encoding setting:":"Select your encoding setting:","Selected":"Selected","Selected channel":"Selected channel","Selection":"Selection","Send anonymous metrics (helps us for future development)":"Send anonymous metrics (helps us for future development)","Send stream to this address:":"Send stream to this address:","Send video to Framebuffer":"Send video to Framebuffer","Server":"Server","Service":"Service","Service name":"Service name","Service token for monitoring.":"Service token for monitoring.","Sessions":"Sessions","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.","Setting for connection to the service.":"Setting for connection to the service.","Settings":"Settings","Settings (expert mode)":"Settings (expert mode)","Settings for /data path. The access is protected by":"Settings for /data path. The access is protected by","Settings for /memfs path.":"Settings for /memfs path.","Settings saved. All changes will be applied after restarting the application.":"Settings saved. All changes will be applied after restarting the application.","Share button":"Share button","Shows a reference to the project.":"Shows a reference to the project.","Sign up (free)":"Sign up (free)","Silence":"Silence","Silence Audio":"Silence Audio","Sine":"Sine","Sitename":"Sitename","Size":"Size","Snapshot":"Snapshot","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Socket timeout (microseconds)","Software":"Software","Source":"Source","Speed":"Speed","Stale timeout (seconds)":"Stale timeout (seconds)","Statistics":"Statistics","Storage":"Storage","Stores the viewer statistics to the disk.":"Stores the viewer statistics to the disk.","Stream":"Stream","Stream URL":"Stream URL","Stream key":"Stream key","Stream name":"Stream name","Stream names":"Stream names","Support datarhei Restreamer":"Support datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.","System":"System","Template":"Template","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Template to be used for creating the publication website. The delete button removes the selection from the system.","Terms":"Terms","Test pattern":"Test pattern","Test pattern (extended)":"Test pattern (extended)","Text colors":"Text colors","The amplitude (0.0 - 1.0) of the generated audio stream":"The amplitude (0.0 - 1.0) of the generated audio stream","The application is using an older version of the settings.":"The application is using an older version of the settings.","The bitrate of the audio stream.":"The bitrate of the audio stream.","The carrier frequency":"The carrier frequency","The channel \"{0}\" could not be deleted":["The channel \"",["0"],"\" could not be deleted"],"The channel \"{0}\" has been deleted":["The channel \"",["0"],"\" has been deleted"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"The deletion of this channel can not be recovered. All publications of this channel will be removed.","The input profile is not complete. Please define a video and audio source.":"The input profile is not complete. Please define a video and audio source.","The layout of the audio stream.":"The layout of the audio stream.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.","The noise color":"The noise color","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.","The publication service \"{0}\" could not be deleted":["The publication service \"",["0"],"\" could not be deleted"],"The publication service \"{0}\" has been created":["The publication service \"",["0"],"\" has been created"],"The publication service \"{0}\" has been deleted":["The publication service \"",["0"],"\" has been deleted"],"The publication service has been created":"The publication service has been created","The sample rate of the audio stream.":"The sample rate of the audio stream.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["The selected file is too big (",["0"]," bytes). Only ",["1"]," bytes are allowed."],"The selected file type ({0}) is not allowed. Allowed file types are {types}":["The selected file type (",["0"],") is not allowed. Allowed file types are ",["types"]],"The settings for \"{0}\" have been saved":["The settings for \"",["0"],"\" have been saved"],"The source doesn't provide any audio streams.":"The source doesn't provide any audio streams.","The source doesn't provide any audio streams. Please check the <0>probe details.":"The source doesn't provide any audio streams. Please check the <0>probe details.","The source doesn't provide any compatible audio streams.":"The source doesn't provide any compatible audio streams.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"The source doesn't provide any compatible video streams. Please check the <0>requirements.","The source doesn't provide any video streams. Please check the <0>probe details.":"The source doesn't provide any video streams. Please check the <0>probe details.","The source doesn't provide any video streams. Please check the device.":"The source doesn't provide any video streams. Please check the device.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.","The video source is compatible. Select the desired resolution:":"The video source is compatible. Select the desired resolution:","There are updates available. Here you get more information.":"There are updates available. Here you get more information.","There was a problem storing the settings. Settings not saved.":"There was a problem storing the settings. Settings not saved.","There was an error connecting to Restreamer Core at {0}.":["There was an error connecting to Restreamer Core at ",["0"],"."],"There was an error during upload: {0}":["There was an error during upload: ",["0"]],"There was an error setting up the stream.":"There was an error setting up the stream.","There were some errors in the settings. Settings not saved.":"There were some errors in the settings. Settings not saved.","There's no login method available.":"There's no login method available.","This is a dummy service that explains to you the concepts of service.":"This is a dummy service that explains to you the concepts of service.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..","This is to mention the copyright regulations for the target of this service.":"This is to mention the copyright regulations for the target of this service.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"This source cannot be edited while it is in use. To continue, you have to disconnect the source.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["This version of the UI doesn't support the available FFmpeg binary (",["0"],"). The UI requires ",["1"],". Please use a supported FFmpeg binary."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["This version of the UI doesn't support the connected Core (",["0"],"). The UI requires ",["1"],". Please use a compatible version of the UI."],"This version of the UI is compatible.":"This version of the UI is compatible.","Time until an inactive viewer connection is treated as closed.":"Time until an inactive viewer connection is treated as closed.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Transmit the main source to an SRT Server. More details about the settings can be found <0>here.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Transmit the main source to an UDP Server. More details about the settings can be found <0>here.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.","Tune":"Tune","UDP transport":"UDP transport","Unable to load the config.":"Unable to load the config.","Unique ident on the service.":"Unique ident on the service.","Unknown":"Unknown","Unselected":"Unselected","Upload":"Upload","Uploading the file failed":"Uploading the file failed","Uploading the logo failed":"Uploading the logo failed","Uptime":"Uptime","Use Auth0 for your running Restreamer Core. More <0>details.":"Use Auth0 for your running Restreamer Core. More <0>details.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.","User registration":"User registration","Username":"Username","Username for authorization.":"Username for authorization.","Username for the device.":"Username for the device.","VPU ID":"VPU ID","Video":"Video","Video device":"Video device","Video settings":"Video settings","Video setup":"Video setup","Video source":"Video source","Viewer":"Viewer","Virtual source":"Virtual source","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.","Write protection":"Write protection","YUV test pattern":"YUV test pattern","Yes":"Yes","You can't abort the wizard because at least one input must be defined.":"You can't abort the wizard because at least one input must be defined.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?","You have to reconnect manually":"You have to reconnect manually","You have unsaved changes. Please save them before you can control the service again.":"You have unsaved changes. Please save them before you can control the service again.","Your stream needs to be encoded, but there's no suitable encoder available.":"Your stream needs to be encoded, but there's no suitable encoder available.","Your stream needs to be encoded. Choose the desired encoder:":"Your stream needs to be encoded. Choose the desired encoder:","blue":"blue","brown":"brown","iframe code":"iframe code","kbit/s":"kbit/s","pink":"pink","velvet":"velvet","violet":"violet","white":"white"}}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index b265721..1c055d0 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -13,12 +13,16 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/views/Edit/Profile.js:372 -#: src/views/Edit/Profile.js:501 +#: src/misc/EncodingSelect.js:224 +msgid "<0>Compatibility list" +msgstr "<0>Compatibility list" + +#: src/views/Edit/Profile.js:380 +#: src/views/Edit/Profile.js:510 msgid "<0>Show probe details" msgstr "<0>Show probe details" -#: src/views/Edit/Sources/ALSA.js:150 +#: src/views/Edit/Sources/ALSA.js:156 msgid "ALSA" msgstr "ALSA" @@ -26,26 +30,26 @@ msgstr "ALSA" msgid "API endpoint not found. Settings not saved." msgstr "API endpoint not found. Settings not saved." -#: src/views/Edit/Sources/AVFoundation.js:211 +#: src/views/Edit/Sources/AVFoundation.js:221 msgid "AVFoundation" msgstr "AVFoundation" #: src/misc/ChannelList.js:356 -#: src/views/Edit/Profile.js:402 -#: src/views/Edit/Wizard/index.js:1136 -#: src/views/Edit/index.js:547 -#: src/views/Edit/index.js:573 -#: src/views/Edit/index.js:592 +#: src/views/Edit/Profile.js:410 +#: src/views/Edit/Wizard/index.js:1153 +#: src/views/Edit/index.js:549 +#: src/views/Edit/index.js:575 +#: src/views/Edit/index.js:594 #: src/views/Publication/Add.js:362 #: src/views/Publication/Edit.js:601 -#: src/views/Settings.js:1967 -#: src/views/Settings.js:2026 -#: src/views/Settings.js:2048 +#: src/views/Settings.js:1972 +#: src/views/Settings.js:2031 +#: src/views/Settings.js:2053 msgid "Abort" msgstr "Abort" -#: src/Header.js:286 -#: src/Header.js:327 +#: src/Header.js:283 +#: src/Header.js:324 msgid "About" msgstr "About" @@ -57,7 +61,7 @@ msgstr "Add" msgid "Add Publication" msgstr "Add Publication" -#: src/views/Playersite.js:679 +#: src/views/Playersite.js:692 msgid "Add external widgets and styles to the publication site. You can find some examples on the help page." msgstr "Add external widgets and styles to the publication site. You can find some examples on the help page." @@ -69,10 +73,10 @@ msgstr "Add new channel" msgid "Add: {0}" msgstr "Add: {0}" -#: src/views/Edit/Sources/Network.js:339 +#: src/views/Edit/Sources/Network.js:355 #: src/views/Edit/Wizard/Sources/Network.js:66 #: src/views/Publication/Services/Brightcove.js:95 -#: src/views/Publication/Services/Core.js:99 +#: src/views/Publication/Services/Core.js:100 #: src/views/Publication/Services/DASH.js:192 #: src/views/Publication/Services/HLS.js:181 #: src/views/Publication/Services/Icecast.js:160 @@ -84,23 +88,23 @@ msgstr "Add: {0}" #: src/views/Publication/Services/SRT.js:161 #: src/views/Publication/Services/UDP.js:127 #: src/views/Publication/Services/WOWZA.js:132 -#: src/views/Settings.js:1297 +#: src/views/Settings.js:1302 msgid "Address" msgstr "Address" -#: src/views/Playersite.js:616 +#: src/views/Playersite.js:629 msgid "Address for the background image." msgstr "Address for the background image." -#: src/views/Settings.js:1326 +#: src/views/Settings.js:1331 msgid "Address to listen on for HTTP requests." msgstr "Address to listen on for HTTP requests." -#: src/views/Settings.js:1339 +#: src/views/Settings.js:1344 msgid "Address to listen on for HTTPS requests." msgstr "Address to listen on for HTTPS requests." -#: src/views/Playersite.js:501 +#: src/views/Playersite.js:514 msgid "Adjust publication site colors and background as you like." msgstr "Adjust publication site colors and background as you like." @@ -108,7 +112,7 @@ msgstr "Adjust publication site colors and background as you like." msgid "Advanced monitoring" msgstr "Advanced monitoring" -#: src/views/Edit/Sources/Network.js:380 +#: src/views/Edit/Sources/Network.js:396 #: src/views/Publication/Services/DASH.js:204 #: src/views/Publication/Services/HLS.js:193 #: src/views/Publication/Services/Icecast.js:170 @@ -121,7 +125,7 @@ msgstr "Advanced monitoring" msgid "Advanced settings" msgstr "Advanced settings" -#: src/views/Edit/Wizard/index.js:280 +#: src/views/Edit/Wizard/index.js:287 msgid "Advanced setup" msgstr "Advanced setup" @@ -137,11 +141,11 @@ msgstr "All" msgid "All important system settings." msgstr "All important system settings." -#: src/views/Settings.js:1473 +#: src/views/Settings.js:1478 msgid "Allow all referrer" msgstr "Allow all referrer" -#: src/views/Settings.js:1513 +#: src/views/Settings.js:1518 msgid "Allow counting how many viewers the stream has." msgstr "Allow counting how many viewers the stream has." @@ -153,8 +157,8 @@ msgstr "Amplitude" msgid "An environment variable sets this value." msgstr "An environment variable sets this value." -#: src/views/Publication/Services/Core.js:109 -#: src/views/Settings.js:1811 +#: src/views/Publication/Services/Core.js:107 +#: src/views/Settings.js:1816 msgid "App" msgstr "App" @@ -164,7 +168,7 @@ msgstr "App" msgid "Application" msgstr "Application" -#: src/views/Edit/Wizard/index.js:1155 +#: src/views/Edit/Wizard/index.js:1172 msgid "Are you sure you want to abort the wizard?" msgstr "Are you sure you want to abort the wizard?" @@ -172,27 +176,27 @@ msgstr "Are you sure you want to abort the wizard?" msgid "Audio" msgstr "Audio" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:92 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:111 msgid "Audio Device" msgstr "Audio Device" -#: src/views/Edit/Sources/ALSA.js:101 -#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/ALSA.js:114 +#: src/views/Edit/Sources/AVFoundation.js:159 msgid "Audio device" msgstr "Audio device" -#: src/views/Edit/Wizard/index.js:858 -#: src/views/Edit/Wizard/index.js:870 +#: src/views/Edit/Wizard/index.js:875 +#: src/views/Edit/Wizard/index.js:887 msgid "Audio from device" msgstr "Audio from device" -#: src/views/Edit/Profile.js:417 -#: src/views/Edit/ProfileSummary.js:89 +#: src/views/Edit/Profile.js:425 +#: src/views/Edit/ProfileSummary.js:90 #: src/views/Publication/Edit.js:533 msgid "Audio settings" msgstr "Audio settings" -#: src/views/Edit/Wizard/index.js:811 +#: src/views/Edit/Wizard/index.js:828 msgid "Audio setup" msgstr "Audio setup" @@ -208,43 +212,47 @@ msgstr "Auth0 Tenant" msgid "Auth0 is currently not available because this interface is loaded from an insecure origin." msgstr "Auth0 is currently not available because this interface is loaded from an insecure origin." -#: src/misc/controls/Metadata.js:74 +#: src/misc/controls/Metadata.js:71 msgid "Author" msgstr "Author" #: src/views/Settings.js:1143 -#: src/views/Settings.js:1410 +#: src/views/Settings.js:1415 msgid "Authorization" msgstr "Authorization" -#: src/views/Publication/Player.js:434 +#: src/misc/controls/HLS.js:83 +msgid "Automatic cleanup of all media data" +msgstr "Automatic cleanup of all media data" + +#: src/views/Publication/Player.js:437 msgid "Autoplay" msgstr "Autoplay" -#: src/views/Playersite.js:434 +#: src/views/Playersite.js:445 msgid "Available" msgstr "Available" -#: src/views/Edit/Profile.js:532 -#: src/views/Edit/Wizard/index.js:394 -#: src/views/Edit/Wizard/index.js:630 -#: src/views/Edit/Wizard/index.js:895 -#: src/views/Edit/Wizard/index.js:1007 -#: src/views/Edit/Wizard/index.js:1065 -#: src/views/Edit/Wizard/index.js:1147 +#: src/views/Edit/Profile.js:541 +#: src/views/Edit/Wizard/index.js:408 +#: src/views/Edit/Wizard/index.js:647 +#: src/views/Edit/Wizard/index.js:912 +#: src/views/Edit/Wizard/index.js:1024 +#: src/views/Edit/Wizard/index.js:1082 +#: src/views/Edit/Wizard/index.js:1164 #: src/views/Publication/Add.js:528 msgid "Back" msgstr "Back" -#: src/views/Playersite.js:550 +#: src/views/Playersite.js:563 msgid "Background colors" msgstr "Background colors" -#: src/views/Playersite.js:603 +#: src/views/Playersite.js:616 msgid "Background image" msgstr "Background image" -#: src/views/Publication/Services/Akamai.js:195 +#: src/views/Publication/Services/Akamai.js:196 msgid "Backup URL" msgstr "Backup URL" @@ -256,7 +264,7 @@ msgstr "Backup server" msgid "Backup stream" msgstr "Backup stream" -#: src/views/Publication/Services/Facebook.js:128 +#: src/views/Publication/Services/Facebook.js:124 msgid "Backup stream key" msgstr "Backup stream key" @@ -265,7 +273,7 @@ msgstr "Backup stream key" msgid "Bandwidth" msgstr "Bandwidth" -#: src/views/Settings.js:1368 +#: src/views/Settings.js:1373 msgid "Bandwidth control" msgstr "Bandwidth control" @@ -274,7 +282,7 @@ msgid "Banner" msgstr "Banner" #: src/views/Login.js:241 -#: src/views/Settings.js:1415 +#: src/views/Settings.js:1420 msgid "Basic" msgstr "Basic" @@ -287,40 +295,40 @@ msgstr "Beep factor" msgid "Bitrate" msgstr "Bitrate" -#: src/views/Edit/Wizard/index.js:996 -#: src/views/Edit/index.js:508 +#: src/views/Edit/Wizard/index.js:1013 +#: src/views/Edit/index.js:510 msgid "Briefly describe what the audience will see during the live stream." msgstr "Briefly describe what the audience will see during the live stream." -#: src/views/Publication/Player.js:349 +#: src/views/Publication/Player.js:352 msgid "Button color" msgstr "Button color" -#: src/views/Settings.js:1682 +#: src/views/Settings.js:1687 msgid "Cache for files on /data." msgstr "Cache for files on /data." -#: src/views/Settings.js:1710 +#: src/views/Settings.js:1715 msgid "Cache time (Seconds)" msgstr "Cache time (Seconds)" -#: src/views/Settings.js:1738 +#: src/views/Settings.js:1743 msgid "Cache types" msgstr "Cache types" -#: src/views/Edit/Sources/AVFoundation.js:188 +#: src/views/Edit/Sources/AVFoundation.js:197 msgid "Capture clicks" msgstr "Capture clicks" -#: src/views/Edit/Sources/AVFoundation.js:185 +#: src/views/Edit/Sources/AVFoundation.js:194 msgid "Capture cursor" msgstr "Capture cursor" -#: src/views/Edit/index.js:326 +#: src/views/Edit/index.js:327 msgid "Channel \"{0}\" saved" msgstr "Channel \"{0}\" saved" -#: src/views/Edit/Sources/ALSA.js:124 +#: src/views/Edit/Sources/ALSA.js:129 msgid "Channels" msgstr "Channels" @@ -340,14 +348,14 @@ msgstr "Choose a video stream" msgid "Choose an audio stream" msgstr "Choose an audio stream" -#: src/views/Edit/Sources/ALSA.js:90 +#: src/views/Edit/Sources/ALSA.js:96 #: src/views/Edit/Sources/Framebuffer.js:80 #: src/views/Edit/Sources/Raspicam.js:84 -#: src/views/Edit/Sources/V4L.js:84 +#: src/views/Edit/Sources/V4L.js:90 msgid "Choose an input device ..." msgstr "Choose an input device ..." -#: src/misc/EncodingSelect.js:190 +#: src/misc/EncodingSelect.js:202 msgid "Choose codec ..." msgstr "Choose codec ..." @@ -360,28 +368,28 @@ msgstr "Choose tenant ..." msgid "Chunk" msgstr "Chunk" -#: src/misc/ModalContent.js:87 -#: src/views/Playersite.js:769 +#: src/misc/ModalContent.js:77 +#: src/views/Playersite.js:782 #: src/views/Publication/Add.js:525 #: src/views/Publication/Edit.js:565 -#: src/views/Publication/Player.js:444 +#: src/views/Publication/Player.js:447 msgid "Close" msgstr "Close" -#: src/views/Playersite.js:352 +#: src/views/Playersite.js:354 msgid "Code injection" msgstr "Code injection" -#: src/misc/EncodingSelect.js:188 +#: src/misc/EncodingSelect.js:200 msgid "Codec" msgstr "Codec" #: src/views/Edit/Sources/VirtualAudio.js:110 -#: src/views/Publication/Player.js:317 +#: src/views/Publication/Player.js:320 msgid "Color" msgstr "Color" -#: src/views/Settings.js:1277 +#: src/views/Settings.js:1282 msgid "Config" msgstr "Config" @@ -393,7 +401,7 @@ msgstr "Confirm password" msgid "Connect" msgstr "Connect" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:134 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:157 msgid "Connected device" msgstr "Connected device" @@ -402,7 +410,7 @@ msgid "Connected since <0/>" msgstr "Connected since <0/>" #: src/misc/ActionButton.js:12 -#: src/views/Main/index.js:308 +#: src/views/Main/index.js:305 #: src/views/Publication/Process.js:40 msgid "Connecting ..." msgstr "Connecting ..." @@ -415,12 +423,16 @@ msgstr "Connecting to Restreamer Core ..." msgid "Connecting to Restreamer Core failed probably because of mixed content." msgstr "Connecting to Restreamer Core failed probably because of mixed content." -#: src/misc/controls/Metadata.js:73 -#: src/views/Playersite.js:646 -#: src/views/Playersite.js:663 +#: src/misc/controls/Metadata.js:70 +#: src/views/Playersite.js:659 +#: src/views/Playersite.js:676 msgid "Content" msgstr "Content" +#: src/views/Main/index.js:365 +msgid "Content URL" +msgstr "Content URL" + #: src/Footer.js:193 msgid "Cores" msgstr "Cores" @@ -442,22 +454,22 @@ msgstr "Creative Commons" #: src/misc/coders/settings/Video.js:115 #: src/misc/coders/settings/Video.js:181 #: src/misc/coders/settings/Video.js:220 -#: src/views/Edit/Sources/ALSA.js:95 -#: src/views/Edit/Sources/AVFoundation.js:114 -#: src/views/Edit/Sources/AVFoundation.js:147 -#: src/views/Edit/Sources/V4L.js:90 +#: src/views/Edit/Sources/ALSA.js:101 +#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/V4L.js:96 msgid "Custom ..." msgstr "Custom ..." -#: src/views/Settings.js:1283 +#: src/views/Settings.js:1288 msgid "Custom JSON config for datarhei Core." msgstr "Custom JSON config for datarhei Core." -#: src/views/Edit/Sources/ALSA.js:102 +#: src/views/Edit/Sources/ALSA.js:115 msgid "Custom audio device" msgstr "Custom audio device" -#: src/views/Edit/Sources/AVFoundation.js:154 +#: src/views/Edit/Sources/AVFoundation.js:160 msgid "Custom audio index" msgstr "Custom audio index" @@ -466,7 +478,7 @@ msgstr "Custom audio index" msgid "Custom bitrate (kbit/s)" msgstr "Custom bitrate (kbit/s)" -#: src/views/Playersite.js:674 +#: src/views/Playersite.js:687 msgid "Custom code injection" msgstr "Custom code injection" @@ -506,35 +518,36 @@ msgstr "Custom scale" msgid "Custom size" msgstr "Custom size" -#: src/views/Edit/Sources/V4L.js:97 +#: src/views/Edit/Sources/V4L.js:110 msgid "Custom video device" msgstr "Custom video device" -#: src/views/Edit/Sources/AVFoundation.js:121 +#: src/views/Edit/Sources/AVFoundation.js:127 msgid "Custom video index" msgstr "Custom video index" -#: src/misc/TextFieldCopy.js:44 +#: src/misc/CopyButton.js:20 +#: src/misc/TextFieldCopy.js:33 #: src/misc/Textarea.js:46 msgid "Data copied to clipboard" msgstr "Data copied to clipboard" -#: src/views/Edit/Sources/VirtualVideo.js:164 +#: src/views/Edit/Sources/VirtualVideo.js:167 msgid "Death color" msgstr "Death color" -#: src/misc/EncodingSelect.js:198 -#: src/views/Edit/Wizard/index.js:611 +#: src/misc/EncodingSelect.js:210 +#: src/views/Edit/Wizard/index.js:628 msgid "Decoder" msgstr "Decoder" -#: src/views/Edit/Sources/AVFoundation.js:109 -#: src/views/Edit/Sources/AVFoundation.js:143 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:61 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:87 -#: src/views/Playersite.js:440 -#: src/views/Playersite.js:513 -#: src/views/Playersite.js:557 +#: src/views/Edit/Sources/AVFoundation.js:115 +#: src/views/Edit/Sources/AVFoundation.js:149 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:76 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:105 +#: src/views/Playersite.js:451 +#: src/views/Playersite.js:526 +#: src/views/Playersite.js:570 msgid "Default" msgstr "Default" @@ -542,13 +555,13 @@ msgstr "Default" msgid "Delay" msgstr "Delay" -#: src/views/Edit/Sources/ALSA.js:127 +#: src/views/Edit/Sources/ALSA.js:132 msgid "Delay (ms)" msgstr "Delay (ms)" -#: src/views/Edit/index.js:561 -#: src/views/Edit/index.js:597 -#: src/views/Playersite.js:461 +#: src/views/Edit/index.js:563 +#: src/views/Edit/index.js:599 +#: src/views/Playersite.js:474 #: src/views/Publication/Edit.js:574 #: src/views/Publication/Edit.js:606 msgid "Delete" @@ -563,18 +576,18 @@ msgstr "Deleting a publication service cannot be reversed. The publication stops msgid "Delivering mode" msgstr "Delivering mode" -#: src/misc/controls/Metadata.js:88 -#: src/misc/controls/Metadata.js:113 +#: src/misc/controls/Metadata.js:85 +#: src/misc/controls/Metadata.js:110 msgid "Description" msgstr "Description" -#: src/views/Playersite.js:350 -#: src/views/Playersite.js:496 +#: src/views/Playersite.js:352 +#: src/views/Playersite.js:509 msgid "Design" msgstr "Design" #: src/views/Edit/Sources/Framebuffer.js:87 -#: src/views/Edit/Wizard/index.js:873 +#: src/views/Edit/Wizard/index.js:890 #: src/views/Publication/Services/Framebuffer.js:93 msgid "Device" msgstr "Device" @@ -585,7 +598,7 @@ msgstr "Device" msgid "Disconnect" msgstr "Disconnect" -#: src/views/Edit/index.js:578 +#: src/views/Edit/index.js:580 msgid "Disconnect & Continue" msgstr "Disconnect & Continue" @@ -594,12 +607,12 @@ msgstr "Disconnect & Continue" msgid "Disconnecting ..." msgstr "Disconnecting ..." -#: src/views/Settings.js:1645 +#: src/views/Settings.js:1650 msgid "Disk" msgstr "Disk" -#: src/views/Settings.js:1679 -#: src/views/Settings.js:1687 +#: src/views/Settings.js:1684 +#: src/views/Settings.js:1692 msgid "Disk cache" msgstr "Disk cache" @@ -608,11 +621,11 @@ msgstr "Disk cache" msgid "Disk storage" msgstr "Disk storage" -#: src/views/Settings.js:2058 +#: src/views/Settings.js:2063 msgid "Do you really want to restart the application now?" msgstr "Do you really want to restart the application now?" -#: src/views/Edit/index.js:589 +#: src/views/Edit/index.js:591 msgid "Do you want to delete \"{0}\"?" msgstr "Do you want to delete \"{0}\"?" @@ -620,12 +633,12 @@ msgstr "Do you want to delete \"{0}\"?" msgid "Do you want to delete {title}?" msgstr "Do you want to delete {title}?" -#: src/views/Edit/index.js:570 +#: src/views/Edit/index.js:572 msgid "Do you want to disconnect \"{0}\"?" msgstr "Do you want to disconnect \"{0}\"?" -#: src/Header.js:292 -#: src/Header.js:333 +#: src/Header.js:289 +#: src/Header.js:330 msgid "Docs" msgstr "Docs" @@ -645,19 +658,19 @@ msgstr "Documentation" msgid "Dup. frames" msgstr "Dup. frames" -#: src/views/Publication/Player.js:282 +#: src/views/Publication/Player.js:285 msgid "EDIT: Player" msgstr "EDIT: Player" -#: src/views/Playersite.js:344 +#: src/views/Playersite.js:346 msgid "EDIT: Publication Website" msgstr "EDIT: Publication Website" -#: src/views/Edit/index.js:390 +#: src/views/Edit/index.js:391 msgid "Edit" msgstr "Edit" -#: src/views/Edit/index.js:416 +#: src/views/Edit/index.js:417 msgid "Edit the audio and video sources for the live stream. Add a description, and set your desired content license." msgstr "Edit the audio and video sources for the live stream. Add a description, and set your desired content license." @@ -665,11 +678,11 @@ msgstr "Edit the audio and video sources for the live stream. Add a description, msgid "Edit: {title}" msgstr "Edit: {title}" -#: src/views/Publication/Player.js:316 +#: src/views/Publication/Player.js:319 msgid "Embed" msgstr "Embed" -#: src/views/Edit/Sources/Network.js:561 +#: src/views/Edit/Sources/Network.js:577 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:55 msgid "Enable RTMP server ..." msgstr "Enable RTMP server ..." @@ -679,16 +692,16 @@ msgid "Enable a periodic beep every second with this value times the carrier fre msgstr "Enable a periodic beep every second with this value times the carrier frequency" #: src/views/Publication/Services/Dummy.js:278 -#: src/views/Publication/Services/Facebook.js:147 +#: src/views/Publication/Services/Facebook.js:139 msgid "Enable backup stream" msgstr "Enable backup stream" -#: src/views/Publication/Player.js:424 +#: src/views/Publication/Player.js:427 msgid "Enable nerd statistics" msgstr "Enable nerd statistics" #: src/views/Publication/Services/Dummy.js:277 -#: src/views/Publication/Services/Facebook.js:146 +#: src/views/Publication/Services/Facebook.js:138 msgid "Enable primary stream" msgstr "Enable primary stream" @@ -696,15 +709,15 @@ msgstr "Enable primary stream" msgid "Enable snapshots" msgstr "Enable snapshots" -#: src/views/Settings.js:1428 +#: src/views/Settings.js:1433 msgid "Enabling authorization is strongly advised. Otherwise, anybody can access this instance." msgstr "Enabling authorization is strongly advised. Otherwise, anybody can access this instance." -#: src/views/Settings.js:1588 +#: src/views/Settings.js:1593 msgid "Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs." msgstr "Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs." -#: src/views/Edit/Wizard/index.js:617 +#: src/views/Edit/Wizard/index.js:634 msgid "Encoder" msgstr "Encoder" @@ -730,7 +743,7 @@ msgstr "Enter a name for the new channel." msgid "Enter password" msgstr "Enter password" -#: src/views/Edit/Sources/Network.js:332 +#: src/views/Edit/Sources/Network.js:348 #: src/views/Edit/Wizard/Sources/Network.js:59 msgid "Enter the address of your network source:" msgstr "Enter the address of your network source:" @@ -743,7 +756,7 @@ msgstr "Enter username" msgid "Entropy coder" msgstr "Entropy coder" -#: src/views/Edit/Wizard/index.js:1101 +#: src/views/Edit/Wizard/index.js:1118 #: src/views/Incompatible.js:30 #: src/views/Invalid.js:29 #: src/views/Publication/Process.js:63 @@ -751,45 +764,46 @@ msgstr "Entropy coder" msgid "Error" msgstr "Error" -#: src/misc/TextFieldCopy.js:46 +#: src/misc/CopyButton.js:22 +#: src/misc/TextFieldCopy.js:35 #: src/misc/Textarea.js:48 msgid "Error while copying data to clipboard" msgstr "Error while copying data to clipboard" -#: src/views/Main/index.js:327 +#: src/views/Main/index.js:324 #: src/views/Publication/Process.js:64 msgid "Error: {0}" msgstr "Error: {0}" -#: src/views/Playersite.js:719 +#: src/views/Playersite.js:732 msgid "Expands the area above the channel list (live chat)." msgstr "Expands the area above the channel list (live chat)." -#: src/views/Playersite.js:739 +#: src/views/Playersite.js:752 msgid "Expands the area under the channel description (comment boxes)." msgstr "Expands the area under the channel description (comment boxes)." -#: src/views/Settings.js:1194 +#: src/views/Settings.js:1199 msgid "Expert mode" msgstr "Expert mode" -#: src/views/Playersite.js:704 +#: src/views/Playersite.js:717 msgid "Extend channel list" msgstr "Extend channel list" -#: src/views/Playersite.js:724 +#: src/views/Playersite.js:737 msgid "Extend content" msgstr "Extend content" -#: src/views/Playersite.js:744 +#: src/views/Playersite.js:757 msgid "Extend footer" msgstr "Extend footer" -#: src/views/Playersite.js:684 +#: src/views/Playersite.js:697 msgid "Extend header" msgstr "Extend header" -#: src/views/Settings.js:1931 +#: src/views/Settings.js:1936 msgid "FFmpeg" msgstr "FFmpeg" @@ -798,20 +812,16 @@ msgstr "FFmpeg" msgid "FPS" msgstr "FPS" -#: src/views/Edit/index.js:290 -msgid "Failed to correctly cleanup previous process data" -msgstr "Failed to correctly cleanup previous process data" - #: src/views/Publication/Add.js:180 msgid "Failed to create publication service ({0})" msgstr "Failed to create publication service ({0})" -#: src/views/Playersite.js:308 +#: src/views/Playersite.js:310 msgid "Failed to create publication website files." msgstr "Failed to create publication website files." -#: src/views/Edit/Profile.js:333 -#: src/views/Edit/Profile.js:462 +#: src/views/Edit/Profile.js:341 +#: src/views/Edit/Profile.js:471 msgid "Failed to probe the source. Please check the <0>probe details." msgstr "Failed to probe the source. Please check the <0>probe details." @@ -819,7 +829,7 @@ msgstr "Failed to probe the source. Please check the <0>probe details." msgid "Failed to refresh token: {0}" msgstr "Failed to refresh token: {0}" -#: src/views/Edit/index.js:303 +#: src/views/Edit/index.js:304 msgid "Failed to save ingest metadata" msgstr "Failed to save ingest metadata" @@ -827,7 +837,7 @@ msgstr "Failed to save ingest metadata" msgid "Failed to stop process" msgstr "Failed to stop process" -#: src/views/Playersite.js:301 +#: src/views/Playersite.js:303 msgid "Failed to store player size setting." msgstr "Failed to store player size setting." @@ -835,36 +845,36 @@ msgstr "Failed to store player size setting." msgid "Failed to store publication service ({0})" msgstr "Failed to store publication service ({0})" -#: src/views/Edit/index.js:296 +#: src/views/Edit/index.js:297 msgid "Failed to update ingest process ({0})" msgstr "Failed to update ingest process ({0})" -#: src/views/Edit/index.js:309 +#: src/views/Edit/index.js:310 msgid "Failed to update the player" msgstr "Failed to update the player" -#: src/views/Edit/Wizard/index.js:361 -#: src/views/Edit/Wizard/index.js:821 +#: src/views/Edit/Wizard/index.js:375 +#: src/views/Edit/Wizard/index.js:838 msgid "Failed to verify the source. Please check the address." msgstr "Failed to verify the source. Please check the address." -#: src/views/Edit/Profile.js:540 +#: src/views/Edit/Profile.js:549 msgid "Finish" msgstr "Finish" -#: src/views/Edit/Sources/VirtualVideo.js:170 +#: src/views/Edit/Sources/VirtualVideo.js:182 msgid "Flags" msgstr "Flags" -#: src/views/Playersite.js:759 +#: src/views/Playersite.js:772 msgid "For Javascripts." msgstr "For Javascripts." -#: src/views/Playersite.js:699 +#: src/views/Playersite.js:712 msgid "For Stylesheets." msgstr "For Stylesheets." -#: src/views/Edit/Sources/Network.js:423 +#: src/views/Edit/Sources/Network.js:439 msgid "Force input framerate" msgstr "Force input framerate" @@ -881,7 +891,7 @@ msgid "Framebuffer" msgstr "Framebuffer" #: src/misc/coders/settings/Video.js:135 -#: src/views/Edit/Sources/Network.js:436 +#: src/views/Edit/Sources/Network.js:452 msgid "Framerate" msgstr "Framerate" @@ -889,21 +899,22 @@ msgstr "Framerate" msgid "Frequency (Hz)" msgstr "Frequency (Hz)" -#: src/views/Publication/Services/Facebook.js:119 -#: src/views/Publication/Services/Facebook.js:141 +#: src/views/Publication/Services/Core.js:129 +#: src/views/Publication/Services/Facebook.js:115 +#: src/views/Publication/Services/Facebook.js:133 #: src/views/Publication/Services/Instagram.js:88 -#: src/views/Publication/Services/Restream.js:124 -#: src/views/Publication/Services/Twitch.js:137 +#: src/views/Publication/Services/Restream.js:120 +#: src/views/Publication/Services/Twitch.js:133 #: src/views/Publication/Services/Twitter.js:179 #: src/views/Publication/Services/Youtube.js:177 msgid "GET" msgstr "GET" -#: src/views/Edit/Sources/Network.js:455 -#: src/views/Edit/index.js:399 -#: src/views/Edit/index.js:411 -#: src/views/Playersite.js:348 -#: src/views/Playersite.js:361 +#: src/views/Edit/Sources/Network.js:471 +#: src/views/Edit/index.js:400 +#: src/views/Edit/index.js:412 +#: src/views/Playersite.js:350 +#: src/views/Playersite.js:363 #: src/views/Publication/Add.js:372 #: src/views/Publication/Edit.js:386 #: src/views/Publication/Services/DASH.js:211 @@ -918,52 +929,49 @@ msgstr "GET" msgid "General" msgstr "General" -#: src/views/Publication/Player.js:407 +#: src/views/Publication/Player.js:410 msgid "Google Analytics ID" msgstr "Google Analytics ID" -#: src/views/Publication/Player.js:417 +#: src/views/Publication/Player.js:420 msgid "Google Analytics Tracker Name" msgstr "Google Analytics Tracker Name" -#: src/views/Edit/index.js:469 +#: src/views/Edit/index.js:471 +#: src/views/Main/index.js:369 msgid "HLS" msgstr "HLS" -#: src/views/Main/index.js:367 -msgid "HLS URL" -msgstr "HLS URL" - -#: src/views/Settings.js:1505 +#: src/views/Settings.js:1510 msgid "HLS statistic for the In-memory storage" msgstr "HLS statistic for the In-memory storage" -#: src/views/Edit/Sources/Network.js:413 +#: src/views/Edit/Sources/Network.js:429 msgid "HTTP and HTTPS" msgstr "HTTP and HTTPS" -#: src/views/Settings.js:1318 +#: src/views/Settings.js:1323 msgid "HTTP port" msgstr "HTTP port" -#: src/views/Settings.js:1347 +#: src/views/Settings.js:1352 msgid "HTTPS (SSL/TLS)" msgstr "HTTPS (SSL/TLS)" -#: src/views/Settings.js:1331 +#: src/views/Settings.js:1336 msgid "HTTPS port" msgstr "HTTPS port" -#: src/views/Edit/Sources/V4L.js:145 -#: src/views/Edit/Wizard/Sources/V4L.js:120 +#: src/views/Edit/Sources/V4L.js:151 +#: src/views/Edit/Wizard/Sources/V4L.js:140 msgid "Hardware device" msgstr "Hardware device" -#: src/views/Playersite.js:566 +#: src/views/Playersite.js:579 msgid "Header" msgstr "Header" -#: src/views/Playersite.js:522 +#: src/views/Playersite.js:535 msgid "Headline" msgstr "Headline" @@ -971,7 +979,7 @@ msgstr "Headline" msgid "Hosted Restreamer interface" msgstr "Hosted Restreamer interface" -#: src/views/Settings.js:1253 +#: src/views/Settings.js:1258 msgid "Human readable name on the service." msgstr "Human readable name on the service." @@ -979,32 +987,32 @@ msgstr "Human readable name on the service." msgid "IP address" msgstr "IP address" -#: src/views/Settings.js:2003 +#: src/views/Settings.js:2008 msgid "If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port." msgstr "If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port." -#: src/views/Settings.js:1997 +#: src/views/Settings.js:2002 msgid "If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core." msgstr "If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core." -#: src/views/Settings.js:1520 +#: src/views/Settings.js:1525 msgid "Ignore IP ranges" msgstr "Ignore IP ranges" -#: src/views/Playersite.js:611 -#: src/views/Publication/Player.js:363 +#: src/views/Playersite.js:624 +#: src/views/Publication/Player.js:366 msgid "Image URL" msgstr "Image URL" -#: src/views/Playersite.js:636 +#: src/views/Playersite.js:649 msgid "Imprint" msgstr "Imprint" -#: src/views/Playersite.js:366 +#: src/views/Playersite.js:368 msgid "In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly." msgstr "In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly." -#: src/views/Settings.js:1572 +#: src/views/Settings.js:1577 msgid "In-memory" msgstr "In-memory" @@ -1022,19 +1030,19 @@ msgstr "Incompatible" msgid "Inherit" msgstr "Inherit" -#: src/views/Playersite.js:694 +#: src/views/Playersite.js:707 msgid "Inject 1" msgstr "Inject 1" -#: src/views/Playersite.js:714 +#: src/views/Playersite.js:727 msgid "Inject 2" msgstr "Inject 2" -#: src/views/Playersite.js:734 +#: src/views/Playersite.js:747 msgid "Inject 3" msgstr "Inject 3" -#: src/views/Playersite.js:754 +#: src/views/Playersite.js:767 msgid "Inject 4" msgstr "Inject 4" @@ -1050,8 +1058,8 @@ msgstr "Internal RTMP server" msgid "Interval (seconds)" msgstr "Interval (seconds)" -#: src/Header.js:298 -#: src/Header.js:339 +#: src/Header.js:295 +#: src/Header.js:336 msgid "Issue alert" msgstr "Issue alert" @@ -1063,11 +1071,11 @@ msgstr "Keyframe interval (seconds)" msgid "Layout" msgstr "Layout" -#: src/views/Settings.js:1352 +#: src/views/Settings.js:1357 msgid "Let's Encrypt certification" msgstr "Let's Encrypt certification" -#: src/views/Settings.js:1360 +#: src/views/Settings.js:1365 msgid "Let's Encrypt requires one or more public domain names and an accessible port 80/TCP." msgstr "Let's Encrypt requires one or more public domain names and an accessible port 80/TCP." @@ -1075,42 +1083,42 @@ msgstr "Let's Encrypt requires one or more public domain names and an accessible msgid "Level" msgstr "Level" -#: src/views/Settings.js:1913 +#: src/views/Settings.js:1918 msgid "Level of system protocol." msgstr "Level of system protocol." -#: src/views/Edit/Wizard/index.js:1044 -#: src/views/Edit/index.js:402 -#: src/views/Edit/index.js:523 +#: src/views/Edit/Wizard/index.js:1061 +#: src/views/Edit/index.js:403 +#: src/views/Edit/index.js:525 msgid "License" msgstr "License" -#: src/views/Edit/Sources/VirtualVideo.js:167 +#: src/views/Edit/Sources/VirtualVideo.js:176 msgid "Life color" msgstr "Life color" -#: src/views/Playersite.js:593 +#: src/views/Playersite.js:606 msgid "Linecolor" msgstr "Linecolor" -#: src/views/Playersite.js:531 -#: src/views/Publication/Player.js:393 +#: src/views/Playersite.js:544 +#: src/views/Publication/Player.js:396 msgid "Link" msgstr "Link" -#: src/views/Playersite.js:540 +#: src/views/Playersite.js:553 msgid "Link, mouseover" msgstr "Link, mouseover" -#: src/views/Settings.js:1528 +#: src/views/Settings.js:1533 msgid "List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions." msgstr "List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions." -#: src/views/Settings.js:1746 +#: src/views/Settings.js:1751 msgid "List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types." msgstr "List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types." -#: src/misc/controls/HLS.js:71 +#: src/misc/controls/HLS.js:74 msgid "List size (segments)" msgstr "List size (segments)" @@ -1127,27 +1135,27 @@ msgid "Live-Streaming to Twitch Live RTMP Service." msgstr "Live-Streaming to Twitch Live RTMP Service." #: src/views/Publication/Services/Vimeo.js:12 -msgid "Live-Streaming to Vimeos Live RTMP Service" -msgstr "Live-Streaming to Vimeos Live RTMP Service" +msgid "Live-Streaming to Vimeo Live RTMP Service" +msgstr "Live-Streaming to Vimeo Live RTMP Service" #: src/views/Publication/Services/Livespotting.js:94 msgid "Livesource ID" msgstr "Livesource ID" -#: src/views/Settings.js:1865 +#: src/views/Settings.js:1870 msgid "Log level" msgstr "Log level" #: src/misc/modals/Process.js:90 #: src/views/Settings.js:1147 -#: src/views/Settings.js:1841 +#: src/views/Settings.js:1846 msgid "Logging" msgstr "Logging" #: src/views/Login.js:297 #: src/views/Login.js:391 #: src/views/Login.js:406 -#: src/views/Publication/Services/Akamai.js:123 +#: src/views/Publication/Services/Akamai.js:124 msgid "Login" msgstr "Login" @@ -1163,15 +1171,15 @@ msgstr "Login failed: Couldn't load API details" msgid "Login failed: {0}" msgstr "Login failed: {0}" -#: src/views/Settings.js:1420 +#: src/views/Settings.js:1425 msgid "Login/JWT authorization" msgstr "Login/JWT authorization" -#: src/views/Publication/Player.js:318 +#: src/views/Publication/Player.js:321 msgid "Logo" msgstr "Logo" -#: src/Header.js:310 +#: src/Header.js:307 msgid "Logout" msgstr "Logout" @@ -1179,12 +1187,12 @@ msgstr "Logout" msgid "MB" msgstr "MB" -#: src/views/Edit/index.js:379 +#: src/views/Edit/index.js:380 msgid "Main Source" msgstr "Main Source" -#: src/views/Main/index.js:263 -#: src/views/Playersite.js:386 +#: src/views/Main/index.js:260 +#: src/views/Playersite.js:389 msgid "Main channel" msgstr "Main channel" @@ -1192,11 +1200,11 @@ msgstr "Main channel" msgid "Main channel not found" msgstr "Main channel not found" -#: src/views/Edit/Wizard/index.js:181 +#: src/views/Edit/Wizard/index.js:188 msgid "Main channel saved" msgstr "Main channel saved" -#: src/views/Playersite.js:409 +#: src/views/Playersite.js:412 msgid "Main page channel (index.html)." msgstr "Main page channel (index.html)." @@ -1209,19 +1217,19 @@ msgstr "Main page channel (index.html)." msgid "Maintainer:" msgstr "Maintainer:" -#: src/views/Settings.js:1705 +#: src/views/Settings.js:1710 msgid "Maximum allowed cache size, 0 for unlimited." msgstr "Maximum allowed cache size, 0 for unlimited." -#: src/views/Settings.js:1627 +#: src/views/Settings.js:1632 msgid "Maximum allowed megabytes of RAM for /memfs, 0 for unlimited." msgstr "Maximum allowed megabytes of RAM for /memfs, 0 for unlimited." -#: src/views/Settings.js:1671 +#: src/views/Settings.js:1676 msgid "Maximum allowed megabytes to consume from hard disk. 0 for unlimited." msgstr "Maximum allowed megabytes to consume from hard disk. 0 for unlimited." -#: src/views/Settings.js:1389 +#: src/views/Settings.js:1394 msgid "Maximum bandwidth Mbit/s" msgstr "Maximum bandwidth Mbit/s" @@ -1229,34 +1237,34 @@ msgstr "Maximum bandwidth Mbit/s" msgid "Maximum delay in milliseconds." msgstr "Maximum delay in milliseconds." -#: src/views/Settings.js:1723 +#: src/views/Settings.js:1728 msgid "Maximum file size (Megabytes)" msgstr "Maximum file size (Megabytes)" -#: src/views/Settings.js:1731 +#: src/views/Settings.js:1736 msgid "Maximum file size to put in cache." msgstr "Maximum file size to put in cache." -#: src/views/Settings.js:1949 +#: src/views/Settings.js:1954 msgid "Maximum log histroy" msgstr "Maximum log histroy" -#: src/views/Settings.js:1918 -#: src/views/Settings.js:1936 +#: src/views/Settings.js:1923 +#: src/views/Settings.js:1941 msgid "Maximum log lines" msgstr "Maximum log lines" -#: src/views/Settings.js:1619 -#: src/views/Settings.js:1663 -#: src/views/Settings.js:1697 +#: src/views/Settings.js:1624 +#: src/views/Settings.js:1668 +#: src/views/Settings.js:1702 msgid "Maximum size (Megabytes)" msgstr "Maximum size (Megabytes)" -#: src/views/Settings.js:1537 +#: src/views/Settings.js:1542 msgid "Maximum viewer idle time (Seconds)" msgstr "Maximum viewer idle time (Seconds)" -#: src/views/Settings.js:1373 +#: src/views/Settings.js:1378 msgid "Maximum viewers" msgstr "Maximum viewers" @@ -1264,12 +1272,12 @@ msgstr "Maximum viewers" msgid "Memory" msgstr "Memory" -#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:402 msgid "Meta information" msgstr "Meta information" -#: src/views/Edit/Wizard/index.js:989 -#: src/views/Edit/index.js:503 +#: src/views/Edit/Wizard/index.js:1006 +#: src/views/Edit/index.js:505 msgid "Metadata" msgstr "Metadata" @@ -1291,44 +1299,44 @@ msgstr "More about YouTube's copyright <0>here." msgid "More about licenses here" msgstr "More about licenses here" -#: src/views/Settings.js:1222 +#: src/views/Settings.js:1227 msgid "More about the service" msgstr "More about the service" -#: src/views/Publication/Player.js:435 +#: src/views/Publication/Player.js:438 msgid "Mute" msgstr "Mute" #: src/misc/ChannelList.js:380 -#: src/misc/controls/Metadata.js:79 -#: src/misc/controls/Metadata.js:101 -#: src/views/Playersite.js:476 -#: src/views/Settings.js:1245 +#: src/misc/controls/Metadata.js:76 +#: src/misc/controls/Metadata.js:98 +#: src/views/Playersite.js:489 +#: src/views/Settings.js:1250 msgid "Name" msgstr "Name" -#: src/views/Playersite.js:481 +#: src/views/Playersite.js:494 msgid "Name for the template. If the name already exists, it will be overwritten." msgstr "Name for the template. If the name already exists, it will be overwritten." #: src/views/Settings.js:1142 -#: src/views/Settings.js:1292 +#: src/views/Settings.js:1297 msgid "Network" msgstr "Network" -#: src/views/Edit/Sources/Network.js:668 +#: src/views/Edit/Sources/Network.js:684 #: src/views/Edit/Wizard/Sources/Network.js:110 msgid "Network source" msgstr "Network source" -#: src/views/Edit/Wizard/index.js:399 -#: src/views/Edit/Wizard/index.js:635 -#: src/views/Edit/Wizard/index.js:900 -#: src/views/Edit/Wizard/index.js:1012 +#: src/views/Edit/Wizard/index.js:413 +#: src/views/Edit/Wizard/index.js:652 +#: src/views/Edit/Wizard/index.js:917 +#: src/views/Edit/Wizard/index.js:1029 msgid "Next" msgstr "Next" -#: src/views/Edit/Profile.js:405 +#: src/views/Edit/Profile.js:413 msgid "Next: Audio" msgstr "Next: Audio" @@ -1336,12 +1344,12 @@ msgstr "Next: Audio" msgid "Next: Video setup" msgstr "Next: Video setup" -#: src/views/Edit/Wizard/index.js:1165 +#: src/views/Edit/Wizard/index.js:1182 msgid "No" msgstr "No" #: src/views/Edit/Sources/NoAudio.js:45 -#: src/views/Edit/Wizard/index.js:884 +#: src/views/Edit/Wizard/index.js:901 msgid "No audio" msgstr "No audio" @@ -1349,7 +1357,12 @@ msgstr "No audio" msgid "No audio stream available" msgstr "No audio stream available" -#: src/views/Edit/Wizard/index.js:359 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:70 +#: src/views/Edit/Wizard/Sources/V4L.js:99 +msgid "No input device available" +msgstr "No input device available" + +#: src/views/Edit/Wizard/index.js:373 msgid "No live stream was detected. Please check the software that sends the stream." msgstr "No live stream was detected. Please check the software that sends the stream." @@ -1357,12 +1370,16 @@ msgstr "No live stream was detected. Please check the software that sends the st msgid "No source selected" msgstr "No source selected" -#: src/misc/EncodingSelect.js:152 +#: src/views/Edit/SourceSelect.js:174 +msgid "No sources available" +msgstr "No sources available" + +#: src/misc/EncodingSelect.js:164 msgid "No suitable encoder found." msgstr "No suitable encoder found." -#: src/views/Main/index.js:289 -#: src/views/Publication/Player.js:291 +#: src/views/Main/index.js:286 +#: src/views/Publication/Player.js:294 msgid "No video" msgstr "No video" @@ -1370,7 +1387,7 @@ msgstr "No video" msgid "No video stream available" msgstr "No video stream available" -#: src/views/Settings.js:1238 +#: src/views/Settings.js:1243 msgid "Node ID" msgstr "Node ID" @@ -1378,36 +1395,36 @@ msgstr "Node ID" msgid "Noise" msgstr "Noise" -#: src/views/Edit/Sources/AVFoundation.js:139 +#: src/views/Edit/Sources/AVFoundation.js:145 #: src/views/Edit/Summary.js:30 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:98 msgid "None" msgstr "None" -#: src/views/Playersite.js:351 -#: src/views/Playersite.js:631 +#: src/views/Playersite.js:353 +#: src/views/Playersite.js:644 msgid "Notes" msgstr "Notes" -#: src/views/Settings.js:1926 -#: src/views/Settings.js:1944 +#: src/views/Settings.js:1931 +#: src/views/Settings.js:1949 msgid "Number of log lines to keep." msgstr "Number of log lines to keep." -#: src/views/Settings.js:1957 +#: src/views/Settings.js:1962 msgid "Number of logs to keep for each process." msgstr "Number of logs to keep for each process." -#: src/views/Playersite.js:800 -#: src/views/Publication/Player.js:463 +#: src/views/Playersite.js:813 +#: src/views/Publication/Player.js:466 msgid "OK" msgstr "OK" -#: src/views/Settings.js:1492 +#: src/views/Settings.js:1497 msgid "One referrer per line, e.g. http://www.example.com" msgstr "One referrer per line, e.g. http://www.example.com" -#: src/views/Playersite.js:785 +#: src/views/Playersite.js:798 msgid "Open" msgstr "Open" @@ -1415,32 +1432,32 @@ msgstr "Open" msgid "Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources." msgstr "Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources." -#: src/views/Edit/Sources/Network.js:366 +#: src/views/Edit/Sources/Network.js:382 #: src/views/Edit/Wizard/Sources/Network.js:88 #: src/views/Login.js:282 -#: src/views/Publication/Services/Akamai.js:133 +#: src/views/Publication/Services/Akamai.js:134 #: src/views/Publication/Services/DASH.js:198 #: src/views/Publication/Services/DaCast.js:142 #: src/views/Publication/Services/HLS.js:187 #: src/views/Publication/Services/RTSP.js:156 #: src/views/Publication/Services/Red5.js:157 #: src/views/Publication/Services/WOWZA.js:178 -#: src/views/Settings.js:1448 -#: src/views/Settings.js:1606 +#: src/views/Settings.js:1453 +#: src/views/Settings.js:1611 msgid "Password" msgstr "Password" -#: src/views/Settings.js:1454 -#: src/views/Settings.js:1614 +#: src/views/Settings.js:1459 +#: src/views/Settings.js:1619 msgid "Password for authorization." msgstr "Password for authorization." -#: src/views/Edit/Sources/Network.js:371 +#: src/views/Edit/Sources/Network.js:387 #: src/views/Edit/Wizard/Sources/Network.js:90 msgid "Password for the device." msgstr "Password for the device." -#: src/views/Settings.js:1550 +#: src/views/Settings.js:1555 msgid "Persist viewer statistics" msgstr "Persist viewer statistics" @@ -1456,9 +1473,9 @@ msgstr "Plan: <0>Starter" msgid "Platforms" msgstr "Platforms" -#: src/views/Publication/Player.js:320 +#: src/views/Publication/Player.js:323 #: src/views/Settings.js:1144 -#: src/views/Settings.js:1463 +#: src/views/Settings.js:1468 msgid "Playback" msgstr "Playback" @@ -1466,16 +1483,16 @@ msgstr "Playback" msgid "Player" msgstr "Player" -#: src/views/Publication/Player.js:325 +#: src/views/Publication/Player.js:328 msgid "Player URL" msgstr "Player URL" -#: src/views/Publication/Player.js:254 +#: src/views/Publication/Player.js:257 msgid "Player settings saved" msgstr "Player settings saved" -#: src/Header.js:270 -#: src/views/Playersite.js:372 +#: src/Header.js:267 +#: src/views/Playersite.js:375 msgid "Playersite" msgstr "Playersite" @@ -1484,15 +1501,15 @@ msgstr "Playersite" msgid "Playlist" msgstr "Playlist" -#: src/views/Main/index.js:332 +#: src/views/Main/index.js:329 msgid "Please check the <0>process log" msgstr "Please check the <0>process log" -#: src/views/Publication/Services/Akamai.js:28 +#: src/views/Publication/Services/Akamai.js:29 #: src/views/Publication/Services/Bitmovin.js:23 #: src/views/Publication/Services/Brightcove.js:23 -#: src/views/Publication/Services/CDN77.js:24 -#: src/views/Publication/Services/Core.js:25 +#: src/views/Publication/Services/CDN77.js:23 +#: src/views/Publication/Services/Core.js:26 #: src/views/Publication/Services/DASH.js:35 #: src/views/Publication/Services/DaCast.js:26 #: src/views/Publication/Services/HLS.js:37 @@ -1511,8 +1528,8 @@ msgid "Please contact the operator of the service and check what happens." msgstr "Please contact the operator of the service and check what happens." #: src/views/Playersite.js:122 -#: src/views/Playersite.js:196 -#: src/views/Publication/Player.js:157 +#: src/views/Playersite.js:197 +#: src/views/Publication/Player.js:159 msgid "Please select a file to upload." msgstr "Please select a file to upload." @@ -1520,21 +1537,21 @@ msgstr "Please select a file to upload." msgid "Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources." msgstr "Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources." -#: src/views/Edit/Wizard/index.js:418 -#: src/views/Edit/Wizard/index.js:916 +#: src/views/Edit/Wizard/index.js:435 +#: src/views/Edit/Wizard/index.js:933 msgid "Please wait. Probe stream data ..." msgstr "Please wait. Probe stream data ..." -#: src/views/Edit/Wizard/index.js:1086 +#: src/views/Edit/Wizard/index.js:1103 msgid "Please wait. Setting up the stream ..." msgstr "Please wait. Setting up the stream ..." #: src/views/Publication/Services/Bitmovin.js:92 -#: src/views/Settings.js:1798 +#: src/views/Settings.js:1803 msgid "Port" msgstr "Port" -#: src/views/Publication/Player.js:378 +#: src/views/Publication/Player.js:381 msgid "Position" msgstr "Position" @@ -1552,20 +1569,20 @@ msgstr "Primary stream" msgid "Primary stream key" msgstr "Primary stream key" -#: src/views/Edit/Sources/ALSA.js:131 -#: src/views/Edit/Sources/AVFoundation.js:192 +#: src/views/Edit/Sources/ALSA.js:136 +#: src/views/Edit/Sources/AVFoundation.js:201 #: src/views/Edit/Sources/Framebuffer.js:110 -#: src/views/Edit/Sources/Network.js:489 -#: src/views/Edit/Sources/Network.js:536 -#: src/views/Edit/Sources/Network.js:583 +#: src/views/Edit/Sources/Network.js:505 +#: src/views/Edit/Sources/Network.js:552 +#: src/views/Edit/Sources/Network.js:599 #: src/views/Edit/Sources/Raspicam.js:113 -#: src/views/Edit/Sources/V4L.js:126 +#: src/views/Edit/Sources/V4L.js:131 #: src/views/Edit/Sources/VirtualAudio.js:169 -#: src/views/Edit/Sources/VirtualVideo.js:176 +#: src/views/Edit/Sources/VirtualVideo.js:188 msgid "Probe" msgstr "Probe" -#: src/views/Edit/index.js:491 +#: src/views/Edit/index.js:493 #: src/views/Publication/Add.js:433 #: src/views/Publication/Edit.js:441 msgid "Process" @@ -1580,40 +1597,41 @@ msgstr "Process control" msgid "Process debug" msgstr "Process debug" -#: src/views/Main/index.js:407 +#: src/views/Main/index.js:413 #: src/views/Publication/Edit.js:591 msgid "Process debug report" msgstr "Process debug report" -#: src/views/Main/index.js:383 -#: src/views/Main/index.js:399 +#: src/views/Main/index.js:389 +#: src/views/Main/index.js:405 #: src/views/Publication/Edit.js:468 #: src/views/Publication/Edit.js:583 msgid "Process details" msgstr "Process details" -#: src/views/Main/index.js:386 +#: src/views/Main/index.js:392 msgid "Process report" msgstr "Process report" -#: src/views/Edit/index.js:400 -#: src/views/Edit/index.js:461 +#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:463 msgid "Processing & Control" msgstr "Processing & Control" #: src/misc/coders/Encoders/video/H264NVENC.js:92 +#: src/misc/coders/Encoders/video/H264VAAPI.js:82 #: src/misc/coders/settings/Video.js:142 -#: src/views/Edit/Wizard/index.js:590 +#: src/views/Edit/Wizard/index.js:607 msgid "Profile" msgstr "Profile" -#: src/views/Edit/Sources/Network.js:504 -#: src/views/Publication/Services/Akamai.js:143 -#: src/views/Publication/Services/Akamai.js:181 +#: src/views/Edit/Sources/Network.js:520 +#: src/views/Publication/Services/Akamai.js:144 +#: src/views/Publication/Services/Akamai.js:182 #: src/views/Publication/Services/Bitmovin.js:86 #: src/views/Publication/Services/Brightcove.js:87 -#: src/views/Publication/Services/CDN77.js:91 -#: src/views/Publication/Services/Core.js:90 +#: src/views/Publication/Services/CDN77.js:90 +#: src/views/Publication/Services/Core.js:91 #: src/views/Publication/Services/DASH.js:186 #: src/views/Publication/Services/DaCast.js:110 #: src/views/Publication/Services/DaCast.js:168 @@ -1634,7 +1652,7 @@ msgstr "Protocol" msgid "Protocols" msgstr "Protocols" -#: src/views/Settings.js:1302 +#: src/views/Settings.js:1307 msgid "Public domain/s" msgstr "Public domain/s" @@ -1643,7 +1661,7 @@ msgstr "Public domain/s" msgid "Publication service not found" msgstr "Publication service not found" -#: src/views/Playersite.js:317 +#: src/views/Playersite.js:319 msgid "Publication website settings saved" msgstr "Publication website settings saved" @@ -1651,15 +1669,16 @@ msgstr "Publication website settings saved" msgid "Publications" msgstr "Publications" -#: src/views/Edit/Sources/Network.js:641 +#: src/views/Edit/Sources/Network.js:657 msgid "Pull Mode" msgstr "Pull Mode" -#: src/views/Edit/Sources/Network.js:640 +#: src/views/Edit/Sources/Network.js:656 msgid "Pull or recieve the data:" msgstr "Pull or recieve the data:" #: src/misc/Progress.js:90 +#: src/misc/coders/Encoders/video/H264VAAPI.js:137 msgid "Quality" msgstr "Quality" @@ -1667,37 +1686,37 @@ msgstr "Quality" msgid "RGB test pattern" msgstr "RGB test pattern" -#: src/views/Settings.js:1819 +#: src/views/Settings.js:1824 msgid "RTMP app for publishing." msgstr "RTMP app for publishing." -#: src/views/Settings.js:1760 +#: src/views/Settings.js:1765 msgid "RTMP server" msgstr "RTMP server" -#: src/views/Edit/Sources/Network.js:556 +#: src/views/Edit/Sources/Network.js:572 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:50 msgid "RTMP server is not enabled" msgstr "RTMP server is not enabled" -#: src/views/Settings.js:1806 +#: src/views/Settings.js:1811 msgid "RTMP server listen address." msgstr "RTMP server listen address." -#: src/views/Settings.js:1832 +#: src/views/Settings.js:1837 msgid "RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'" msgstr "RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'" #: src/views/Settings.js:1146 -#: src/views/Settings.js:1755 +#: src/views/Settings.js:1760 msgid "RTMP/S" msgstr "RTMP/S" -#: src/views/Settings.js:1767 +#: src/views/Settings.js:1772 msgid "RTMPS server" msgstr "RTMPS server" -#: src/views/Edit/Sources/Network.js:389 +#: src/views/Edit/Sources/Network.js:405 msgid "RTSP" msgstr "RTSP" @@ -1707,6 +1726,7 @@ msgid "Raspberry Pi camera" msgstr "Raspberry Pi camera" #: src/misc/coders/Encoders/video/H264NVENC.js:144 +#: src/misc/coders/Encoders/video/H264VAAPI.js:63 msgid "Rate control" msgstr "Rate control" @@ -1714,11 +1734,11 @@ msgstr "Rate control" msgid "Ratio" msgstr "Ratio" -#: src/views/Edit/Sources/Network.js:418 +#: src/views/Edit/Sources/Network.js:434 msgid "Read input at native speed" msgstr "Read input at native speed" -#: src/views/Edit/Sources/Network.js:642 +#: src/views/Edit/Sources/Network.js:658 msgid "Receive Mode" msgstr "Receive Mode" @@ -1732,13 +1752,13 @@ msgstr "Reconnect" msgid "Reconnect delay (seconds)" msgstr "Reconnect delay (seconds)" -#: src/views/Main/index.js:343 +#: src/views/Main/index.js:340 #: src/views/Publication/Process.js:68 #: src/views/Publication/Process.js:81 msgid "Reconnecting in {0}s" msgstr "Reconnecting in {0}s" -#: src/views/Settings.js:1994 +#: src/views/Settings.js:1999 msgid "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." msgstr "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." @@ -1746,6 +1766,14 @@ msgstr "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." msgid "Reconnecting to Restreamer Core failed." msgstr "Reconnecting to Restreamer Core failed." +#: src/views/Edit/Sources/ALSA.js:122 +#: src/views/Edit/Sources/AVFoundation.js:181 +#: src/views/Edit/Sources/V4L.js:117 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:135 +#: src/views/Edit/Wizard/Sources/V4L.js:120 +msgid "Refresh" +msgstr "Refresh" + #: src/views/Publication/Services/Restream.js:86 #: src/views/Publication/Services/Twitch.js:78 #: src/views/Publication/Services/Twitter.js:150 @@ -1754,36 +1782,36 @@ msgid "Region" msgstr "Region" #: src/views/Password.js:159 -#: src/views/Settings.js:2014 +#: src/views/Settings.js:2019 msgid "Reload" msgstr "Reload" -#: src/views/Settings.js:1632 +#: src/views/Settings.js:1637 msgid "Remove the oldest entries if the /memfs is full" msgstr "Remove the oldest entries if the /memfs is full" -#: src/views/Settings.js:1779 +#: src/views/Settings.js:1784 msgid "Requires activation" msgstr "Requires activation" -#: src/views/Settings.js:1201 -#: src/views/Settings.js:2031 -#: src/views/Settings.js:2044 -#: src/views/Settings.js:2053 +#: src/views/Settings.js:1206 +#: src/views/Settings.js:2036 +#: src/views/Settings.js:2049 +#: src/views/Settings.js:2058 msgid "Restart" msgstr "Restart" -#: src/views/Settings.js:2022 +#: src/views/Settings.js:2027 msgid "Restart required" msgstr "Restart required" #: src/views/Password.js:136 -#: src/views/Settings.js:1982 +#: src/views/Settings.js:1987 msgid "Restarting" msgstr "Restarting" #: src/views/Password.js:141 -#: src/views/Settings.js:1987 +#: src/views/Settings.js:1992 msgid "Restarting Restreamer Core ..." msgstr "Restarting Restreamer Core ..." @@ -1791,15 +1819,15 @@ msgstr "Restarting Restreamer Core ..." msgid "Restarting the application failed." msgstr "Restarting the application failed." -#: src/views/Settings.js:1229 +#: src/views/Settings.js:1234 msgid "Restreamer Service" msgstr "Restreamer Service" -#: src/views/Main/index.js:242 +#: src/views/Main/index.js:239 msgid "Retrieving stream data ..." msgstr "Retrieving stream data ..." -#: src/views/Edit/Wizard/index.js:1111 +#: src/views/Edit/Wizard/index.js:1128 #: src/views/Invalid.js:43 #: src/views/Settings.js:1116 msgid "Retry" @@ -1813,13 +1841,13 @@ msgstr "Rule" msgid "Sampling" msgstr "Sampling" -#: src/views/Edit/Wizard/index.js:1070 -#: src/views/Edit/index.js:558 -#: src/views/Playersite.js:775 +#: src/views/Edit/Wizard/index.js:1087 +#: src/views/Edit/index.js:560 +#: src/views/Playersite.js:788 #: src/views/Publication/Add.js:534 #: src/views/Publication/Edit.js:571 -#: src/views/Publication/Player.js:449 -#: src/views/Settings.js:1972 +#: src/views/Publication/Player.js:452 +#: src/views/Settings.js:1977 msgid "Save" msgstr "Save" @@ -1827,7 +1855,7 @@ msgstr "Save" msgid "Scale" msgstr "Scale" -#: src/views/Settings.js:1718 +#: src/views/Settings.js:1723 msgid "Seconds to keep files in cache." msgstr "Seconds to keep files in cache." @@ -1843,24 +1871,24 @@ msgstr "Seconds until a staled process is terminated." msgid "Seconds until the snapshot/thumbnail of the video source is updated." msgstr "Seconds until the snapshot/thumbnail of the video source is updated." -#: src/views/Settings.js:1468 +#: src/views/Settings.js:1473 msgid "Security" msgstr "Security" -#: src/views/Publication/Services/Core.js:127 +#: src/views/Publication/Services/Core.js:122 #: src/views/Publication/Services/Livespotting.js:103 msgid "Security token" msgstr "Security token" -#: src/views/Publication/Player.js:339 +#: src/views/Publication/Player.js:342 msgid "Seekbar color" msgstr "Seekbar color" -#: src/misc/controls/HLS.js:59 +#: src/misc/controls/HLS.js:62 msgid "Segment length (seconds)" msgstr "Segment length (seconds)" -#: src/misc/controls/HLS.js:64 +#: src/misc/controls/HLS.js:67 msgid "Segment will be cut on the following keyframe after this time has passed. 2 is recommended." msgstr "Segment will be cut on the following keyframe after this time has passed. 2 is recommended." @@ -1869,20 +1897,20 @@ msgstr "Segment will be cut on the following keyframe after this time has passed msgid "Segmentation" msgstr "Segmentation" -#: src/views/Edit/Sources/ALSA.js:114 -#: src/views/Edit/Sources/AVFoundation.js:166 +#: src/views/Edit/Sources/ALSA.js:108 +#: src/views/Edit/Sources/AVFoundation.js:172 #: src/views/Edit/Sources/Framebuffer.js:99 #: src/views/Edit/Sources/Raspicam.js:96 -#: src/views/Edit/Sources/V4L.js:109 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:101 +#: src/views/Edit/Sources/V4L.js:103 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:120 #: src/views/Edit/Wizard/Sources/Raspicam.js:95 -#: src/views/Edit/Wizard/Sources/V4L.js:98 +#: src/views/Edit/Wizard/Sources/V4L.js:114 msgid "Select a device:" msgstr "Select a device:" #: src/views/Edit/Sources/VirtualAudio.js:84 -msgid "Select audio Source:" -msgstr "Select audio Source:" +msgid "Select audio source:" +msgstr "Select audio source:" #: src/views/Edit/Sources/VirtualVideo.js:114 msgid "Select source ..." @@ -1892,32 +1920,32 @@ msgstr "Select source ..." msgid "Select video source:" msgstr "Select video source:" -#: src/views/Edit/Wizard/index.js:261 +#: src/views/Edit/Wizard/index.js:268 msgid "Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer)." msgstr "Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer)." -#: src/misc/EncodingSelect.js:184 +#: src/misc/EncodingSelect.js:196 msgid "Select your encoding setting:" msgstr "Select your encoding setting:" -#: src/views/Playersite.js:575 +#: src/views/Playersite.js:588 msgid "Selected" msgstr "Selected" -#: src/views/Playersite.js:392 +#: src/views/Playersite.js:395 msgid "Selected channel" msgstr "Selected channel" -#: src/views/Playersite.js:438 +#: src/views/Playersite.js:449 msgid "Selection" msgstr "Selection" -#: src/views/Settings.js:1185 +#: src/views/Settings.js:1190 msgid "Send anonymous metrics (helps us for future development)" msgstr "Send anonymous metrics (helps us for future development)" -#: src/views/Edit/Sources/Network.js:526 -#: src/views/Edit/Sources/Network.js:573 +#: src/views/Edit/Sources/Network.js:542 +#: src/views/Edit/Sources/Network.js:589 #: src/views/Edit/Wizard/Sources/InternalHLS.js:48 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:68 msgid "Send stream to this address:" @@ -1931,10 +1959,10 @@ msgstr "Send video to Framebuffer" msgid "Server" msgstr "Server" -#: src/Header.js:260 +#: src/Header.js:257 #: src/views/Login.js:246 #: src/views/Settings.js:1140 -#: src/views/Settings.js:1215 +#: src/views/Settings.js:1220 msgid "Service" msgstr "Service" @@ -1943,7 +1971,7 @@ msgstr "Service" msgid "Service name" msgstr "Service name" -#: src/views/Settings.js:1266 +#: src/views/Settings.js:1271 msgid "Service token for monitoring." msgstr "Service token for monitoring." @@ -1951,15 +1979,15 @@ msgstr "Service token for monitoring." msgid "Sessions" msgstr "Sessions" -#: src/views/Settings.js:1397 +#: src/views/Settings.js:1402 msgid "Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." -#: src/views/Settings.js:1381 +#: src/views/Settings.js:1386 msgid "Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." -#: src/views/Settings.js:1220 +#: src/views/Settings.js:1225 msgid "Setting for connection to the service." msgstr "Setting for connection to the service." @@ -1971,11 +1999,11 @@ msgstr "Settings" msgid "Settings (expert mode)" msgstr "Settings (expert mode)" -#: src/views/Settings.js:1648 +#: src/views/Settings.js:1653 msgid "Settings for /data path. The access is protected by" msgstr "Settings for /data path. The access is protected by" -#: src/views/Settings.js:1575 +#: src/views/Settings.js:1580 msgid "Settings for /memfs path." msgstr "Settings for /memfs path." @@ -1983,7 +2011,11 @@ msgstr "Settings for /memfs path." msgid "Settings saved. All changes will be applied after restarting the application." msgstr "Settings saved. All changes will be applied after restarting the application." -#: src/views/Playersite.js:420 +#: src/views/Playersite.js:417 +msgid "Share button" +msgstr "Share button" + +#: src/views/Playersite.js:431 msgid "Shows a reference to the project." msgstr "Shows a reference to the project." @@ -1995,7 +2027,7 @@ msgstr "Sign up (free)" msgid "Silence" msgstr "Silence" -#: src/views/Edit/Wizard/index.js:881 +#: src/views/Edit/Wizard/index.js:898 msgid "Silence Audio" msgstr "Silence Audio" @@ -2003,7 +2035,7 @@ msgstr "Silence Audio" msgid "Sine" msgstr "Sine" -#: src/views/Playersite.js:378 +#: src/views/Playersite.js:381 msgid "Sitename" msgstr "Sitename" @@ -2011,7 +2043,8 @@ msgstr "Sitename" msgid "Size" msgstr "Size" -#: src/views/Edit/index.js:480 +#: src/views/Edit/index.js:482 +#: src/views/Main/index.js:372 msgid "Snapshot" msgstr "Snapshot" @@ -2019,7 +2052,7 @@ msgstr "Snapshot" msgid "Social-login (OAuth2, 2FA)" msgstr "Social-login (OAuth2, 2FA)" -#: src/views/Edit/Sources/Network.js:402 +#: src/views/Edit/Sources/Network.js:418 msgid "Socket timeout (microseconds)" msgstr "Socket timeout (microseconds)" @@ -2040,33 +2073,33 @@ msgstr "Speed" msgid "Stale timeout (seconds)" msgstr "Stale timeout (seconds)" -#: src/views/Publication/Player.js:319 -#: src/views/Settings.js:1500 +#: src/views/Publication/Player.js:322 +#: src/views/Settings.js:1505 msgid "Statistics" msgstr "Statistics" #: src/views/Settings.js:1145 -#: src/views/Settings.js:1567 +#: src/views/Settings.js:1572 msgid "Storage" msgstr "Storage" -#: src/views/Settings.js:1558 +#: src/views/Settings.js:1563 msgid "Stores the viewer statistics to the disk." msgstr "Stores the viewer statistics to the disk." #: src/views/Edit/StreamSelect.js:30 #: src/views/Edit/StreamSelect.js:36 #: src/views/Edit/StreamSelect.js:81 -#: src/views/Edit/Wizard/index.js:861 +#: src/views/Edit/Wizard/index.js:878 msgid "Stream" msgstr "Stream" -#: src/views/Publication/Services/Akamai.js:155 -#: src/views/Publication/Services/CDN77.js:103 +#: src/views/Publication/Services/Akamai.js:156 +#: src/views/Publication/Services/CDN77.js:102 msgid "Stream URL" msgstr "Stream URL" -#: src/views/Publication/Services/CDN77.js:114 +#: src/views/Publication/Services/CDN77.js:113 #: src/views/Publication/Services/DaCast.js:153 #: src/views/Publication/Services/Dummy.js:274 #: src/views/Publication/Services/Instagram.js:84 @@ -2079,41 +2112,41 @@ msgid "Stream key" msgstr "Stream key" #: src/views/Publication/Services/Brightcove.js:101 -#: src/views/Publication/Services/Core.js:118 +#: src/views/Publication/Services/Core.js:113 #: src/views/Publication/Services/Red5.js:136 #: src/views/Publication/Services/WOWZA.js:158 msgid "Stream name" msgstr "Stream name" -#: src/views/Publication/Services/Akamai.js:166 +#: src/views/Publication/Services/Akamai.js:167 msgid "Stream names" msgstr "Stream names" -#: src/views/Playersite.js:414 +#: src/views/Playersite.js:425 msgid "Support datarhei Restreamer" msgstr "Support datarhei Restreamer" -#: src/views/Edit/Sources/Network.js:345 +#: src/views/Edit/Sources/Network.js:361 #: src/views/Edit/Wizard/Sources/Network.js:72 msgid "Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more." msgstr "Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more." #: src/Footer.js:184 -#: src/Header.js:278 -#: src/views/Settings.js:1846 +#: src/Header.js:275 +#: src/views/Settings.js:1851 msgid "System" msgstr "System" -#: src/views/Playersite.js:349 -#: src/views/Playersite.js:429 +#: src/views/Playersite.js:351 +#: src/views/Playersite.js:440 msgid "Template" msgstr "Template" -#: src/views/Playersite.js:451 +#: src/views/Playersite.js:462 msgid "Template to be used for creating the publication website. The delete button removes the selection from the system." msgstr "Template to be used for creating the publication website. The delete button removes the selection from the system." -#: src/views/Playersite.js:653 +#: src/views/Playersite.js:666 msgid "Terms" msgstr "Terms" @@ -2125,7 +2158,7 @@ msgstr "Test pattern" msgid "Test pattern (extended)" msgstr "Test pattern (extended)" -#: src/views/Playersite.js:506 +#: src/views/Playersite.js:519 msgid "Text colors" msgstr "Text colors" @@ -2133,7 +2166,7 @@ msgstr "Text colors" msgid "The amplitude (0.0 - 1.0) of the generated audio stream" msgstr "The amplitude (0.0 - 1.0) of the generated audio stream" -#: src/views/Settings.js:1205 +#: src/views/Settings.js:1210 msgid "The application is using an older version of the settings." msgstr "The application is using an older version of the settings." @@ -2145,20 +2178,20 @@ msgstr "The bitrate of the audio stream." msgid "The carrier frequency" msgstr "The carrier frequency" -#: src/views/Edit/index.js:351 +#: src/views/Edit/index.js:352 msgid "The channel \"{0}\" could not be deleted" msgstr "The channel \"{0}\" could not be deleted" -#: src/views/Edit/index.js:360 +#: src/views/Edit/index.js:361 msgid "The channel \"{0}\" has been deleted" msgstr "The channel \"{0}\" has been deleted" -#: src/views/Edit/index.js:602 +#: src/views/Edit/index.js:604 msgid "The deletion of this channel can not be recovered. All publications of this channel will be removed." msgstr "The deletion of this channel can not be recovered. All publications of this channel will be removed." -#: src/views/Edit/Wizard/index.js:161 -#: src/views/Edit/index.js:283 +#: src/views/Edit/Wizard/index.js:170 +#: src/views/Edit/index.js:290 msgid "The input profile is not complete. Please define a video and audio source." msgstr "The input profile is not complete. Please define a video and audio source." @@ -2166,7 +2199,7 @@ msgstr "The input profile is not complete. Please define a video and audio sourc msgid "The layout of the audio stream." msgstr "The layout of the audio stream." -#: src/misc/controls/HLS.js:76 +#: src/misc/controls/HLS.js:79 msgid "The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended." msgstr "The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended." @@ -2178,7 +2211,7 @@ msgstr "The noise color" msgid "The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission." msgstr "The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission." -#: src/views/Settings.js:1310 +#: src/views/Settings.js:1315 msgid "The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma." msgstr "The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma." @@ -2202,68 +2235,58 @@ msgstr "The publication service has been created" msgid "The sample rate of the audio stream." msgstr "The sample rate of the audio stream." -#: src/views/Playersite.js:151 -#: src/views/Playersite.js:225 -#: src/views/Publication/Player.js:186 +#: src/views/Playersite.js:152 +#: src/views/Playersite.js:227 +#: src/views/Publication/Player.js:189 msgid "The selected file is too big ({0} bytes). Only {1} bytes are allowed." msgstr "The selected file is too big ({0} bytes). Only {1} bytes are allowed." -#: src/views/Playersite.js:140 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}" -msgstr "The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}" - -#: src/views/Publication/Player.js:175 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}" -msgstr "The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}" - -#: src/views/Playersite.js:214 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}" -msgstr "The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}" +#: src/views/Playersite.js:141 +#: src/views/Playersite.js:216 +#: src/views/Publication/Player.js:178 +msgid "The selected file type ({0}) is not allowed. Allowed file types are {types}" +msgstr "The selected file type ({0}) is not allowed. Allowed file types are {types}" #: src/views/Publication/Edit.js:230 msgid "The settings for \"{0}\" have been saved" msgstr "The settings for \"{0}\" have been saved" -#: src/views/Edit/Wizard/index.js:829 +#: src/views/Edit/Wizard/index.js:846 msgid "The source doesn't provide any audio streams." msgstr "The source doesn't provide any audio streams." -#: src/views/Edit/Profile.js:478 +#: src/views/Edit/Profile.js:487 msgid "The source doesn't provide any audio streams. Please check the <0>probe details." msgstr "The source doesn't provide any audio streams. Please check the <0>probe details." -#: src/views/Edit/Wizard/index.js:837 +#: src/views/Edit/Wizard/index.js:854 msgid "The source doesn't provide any compatible audio streams." msgstr "The source doesn't provide any compatible audio streams." -#: src/views/Edit/Wizard/index.js:378 +#: src/views/Edit/Wizard/index.js:392 msgid "The source doesn't provide any compatible video streams. Please check the <0>requirements." msgstr "The source doesn't provide any compatible video streams. Please check the <0>requirements." -#: src/views/Edit/Profile.js:349 +#: src/views/Edit/Profile.js:357 msgid "The source doesn't provide any video streams. Please check the <0>probe details." msgstr "The source doesn't provide any video streams. Please check the <0>probe details." -#: src/views/Edit/Wizard/index.js:370 +#: src/views/Edit/Wizard/index.js:384 msgid "The source doesn't provide any video streams. Please check the device." msgstr "The source doesn't provide any video streams. Please check the device." -#: src/views/Edit/Wizard/index.js:848 +#: src/views/Edit/Wizard/index.js:865 msgid "The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel." msgstr "The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel." -#: src/views/Edit/Wizard/index.js:586 +#: src/views/Edit/Wizard/index.js:603 msgid "The video source is compatible. Select the desired resolution:" msgstr "The video source is compatible. Select the desired resolution:" -#: src/views/Settings.js:1177 +#: src/views/Settings.js:1182 msgid "There are updates available. Here you get more information." msgstr "There are updates available. Here you get more information." -#: src/views/Playersite.js:238 -msgid "There war an error during upload: {0}" -msgstr "There war an error during upload: {0}" - #: src/views/Settings.js:911 msgid "There was a problem storing the settings. Settings not saved." msgstr "There was a problem storing the settings. Settings not saved." @@ -2272,12 +2295,13 @@ msgstr "There was a problem storing the settings. Settings not saved." msgid "There was an error connecting to Restreamer Core at {0}." msgstr "There was an error connecting to Restreamer Core at {0}." -#: src/views/Playersite.js:164 -#: src/views/Publication/Player.js:199 +#: src/views/Playersite.js:165 +#: src/views/Playersite.js:240 +#: src/views/Publication/Player.js:202 msgid "There was an error during upload: {0}" msgstr "There was an error during upload: {0}" -#: src/views/Edit/Wizard/index.js:1106 +#: src/views/Edit/Wizard/index.js:1123 msgid "There was an error setting up the stream." msgstr "There was an error setting up the stream." @@ -2325,7 +2349,7 @@ msgstr "This license allows reusers to distribute, remix, adapt, and build upon msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." msgstr "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." -#: src/views/Edit/index.js:583 +#: src/views/Edit/index.js:585 msgid "This source cannot be edited while it is in use. To continue, you have to disconnect the source." msgstr "This source cannot be edited while it is in use. To continue, you have to disconnect the source." @@ -2341,12 +2365,12 @@ msgstr "This version of the UI doesn't support the connected Core ({0}). The UI msgid "This version of the UI is compatible." msgstr "This version of the UI is compatible." -#: src/views/Settings.js:1545 +#: src/views/Settings.js:1550 msgid "Time until an inactive viewer connection is treated as closed." msgstr "Time until an inactive viewer connection is treated as closed." -#: src/views/Settings.js:1258 -#: src/views/Settings.js:1824 +#: src/views/Settings.js:1263 +#: src/views/Settings.js:1829 msgid "Token" msgstr "Token" @@ -2391,8 +2415,8 @@ msgid "Transmit the main source to an RTSP Server. More details about the settin msgstr "Transmit the main source to an RTSP Server. More details about the settings can be found <0>here." #: src/views/Publication/Services/Red5.js:17 -msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." -msgstr "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." +msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." +msgstr "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." #: src/views/Publication/Services/SRT.js:25 msgid "Transmit the main source to an SRT Server. More details about the settings can be found <0>here." @@ -2406,7 +2430,7 @@ msgstr "Transmit the main source to an UDP Server. More details about the settin msgid "Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here." msgstr "Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here." -#: src/views/Publication/Services/Core.js:17 +#: src/views/Publication/Services/Core.js:18 msgid "Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here." msgstr "Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here." @@ -2414,7 +2438,7 @@ msgstr "Transmit the main source to an datarhei Core Ressource. More details abo msgid "Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here." msgstr "Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here." -#: src/views/Publication/Services/Akamai.js:16 +#: src/views/Publication/Services/Akamai.js:17 msgid "Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here." msgstr "Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here." @@ -2439,7 +2463,7 @@ msgstr "Transmits your video stream with the required key, which was generated i msgid "Tune" msgstr "Tune" -#: src/views/Edit/Sources/Network.js:393 +#: src/views/Edit/Sources/Network.js:409 #: src/views/Edit/Wizard/Sources/Network.js:77 msgid "UDP transport" msgstr "UDP transport" @@ -2448,7 +2472,7 @@ msgstr "UDP transport" msgid "Unable to load the config." msgstr "Unable to load the config." -#: src/views/Settings.js:1240 +#: src/views/Settings.js:1245 msgid "Unique ident on the service." msgstr "Unique ident on the service." @@ -2456,22 +2480,22 @@ msgstr "Unique ident on the service." msgid "Unknown" msgstr "Unknown" -#: src/views/Playersite.js:584 +#: src/views/Playersite.js:597 msgid "Unselected" msgstr "Unselected" -#: src/views/Playersite.js:469 -#: src/views/Playersite.js:486 -#: src/views/Playersite.js:621 -#: src/views/Publication/Player.js:370 +#: src/views/Playersite.js:482 +#: src/views/Playersite.js:499 +#: src/views/Playersite.js:634 +#: src/views/Publication/Player.js:373 msgid "Upload" msgstr "Upload" -#: src/views/Playersite.js:279 +#: src/views/Playersite.js:281 msgid "Uploading the file failed" msgstr "Uploading the file failed" -#: src/views/Publication/Player.js:229 +#: src/views/Publication/Player.js:232 msgid "Uploading the logo failed" msgstr "Uploading the logo failed" @@ -2485,15 +2509,15 @@ msgstr "Uptime" msgid "Use Auth0 for your running Restreamer Core. More <0>details." msgstr "Use Auth0 for your running Restreamer Core. More <0>details." -#: src/views/Edit/index.js:425 +#: src/views/Edit/index.js:426 msgid "Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode." msgstr "Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode." -#: src/views/Edit/Wizard/index.js:1051 +#: src/views/Edit/Wizard/index.js:1068 msgid "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." -#: src/views/Edit/index.js:528 +#: src/views/Edit/index.js:530 msgid "Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." @@ -2501,7 +2525,7 @@ msgstr "Use your copyright and choose the right image licence. Whether free for msgid "User registration" msgstr "User registration" -#: src/views/Edit/Sources/Network.js:354 +#: src/views/Edit/Sources/Network.js:370 #: src/views/Edit/Wizard/Sources/Network.js:81 #: src/views/Login.js:272 #: src/views/Publication/Services/DASH.js:195 @@ -2510,17 +2534,17 @@ msgstr "User registration" #: src/views/Publication/Services/RTSP.js:153 #: src/views/Publication/Services/Red5.js:146 #: src/views/Publication/Services/WOWZA.js:168 -#: src/views/Settings.js:1435 -#: src/views/Settings.js:1593 +#: src/views/Settings.js:1440 +#: src/views/Settings.js:1598 msgid "Username" msgstr "Username" -#: src/views/Settings.js:1441 -#: src/views/Settings.js:1601 +#: src/views/Settings.js:1446 +#: src/views/Settings.js:1606 msgid "Username for authorization." msgstr "Username for authorization." -#: src/views/Edit/Sources/Network.js:359 +#: src/views/Edit/Sources/Network.js:375 #: src/views/Edit/Wizard/Sources/Network.js:83 msgid "Username for the device." msgstr "Username for the device." @@ -2533,24 +2557,24 @@ msgstr "VPU ID" msgid "Video" msgstr "Video" -#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:126 #: src/views/Edit/Sources/Raspicam.js:89 -#: src/views/Edit/Sources/V4L.js:96 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:66 +#: src/views/Edit/Sources/V4L.js:109 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 #: src/views/Edit/Wizard/Sources/Raspicam.js:86 -#: src/views/Edit/Wizard/Sources/V4L.js:89 +#: src/views/Edit/Wizard/Sources/V4L.js:105 msgid "Video device" msgstr "Video device" -#: src/views/Edit/Profile.js:313 -#: src/views/Edit/ProfileSummary.js:65 +#: src/views/Edit/Profile.js:320 +#: src/views/Edit/ProfileSummary.js:66 #: src/views/Publication/Edit.js:517 msgid "Video settings" msgstr "Video settings" -#: src/views/Edit/Wizard/index.js:257 -#: src/views/Edit/Wizard/index.js:341 -#: src/views/Edit/Wizard/index.js:579 +#: src/views/Edit/Wizard/index.js:264 +#: src/views/Edit/Wizard/index.js:354 +#: src/views/Edit/Wizard/index.js:596 msgid "Video setup" msgstr "Video setup" @@ -2566,7 +2590,7 @@ msgid "Viewer" msgstr "Viewer" #: src/views/Edit/Sources/VirtualAudio.js:187 -#: src/views/Edit/Sources/VirtualVideo.js:194 +#: src/views/Edit/Sources/VirtualVideo.js:206 msgid "Virtual source" msgstr "Virtual source" @@ -2574,7 +2598,7 @@ msgstr "Virtual source" msgid "Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs." msgstr "Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs." -#: src/views/Settings.js:1580 +#: src/views/Settings.js:1585 msgid "Write protection" msgstr "Write protection" @@ -2582,19 +2606,19 @@ msgstr "Write protection" msgid "YUV test pattern" msgstr "YUV test pattern" -#: src/views/Edit/Wizard/index.js:1160 +#: src/views/Edit/Wizard/index.js:1177 msgid "Yes" msgstr "Yes" -#: src/views/Edit/Wizard/index.js:1142 +#: src/views/Edit/Wizard/index.js:1159 msgid "You can't abort the wizard because at least one input must be defined." msgstr "You can't abort the wizard because at least one input must be defined." -#: src/views/Settings.js:2036 +#: src/views/Settings.js:2041 msgid "You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?" msgstr "You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?" -#: src/views/Main/index.js:350 +#: src/views/Main/index.js:347 #: src/views/Publication/Process.js:73 msgid "You have to reconnect manually" msgstr "You have to reconnect manually" @@ -2603,11 +2627,11 @@ msgstr "You have to reconnect manually" msgid "You have unsaved changes. Please save them before you can control the service again." msgstr "You have unsaved changes. Please save them before you can control the service again." -#: src/views/Edit/Wizard/index.js:599 +#: src/views/Edit/Wizard/index.js:616 msgid "Your stream needs to be encoded, but there's no suitable encoder available." msgstr "Your stream needs to be encoded, but there's no suitable encoder available." -#: src/views/Edit/Wizard/index.js:606 +#: src/views/Edit/Wizard/index.js:623 msgid "Your stream needs to be encoded. Choose the desired encoder:" msgstr "Your stream needs to be encoded. Choose the desired encoder:" @@ -2619,7 +2643,7 @@ msgstr "blue" msgid "brown" msgstr "brown" -#: src/views/Publication/Player.js:328 +#: src/views/Publication/Player.js:331 msgid "iframe code" msgstr "iframe code" diff --git a/src/locales/es/messages.js b/src/locales/es/messages.js index 68ce214..2db13b6 100644 --- a/src/locales/es/messages.js +++ b/src/locales/es/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{"<0>Show probe details":"<0>Mostrar detalles de la sonda","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Punto final de la API no encontrado. La configuración no se ha guardado.","AVFoundation":"AVFoundation","Abort":"Abortar","About":"Acerca de","Add":"Añada","Add Publication":"Añadir publicación","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Añada widgets y estilos externos al sitio de publicación. Puede encontrar algunos ejemplos en la página de ayuda.","Add new channel":"Añadir un nuevo canal","Add: {0}":["Añadir: ",["0"]],"Address":"Dirección","Address for the background image.":"Dirección para la imagen de fondo.","Address to listen on for HTTP requests.":"Dirección de escucha para las peticiones HTTP.","Address to listen on for HTTPS requests.":"Dirección de escucha para las solicitudes HTTPS.","Adjust publication site colors and background as you like.":"Ajuste los colores del sitio de publicación y el fondo a su gusto.","Advanced monitoring":"Vigilancia avanzada","Advanced settings":"Ajustes avanzados","Advanced setup":"Configuración avanzada","Alerting by email":"Alerta por correo electrónico","All":"Todo","All important system settings.":"Todos los ajustes importantes del sistema.","Allow all referrer":"Permitir todos los remitentes","Allow counting how many viewers the stream has.":"Permite contar el número de espectadores que tiene el flujo.","Amplitude":"Amplitud","An environment variable sets this value.":"Una variable de entorno establece este valor.","App":"App","Application":"Aplicación","Are you sure you want to abort the wizard?":"¿Está seguro de que quiere abortar el asistente?","Audio":"Audio","Audio Device":"Dispositivo de audio","Audio device":"Dispositivo de audio","Audio from device":"Audio del dispositivo","Audio settings":"Ajustes de audio","Audio setup":"Configuración de audio","Auth0":"Auth0","Auth0 Tenant":"Auth0 Inquilino","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 no está disponible actualmente porque esta interfaz está cargada desde un origen inseguro.","Author":"Autor","Authorization":"Autorización","Autoplay":"Reproducción automática","Available":"Disponible","Back":"Volver","Background colors":"Colores de fondo","Background image":"Imagen de fondo","Backup URL":"URL de respaldo","Backup server":"Servidor de respaldo","Backup stream":"Flujo de reserva","Backup stream key":"Clave de flujo de respaldo","Bandwidth":"Ancho de banda","Bandwidth control":"Control del ancho de banda","Banner":"Banner","Basic":"Básico","Beep factor":"Factor Bip","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Describa brevemente lo que el público verá durante la transmisión en directo.","Button color":"Color del botón","Cache for files on /data.":"Caché para archivos en /data.","Cache time (Seconds)":"Tiempo de caché (segundos)","Cache types":"Tipos de caché","Capture clicks":"Captura de clics","Capture cursor":"Cursor de captura","Channel \"{0}\" saved":["Canal \"",["0"],"\" guardado"],"Channels":"Canales","Check for updates":"Compruebe las actualizaciones","Check the requirements":"Compruebe los requisitos","Choose a video stream":"Elija un flujo de vídeo","Choose an audio stream":"Elija un flujo de audio","Choose an input device ...":"Elija un dispositivo de entrada ...","Choose codec ...":"Elija el códec ...","Choose tenant ...":"Elija al inquilino ...","Chunk":"Chunk","Close":"Cerrar","Code injection":"Inyección de código","Codec":"Códec","Color":"Color","Config":"Configurar","Confirm password":"Confirmar contraseña","Connect":"Conectar","Connected device":"Dispositivo conectado","Connected since <0/>":"Conectado desde <0/>","Connecting ...":"Conectando ...","Connecting to Restreamer Core ...":"Conexión al núcleo de Restreamer ...","Connecting to Restreamer Core failed probably because of mixed content.":"La conexión con Restreamer Core ha fallado probablemente debido a la mezcla de contenidos.","Content":"Contenido","Cores":"Núcleos","Create user":"Crear usuario","Creative Commons":"Creative Commons","Custom ...":"A medida ...","Custom JSON config for datarhei Core.":"Configuración JSON personalizada para datarhei Core.","Custom audio device":"Dispositivo de audio personalizado","Custom audio index":"Índice de audio personalizado","Custom bitrate (kbit/s)":"Tasa de bits personalizada (kbit/s)","Custom code injection":"Inyección de código personalizado","Custom delay":"Retraso personalizado","Custom device":"Dispositivo personalizado","Custom format":"Formato personalizado","Custom framerate":"Velocidad de fotogramas personalizada","Custom keyframe interval":"Intervalo de fotogramas clave personalizado","Custom layout":"Diseño personalizado","Custom sampling (Hz)":"Muestreo personalizado (Hz)","Custom scale":"Escala personalizada","Custom size":"Tamaño personalizado","Custom video device":"Dispositivo de vídeo personalizado","Custom video index":"Índice de vídeo personalizado","Data copied to clipboard":"Datos copiados en el portapapeles","Death color":"Color de la muerte","Decoder":"Decodificador","Default":"Por defecto","Delay":"Retraso","Delay (ms)":"Retraso (ms)","Delete":"Borrar","Deleting a publication service cannot be reversed. The publication stops immediately.":"La eliminación de un servicio de publicación no se puede revertir. La publicación se detiene inmediatamente.","Delivering mode":"Modo de entrega","Description":"Descripción","Design":"Diseño","Device":"Dispositivo","Disconnect":"Desconectar","Disconnect & Continue":"Desconectar y continuar","Disconnecting ...":"Desconectando...","Disk":"Disco","Disk cache":"Caché de disco","Disk storage":"Almacenamiento en disco","Do you really want to restart the application now?":"¿Realmente quiere reiniciar la aplicación ahora?","Do you want to delete \"{0}\"?":["¿Quiere borrar \"",["0"],"\"?"],"Do you want to delete {title}?":["¿Desea eliminar ",["título"],"?"],"Do you want to disconnect \"{0}\"?":["¿Quiere desconectar \"",["0"],"\"?"],"Docs":"Docs","Documentation":"Documentación","Dup. frames":"Marcos Dup.","EDIT: Player":"EDIT: Jugador","EDIT: Publication Website":"EDIT: Página web de la publicación","Edit":"Editar","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Edite las fuentes de audio y vídeo para la transmisión en directo. Añada una descripción y establezca la licencia de contenido que desee.","Edit: {title}":["Editar: ",["título"]],"Embed":"Incrustar","Enable RTMP server ...":"Habilitar el servidor RTMP ...","Enable a periodic beep every second with this value times the carrier frequency":"Habilitar un pitido periódico cada segundo con este valor multiplicado por la frecuencia portadora","Enable backup stream":"Habilitar el flujo de respaldo","Enable nerd statistics":"Habilitar las estadísticas de los nerds","Enable primary stream":"Habilitar el flujo primario","Enable snapshots":"Habilitar las instantáneas","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Se recomienda encarecidamente habilitar la autorización. De lo contrario, cualquiera puede acceder a esta instancia.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Se recomienda encarecidamente habilitar la autentificación básica. De lo contrario, cualquiera podría escribir datos en /memfs.","Encoder":"Codificador","Encoding":"Codificación","Encryption":"Codificación","Enter a name for the new channel.":"Introduzca un nombre para el nuevo canal.","Enter password":"Introduzca la contraseña","Enter the address of your network source:":"Introduzca la dirección de su fuente de red:","Enter username":"Introduzca el nombre de usuario","Entropy coder":"Codificador de entropía","Error":"Error","Error while copying data to clipboard":"Error al copiar datos en el portapapeles","Error: {0}":["Error: ",["0"]],"Expands the area above the channel list (live chat).":"Amplía el área sobre la lista de canales (chat en vivo).","Expands the area under the channel description (comment boxes).":"Amplía el área bajo la descripción del canal (cuadros de comentarios).","Expert mode":"Modo experto","Extend channel list":"Ampliar la lista de canales","Extend content":"Ampliar el contenido","Extend footer":"Ampliar el pie de página","Extend header":"Ampliar la cabecera","FFmpeg":"FFmpeg","FPS":"FPS","Failed to correctly cleanup previous process data":"No se han limpiado correctamente los datos del proceso anterior","Failed to create publication service ({0})":["Fallo en la creación del servicio de publicación (",["0"],")"],"Failed to create publication website files.":"Fallo en la creación de los archivos del sitio web de la publicación.","Failed to probe the source. Please check the <0>probe details.":"No se ha podido sondear la fuente. Por favor, compruebe los <0>detalles de la sonda.","Failed to refresh token: {0}":["Fallo en la actualización de la ficha: ",["0"]],"Failed to save ingest metadata":"Fallo al guardar los metadatos de ingesta","Failed to stop process":"Fallo en la detención del proceso","Failed to store player size setting.":"Fallo al almacenar el ajuste del tamaño del reproductor.","Failed to store publication service ({0})":["Fallo en el almacenamiento del servicio de publicación (",["0"],")"],"Failed to update ingest process ({0})":["Fallo en la actualización del proceso de ingesta (",["0"],")"],"Failed to update the player":"Fallo en la actualización del reproductor","Failed to verify the source. Please check the address.":"No se ha podido verificar la fuente. Por favor, compruebe la dirección.","Finish":"Acabado","Flags":"Banderas","For Javascripts.":"Para Javascripts.","For Stylesheets.":"Para las hojas de estilo.","Force input framerate":"Forzar la velocidad de entrada de fotogramas","Format":"Formato","Frame drops":"Caída de cuadros","Framebuffer":"Buffer de imágenes","Framerate":"Framerate","Frequency (Hz)":"Frecuencia (Hz)","GET":"GET","General":"General","Google Analytics ID":"ID de Google Analytics","Google Analytics Tracker Name":"Nombre del rastreador de Google Analytics","HLS":"HLS","HLS URL":"URL HLS","HLS statistic for the In-memory storage":"Estadística HLS para el almacenamiento en memoria","HTTP and HTTPS":"HTTP y HTTPS","HTTP port":"Puerto HTTP","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"Puerto HTTPS","Hardware device":"Dispositivo de hardware","Header":"Cabecera","Headline":"Titular","Hosted Restreamer interface":"Interfaz de Restreamer alojado","Human readable name on the service.":"Nombre legible para el ser humano en el servicio.","IP address":"Dirección IP","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Si ha cambiado los puertos, puede ser que Restreamer Core ya se haya reiniciado, pero ahora está disponible en un puerto diferente.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Si ha habilitado Let's Encrypt TLS, puede tardar un poco en adquirir los certificados. Asegúrese de que Restreamer Core es accesible a través del puerto 80 desde Internet. Compruebe el registro de la consola de Restreamer Core.","Ignore IP ranges":"Ignorar los rangos de IP","Image URL":"URL de la imagen","Imprint":"Impresión","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"Además del reproductor, el Restreamer ofrece una completa página de aterrizaje, con la que podrá presentar su transmisión en directo de forma fácil y rápida.","In-memory":"En memoria","In-memory storage":"Almacenamiento en memoria","Incompatible":"Incompatible","Inherit":"Heredar","Inject 1":"Inyectar 1","Inject 2":"Inyectar 2","Inject 3":"Inyectar 3","Inject 4":"Inyectar 4","Internal HLS server":"Servidor HLS interno","Internal RTMP server":"Servidor RTMP interno","Interval (seconds)":"Intervalo (segundos)","Issue alert":"Alerta de emisión","Keyframe interval (seconds)":"Intervalo de fotogramas clave (segundos)","Layout":"Disposición","Let's Encrypt certification":"Certificación Let's Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let's Encrypt requiere uno o más nombres de dominio público y un puerto 80/TCP accesible.","Level":"Nivel","Level of system protocol.":"Nivel de protocolo del sistema.","License":"Licencia","Life color":"El color de la vida","Linecolor":"Linecolor","Link":"Enlace","Link, mouseover":"Enlace, ratón","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Lista de rangos de IP en notación CIDR, por ejemplo, 127.0.0.1/32, que las estadísticas no registrarán -un rango de IP por línea. Déjelo vacío para registrar todas las sesiones.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Lista de extensiones de archivos a almacenar en caché (por ejemplo, \".html\"), una por línea. Déjela vacía para almacenar en caché todos los tipos de archivos.","List size (segments)":"Tamaño de la lista (segmentos)","Live-Streaming to Facebook Live RTMP service":"Transmisión en directo al servicio RTMP de Facebook Live","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Transmisión en directo al servicio RTMP de Instagram Live. La clave del streaming requiere un servicio como <0>Pato Amarillo.","Live-Streaming to Twitch Live RTMP Service.":"Transmisión en directo al servicio RTMP de Twitch Live.","Live-Streaming to Vimeos Live RTMP Service":"Transmisión en directo al servicio Vimeos Live RTMP","Livesource ID":"Identificación de la fuente de vida","Log level":"Nivel de registro","Logging":"Registro","Login":"Acceda a","Login failed: Couldn't load API details":"El inicio de sesión ha fallado: No se han podido cargar los detalles de la API","Login failed: {0}":["El inicio de sesión ha fallado: ",["0"]],"Login/JWT authorization":"Autorización de inicio de sesión/JWT","Logo":"Logotipo","Logout":"Cierre de sesión","MB":"MB","Main Source":"Fuente principal","Main channel":"Canal principal","Main channel not found":"Canal principal no encontrado","Main channel saved":"Canal principal guardado","Main page channel (index.html).":"Canal de la página principal (index.html).","Maintainer:":"Mantenedor:","Maximum allowed cache size, 0 for unlimited.":"Tamaño máximo de caché permitido, 0 para ilimitado.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Máximo de megabytes de RAM permitidos para /memfs, 0 para ilimitado.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Máximo de megabytes permitidos a consumir del disco duro. 0 para ilimitado.","Maximum bandwidth Mbit/s":"Ancho de banda máximo Mbit/s","Maximum delay in milliseconds.":"Retraso máximo en milisegundos.","Maximum file size (Megabytes)":"Tamaño máximo del archivo (Megabytes)","Maximum file size to put in cache.":"Tamaño máximo del archivo a poner en la caché.","Maximum log histroy":"Máxima historia de registro","Maximum log lines":"Líneas de registro máximas","Maximum size (Megabytes)":"Tamaño máximo (Megabytes)","Maximum viewer idle time (Seconds)":"Tiempo máximo de inactividad del espectador (segundos)","Maximum viewers":"Máximos espectadores","Memory":"Memoria","Meta information":"Meta información","Metadata":"Metadatos","Mold":"Moho","More about Twitter's copyright <0>here.":"Más información sobre los derechos de autor de Twitter <0>aquí.","More about YouTube's copyright <0>here.":"Más información sobre los derechos de autor de YouTube <0>aquí.","More about licenses here":"Más información sobre las licencias aquí","More about the service":"Más información sobre el servicio","Mute":"Silencio","Name":"Nombre","Name for the template. If the name already exists, it will be overwritten.":"Nombre para la plantilla. Si el nombre ya existe, se sobrescribirá.","Network":"Red","Network source":"Fuente de la red","Next":"Siguiente","Next: Audio":"Siguiente: Audio","Next: Video setup":"Siguiente: Configuración del vídeo","No":"No","No audio":"Sin audio","No audio stream available":"No hay flujo de audio disponible","No live stream was detected. Please check the software that sends the stream.":"No se ha detectado ninguna transmisión en directo. Por favor, compruebe el software que envía el flujo.","No source selected":"No se ha seleccionado ninguna fuente","No suitable encoder found.":"No se ha encontrado un codificador adecuado.","No video":"No hay vídeo","No video stream available":"No hay flujo de vídeo disponible","Node ID":"ID de nodo","Noise":"Ruido","None":"Ninguno","Notes":"Notas","Number of log lines to keep.":"Número de líneas de registro a conservar.","Number of logs to keep for each process.":"Número de registros a mantener para cada proceso.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Un referente por línea, por ejemplo: http://www.example.com","Open":"Abrir","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"El passthrough (copia) sólo debe desactivarse si es necesario. Cada codificación requiere recursos adicionales de la CPU/GPU.","Password":"Contraseña","Password for authorization.":"Contraseña para la autorización.","Password for the device.":"Contraseña para el dispositivo.","Persist viewer statistics":"Persistir las estadísticas de los espectadores","Pixel format":"Formato de píxeles","Plan: <0>Starter":"Plan: <0>Inicio","Platforms":"Plataformas","Playback":"Reproducción","Player":"Jugador","Player URL":"URL del jugador","Player settings saved":"Ajustes del jugador guardados","Playersite":"Playersite","Playlist":"Lista de reproducción","Please check the <0>process log":"Por favor, compruebe el <0>registro del proceso","Please contact the operator of the service and check what happens.":"Póngase en contacto con el operador del servicio y compruebe lo que ocurre.","Please select a file to upload.":"Por favor, seleccione un archivo para cargar.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Por favor, utilice \"Passthrough (copia)\" si es posible. La codificación requiere recursos adicionales de la CPU/GPU.","Please wait. Probe stream data ...":"Por favor, espere. Datos del flujo de la sonda ...","Please wait. Setting up the stream ...":"Por favor, espere. Configurando el flujo ...","Port":"Puerto","Position":"Posición","Preset":"Preestablecido","Primary stream":"Corriente primaria","Primary stream key":"Clave de flujo primaria","Probe":"Sonda","Process":"Proceso","Process control":"Control de procesos","Process debug":"Depuración del proceso","Process debug report":"Informe de depuración del proceso","Process details":"Detalles del proceso","Process report":"Informe del proceso","Processing & Control":"Procesamiento y control","Profile":"Perfil","Protocol":"Protocolo","Protocols":"Protocolos","Public domain/s":"Dominio público","Publication service not found":"Servicio de publicación no encontrado","Publication website settings saved":"Se guarda la configuración del sitio web de la publicación","Publications":"Publicaciones","Pull Mode":"Modo de tirar","Pull or recieve the data:":"Tire o reciba los datos:","Quality":"Calidad","RGB test pattern":"Patrón de prueba RGB","RTMP app for publishing.":"Aplicación RTMP para la publicación.","RTMP server":"Servidor RTMP","RTMP server is not enabled":"El servidor RTMP no está habilitado","RTMP server listen address.":"Dirección de escucha del servidor RTMP.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Token RTMP para publicar y reproducir. El token es el valor del parámetro de consulta URL 'token'.","RTMP/S":"RTMP/S","RTMPS server":"Servidor RTMPS","RTSP":"RTSP","Raspberry Pi camera":"Cámara Raspberry Pi","Rate control":"Control de la tasa","Ratio":"Ratio","Read input at native speed":"Leer la entrada a velocidad nativa","Receive Mode":"Modo de recepción","Reconnect":"Conecte de nuevo","Reconnect delay (seconds)":"Retraso de reconexión (segundos)","Reconnecting in {0}s":["Reconexión en ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["La reconexión con Restreamer Core ha fallado durante los últimos ",["RETRIES"]," segundos."],"Reconnecting to Restreamer Core failed.":"Ha fallado la reconexión con Restreamer Core.","Region":"Región","Reload":"Recargar","Remove the oldest entries if the /memfs is full":"Eliminar las entradas más antiguas si el /memfs está lleno","Requires activation":"Requiere activación","Restart":"Reinicie","Restart required":"Es necesario reiniciar","Restarting":"Reiniciando","Restarting Restreamer Core ...":"Reiniciando el núcleo de Restreamer ...","Restarting the application failed.":"El reinicio de la aplicación ha fallado.","Restreamer Service":"Servicio de resemantización","Retrieving stream data ...":"Recuperación de los datos del flujo ...","Retry":"Reintentar","Rule":"Regla","Sampling":"Muestreo","Save":"Guarde","Scale":"Escala","Seconds to keep files in cache.":"Segundos para mantener los archivos en la caché.","Seconds until a process is restarted.":"Segundos hasta que se reinicie un proceso.","Seconds until a staled process is terminated.":"Segundos hasta que se termina un proceso estancado.","Seconds until the snapshot/thumbnail of the video source is updated.":"Segundos hasta que se actualiza la instantánea/imagen de la fuente de vídeo.","Security":"Seguridad","Security token":"Ficha de seguridad","Seekbar color":"Color de la barra de herramientas","Segment length (seconds)":"Duración del segmento (segundos)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"El segmento se cortará en el siguiente fotograma clave una vez transcurrido este tiempo. Se recomienda 2.","Segmentation":"Segmentación","Select a device:":"Seleccione un dispositivo:","Select audio Source:":"Seleccione la fuente de audio:","Select source ...":"Seleccione la fuente ...","Select video source:":"Seleccione la fuente de vídeo:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Seleccione si extrae el flujo de una <0>fuente de red (como una cámara de red) o del <1>servidor RTMP interno (por ejemplo, los flujos OBS al Restreamer).","Select your encoding setting:":"Seleccione su configuración de codificación:","Selected":"Seleccionado","Selected channel":"Canal seleccionado","Selection":"Selección","Send anonymous metrics (helps us for future development)":"Enviar métricas anónimas (nos ayuda para el desarrollo futuro)","Send stream to this address:":"Envíe la corriente a esta dirección:","Send video to Framebuffer":"Enviar vídeo a Framebuffer","Server":"Servidor","Service":"Servicio","Service name":"Nombre del servicio","Service token for monitoring.":"Ficha de servicio para la supervisión.","Sessions":"Sesiones","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Establece un límite de ancho de banda en Mbit por segundo para la transferencia de datos HLS salientes. Todos los servicios, como el RTMP y los procesos salientes, se incluyen en el cálculo. Si se supera el ancho de banda, los espectadores HLS reciben el código de estado HTTP 509 (Límite de ancho de banda superado). 0 es ilimitado.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Establece un límite de espectadores para las sesiones HLS. Si se supera el límite, los espectadores HLS reciben el código de estado HTTP 509 (Límite de ancho de banda superado). 0 es ilimitado.","Setting for connection to the service.":"Ajuste para la conexión al servicio.","Settings":"Ajustes","Settings (expert mode)":"Ajustes (modo experto)","Settings for /data path. The access is protected by":"Configuración de la ruta /data. El acceso está protegido por","Settings for /memfs path.":"Configuración de la ruta /memfs.","Settings saved. All changes will be applied after restarting the application.":"Ajustes guardados. Todos los cambios se aplicarán después de reiniciar la aplicación.","Shows a reference to the project.":"Muestra una referencia al proyecto.","Sign up (free)":"Inscríbase (gratis)","Silence":"Silencio","Silence Audio":"Silencio Audio","Sine":"Sine","Sitename":"Nombre del sitio","Size":"Tamaño","Snapshot":"Instantánea","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Tiempo de espera del zócalo (microsegundos)","Software":"Software","Source":"Fuente","Speed":"Velocidad","Stale timeout (seconds)":"Tiempo de espera (segundos)","Statistics":"Estadísticas","Storage":"Almacenamiento","Stores the viewer statistics to the disk.":"Almacena las estadísticas del visor en el disco.","Stream":"Corriente","Stream URL":"URL de la corriente","Stream key":"Clave de flujo","Stream name":"Nombre de la corriente","Stream names":"Nombres de los arroyos","Support datarhei Restreamer":"Apoyo a datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Soporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT y más.","System":"Sistema","Template":"Plantilla","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Plantilla que se utilizará para crear la página web de la publicación. El botón de borrar elimina la selección del sistema.","Terms":"Términos","Test pattern":"Patrón de prueba","Test pattern (extended)":"Patrón de prueba (ampliado)","Text colors":"Colores del texto","The amplitude (0.0 - 1.0) of the generated audio stream":"La amplitud (0,0 - 1,0) del flujo de audio generado","The application is using an older version of the settings.":"La aplicación está utilizando una versión antigua de la configuración.","The bitrate of the audio stream.":"La tasa de bits del flujo de audio.","The carrier frequency":"La frecuencia de la portadora","The channel \"{0}\" could not be deleted":["El canal \"",["0"],"\" no pudo ser borrado"],"The channel \"{0}\" has been deleted":["El canal \"",["0"],"\" ha sido borrado"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"La eliminación de este canal no se puede recuperar. Todas las publicaciones de este canal serán eliminadas.","The input profile is not complete. Please define a video and audio source.":"El perfil de entrada no está completo. Por favor, defina una fuente de vídeo y audio.","The layout of the audio stream.":"La disposición del flujo de audio.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"El número máximo de segmentos de la lista de reproducción. El 0 contendrá todos los segmentos. Se recomienda 6.","The noise color":"El color del ruido","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"La persona que asoció una obra con esta escritura ha dedicado la obra al dominio público renunciando a todos sus derechos sobre la obra en todo el mundo bajo la ley de derechos de autor, incluyendo todos los derechos conexos y vecinos, en la medida permitida por la ley. Puede copiar, modificar, distribuir y representar la obra, incluso con fines comerciales, todo ello sin pedir permiso.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"El nombre de dominio público alcanzable del host en el que se ejecuta este Restreamer. Separe los nombres de dominio múltiples con una coma.","The publication service \"{0}\" could not be deleted":["El servicio de publicación \"",["0"],"\" no ha podido ser eliminado"],"The publication service \"{0}\" has been created":["El servicio de publicación \"",["0"],"\" ha sido creado"],"The publication service \"{0}\" has been deleted":["El servicio de publicación \"",["0"],"\" ha sido eliminado"],"The publication service has been created":"Se ha creado el servicio de publicación","The sample rate of the audio stream.":"La frecuencia de muestreo del flujo de audio.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["El archivo seleccionado es demasiado grande (",["0"]," bytes). Sólo se permiten ",["1"]," bytes."],"The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}":["El tipo de archivo seleccionado (",["0"],") está ahora permitido. Los tipos de archivo permitidos son ",["imageAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}":["El tipo de archivo seleccionado (",["0"],") está ahora permitido. Los tipos de archivo permitidos son ",["logoAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}":["El tipo de archivo seleccionado (",["0"],") está ahora permitido. Los tipos de archivo permitidos son ",["templateAcceptString"]],"The settings for \"{0}\" have been saved":["Los ajustes de \"",["0"],"\" se han guardado"],"The source doesn't provide any audio streams.":"La fuente no proporciona ningún flujo de audio.","The source doesn't provide any audio streams. Please check the <0>probe details.":"La fuente no proporciona ningún flujo de audio. Por favor, compruebe los <0>detalles de la sonda.","The source doesn't provide any compatible audio streams.":"La fuente no proporciona ningún flujo de audio compatible.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"La fuente no proporciona ningún flujo de vídeo compatible. Por favor, compruebe los <0>requisitos.","The source doesn't provide any video streams. Please check the <0>probe details.":"La fuente no proporciona ningún flujo de vídeo. Por favor, compruebe los <0>detalles de la sonda.","The source doesn't provide any video streams. Please check the device.":"La fuente no proporciona ningún flujo de vídeo. Por favor, compruebe el dispositivo.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"La fuente de vídeo no proporciona ningún flujo de audio compatible. Se recomienda <0>Audio silencioso. Los servicios, como YouTube, Facebook y otros, requieren un canal de audio.","The video source is compatible. Select the desired resolution:":"La fuente de vídeo es compatible. Seleccione la resolución deseada:","There are updates available. Here you get more information.":"Hay actualizaciones disponibles. Aquí tiene más información.","There war an error during upload: {0}":["Se ha producido un error durante la carga: ",["0"]],"There was a problem storing the settings. Settings not saved.":"Hubo un problema al guardar los ajustes. Los ajustes no se han guardado.","There was an error connecting to Restreamer Core at {0}.":["Se ha producido un error de conexión con Restreamer Core en ",["0"],"."],"There was an error during upload: {0}":["Ha habido un error durante la carga: ",["0"]],"There was an error setting up the stream.":"Hubo un error al configurar el flujo.","There were some errors in the settings. Settings not saved.":"Hubo algunos errores en la configuración. Los ajustes no se han guardado.","There's no login method available.":"No hay ningún método de inicio de sesión disponible.","This is a dummy service that explains to you the concepts of service.":"Este es un servicio ficticio que le explica los conceptos del servicio.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Esto no es necesariamente un error. Sin embargo, es posible que Restreamer Core tarde un poco más en reiniciarse..","This is to mention the copyright regulations for the target of this service.":"Se trata de mencionar las normas de derechos de autor para el objetivo de este servicio.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Esta licencia permite a los reutilizadores copiar y distribuir el material en cualquier medio o formato sólo en forma no adaptada y siempre que se dé la atribución al creador. La licencia permite el uso comercial.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Esta licencia permite a los reutilizadores copiar y distribuir el material en cualquier medio o formato en forma no adaptada, sólo para fines no comerciales y siempre que se dé la atribución al creador.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir a partir del material en cualquier medio o formato sólo con fines no comerciales y siempre que se cite al creador.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir a partir del material en cualquier medio o formato sólo con fines no comerciales y siempre que se cite al creador. Si usted remezcla, adapta o construye sobre el material, debe licenciar el material modificado bajo idénticos términos.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir sobre el material en cualquier medio o formato, siempre y cuando se dé la atribución al creador. La licencia permite el uso comercial.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir sobre el material en cualquier medio o formato, siempre y cuando se dé la atribución al creador. La licencia permite el uso comercial. Si usted remezcla, adapta o construye sobre el material, debe licenciar el material modificado bajo idénticos términos.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Esta fuente no puede ser editada mientras esté en uso. Para continuar, tiene que desconectar la fuente.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Esta versión de la UI no es compatible con el binario FFmpeg disponible (",["0"],"). La UI requiere ",["1"],". Por favor, utilice un binario FFmpeg compatible."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Esta versión de la interfaz de usuario no es compatible con el núcleo conectado (",["0"],"). La UI requiere ",["1"],". Por favor, utilice una versión compatible de la UI."],"This version of the UI is compatible.":"Esta versión de la interfaz de usuario es compatible.","Time until an inactive viewer connection is treated as closed.":"Tiempo que transcurre hasta que una conexión de visor inactiva es tratada como cerrada.","Token":"Ficha","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmita instantáneas de la fuente principal a un servidor HTTP/S. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Transmite el canal de audio de la fuente principal a un servidor Icecast. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmita la fuente principal como HTTP-Live-Streaming (HLS) a un servidor HTTP/S. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmita la fuente principal como MPEG-DASH a un servidor HTTP/S. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Transmitir la fuente principal a un Servicio Live de Brightcove. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Transmita la fuente principal a un servicio RTMP de CDN77. Más información sobre la configuración <0>aquí.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Transmita la fuente principal a un servicio RTMP de DaCast. Más información sobre la configuración <0>aquí.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Transmita la fuente principal a un servicio MPEG-TS. Puede encontrar más detalles sobre los ajustes aquí <0>aquí.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor RTMP(e|s|t|te|ts). Puede encontrar más detalles sobre la configuración <0>aquí.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor RTSP. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor Red5/Pro. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor SRT. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor UDP. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor WOWZA. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Transmitir la fuente principal a un datarhei Core Ressource. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Transmita la fuente principal a una fuente de livespotting.com. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Transmita la fuente principal a los Servicios de Medios en Vivo de Akamai (MSL). Puede encontrar más detalles sobre la configuración del codificador MSL en <0>aquí.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Transmita la fuente principal al servicio de codificación en la nube de Bitmovin, una potente herramienta para la transmisión en directo. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Transmita la fuente principal al servicio Restream RTMP. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Transmite su vídeo como un flujo RTMP con la clave necesaria generada en YouTube Studio. Puede encontrar más información sobre la configuración de una transmisión en directo en la <0>Academia de Creadores de YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Transmite su flujo de vídeo con la clave requerida, generada en Twitter Producer. Puede encontrar más información sobre la configuración de una transmisión en directo en <0>Productor de Twitter.","Tune":"Sintonice","UDP transport":"Transporte UDP","Unable to load the config.":"No se puede cargar la configuración.","Unique ident on the service.":"Identificación única en el servicio.","Unknown":"Desconocido","Unselected":"No seleccionado","Upload":"Subir a","Uploading the file failed":"La carga del archivo ha fallado","Uploading the logo failed":"Falló la carga del logotipo","Uptime":"Tiempo de funcionamiento","Use Auth0 for your running Restreamer Core. More <0>details.":"Utilice Auth0 para su núcleo Restreamer en funcionamiento. Más <0>detalles.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Utilice el asistente (<0/>) para una configuración rápida y sencilla, o edite (<1/>) las fuentes directamente en el modo personalizado.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilice los derechos de autor y elija la licencia de imagen correcta. Ya sea libre para todos o muy restringida. Comente brevemente lo que otros pueden hacer con su imagen.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilice sus derechos de autor y elija la licencia de imagen adecuada. Ya sea libre para todos o muy restringida. Comente brevemente lo que otros pueden hacer con su imagen.","User registration":"Registro de usuarios","Username":"Nombre de usuario","Username for authorization.":"Nombre de usuario para la autorización.","Username for the device.":"Nombre de usuario del dispositivo.","VPU ID":"ID DE LA VPU","Video":"Vídeo","Video device":"Dispositivo de vídeo","Video settings":"Ajustes de vídeo","Video setup":"Configuración del vídeo","Video source":"Fuente de vídeo","Viewer":"Visor","Virtual source":"Fuente virtual","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Bienvenido a Restreamer v2, la solución para la publicación rápida y sencilla de vídeos. Gratis para uso privado y comercial. Más ayuda en los <0>docs.","Write protection":"Protección de la escritura","YUV test pattern":"Patrón de prueba YUV","Yes":"Sí","You can't abort the wizard because at least one input must be defined.":"No puede abortar el asistente porque al menos una entrada debe estar definida.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Ha cambiado la configuración. Para que los cambios surtan efecto, tiene que reiniciar la aplicación. ¿Quiere reiniciar ahora?","You have to reconnect manually":"Tiene que volver a conectarse manualmente","You have unsaved changes. Please save them before you can control the service again.":"Tiene cambios sin guardar. Por favor, guárdelos antes de poder controlar el servicio de nuevo.","Your stream needs to be encoded, but there's no suitable encoder available.":"Su flujo necesita ser codificado, pero no hay un codificador adecuado disponible.","Your stream needs to be encoded. Choose the desired encoder:":"Su flujo debe ser codificado. Elija el codificador deseado:","blue":"azul","brown":"marrón","iframe code":"código iframe","kbit/s":"kbit/s","pink":"rosa","velvet":"terciopelo","violet":"violeta","white":"blanco"}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{"<0>Compatibility list":"<0>Lista de compatibilidad","<0>Show probe details":"<0>Mostrar detalles de la sonda","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Punto final de la API no encontrado. La configuración no se ha guardado.","AVFoundation":"AVFoundation","Abort":"Abortar","About":"Acerca de","Add":"Añada","Add Publication":"Añadir publicación","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Añada widgets y estilos externos al sitio de publicación. Puede encontrar algunos ejemplos en la página de ayuda.","Add new channel":"Añadir un nuevo canal","Add: {0}":["Añadir: ",["0"]],"Address":"Dirección","Address for the background image.":"Dirección para la imagen de fondo.","Address to listen on for HTTP requests.":"Dirección de escucha para las peticiones HTTP.","Address to listen on for HTTPS requests.":"Dirección de escucha para las solicitudes HTTPS.","Adjust publication site colors and background as you like.":"Ajuste los colores del sitio de publicación y el fondo a su gusto.","Advanced monitoring":"Vigilancia avanzada","Advanced settings":"Ajustes avanzados","Advanced setup":"Configuración avanzada","Alerting by email":"Alerta por correo electrónico","All":"Todo","All important system settings.":"Todos los ajustes importantes del sistema.","Allow all referrer":"Permitir todos los remitentes","Allow counting how many viewers the stream has.":"Permite contar el número de espectadores que tiene el flujo.","Amplitude":"Amplitud","An environment variable sets this value.":"Una variable de entorno establece este valor.","App":"App","Application":"Aplicación","Are you sure you want to abort the wizard?":"¿Está seguro de que quiere abortar el asistente?","Audio":"Audio","Audio Device":"Dispositivo de audio","Audio device":"Dispositivo de audio","Audio from device":"Audio del dispositivo","Audio settings":"Ajustes de audio","Audio setup":"Configuración de audio","Auth0":"Auth0","Auth0 Tenant":"Auth0 Inquilino","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 no está disponible actualmente porque esta interfaz está cargada desde un origen inseguro.","Author":"Autor","Authorization":"Autorización","Automatic cleanup of all media data":"Limpieza automática de todos los datos de los medios de comunicación","Autoplay":"Reproducción automática","Available":"Disponible","Back":"Volver","Background colors":"Colores de fondo","Background image":"Imagen de fondo","Backup URL":"URL de respaldo","Backup server":"Servidor de respaldo","Backup stream":"Flujo de reserva","Backup stream key":"Clave de flujo de respaldo","Bandwidth":"Ancho de banda","Bandwidth control":"Control del ancho de banda","Banner":"Banner","Basic":"Básico","Beep factor":"Factor Bip","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Describa brevemente lo que el público verá durante la transmisión en directo.","Button color":"Color del botón","Cache for files on /data.":"Caché para archivos en /data.","Cache time (Seconds)":"Tiempo de caché (segundos)","Cache types":"Tipos de caché","Capture clicks":"Captura de clics","Capture cursor":"Cursor de captura","Channel \"{0}\" saved":["Canal \"",["0"],"\" guardado"],"Channels":"Canales","Check for updates":"Compruebe las actualizaciones","Check the requirements":"Compruebe los requisitos","Choose a video stream":"Elija un flujo de vídeo","Choose an audio stream":"Elija un flujo de audio","Choose an input device ...":"Elija un dispositivo de entrada ...","Choose codec ...":"Elija el códec ...","Choose tenant ...":"Elija al inquilino ...","Chunk":"Chunk","Close":"Cerrar","Code injection":"Inyección de código","Codec":"Códec","Color":"Color","Config":"Configurar","Confirm password":"Confirmar contraseña","Connect":"Conectar","Connected device":"Dispositivo conectado","Connected since <0/>":"Conectado desde <0/>","Connecting ...":"Conectando ...","Connecting to Restreamer Core ...":"Conexión al núcleo de Restreamer ...","Connecting to Restreamer Core failed probably because of mixed content.":"La conexión con Restreamer Core ha fallado probablemente debido a la mezcla de contenidos.","Content":"Contenido","Content URL":"Content URL","Cores":"Núcleos","Create user":"Crear usuario","Creative Commons":"Creative Commons","Custom ...":"A medida ...","Custom JSON config for datarhei Core.":"Configuración JSON personalizada para datarhei Core.","Custom audio device":"Dispositivo de audio personalizado","Custom audio index":"Índice de audio personalizado","Custom bitrate (kbit/s)":"Tasa de bits personalizada (kbit/s)","Custom code injection":"Inyección de código personalizado","Custom delay":"Retraso personalizado","Custom device":"Dispositivo personalizado","Custom format":"Formato personalizado","Custom framerate":"Velocidad de fotogramas personalizada","Custom keyframe interval":"Intervalo de fotogramas clave personalizado","Custom layout":"Diseño personalizado","Custom sampling (Hz)":"Muestreo personalizado (Hz)","Custom scale":"Escala personalizada","Custom size":"Tamaño personalizado","Custom video device":"Dispositivo de vídeo personalizado","Custom video index":"Índice de vídeo personalizado","Data copied to clipboard":"Datos copiados en el portapapeles","Death color":"Color de la muerte","Decoder":"Decodificador","Default":"Por defecto","Delay":"Retraso","Delay (ms)":"Retraso (ms)","Delete":"Borrar","Deleting a publication service cannot be reversed. The publication stops immediately.":"La eliminación de un servicio de publicación no se puede revertir. La publicación se detiene inmediatamente.","Delivering mode":"Modo de entrega","Description":"Descripción","Design":"Diseño","Device":"Dispositivo","Disconnect":"Desconectar","Disconnect & Continue":"Desconectar y continuar","Disconnecting ...":"Desconectando...","Disk":"Disco","Disk cache":"Caché de disco","Disk storage":"Almacenamiento en disco","Do you really want to restart the application now?":"¿Realmente quiere reiniciar la aplicación ahora?","Do you want to delete \"{0}\"?":["¿Quiere borrar \"",["0"],"\"?"],"Do you want to delete {title}?":["¿Desea eliminar ",["título"],"?"],"Do you want to disconnect \"{0}\"?":["¿Quiere desconectar \"",["0"],"\"?"],"Docs":"Docs","Documentation":"Documentación","Dup. frames":"Marcos Dup.","EDIT: Player":"EDIT: Jugador","EDIT: Publication Website":"EDIT: Página web de la publicación","Edit":"Editar","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Edite las fuentes de audio y vídeo para la transmisión en directo. Añada una descripción y establezca la licencia de contenido que desee.","Edit: {title}":["Editar: ",["título"]],"Embed":"Incrustar","Enable RTMP server ...":"Habilitar el servidor RTMP ...","Enable a periodic beep every second with this value times the carrier frequency":"Habilitar un pitido periódico cada segundo con este valor multiplicado por la frecuencia portadora","Enable backup stream":"Habilitar el flujo de respaldo","Enable nerd statistics":"Habilitar las estadísticas de los nerds","Enable primary stream":"Habilitar el flujo primario","Enable snapshots":"Habilitar las instantáneas","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Se recomienda encarecidamente habilitar la autorización. De lo contrario, cualquiera puede acceder a esta instancia.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Se recomienda encarecidamente habilitar la autentificación básica. De lo contrario, cualquiera podría escribir datos en /memfs.","Encoder":"Codificador","Encoding":"Codificación","Encryption":"Codificación","Enter a name for the new channel.":"Introduzca un nombre para el nuevo canal.","Enter password":"Introduzca la contraseña","Enter the address of your network source:":"Introduzca la dirección de su fuente de red:","Enter username":"Introduzca el nombre de usuario","Entropy coder":"Codificador de entropía","Error":"Error","Error while copying data to clipboard":"Error al copiar datos en el portapapeles","Error: {0}":["Error: ",["0"]],"Expands the area above the channel list (live chat).":"Amplía el área sobre la lista de canales (chat en vivo).","Expands the area under the channel description (comment boxes).":"Amplía el área bajo la descripción del canal (cuadros de comentarios).","Expert mode":"Modo experto","Extend channel list":"Ampliar la lista de canales","Extend content":"Ampliar el contenido","Extend footer":"Ampliar el pie de página","Extend header":"Ampliar la cabecera","FFmpeg":"FFmpeg","FPS":"FPS","Failed to create publication service ({0})":["Fallo en la creación del servicio de publicación (",["0"],")"],"Failed to create publication website files.":"Fallo en la creación de los archivos del sitio web de la publicación.","Failed to probe the source. Please check the <0>probe details.":"No se ha podido sondear la fuente. Por favor, compruebe los <0>detalles de la sonda.","Failed to refresh token: {0}":["Fallo en la actualización de la ficha: ",["0"]],"Failed to save ingest metadata":"Fallo al guardar los metadatos de ingesta","Failed to stop process":"Fallo en la detención del proceso","Failed to store player size setting.":"Fallo al almacenar el ajuste del tamaño del reproductor.","Failed to store publication service ({0})":["Fallo en el almacenamiento del servicio de publicación (",["0"],")"],"Failed to update ingest process ({0})":["Fallo en la actualización del proceso de ingesta (",["0"],")"],"Failed to update the player":"Fallo en la actualización del reproductor","Failed to verify the source. Please check the address.":"No se ha podido verificar la fuente. Por favor, compruebe la dirección.","Finish":"Acabado","Flags":"Banderas","For Javascripts.":"Para Javascripts.","For Stylesheets.":"Para las hojas de estilo.","Force input framerate":"Forzar la velocidad de entrada de fotogramas","Format":"Formato","Frame drops":"Caída de cuadros","Framebuffer":"Buffer de imágenes","Framerate":"Framerate","Frequency (Hz)":"Frecuencia (Hz)","GET":"GET","General":"General","Google Analytics ID":"ID de Google Analytics","Google Analytics Tracker Name":"Nombre del rastreador de Google Analytics","HLS":"HLS","HLS statistic for the In-memory storage":"Estadística HLS para el almacenamiento en memoria","HTTP and HTTPS":"HTTP y HTTPS","HTTP port":"Puerto HTTP","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"Puerto HTTPS","Hardware device":"Dispositivo de hardware","Header":"Cabecera","Headline":"Titular","Hosted Restreamer interface":"Interfaz de Restreamer alojado","Human readable name on the service.":"Nombre legible para el ser humano en el servicio.","IP address":"Dirección IP","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Si ha cambiado los puertos, puede ser que Restreamer Core ya se haya reiniciado, pero ahora está disponible en un puerto diferente.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Si ha habilitado Let's Encrypt TLS, puede tardar un poco en adquirir los certificados. Asegúrese de que Restreamer Core es accesible a través del puerto 80 desde Internet. Compruebe el registro de la consola de Restreamer Core.","Ignore IP ranges":"Ignorar los rangos de IP","Image URL":"URL de la imagen","Imprint":"Impresión","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"Además del reproductor, el Restreamer ofrece una completa página de aterrizaje, con la que podrá presentar su transmisión en directo de forma fácil y rápida.","In-memory":"En memoria","In-memory storage":"Almacenamiento en memoria","Incompatible":"Incompatible","Inherit":"Heredar","Inject 1":"Inyectar 1","Inject 2":"Inyectar 2","Inject 3":"Inyectar 3","Inject 4":"Inyectar 4","Internal HLS server":"Servidor HLS interno","Internal RTMP server":"Servidor RTMP interno","Interval (seconds)":"Intervalo (segundos)","Issue alert":"Alerta de emisión","Keyframe interval (seconds)":"Intervalo de fotogramas clave (segundos)","Layout":"Disposición","Let's Encrypt certification":"Certificación Let's Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let's Encrypt requiere uno o más nombres de dominio público y un puerto 80/TCP accesible.","Level":"Nivel","Level of system protocol.":"Nivel de protocolo del sistema.","License":"Licencia","Life color":"El color de la vida","Linecolor":"Linecolor","Link":"Enlace","Link, mouseover":"Enlace, ratón","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Lista de rangos de IP en notación CIDR, por ejemplo, 127.0.0.1/32, que las estadísticas no registrarán -un rango de IP por línea. Déjelo vacío para registrar todas las sesiones.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Lista de extensiones de archivos a almacenar en caché (por ejemplo, \".html\"), una por línea. Déjela vacía para almacenar en caché todos los tipos de archivos.","List size (segments)":"Tamaño de la lista (segmentos)","Live-Streaming to Facebook Live RTMP service":"Transmisión en directo al servicio RTMP de Facebook Live","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Transmisión en directo al servicio RTMP de Instagram Live. La clave del streaming requiere un servicio como <0>Pato Amarillo.","Live-Streaming to Twitch Live RTMP Service.":"Transmisión en directo al servicio RTMP de Twitch Live.","Live-Streaming to Vimeo Live RTMP Service":"Transmisión en directo al servicio Vimeo Live RTMP","Livesource ID":"Identificación de la fuente de vida","Log level":"Nivel de registro","Logging":"Registro","Login":"Acceda a","Login failed: Couldn't load API details":"El inicio de sesión ha fallado: No se han podido cargar los detalles de la API","Login failed: {0}":["El inicio de sesión ha fallado: ",["0"]],"Login/JWT authorization":"Autorización de inicio de sesión/JWT","Logo":"Logotipo","Logout":"Cierre de sesión","MB":"MB","Main Source":"Fuente principal","Main channel":"Canal principal","Main channel not found":"Canal principal no encontrado","Main channel saved":"Canal principal guardado","Main page channel (index.html).":"Canal de la página principal (index.html).","Maintainer:":"Mantenedor:","Maximum allowed cache size, 0 for unlimited.":"Tamaño máximo de caché permitido, 0 para ilimitado.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Máximo de megabytes de RAM permitidos para /memfs, 0 para ilimitado.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Máximo de megabytes permitidos a consumir del disco duro. 0 para ilimitado.","Maximum bandwidth Mbit/s":"Ancho de banda máximo Mbit/s","Maximum delay in milliseconds.":"Retraso máximo en milisegundos.","Maximum file size (Megabytes)":"Tamaño máximo del archivo (Megabytes)","Maximum file size to put in cache.":"Tamaño máximo del archivo a poner en la caché.","Maximum log histroy":"Máxima historia de registro","Maximum log lines":"Líneas de registro máximas","Maximum size (Megabytes)":"Tamaño máximo (Megabytes)","Maximum viewer idle time (Seconds)":"Tiempo máximo de inactividad del espectador (segundos)","Maximum viewers":"Máximos espectadores","Memory":"Memoria","Meta information":"Meta información","Metadata":"Metadatos","Mold":"Moho","More about Twitter's copyright <0>here.":"Más información sobre los derechos de autor de Twitter <0>aquí.","More about YouTube's copyright <0>here.":"Más información sobre los derechos de autor de YouTube <0>aquí.","More about licenses here":"Más información sobre las licencias aquí","More about the service":"Más información sobre el servicio","Mute":"Silencio","Name":"Nombre","Name for the template. If the name already exists, it will be overwritten.":"Nombre para la plantilla. Si el nombre ya existe, se sobrescribirá.","Network":"Red","Network source":"Fuente de la red","Next":"Siguiente","Next: Audio":"Siguiente: Audio","Next: Video setup":"Siguiente: Configuración del vídeo","No":"No","No audio":"Sin audio","No audio stream available":"No hay flujo de audio disponible","No input device available":"No hay dispositivo de entrada disponible","No live stream was detected. Please check the software that sends the stream.":"No se ha detectado ninguna transmisión en directo. Por favor, compruebe el software que envía el flujo.","No source selected":"No se ha seleccionado ninguna fuente","No sources available":"No hay fuentes disponibles","No suitable encoder found.":"No se ha encontrado un codificador adecuado.","No video":"No hay vídeo","No video stream available":"No hay flujo de vídeo disponible","Node ID":"ID de nodo","Noise":"Ruido","None":"Ninguno","Notes":"Notas","Number of log lines to keep.":"Número de líneas de registro a conservar.","Number of logs to keep for each process.":"Número de registros a mantener para cada proceso.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Un referente por línea, por ejemplo: http://www.example.com","Open":"Abrir","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"El passthrough (copia) sólo debe desactivarse si es necesario. Cada codificación requiere recursos adicionales de la CPU/GPU.","Password":"Contraseña","Password for authorization.":"Contraseña para la autorización.","Password for the device.":"Contraseña para el dispositivo.","Persist viewer statistics":"Persistir las estadísticas de los espectadores","Pixel format":"Formato de píxeles","Plan: <0>Starter":"Plan: <0>Inicio","Platforms":"Plataformas","Playback":"Reproducción","Player":"Jugador","Player URL":"URL del jugador","Player settings saved":"Ajustes del jugador guardados","Playersite":"Playersite","Playlist":"Lista de reproducción","Please check the <0>process log":"Por favor, compruebe el <0>registro del proceso","Please contact the operator of the service and check what happens.":"Póngase en contacto con el operador del servicio y compruebe lo que ocurre.","Please select a file to upload.":"Por favor, seleccione un archivo para cargar.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Por favor, utilice \"Passthrough (copia)\" si es posible. La codificación requiere recursos adicionales de la CPU/GPU.","Please wait. Probe stream data ...":"Por favor, espere. Datos del flujo de la sonda ...","Please wait. Setting up the stream ...":"Por favor, espere. Configurando el flujo ...","Port":"Puerto","Position":"Posición","Preset":"Preestablecido","Primary stream":"Corriente primaria","Primary stream key":"Clave de flujo primaria","Probe":"Sonda","Process":"Proceso","Process control":"Control de procesos","Process debug":"Depuración del proceso","Process debug report":"Informe de depuración del proceso","Process details":"Detalles del proceso","Process report":"Informe del proceso","Processing & Control":"Procesamiento y control","Profile":"Perfil","Protocol":"Protocolo","Protocols":"Protocolos","Public domain/s":"Dominio público","Publication service not found":"Servicio de publicación no encontrado","Publication website settings saved":"Se guarda la configuración del sitio web de la publicación","Publications":"Publicaciones","Pull Mode":"Modo de tirar","Pull or recieve the data:":"Tire o reciba los datos:","Quality":"Calidad","RGB test pattern":"Patrón de prueba RGB","RTMP app for publishing.":"Aplicación RTMP para la publicación.","RTMP server":"Servidor RTMP","RTMP server is not enabled":"El servidor RTMP no está habilitado","RTMP server listen address.":"Dirección de escucha del servidor RTMP.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Token RTMP para publicar y reproducir. El token es el valor del parámetro de consulta URL 'token'.","RTMP/S":"RTMP/S","RTMPS server":"Servidor RTMPS","RTSP":"RTSP","Raspberry Pi camera":"Cámara Raspberry Pi","Rate control":"Control de la tasa","Ratio":"Ratio","Read input at native speed":"Leer la entrada a velocidad nativa","Receive Mode":"Modo de recepción","Reconnect":"Conecte de nuevo","Reconnect delay (seconds)":"Retraso de reconexión (segundos)","Reconnecting in {0}s":["Reconexión en ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["La reconexión con Restreamer Core ha fallado durante los últimos ",["RETRIES"]," segundos."],"Reconnecting to Restreamer Core failed.":"Ha fallado la reconexión con Restreamer Core.","Refresh":"Actualización","Region":"Región","Reload":"Recargar","Remove the oldest entries if the /memfs is full":"Eliminar las entradas más antiguas si el /memfs está lleno","Requires activation":"Requiere activación","Restart":"Reinicie","Restart required":"Es necesario reiniciar","Restarting":"Reiniciando","Restarting Restreamer Core ...":"Reiniciando el núcleo de Restreamer ...","Restarting the application failed.":"El reinicio de la aplicación ha fallado.","Restreamer Service":"Servicio de resemantización","Retrieving stream data ...":"Recuperación de los datos del flujo ...","Retry":"Reintentar","Rule":"Regla","Sampling":"Muestreo","Save":"Guarde","Scale":"Escala","Seconds to keep files in cache.":"Segundos para mantener los archivos en la caché.","Seconds until a process is restarted.":"Segundos hasta que se reinicie un proceso.","Seconds until a staled process is terminated.":"Segundos hasta que se termina un proceso estancado.","Seconds until the snapshot/thumbnail of the video source is updated.":"Segundos hasta que se actualiza la instantánea/imagen de la fuente de vídeo.","Security":"Seguridad","Security token":"Ficha de seguridad","Seekbar color":"Color de la barra de herramientas","Segment length (seconds)":"Duración del segmento (segundos)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"El segmento se cortará en el siguiente fotograma clave una vez transcurrido este tiempo. Se recomienda 2.","Segmentation":"Segmentación","Select a device:":"Seleccione un dispositivo:","Select audio source:":"Seleccione la fuente de audio:","Select source ...":"Seleccione la fuente ...","Select video source:":"Seleccione la fuente de vídeo:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Seleccione si extrae el flujo de una <0>fuente de red (como una cámara de red) o del <1>servidor RTMP interno (por ejemplo, los flujos OBS al Restreamer).","Select your encoding setting:":"Seleccione su configuración de codificación:","Selected":"Seleccionado","Selected channel":"Canal seleccionado","Selection":"Selección","Send anonymous metrics (helps us for future development)":"Enviar métricas anónimas (nos ayuda para el desarrollo futuro)","Send stream to this address:":"Envíe la corriente a esta dirección:","Send video to Framebuffer":"Enviar vídeo a Framebuffer","Server":"Servidor","Service":"Servicio","Service name":"Nombre del servicio","Service token for monitoring.":"Ficha de servicio para la supervisión.","Sessions":"Sesiones","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Establece un límite de ancho de banda en Mbit por segundo para la transferencia de datos HLS salientes. Todos los servicios, como el RTMP y los procesos salientes, se incluyen en el cálculo. Si se supera el ancho de banda, los espectadores HLS reciben el código de estado HTTP 509 (Límite de ancho de banda superado). 0 es ilimitado.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Establece un límite de espectadores para las sesiones HLS. Si se supera el límite, los espectadores HLS reciben el código de estado HTTP 509 (Límite de ancho de banda superado). 0 es ilimitado.","Setting for connection to the service.":"Ajuste para la conexión al servicio.","Settings":"Ajustes","Settings (expert mode)":"Ajustes (modo experto)","Settings for /data path. The access is protected by":"Configuración de la ruta /data. El acceso está protegido por","Settings for /memfs path.":"Configuración de la ruta /memfs.","Settings saved. All changes will be applied after restarting the application.":"Ajustes guardados. Todos los cambios se aplicarán después de reiniciar la aplicación.","Share button":"Botón de compartir","Shows a reference to the project.":"Muestra una referencia al proyecto.","Sign up (free)":"Inscríbase (gratis)","Silence":"Silencio","Silence Audio":"Silencio Audio","Sine":"Sine","Sitename":"Nombre del sitio","Size":"Tamaño","Snapshot":"Instantánea","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Tiempo de espera del zócalo (microsegundos)","Software":"Software","Source":"Fuente","Speed":"Velocidad","Stale timeout (seconds)":"Tiempo de espera (segundos)","Statistics":"Estadísticas","Storage":"Almacenamiento","Stores the viewer statistics to the disk.":"Almacena las estadísticas del visor en el disco.","Stream":"Corriente","Stream URL":"URL de la corriente","Stream key":"Clave de flujo","Stream name":"Nombre de la corriente","Stream names":"Nombres de los arroyos","Support datarhei Restreamer":"Apoyo a datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Soporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT y más.","System":"Sistema","Template":"Plantilla","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Plantilla que se utilizará para crear la página web de la publicación. El botón de borrar elimina la selección del sistema.","Terms":"Términos","Test pattern":"Patrón de prueba","Test pattern (extended)":"Patrón de prueba (ampliado)","Text colors":"Colores del texto","The amplitude (0.0 - 1.0) of the generated audio stream":"La amplitud (0,0 - 1,0) del flujo de audio generado","The application is using an older version of the settings.":"La aplicación está utilizando una versión antigua de la configuración.","The bitrate of the audio stream.":"La tasa de bits del flujo de audio.","The carrier frequency":"La frecuencia de la portadora","The channel \"{0}\" could not be deleted":["El canal \"",["0"],"\" no pudo ser borrado"],"The channel \"{0}\" has been deleted":["El canal \"",["0"],"\" ha sido borrado"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"La eliminación de este canal no se puede recuperar. Todas las publicaciones de este canal serán eliminadas.","The input profile is not complete. Please define a video and audio source.":"El perfil de entrada no está completo. Por favor, defina una fuente de vídeo y audio.","The layout of the audio stream.":"La disposición del flujo de audio.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"El número máximo de segmentos de la lista de reproducción. El 0 contendrá todos los segmentos. Se recomienda 6.","The noise color":"El color del ruido","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"La persona que asoció una obra con esta escritura ha dedicado la obra al dominio público renunciando a todos sus derechos sobre la obra en todo el mundo bajo la ley de derechos de autor, incluyendo todos los derechos conexos y vecinos, en la medida permitida por la ley. Puede copiar, modificar, distribuir y representar la obra, incluso con fines comerciales, todo ello sin pedir permiso.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"El nombre de dominio público alcanzable del host en el que se ejecuta este Restreamer. Separe los nombres de dominio múltiples con una coma.","The publication service \"{0}\" could not be deleted":["El servicio de publicación \"",["0"],"\" no ha podido ser eliminado"],"The publication service \"{0}\" has been created":["El servicio de publicación \"",["0"],"\" ha sido creado"],"The publication service \"{0}\" has been deleted":["El servicio de publicación \"",["0"],"\" ha sido eliminado"],"The publication service has been created":"Se ha creado el servicio de publicación","The sample rate of the audio stream.":"La frecuencia de muestreo del flujo de audio.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["El archivo seleccionado es demasiado grande (",["0"]," bytes). Sólo se permiten ",["1"]," bytes."],"The selected file type ({0}) is not allowed. Allowed file types are {types}":["El tipo de archivo seleccionado (",["0"],") no está permitido. Los tipos de archivo permitidos son ",["types"]],"The settings for \"{0}\" have been saved":["Los ajustes de \"",["0"],"\" se han guardado"],"The source doesn't provide any audio streams.":"La fuente no proporciona ningún flujo de audio.","The source doesn't provide any audio streams. Please check the <0>probe details.":"La fuente no proporciona ningún flujo de audio. Por favor, compruebe los <0>detalles de la sonda.","The source doesn't provide any compatible audio streams.":"La fuente no proporciona ningún flujo de audio compatible.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"La fuente no proporciona ningún flujo de vídeo compatible. Por favor, compruebe los <0>requisitos.","The source doesn't provide any video streams. Please check the <0>probe details.":"La fuente no proporciona ningún flujo de vídeo. Por favor, compruebe los <0>detalles de la sonda.","The source doesn't provide any video streams. Please check the device.":"La fuente no proporciona ningún flujo de vídeo. Por favor, compruebe el dispositivo.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"La fuente de vídeo no proporciona ningún flujo de audio compatible. Se recomienda <0>Audio silencioso. Los servicios, como YouTube, Facebook y otros, requieren un canal de audio.","The video source is compatible. Select the desired resolution:":"La fuente de vídeo es compatible. Seleccione la resolución deseada:","There are updates available. Here you get more information.":"Hay actualizaciones disponibles. Aquí tiene más información.","There was a problem storing the settings. Settings not saved.":"Hubo un problema al guardar los ajustes. Los ajustes no se han guardado.","There was an error connecting to Restreamer Core at {0}.":["Se ha producido un error de conexión con Restreamer Core en ",["0"],"."],"There was an error during upload: {0}":["Ha habido un error durante la carga: ",["0"]],"There was an error setting up the stream.":"Hubo un error al configurar el flujo.","There were some errors in the settings. Settings not saved.":"Hubo algunos errores en la configuración. Los ajustes no se han guardado.","There's no login method available.":"No hay ningún método de inicio de sesión disponible.","This is a dummy service that explains to you the concepts of service.":"Este es un servicio ficticio que le explica los conceptos del servicio.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Esto no es necesariamente un error. Sin embargo, es posible que Restreamer Core tarde un poco más en reiniciarse..","This is to mention the copyright regulations for the target of this service.":"Se trata de mencionar las normas de derechos de autor para el objetivo de este servicio.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Esta licencia permite a los reutilizadores copiar y distribuir el material en cualquier medio o formato sólo en forma no adaptada y siempre que se dé la atribución al creador. La licencia permite el uso comercial.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Esta licencia permite a los reutilizadores copiar y distribuir el material en cualquier medio o formato en forma no adaptada, sólo para fines no comerciales y siempre que se dé la atribución al creador.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir a partir del material en cualquier medio o formato sólo con fines no comerciales y siempre que se cite al creador.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir a partir del material en cualquier medio o formato sólo con fines no comerciales y siempre que se cite al creador. Si usted remezcla, adapta o construye sobre el material, debe licenciar el material modificado bajo idénticos términos.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir sobre el material en cualquier medio o formato, siempre y cuando se dé la atribución al creador. La licencia permite el uso comercial.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir sobre el material en cualquier medio o formato, siempre y cuando se dé la atribución al creador. La licencia permite el uso comercial. Si usted remezcla, adapta o construye sobre el material, debe licenciar el material modificado bajo idénticos términos.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Esta fuente no puede ser editada mientras esté en uso. Para continuar, tiene que desconectar la fuente.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Esta versión de la UI no es compatible con el binario FFmpeg disponible (",["0"],"). La UI requiere ",["1"],". Por favor, utilice un binario FFmpeg compatible."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Esta versión de la interfaz de usuario no es compatible con el núcleo conectado (",["0"],"). La UI requiere ",["1"],". Por favor, utilice una versión compatible de la UI."],"This version of the UI is compatible.":"Esta versión de la interfaz de usuario es compatible.","Time until an inactive viewer connection is treated as closed.":"Tiempo que transcurre hasta que una conexión de visor inactiva es tratada como cerrada.","Token":"Ficha","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmita instantáneas de la fuente principal a un servidor HTTP/S. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Transmite el canal de audio de la fuente principal a un servidor Icecast. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmita la fuente principal como HTTP-Live-Streaming (HLS) a un servidor HTTP/S. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmita la fuente principal como MPEG-DASH a un servidor HTTP/S. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Transmitir la fuente principal a un Servicio Live de Brightcove. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Transmita la fuente principal a un servicio RTMP de CDN77. Más información sobre la configuración <0>aquí.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Transmita la fuente principal a un servicio RTMP de DaCast. Más información sobre la configuración <0>aquí.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Transmita la fuente principal a un servicio MPEG-TS. Puede encontrar más detalles sobre los ajustes aquí <0>aquí.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor RTMP(e|s|t|te|ts). Puede encontrar más detalles sobre la configuración <0>aquí.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor RTSP. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor Red5/Pro. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor SRT. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor UDP. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Transmita la fuente principal a un servidor WOWZA. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Transmitir la fuente principal a un datarhei Core Ressource. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Transmita la fuente principal a una fuente de livespotting.com. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Transmita la fuente principal a los Servicios de Medios en Vivo de Akamai (MSL). Puede encontrar más detalles sobre la configuración del codificador MSL en <0>aquí.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Transmita la fuente principal al servicio de codificación en la nube de Bitmovin, una potente herramienta para la transmisión en directo. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Transmita la fuente principal al servicio Restream RTMP. Puede encontrar más detalles sobre los ajustes <0>aquí.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Transmite su vídeo como un flujo RTMP con la clave necesaria generada en YouTube Studio. Puede encontrar más información sobre la configuración de una transmisión en directo en la <0>Academia de Creadores de YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Transmite su flujo de vídeo con la clave requerida, generada en Twitter Producer. Puede encontrar más información sobre la configuración de una transmisión en directo en <0>Productor de Twitter.","Tune":"Sintonice","UDP transport":"Transporte UDP","Unable to load the config.":"No se puede cargar la configuración.","Unique ident on the service.":"Identificación única en el servicio.","Unknown":"Desconocido","Unselected":"No seleccionado","Upload":"Subir a","Uploading the file failed":"La carga del archivo ha fallado","Uploading the logo failed":"Falló la carga del logotipo","Uptime":"Tiempo de funcionamiento","Use Auth0 for your running Restreamer Core. More <0>details.":"Utilice Auth0 para su núcleo Restreamer en funcionamiento. Más <0>detalles.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Utilice el asistente (<0/>) para una configuración rápida y sencilla, o edite (<1/>) las fuentes directamente en el modo personalizado.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilice los derechos de autor y elija la licencia de imagen correcta. Ya sea libre para todos o muy restringida. Comente brevemente lo que otros pueden hacer con su imagen.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilice sus derechos de autor y elija la licencia de imagen adecuada. Ya sea libre para todos o muy restringida. Comente brevemente lo que otros pueden hacer con su imagen.","User registration":"Registro de usuarios","Username":"Nombre de usuario","Username for authorization.":"Nombre de usuario para la autorización.","Username for the device.":"Nombre de usuario del dispositivo.","VPU ID":"ID DE LA VPU","Video":"Vídeo","Video device":"Dispositivo de vídeo","Video settings":"Ajustes de vídeo","Video setup":"Configuración del vídeo","Video source":"Fuente de vídeo","Viewer":"Visor","Virtual source":"Fuente virtual","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Bienvenido a Restreamer v2, la solución para la publicación rápida y sencilla de vídeos. Gratis para uso privado y comercial. Más ayuda en los <0>docs.","Write protection":"Protección de la escritura","YUV test pattern":"Patrón de prueba YUV","Yes":"Sí","You can't abort the wizard because at least one input must be defined.":"No puede abortar el asistente porque al menos una entrada debe estar definida.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Ha cambiado la configuración. Para que los cambios surtan efecto, tiene que reiniciar la aplicación. ¿Quiere reiniciar ahora?","You have to reconnect manually":"Tiene que volver a conectarse manualmente","You have unsaved changes. Please save them before you can control the service again.":"Tiene cambios sin guardar. Por favor, guárdelos antes de poder controlar el servicio de nuevo.","Your stream needs to be encoded, but there's no suitable encoder available.":"Su flujo necesita ser codificado, pero no hay un codificador adecuado disponible.","Your stream needs to be encoded. Choose the desired encoder:":"Su flujo debe ser codificado. Elija el codificador deseado:","blue":"azul","brown":"marrón","iframe code":"código iframe","kbit/s":"kbit/s","pink":"rosa","velvet":"terciopelo","violet":"violeta","white":"blanco"}}; \ No newline at end of file diff --git a/src/locales/es/messages.po b/src/locales/es/messages.po index 03266e0..cbb38b6 100644 --- a/src/locales/es/messages.po +++ b/src/locales/es/messages.po @@ -13,12 +13,16 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/views/Edit/Profile.js:372 -#: src/views/Edit/Profile.js:501 +#: src/misc/EncodingSelect.js:224 +msgid "<0>Compatibility list" +msgstr "<0>Lista de compatibilidad" + +#: src/views/Edit/Profile.js:380 +#: src/views/Edit/Profile.js:510 msgid "<0>Show probe details" msgstr "<0>Mostrar detalles de la sonda" -#: src/views/Edit/Sources/ALSA.js:150 +#: src/views/Edit/Sources/ALSA.js:156 msgid "ALSA" msgstr "ALSA" @@ -26,26 +30,26 @@ msgstr "ALSA" msgid "API endpoint not found. Settings not saved." msgstr "Punto final de la API no encontrado. La configuración no se ha guardado." -#: src/views/Edit/Sources/AVFoundation.js:211 +#: src/views/Edit/Sources/AVFoundation.js:221 msgid "AVFoundation" msgstr "AVFoundation" #: src/misc/ChannelList.js:356 -#: src/views/Edit/Profile.js:402 -#: src/views/Edit/Wizard/index.js:1136 -#: src/views/Edit/index.js:547 -#: src/views/Edit/index.js:573 -#: src/views/Edit/index.js:592 +#: src/views/Edit/Profile.js:410 +#: src/views/Edit/Wizard/index.js:1153 +#: src/views/Edit/index.js:549 +#: src/views/Edit/index.js:575 +#: src/views/Edit/index.js:594 #: src/views/Publication/Add.js:362 #: src/views/Publication/Edit.js:601 -#: src/views/Settings.js:1967 -#: src/views/Settings.js:2026 -#: src/views/Settings.js:2048 +#: src/views/Settings.js:1972 +#: src/views/Settings.js:2031 +#: src/views/Settings.js:2053 msgid "Abort" msgstr "Abortar" -#: src/Header.js:286 -#: src/Header.js:327 +#: src/Header.js:283 +#: src/Header.js:324 msgid "About" msgstr "Acerca de" @@ -57,7 +61,7 @@ msgstr "Añada" msgid "Add Publication" msgstr "Añadir publicación" -#: src/views/Playersite.js:679 +#: src/views/Playersite.js:692 msgid "Add external widgets and styles to the publication site. You can find some examples on the help page." msgstr "Añada widgets y estilos externos al sitio de publicación. Puede encontrar algunos ejemplos en la página de ayuda." @@ -69,10 +73,10 @@ msgstr "Añadir un nuevo canal" msgid "Add: {0}" msgstr "Añadir: {0}" -#: src/views/Edit/Sources/Network.js:339 +#: src/views/Edit/Sources/Network.js:355 #: src/views/Edit/Wizard/Sources/Network.js:66 #: src/views/Publication/Services/Brightcove.js:95 -#: src/views/Publication/Services/Core.js:99 +#: src/views/Publication/Services/Core.js:100 #: src/views/Publication/Services/DASH.js:192 #: src/views/Publication/Services/HLS.js:181 #: src/views/Publication/Services/Icecast.js:160 @@ -84,23 +88,23 @@ msgstr "Añadir: {0}" #: src/views/Publication/Services/SRT.js:161 #: src/views/Publication/Services/UDP.js:127 #: src/views/Publication/Services/WOWZA.js:132 -#: src/views/Settings.js:1297 +#: src/views/Settings.js:1302 msgid "Address" msgstr "Dirección" -#: src/views/Playersite.js:616 +#: src/views/Playersite.js:629 msgid "Address for the background image." msgstr "Dirección para la imagen de fondo." -#: src/views/Settings.js:1326 +#: src/views/Settings.js:1331 msgid "Address to listen on for HTTP requests." msgstr "Dirección de escucha para las peticiones HTTP." -#: src/views/Settings.js:1339 +#: src/views/Settings.js:1344 msgid "Address to listen on for HTTPS requests." msgstr "Dirección de escucha para las solicitudes HTTPS." -#: src/views/Playersite.js:501 +#: src/views/Playersite.js:514 msgid "Adjust publication site colors and background as you like." msgstr "Ajuste los colores del sitio de publicación y el fondo a su gusto." @@ -108,7 +112,7 @@ msgstr "Ajuste los colores del sitio de publicación y el fondo a su gusto." msgid "Advanced monitoring" msgstr "Vigilancia avanzada" -#: src/views/Edit/Sources/Network.js:380 +#: src/views/Edit/Sources/Network.js:396 #: src/views/Publication/Services/DASH.js:204 #: src/views/Publication/Services/HLS.js:193 #: src/views/Publication/Services/Icecast.js:170 @@ -121,7 +125,7 @@ msgstr "Vigilancia avanzada" msgid "Advanced settings" msgstr "Ajustes avanzados" -#: src/views/Edit/Wizard/index.js:280 +#: src/views/Edit/Wizard/index.js:287 msgid "Advanced setup" msgstr "Configuración avanzada" @@ -137,11 +141,11 @@ msgstr "Todo" msgid "All important system settings." msgstr "Todos los ajustes importantes del sistema." -#: src/views/Settings.js:1473 +#: src/views/Settings.js:1478 msgid "Allow all referrer" msgstr "Permitir todos los remitentes" -#: src/views/Settings.js:1513 +#: src/views/Settings.js:1518 msgid "Allow counting how many viewers the stream has." msgstr "Permite contar el número de espectadores que tiene el flujo." @@ -153,8 +157,8 @@ msgstr "Amplitud" msgid "An environment variable sets this value." msgstr "Una variable de entorno establece este valor." -#: src/views/Publication/Services/Core.js:109 -#: src/views/Settings.js:1811 +#: src/views/Publication/Services/Core.js:107 +#: src/views/Settings.js:1816 msgid "App" msgstr "App" @@ -164,7 +168,7 @@ msgstr "App" msgid "Application" msgstr "Aplicación" -#: src/views/Edit/Wizard/index.js:1155 +#: src/views/Edit/Wizard/index.js:1172 msgid "Are you sure you want to abort the wizard?" msgstr "¿Está seguro de que quiere abortar el asistente?" @@ -172,27 +176,27 @@ msgstr "¿Está seguro de que quiere abortar el asistente?" msgid "Audio" msgstr "Audio" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:92 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:111 msgid "Audio Device" msgstr "Dispositivo de audio" -#: src/views/Edit/Sources/ALSA.js:101 -#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/ALSA.js:114 +#: src/views/Edit/Sources/AVFoundation.js:159 msgid "Audio device" msgstr "Dispositivo de audio" -#: src/views/Edit/Wizard/index.js:858 -#: src/views/Edit/Wizard/index.js:870 +#: src/views/Edit/Wizard/index.js:875 +#: src/views/Edit/Wizard/index.js:887 msgid "Audio from device" msgstr "Audio del dispositivo" -#: src/views/Edit/Profile.js:417 -#: src/views/Edit/ProfileSummary.js:89 +#: src/views/Edit/Profile.js:425 +#: src/views/Edit/ProfileSummary.js:90 #: src/views/Publication/Edit.js:533 msgid "Audio settings" msgstr "Ajustes de audio" -#: src/views/Edit/Wizard/index.js:811 +#: src/views/Edit/Wizard/index.js:828 msgid "Audio setup" msgstr "Configuración de audio" @@ -208,43 +212,47 @@ msgstr "Auth0 Inquilino" msgid "Auth0 is currently not available because this interface is loaded from an insecure origin." msgstr "Auth0 no está disponible actualmente porque esta interfaz está cargada desde un origen inseguro." -#: src/misc/controls/Metadata.js:74 +#: src/misc/controls/Metadata.js:71 msgid "Author" msgstr "Autor" #: src/views/Settings.js:1143 -#: src/views/Settings.js:1410 +#: src/views/Settings.js:1415 msgid "Authorization" msgstr "Autorización" -#: src/views/Publication/Player.js:434 +#: src/misc/controls/HLS.js:83 +msgid "Automatic cleanup of all media data" +msgstr "Limpieza automática de todos los datos de los medios de comunicación" + +#: src/views/Publication/Player.js:437 msgid "Autoplay" msgstr "Reproducción automática" -#: src/views/Playersite.js:434 +#: src/views/Playersite.js:445 msgid "Available" msgstr "Disponible" -#: src/views/Edit/Profile.js:532 -#: src/views/Edit/Wizard/index.js:394 -#: src/views/Edit/Wizard/index.js:630 -#: src/views/Edit/Wizard/index.js:895 -#: src/views/Edit/Wizard/index.js:1007 -#: src/views/Edit/Wizard/index.js:1065 -#: src/views/Edit/Wizard/index.js:1147 +#: src/views/Edit/Profile.js:541 +#: src/views/Edit/Wizard/index.js:408 +#: src/views/Edit/Wizard/index.js:647 +#: src/views/Edit/Wizard/index.js:912 +#: src/views/Edit/Wizard/index.js:1024 +#: src/views/Edit/Wizard/index.js:1082 +#: src/views/Edit/Wizard/index.js:1164 #: src/views/Publication/Add.js:528 msgid "Back" msgstr "Volver" -#: src/views/Playersite.js:550 +#: src/views/Playersite.js:563 msgid "Background colors" msgstr "Colores de fondo" -#: src/views/Playersite.js:603 +#: src/views/Playersite.js:616 msgid "Background image" msgstr "Imagen de fondo" -#: src/views/Publication/Services/Akamai.js:195 +#: src/views/Publication/Services/Akamai.js:196 msgid "Backup URL" msgstr "URL de respaldo" @@ -256,7 +264,7 @@ msgstr "Servidor de respaldo" msgid "Backup stream" msgstr "Flujo de reserva" -#: src/views/Publication/Services/Facebook.js:128 +#: src/views/Publication/Services/Facebook.js:124 msgid "Backup stream key" msgstr "Clave de flujo de respaldo" @@ -265,7 +273,7 @@ msgstr "Clave de flujo de respaldo" msgid "Bandwidth" msgstr "Ancho de banda" -#: src/views/Settings.js:1368 +#: src/views/Settings.js:1373 msgid "Bandwidth control" msgstr "Control del ancho de banda" @@ -274,7 +282,7 @@ msgid "Banner" msgstr "Banner" #: src/views/Login.js:241 -#: src/views/Settings.js:1415 +#: src/views/Settings.js:1420 msgid "Basic" msgstr "Básico" @@ -287,40 +295,40 @@ msgstr "Factor Bip" msgid "Bitrate" msgstr "Bitrate" -#: src/views/Edit/Wizard/index.js:996 -#: src/views/Edit/index.js:508 +#: src/views/Edit/Wizard/index.js:1013 +#: src/views/Edit/index.js:510 msgid "Briefly describe what the audience will see during the live stream." msgstr "Describa brevemente lo que el público verá durante la transmisión en directo." -#: src/views/Publication/Player.js:349 +#: src/views/Publication/Player.js:352 msgid "Button color" msgstr "Color del botón" -#: src/views/Settings.js:1682 +#: src/views/Settings.js:1687 msgid "Cache for files on /data." msgstr "Caché para archivos en /data." -#: src/views/Settings.js:1710 +#: src/views/Settings.js:1715 msgid "Cache time (Seconds)" msgstr "Tiempo de caché (segundos)" -#: src/views/Settings.js:1738 +#: src/views/Settings.js:1743 msgid "Cache types" msgstr "Tipos de caché" -#: src/views/Edit/Sources/AVFoundation.js:188 +#: src/views/Edit/Sources/AVFoundation.js:197 msgid "Capture clicks" msgstr "Captura de clics" -#: src/views/Edit/Sources/AVFoundation.js:185 +#: src/views/Edit/Sources/AVFoundation.js:194 msgid "Capture cursor" msgstr "Cursor de captura" -#: src/views/Edit/index.js:326 +#: src/views/Edit/index.js:327 msgid "Channel \"{0}\" saved" msgstr "Canal \"{0}\" guardado" -#: src/views/Edit/Sources/ALSA.js:124 +#: src/views/Edit/Sources/ALSA.js:129 msgid "Channels" msgstr "Canales" @@ -340,14 +348,14 @@ msgstr "Elija un flujo de vídeo" msgid "Choose an audio stream" msgstr "Elija un flujo de audio" -#: src/views/Edit/Sources/ALSA.js:90 +#: src/views/Edit/Sources/ALSA.js:96 #: src/views/Edit/Sources/Framebuffer.js:80 #: src/views/Edit/Sources/Raspicam.js:84 -#: src/views/Edit/Sources/V4L.js:84 +#: src/views/Edit/Sources/V4L.js:90 msgid "Choose an input device ..." msgstr "Elija un dispositivo de entrada ..." -#: src/misc/EncodingSelect.js:190 +#: src/misc/EncodingSelect.js:202 msgid "Choose codec ..." msgstr "Elija el códec ..." @@ -360,28 +368,28 @@ msgstr "Elija al inquilino ..." msgid "Chunk" msgstr "Chunk" -#: src/misc/ModalContent.js:87 -#: src/views/Playersite.js:769 +#: src/misc/ModalContent.js:77 +#: src/views/Playersite.js:782 #: src/views/Publication/Add.js:525 #: src/views/Publication/Edit.js:565 -#: src/views/Publication/Player.js:444 +#: src/views/Publication/Player.js:447 msgid "Close" msgstr "Cerrar" -#: src/views/Playersite.js:352 +#: src/views/Playersite.js:354 msgid "Code injection" msgstr "Inyección de código" -#: src/misc/EncodingSelect.js:188 +#: src/misc/EncodingSelect.js:200 msgid "Codec" msgstr "Códec" #: src/views/Edit/Sources/VirtualAudio.js:110 -#: src/views/Publication/Player.js:317 +#: src/views/Publication/Player.js:320 msgid "Color" msgstr "Color" -#: src/views/Settings.js:1277 +#: src/views/Settings.js:1282 msgid "Config" msgstr "Configurar" @@ -393,7 +401,7 @@ msgstr "Confirmar contraseña" msgid "Connect" msgstr "Conectar" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:134 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:157 msgid "Connected device" msgstr "Dispositivo conectado" @@ -402,7 +410,7 @@ msgid "Connected since <0/>" msgstr "Conectado desde <0/>" #: src/misc/ActionButton.js:12 -#: src/views/Main/index.js:308 +#: src/views/Main/index.js:305 #: src/views/Publication/Process.js:40 msgid "Connecting ..." msgstr "Conectando ..." @@ -415,12 +423,16 @@ msgstr "Conexión al núcleo de Restreamer ..." msgid "Connecting to Restreamer Core failed probably because of mixed content." msgstr "La conexión con Restreamer Core ha fallado probablemente debido a la mezcla de contenidos." -#: src/misc/controls/Metadata.js:73 -#: src/views/Playersite.js:646 -#: src/views/Playersite.js:663 +#: src/misc/controls/Metadata.js:70 +#: src/views/Playersite.js:659 +#: src/views/Playersite.js:676 msgid "Content" msgstr "Contenido" +#: src/views/Main/index.js:365 +msgid "Content URL" +msgstr "" + #: src/Footer.js:193 msgid "Cores" msgstr "Núcleos" @@ -442,22 +454,22 @@ msgstr "Creative Commons" #: src/misc/coders/settings/Video.js:115 #: src/misc/coders/settings/Video.js:181 #: src/misc/coders/settings/Video.js:220 -#: src/views/Edit/Sources/ALSA.js:95 -#: src/views/Edit/Sources/AVFoundation.js:114 -#: src/views/Edit/Sources/AVFoundation.js:147 -#: src/views/Edit/Sources/V4L.js:90 +#: src/views/Edit/Sources/ALSA.js:101 +#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/V4L.js:96 msgid "Custom ..." msgstr "A medida ..." -#: src/views/Settings.js:1283 +#: src/views/Settings.js:1288 msgid "Custom JSON config for datarhei Core." msgstr "Configuración JSON personalizada para datarhei Core." -#: src/views/Edit/Sources/ALSA.js:102 +#: src/views/Edit/Sources/ALSA.js:115 msgid "Custom audio device" msgstr "Dispositivo de audio personalizado" -#: src/views/Edit/Sources/AVFoundation.js:154 +#: src/views/Edit/Sources/AVFoundation.js:160 msgid "Custom audio index" msgstr "Índice de audio personalizado" @@ -466,7 +478,7 @@ msgstr "Índice de audio personalizado" msgid "Custom bitrate (kbit/s)" msgstr "Tasa de bits personalizada (kbit/s)" -#: src/views/Playersite.js:674 +#: src/views/Playersite.js:687 msgid "Custom code injection" msgstr "Inyección de código personalizado" @@ -506,35 +518,36 @@ msgstr "Escala personalizada" msgid "Custom size" msgstr "Tamaño personalizado" -#: src/views/Edit/Sources/V4L.js:97 +#: src/views/Edit/Sources/V4L.js:110 msgid "Custom video device" msgstr "Dispositivo de vídeo personalizado" -#: src/views/Edit/Sources/AVFoundation.js:121 +#: src/views/Edit/Sources/AVFoundation.js:127 msgid "Custom video index" msgstr "Índice de vídeo personalizado" -#: src/misc/TextFieldCopy.js:44 +#: src/misc/CopyButton.js:20 +#: src/misc/TextFieldCopy.js:33 #: src/misc/Textarea.js:46 msgid "Data copied to clipboard" msgstr "Datos copiados en el portapapeles" -#: src/views/Edit/Sources/VirtualVideo.js:164 +#: src/views/Edit/Sources/VirtualVideo.js:167 msgid "Death color" msgstr "Color de la muerte" -#: src/misc/EncodingSelect.js:198 -#: src/views/Edit/Wizard/index.js:611 +#: src/misc/EncodingSelect.js:210 +#: src/views/Edit/Wizard/index.js:628 msgid "Decoder" msgstr "Decodificador" -#: src/views/Edit/Sources/AVFoundation.js:109 -#: src/views/Edit/Sources/AVFoundation.js:143 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:61 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:87 -#: src/views/Playersite.js:440 -#: src/views/Playersite.js:513 -#: src/views/Playersite.js:557 +#: src/views/Edit/Sources/AVFoundation.js:115 +#: src/views/Edit/Sources/AVFoundation.js:149 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:76 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:105 +#: src/views/Playersite.js:451 +#: src/views/Playersite.js:526 +#: src/views/Playersite.js:570 msgid "Default" msgstr "Por defecto" @@ -542,13 +555,13 @@ msgstr "Por defecto" msgid "Delay" msgstr "Retraso" -#: src/views/Edit/Sources/ALSA.js:127 +#: src/views/Edit/Sources/ALSA.js:132 msgid "Delay (ms)" msgstr "Retraso (ms)" -#: src/views/Edit/index.js:561 -#: src/views/Edit/index.js:597 -#: src/views/Playersite.js:461 +#: src/views/Edit/index.js:563 +#: src/views/Edit/index.js:599 +#: src/views/Playersite.js:474 #: src/views/Publication/Edit.js:574 #: src/views/Publication/Edit.js:606 msgid "Delete" @@ -563,18 +576,18 @@ msgstr "La eliminación de un servicio de publicación no se puede revertir. La msgid "Delivering mode" msgstr "Modo de entrega" -#: src/misc/controls/Metadata.js:88 -#: src/misc/controls/Metadata.js:113 +#: src/misc/controls/Metadata.js:85 +#: src/misc/controls/Metadata.js:110 msgid "Description" msgstr "Descripción" -#: src/views/Playersite.js:350 -#: src/views/Playersite.js:496 +#: src/views/Playersite.js:352 +#: src/views/Playersite.js:509 msgid "Design" msgstr "Diseño" #: src/views/Edit/Sources/Framebuffer.js:87 -#: src/views/Edit/Wizard/index.js:873 +#: src/views/Edit/Wizard/index.js:890 #: src/views/Publication/Services/Framebuffer.js:93 msgid "Device" msgstr "Dispositivo" @@ -585,7 +598,7 @@ msgstr "Dispositivo" msgid "Disconnect" msgstr "Desconectar" -#: src/views/Edit/index.js:578 +#: src/views/Edit/index.js:580 msgid "Disconnect & Continue" msgstr "Desconectar y continuar" @@ -594,12 +607,12 @@ msgstr "Desconectar y continuar" msgid "Disconnecting ..." msgstr "Desconectando..." -#: src/views/Settings.js:1645 +#: src/views/Settings.js:1650 msgid "Disk" msgstr "Disco" -#: src/views/Settings.js:1679 -#: src/views/Settings.js:1687 +#: src/views/Settings.js:1684 +#: src/views/Settings.js:1692 msgid "Disk cache" msgstr "Caché de disco" @@ -608,11 +621,11 @@ msgstr "Caché de disco" msgid "Disk storage" msgstr "Almacenamiento en disco" -#: src/views/Settings.js:2058 +#: src/views/Settings.js:2063 msgid "Do you really want to restart the application now?" msgstr "¿Realmente quiere reiniciar la aplicación ahora?" -#: src/views/Edit/index.js:589 +#: src/views/Edit/index.js:591 msgid "Do you want to delete \"{0}\"?" msgstr "¿Quiere borrar \"{0}\"?" @@ -620,12 +633,12 @@ msgstr "¿Quiere borrar \"{0}\"?" msgid "Do you want to delete {title}?" msgstr "¿Desea eliminar {título}?" -#: src/views/Edit/index.js:570 +#: src/views/Edit/index.js:572 msgid "Do you want to disconnect \"{0}\"?" msgstr "¿Quiere desconectar \"{0}\"?" -#: src/Header.js:292 -#: src/Header.js:333 +#: src/Header.js:289 +#: src/Header.js:330 msgid "Docs" msgstr "Docs" @@ -645,19 +658,19 @@ msgstr "Documentación" msgid "Dup. frames" msgstr "Marcos Dup." -#: src/views/Publication/Player.js:282 +#: src/views/Publication/Player.js:285 msgid "EDIT: Player" msgstr "EDIT: Jugador" -#: src/views/Playersite.js:344 +#: src/views/Playersite.js:346 msgid "EDIT: Publication Website" msgstr "EDIT: Página web de la publicación" -#: src/views/Edit/index.js:390 +#: src/views/Edit/index.js:391 msgid "Edit" msgstr "Editar" -#: src/views/Edit/index.js:416 +#: src/views/Edit/index.js:417 msgid "Edit the audio and video sources for the live stream. Add a description, and set your desired content license." msgstr "Edite las fuentes de audio y vídeo para la transmisión en directo. Añada una descripción y establezca la licencia de contenido que desee." @@ -665,11 +678,11 @@ msgstr "Edite las fuentes de audio y vídeo para la transmisión en directo. Añ msgid "Edit: {title}" msgstr "Editar: {título}" -#: src/views/Publication/Player.js:316 +#: src/views/Publication/Player.js:319 msgid "Embed" msgstr "Incrustar" -#: src/views/Edit/Sources/Network.js:561 +#: src/views/Edit/Sources/Network.js:577 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:55 msgid "Enable RTMP server ..." msgstr "Habilitar el servidor RTMP ..." @@ -679,16 +692,16 @@ msgid "Enable a periodic beep every second with this value times the carrier fre msgstr "Habilitar un pitido periódico cada segundo con este valor multiplicado por la frecuencia portadora" #: src/views/Publication/Services/Dummy.js:278 -#: src/views/Publication/Services/Facebook.js:147 +#: src/views/Publication/Services/Facebook.js:139 msgid "Enable backup stream" msgstr "Habilitar el flujo de respaldo" -#: src/views/Publication/Player.js:424 +#: src/views/Publication/Player.js:427 msgid "Enable nerd statistics" msgstr "Habilitar las estadísticas de los nerds" #: src/views/Publication/Services/Dummy.js:277 -#: src/views/Publication/Services/Facebook.js:146 +#: src/views/Publication/Services/Facebook.js:138 msgid "Enable primary stream" msgstr "Habilitar el flujo primario" @@ -696,15 +709,15 @@ msgstr "Habilitar el flujo primario" msgid "Enable snapshots" msgstr "Habilitar las instantáneas" -#: src/views/Settings.js:1428 +#: src/views/Settings.js:1433 msgid "Enabling authorization is strongly advised. Otherwise, anybody can access this instance." msgstr "Se recomienda encarecidamente habilitar la autorización. De lo contrario, cualquiera puede acceder a esta instancia." -#: src/views/Settings.js:1588 +#: src/views/Settings.js:1593 msgid "Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs." msgstr "Se recomienda encarecidamente habilitar la autentificación básica. De lo contrario, cualquiera podría escribir datos en /memfs." -#: src/views/Edit/Wizard/index.js:617 +#: src/views/Edit/Wizard/index.js:634 msgid "Encoder" msgstr "Codificador" @@ -730,7 +743,7 @@ msgstr "Introduzca un nombre para el nuevo canal." msgid "Enter password" msgstr "Introduzca la contraseña" -#: src/views/Edit/Sources/Network.js:332 +#: src/views/Edit/Sources/Network.js:348 #: src/views/Edit/Wizard/Sources/Network.js:59 msgid "Enter the address of your network source:" msgstr "Introduzca la dirección de su fuente de red:" @@ -743,7 +756,7 @@ msgstr "Introduzca el nombre de usuario" msgid "Entropy coder" msgstr "Codificador de entropía" -#: src/views/Edit/Wizard/index.js:1101 +#: src/views/Edit/Wizard/index.js:1118 #: src/views/Incompatible.js:30 #: src/views/Invalid.js:29 #: src/views/Publication/Process.js:63 @@ -751,45 +764,46 @@ msgstr "Codificador de entropía" msgid "Error" msgstr "Error" -#: src/misc/TextFieldCopy.js:46 +#: src/misc/CopyButton.js:22 +#: src/misc/TextFieldCopy.js:35 #: src/misc/Textarea.js:48 msgid "Error while copying data to clipboard" msgstr "Error al copiar datos en el portapapeles" -#: src/views/Main/index.js:327 +#: src/views/Main/index.js:324 #: src/views/Publication/Process.js:64 msgid "Error: {0}" msgstr "Error: {0}" -#: src/views/Playersite.js:719 +#: src/views/Playersite.js:732 msgid "Expands the area above the channel list (live chat)." msgstr "Amplía el área sobre la lista de canales (chat en vivo)." -#: src/views/Playersite.js:739 +#: src/views/Playersite.js:752 msgid "Expands the area under the channel description (comment boxes)." msgstr "Amplía el área bajo la descripción del canal (cuadros de comentarios)." -#: src/views/Settings.js:1194 +#: src/views/Settings.js:1199 msgid "Expert mode" msgstr "Modo experto" -#: src/views/Playersite.js:704 +#: src/views/Playersite.js:717 msgid "Extend channel list" msgstr "Ampliar la lista de canales" -#: src/views/Playersite.js:724 +#: src/views/Playersite.js:737 msgid "Extend content" msgstr "Ampliar el contenido" -#: src/views/Playersite.js:744 +#: src/views/Playersite.js:757 msgid "Extend footer" msgstr "Ampliar el pie de página" -#: src/views/Playersite.js:684 +#: src/views/Playersite.js:697 msgid "Extend header" msgstr "Ampliar la cabecera" -#: src/views/Settings.js:1931 +#: src/views/Settings.js:1936 msgid "FFmpeg" msgstr "FFmpeg" @@ -798,20 +812,16 @@ msgstr "FFmpeg" msgid "FPS" msgstr "FPS" -#: src/views/Edit/index.js:290 -msgid "Failed to correctly cleanup previous process data" -msgstr "No se han limpiado correctamente los datos del proceso anterior" - #: src/views/Publication/Add.js:180 msgid "Failed to create publication service ({0})" msgstr "Fallo en la creación del servicio de publicación ({0})" -#: src/views/Playersite.js:308 +#: src/views/Playersite.js:310 msgid "Failed to create publication website files." msgstr "Fallo en la creación de los archivos del sitio web de la publicación." -#: src/views/Edit/Profile.js:333 -#: src/views/Edit/Profile.js:462 +#: src/views/Edit/Profile.js:341 +#: src/views/Edit/Profile.js:471 msgid "Failed to probe the source. Please check the <0>probe details." msgstr "No se ha podido sondear la fuente. Por favor, compruebe los <0>detalles de la sonda." @@ -819,7 +829,7 @@ msgstr "No se ha podido sondear la fuente. Por favor, compruebe los <0>detalles msgid "Failed to refresh token: {0}" msgstr "Fallo en la actualización de la ficha: {0}" -#: src/views/Edit/index.js:303 +#: src/views/Edit/index.js:304 msgid "Failed to save ingest metadata" msgstr "Fallo al guardar los metadatos de ingesta" @@ -827,7 +837,7 @@ msgstr "Fallo al guardar los metadatos de ingesta" msgid "Failed to stop process" msgstr "Fallo en la detención del proceso" -#: src/views/Playersite.js:301 +#: src/views/Playersite.js:303 msgid "Failed to store player size setting." msgstr "Fallo al almacenar el ajuste del tamaño del reproductor." @@ -835,36 +845,36 @@ msgstr "Fallo al almacenar el ajuste del tamaño del reproductor." msgid "Failed to store publication service ({0})" msgstr "Fallo en el almacenamiento del servicio de publicación ({0})" -#: src/views/Edit/index.js:296 +#: src/views/Edit/index.js:297 msgid "Failed to update ingest process ({0})" msgstr "Fallo en la actualización del proceso de ingesta ({0})" -#: src/views/Edit/index.js:309 +#: src/views/Edit/index.js:310 msgid "Failed to update the player" msgstr "Fallo en la actualización del reproductor" -#: src/views/Edit/Wizard/index.js:361 -#: src/views/Edit/Wizard/index.js:821 +#: src/views/Edit/Wizard/index.js:375 +#: src/views/Edit/Wizard/index.js:838 msgid "Failed to verify the source. Please check the address." msgstr "No se ha podido verificar la fuente. Por favor, compruebe la dirección." -#: src/views/Edit/Profile.js:540 +#: src/views/Edit/Profile.js:549 msgid "Finish" msgstr "Acabado" -#: src/views/Edit/Sources/VirtualVideo.js:170 +#: src/views/Edit/Sources/VirtualVideo.js:182 msgid "Flags" msgstr "Banderas" -#: src/views/Playersite.js:759 +#: src/views/Playersite.js:772 msgid "For Javascripts." msgstr "Para Javascripts." -#: src/views/Playersite.js:699 +#: src/views/Playersite.js:712 msgid "For Stylesheets." msgstr "Para las hojas de estilo." -#: src/views/Edit/Sources/Network.js:423 +#: src/views/Edit/Sources/Network.js:439 msgid "Force input framerate" msgstr "Forzar la velocidad de entrada de fotogramas" @@ -881,7 +891,7 @@ msgid "Framebuffer" msgstr "Buffer de imágenes" #: src/misc/coders/settings/Video.js:135 -#: src/views/Edit/Sources/Network.js:436 +#: src/views/Edit/Sources/Network.js:452 msgid "Framerate" msgstr "Framerate" @@ -889,21 +899,22 @@ msgstr "Framerate" msgid "Frequency (Hz)" msgstr "Frecuencia (Hz)" -#: src/views/Publication/Services/Facebook.js:119 -#: src/views/Publication/Services/Facebook.js:141 +#: src/views/Publication/Services/Core.js:129 +#: src/views/Publication/Services/Facebook.js:115 +#: src/views/Publication/Services/Facebook.js:133 #: src/views/Publication/Services/Instagram.js:88 -#: src/views/Publication/Services/Restream.js:124 -#: src/views/Publication/Services/Twitch.js:137 +#: src/views/Publication/Services/Restream.js:120 +#: src/views/Publication/Services/Twitch.js:133 #: src/views/Publication/Services/Twitter.js:179 #: src/views/Publication/Services/Youtube.js:177 msgid "GET" msgstr "GET" -#: src/views/Edit/Sources/Network.js:455 -#: src/views/Edit/index.js:399 -#: src/views/Edit/index.js:411 -#: src/views/Playersite.js:348 -#: src/views/Playersite.js:361 +#: src/views/Edit/Sources/Network.js:471 +#: src/views/Edit/index.js:400 +#: src/views/Edit/index.js:412 +#: src/views/Playersite.js:350 +#: src/views/Playersite.js:363 #: src/views/Publication/Add.js:372 #: src/views/Publication/Edit.js:386 #: src/views/Publication/Services/DASH.js:211 @@ -918,52 +929,49 @@ msgstr "GET" msgid "General" msgstr "General" -#: src/views/Publication/Player.js:407 +#: src/views/Publication/Player.js:410 msgid "Google Analytics ID" msgstr "ID de Google Analytics" -#: src/views/Publication/Player.js:417 +#: src/views/Publication/Player.js:420 msgid "Google Analytics Tracker Name" msgstr "Nombre del rastreador de Google Analytics" -#: src/views/Edit/index.js:469 +#: src/views/Edit/index.js:471 +#: src/views/Main/index.js:369 msgid "HLS" msgstr "HLS" -#: src/views/Main/index.js:367 -msgid "HLS URL" -msgstr "URL HLS" - -#: src/views/Settings.js:1505 +#: src/views/Settings.js:1510 msgid "HLS statistic for the In-memory storage" msgstr "Estadística HLS para el almacenamiento en memoria" -#: src/views/Edit/Sources/Network.js:413 +#: src/views/Edit/Sources/Network.js:429 msgid "HTTP and HTTPS" msgstr "HTTP y HTTPS" -#: src/views/Settings.js:1318 +#: src/views/Settings.js:1323 msgid "HTTP port" msgstr "Puerto HTTP" -#: src/views/Settings.js:1347 +#: src/views/Settings.js:1352 msgid "HTTPS (SSL/TLS)" msgstr "HTTPS (SSL/TLS)" -#: src/views/Settings.js:1331 +#: src/views/Settings.js:1336 msgid "HTTPS port" msgstr "Puerto HTTPS" -#: src/views/Edit/Sources/V4L.js:145 -#: src/views/Edit/Wizard/Sources/V4L.js:120 +#: src/views/Edit/Sources/V4L.js:151 +#: src/views/Edit/Wizard/Sources/V4L.js:140 msgid "Hardware device" msgstr "Dispositivo de hardware" -#: src/views/Playersite.js:566 +#: src/views/Playersite.js:579 msgid "Header" msgstr "Cabecera" -#: src/views/Playersite.js:522 +#: src/views/Playersite.js:535 msgid "Headline" msgstr "Titular" @@ -971,7 +979,7 @@ msgstr "Titular" msgid "Hosted Restreamer interface" msgstr "Interfaz de Restreamer alojado" -#: src/views/Settings.js:1253 +#: src/views/Settings.js:1258 msgid "Human readable name on the service." msgstr "Nombre legible para el ser humano en el servicio." @@ -979,32 +987,32 @@ msgstr "Nombre legible para el ser humano en el servicio." msgid "IP address" msgstr "Dirección IP" -#: src/views/Settings.js:2003 +#: src/views/Settings.js:2008 msgid "If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port." msgstr "Si ha cambiado los puertos, puede ser que Restreamer Core ya se haya reiniciado, pero ahora está disponible en un puerto diferente." -#: src/views/Settings.js:1997 +#: src/views/Settings.js:2002 msgid "If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core." msgstr "Si ha habilitado Let's Encrypt TLS, puede tardar un poco en adquirir los certificados. Asegúrese de que Restreamer Core es accesible a través del puerto 80 desde Internet. Compruebe el registro de la consola de Restreamer Core." -#: src/views/Settings.js:1520 +#: src/views/Settings.js:1525 msgid "Ignore IP ranges" msgstr "Ignorar los rangos de IP" -#: src/views/Playersite.js:611 -#: src/views/Publication/Player.js:363 +#: src/views/Playersite.js:624 +#: src/views/Publication/Player.js:366 msgid "Image URL" msgstr "URL de la imagen" -#: src/views/Playersite.js:636 +#: src/views/Playersite.js:649 msgid "Imprint" msgstr "Impresión" -#: src/views/Playersite.js:366 +#: src/views/Playersite.js:368 msgid "In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly." msgstr "Además del reproductor, el Restreamer ofrece una completa página de aterrizaje, con la que podrá presentar su transmisión en directo de forma fácil y rápida." -#: src/views/Settings.js:1572 +#: src/views/Settings.js:1577 msgid "In-memory" msgstr "En memoria" @@ -1022,19 +1030,19 @@ msgstr "Incompatible" msgid "Inherit" msgstr "Heredar" -#: src/views/Playersite.js:694 +#: src/views/Playersite.js:707 msgid "Inject 1" msgstr "Inyectar 1" -#: src/views/Playersite.js:714 +#: src/views/Playersite.js:727 msgid "Inject 2" msgstr "Inyectar 2" -#: src/views/Playersite.js:734 +#: src/views/Playersite.js:747 msgid "Inject 3" msgstr "Inyectar 3" -#: src/views/Playersite.js:754 +#: src/views/Playersite.js:767 msgid "Inject 4" msgstr "Inyectar 4" @@ -1050,8 +1058,8 @@ msgstr "Servidor RTMP interno" msgid "Interval (seconds)" msgstr "Intervalo (segundos)" -#: src/Header.js:298 -#: src/Header.js:339 +#: src/Header.js:295 +#: src/Header.js:336 msgid "Issue alert" msgstr "Alerta de emisión" @@ -1063,11 +1071,11 @@ msgstr "Intervalo de fotogramas clave (segundos)" msgid "Layout" msgstr "Disposición" -#: src/views/Settings.js:1352 +#: src/views/Settings.js:1357 msgid "Let's Encrypt certification" msgstr "Certificación Let's Encrypt" -#: src/views/Settings.js:1360 +#: src/views/Settings.js:1365 msgid "Let's Encrypt requires one or more public domain names and an accessible port 80/TCP." msgstr "Let's Encrypt requiere uno o más nombres de dominio público y un puerto 80/TCP accesible." @@ -1075,42 +1083,42 @@ msgstr "Let's Encrypt requiere uno o más nombres de dominio público y un puert msgid "Level" msgstr "Nivel" -#: src/views/Settings.js:1913 +#: src/views/Settings.js:1918 msgid "Level of system protocol." msgstr "Nivel de protocolo del sistema." -#: src/views/Edit/Wizard/index.js:1044 -#: src/views/Edit/index.js:402 -#: src/views/Edit/index.js:523 +#: src/views/Edit/Wizard/index.js:1061 +#: src/views/Edit/index.js:403 +#: src/views/Edit/index.js:525 msgid "License" msgstr "Licencia" -#: src/views/Edit/Sources/VirtualVideo.js:167 +#: src/views/Edit/Sources/VirtualVideo.js:176 msgid "Life color" msgstr "El color de la vida" -#: src/views/Playersite.js:593 +#: src/views/Playersite.js:606 msgid "Linecolor" msgstr "Linecolor" -#: src/views/Playersite.js:531 -#: src/views/Publication/Player.js:393 +#: src/views/Playersite.js:544 +#: src/views/Publication/Player.js:396 msgid "Link" msgstr "Enlace" -#: src/views/Playersite.js:540 +#: src/views/Playersite.js:553 msgid "Link, mouseover" msgstr "Enlace, ratón" -#: src/views/Settings.js:1528 +#: src/views/Settings.js:1533 msgid "List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions." msgstr "Lista de rangos de IP en notación CIDR, por ejemplo, 127.0.0.1/32, que las estadísticas no registrarán -un rango de IP por línea. Déjelo vacío para registrar todas las sesiones." -#: src/views/Settings.js:1746 +#: src/views/Settings.js:1751 msgid "List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types." msgstr "Lista de extensiones de archivos a almacenar en caché (por ejemplo, \".html\"), una por línea. Déjela vacía para almacenar en caché todos los tipos de archivos." -#: src/misc/controls/HLS.js:71 +#: src/misc/controls/HLS.js:74 msgid "List size (segments)" msgstr "Tamaño de la lista (segmentos)" @@ -1127,27 +1135,27 @@ msgid "Live-Streaming to Twitch Live RTMP Service." msgstr "Transmisión en directo al servicio RTMP de Twitch Live." #: src/views/Publication/Services/Vimeo.js:12 -msgid "Live-Streaming to Vimeos Live RTMP Service" -msgstr "Transmisión en directo al servicio Vimeos Live RTMP" +msgid "Live-Streaming to Vimeo Live RTMP Service" +msgstr "Transmisión en directo al servicio Vimeo Live RTMP" #: src/views/Publication/Services/Livespotting.js:94 msgid "Livesource ID" msgstr "Identificación de la fuente de vida" -#: src/views/Settings.js:1865 +#: src/views/Settings.js:1870 msgid "Log level" msgstr "Nivel de registro" #: src/misc/modals/Process.js:90 #: src/views/Settings.js:1147 -#: src/views/Settings.js:1841 +#: src/views/Settings.js:1846 msgid "Logging" msgstr "Registro" #: src/views/Login.js:297 #: src/views/Login.js:391 #: src/views/Login.js:406 -#: src/views/Publication/Services/Akamai.js:123 +#: src/views/Publication/Services/Akamai.js:124 msgid "Login" msgstr "Acceda a" @@ -1163,15 +1171,15 @@ msgstr "El inicio de sesión ha fallado: No se han podido cargar los detalles de msgid "Login failed: {0}" msgstr "El inicio de sesión ha fallado: {0}" -#: src/views/Settings.js:1420 +#: src/views/Settings.js:1425 msgid "Login/JWT authorization" msgstr "Autorización de inicio de sesión/JWT" -#: src/views/Publication/Player.js:318 +#: src/views/Publication/Player.js:321 msgid "Logo" msgstr "Logotipo" -#: src/Header.js:310 +#: src/Header.js:307 msgid "Logout" msgstr "Cierre de sesión" @@ -1179,12 +1187,12 @@ msgstr "Cierre de sesión" msgid "MB" msgstr "MB" -#: src/views/Edit/index.js:379 +#: src/views/Edit/index.js:380 msgid "Main Source" msgstr "Fuente principal" -#: src/views/Main/index.js:263 -#: src/views/Playersite.js:386 +#: src/views/Main/index.js:260 +#: src/views/Playersite.js:389 msgid "Main channel" msgstr "Canal principal" @@ -1192,11 +1200,11 @@ msgstr "Canal principal" msgid "Main channel not found" msgstr "Canal principal no encontrado" -#: src/views/Edit/Wizard/index.js:181 +#: src/views/Edit/Wizard/index.js:188 msgid "Main channel saved" msgstr "Canal principal guardado" -#: src/views/Playersite.js:409 +#: src/views/Playersite.js:412 msgid "Main page channel (index.html)." msgstr "Canal de la página principal (index.html)." @@ -1209,19 +1217,19 @@ msgstr "Canal de la página principal (index.html)." msgid "Maintainer:" msgstr "Mantenedor:" -#: src/views/Settings.js:1705 +#: src/views/Settings.js:1710 msgid "Maximum allowed cache size, 0 for unlimited." msgstr "Tamaño máximo de caché permitido, 0 para ilimitado." -#: src/views/Settings.js:1627 +#: src/views/Settings.js:1632 msgid "Maximum allowed megabytes of RAM for /memfs, 0 for unlimited." msgstr "Máximo de megabytes de RAM permitidos para /memfs, 0 para ilimitado." -#: src/views/Settings.js:1671 +#: src/views/Settings.js:1676 msgid "Maximum allowed megabytes to consume from hard disk. 0 for unlimited." msgstr "Máximo de megabytes permitidos a consumir del disco duro. 0 para ilimitado." -#: src/views/Settings.js:1389 +#: src/views/Settings.js:1394 msgid "Maximum bandwidth Mbit/s" msgstr "Ancho de banda máximo Mbit/s" @@ -1229,34 +1237,34 @@ msgstr "Ancho de banda máximo Mbit/s" msgid "Maximum delay in milliseconds." msgstr "Retraso máximo en milisegundos." -#: src/views/Settings.js:1723 +#: src/views/Settings.js:1728 msgid "Maximum file size (Megabytes)" msgstr "Tamaño máximo del archivo (Megabytes)" -#: src/views/Settings.js:1731 +#: src/views/Settings.js:1736 msgid "Maximum file size to put in cache." msgstr "Tamaño máximo del archivo a poner en la caché." -#: src/views/Settings.js:1949 +#: src/views/Settings.js:1954 msgid "Maximum log histroy" msgstr "Máxima historia de registro" -#: src/views/Settings.js:1918 -#: src/views/Settings.js:1936 +#: src/views/Settings.js:1923 +#: src/views/Settings.js:1941 msgid "Maximum log lines" msgstr "Líneas de registro máximas" -#: src/views/Settings.js:1619 -#: src/views/Settings.js:1663 -#: src/views/Settings.js:1697 +#: src/views/Settings.js:1624 +#: src/views/Settings.js:1668 +#: src/views/Settings.js:1702 msgid "Maximum size (Megabytes)" msgstr "Tamaño máximo (Megabytes)" -#: src/views/Settings.js:1537 +#: src/views/Settings.js:1542 msgid "Maximum viewer idle time (Seconds)" msgstr "Tiempo máximo de inactividad del espectador (segundos)" -#: src/views/Settings.js:1373 +#: src/views/Settings.js:1378 msgid "Maximum viewers" msgstr "Máximos espectadores" @@ -1264,12 +1272,12 @@ msgstr "Máximos espectadores" msgid "Memory" msgstr "Memoria" -#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:402 msgid "Meta information" msgstr "Meta información" -#: src/views/Edit/Wizard/index.js:989 -#: src/views/Edit/index.js:503 +#: src/views/Edit/Wizard/index.js:1006 +#: src/views/Edit/index.js:505 msgid "Metadata" msgstr "Metadatos" @@ -1291,44 +1299,44 @@ msgstr "Más información sobre los derechos de autor de YouTube <0>aquí." msgid "More about licenses here" msgstr "Más información sobre las licencias aquí" -#: src/views/Settings.js:1222 +#: src/views/Settings.js:1227 msgid "More about the service" msgstr "Más información sobre el servicio" -#: src/views/Publication/Player.js:435 +#: src/views/Publication/Player.js:438 msgid "Mute" msgstr "Silencio" #: src/misc/ChannelList.js:380 -#: src/misc/controls/Metadata.js:79 -#: src/misc/controls/Metadata.js:101 -#: src/views/Playersite.js:476 -#: src/views/Settings.js:1245 +#: src/misc/controls/Metadata.js:76 +#: src/misc/controls/Metadata.js:98 +#: src/views/Playersite.js:489 +#: src/views/Settings.js:1250 msgid "Name" msgstr "Nombre" -#: src/views/Playersite.js:481 +#: src/views/Playersite.js:494 msgid "Name for the template. If the name already exists, it will be overwritten." msgstr "Nombre para la plantilla. Si el nombre ya existe, se sobrescribirá." #: src/views/Settings.js:1142 -#: src/views/Settings.js:1292 +#: src/views/Settings.js:1297 msgid "Network" msgstr "Red" -#: src/views/Edit/Sources/Network.js:668 +#: src/views/Edit/Sources/Network.js:684 #: src/views/Edit/Wizard/Sources/Network.js:110 msgid "Network source" msgstr "Fuente de la red" -#: src/views/Edit/Wizard/index.js:399 -#: src/views/Edit/Wizard/index.js:635 -#: src/views/Edit/Wizard/index.js:900 -#: src/views/Edit/Wizard/index.js:1012 +#: src/views/Edit/Wizard/index.js:413 +#: src/views/Edit/Wizard/index.js:652 +#: src/views/Edit/Wizard/index.js:917 +#: src/views/Edit/Wizard/index.js:1029 msgid "Next" msgstr "Siguiente" -#: src/views/Edit/Profile.js:405 +#: src/views/Edit/Profile.js:413 msgid "Next: Audio" msgstr "Siguiente: Audio" @@ -1336,12 +1344,12 @@ msgstr "Siguiente: Audio" msgid "Next: Video setup" msgstr "Siguiente: Configuración del vídeo" -#: src/views/Edit/Wizard/index.js:1165 +#: src/views/Edit/Wizard/index.js:1182 msgid "No" msgstr "No" #: src/views/Edit/Sources/NoAudio.js:45 -#: src/views/Edit/Wizard/index.js:884 +#: src/views/Edit/Wizard/index.js:901 msgid "No audio" msgstr "Sin audio" @@ -1349,7 +1357,12 @@ msgstr "Sin audio" msgid "No audio stream available" msgstr "No hay flujo de audio disponible" -#: src/views/Edit/Wizard/index.js:359 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:70 +#: src/views/Edit/Wizard/Sources/V4L.js:99 +msgid "No input device available" +msgstr "No hay dispositivo de entrada disponible" + +#: src/views/Edit/Wizard/index.js:373 msgid "No live stream was detected. Please check the software that sends the stream." msgstr "No se ha detectado ninguna transmisión en directo. Por favor, compruebe el software que envía el flujo." @@ -1357,12 +1370,16 @@ msgstr "No se ha detectado ninguna transmisión en directo. Por favor, compruebe msgid "No source selected" msgstr "No se ha seleccionado ninguna fuente" -#: src/misc/EncodingSelect.js:152 +#: src/views/Edit/SourceSelect.js:174 +msgid "No sources available" +msgstr "No hay fuentes disponibles" + +#: src/misc/EncodingSelect.js:164 msgid "No suitable encoder found." msgstr "No se ha encontrado un codificador adecuado." -#: src/views/Main/index.js:289 -#: src/views/Publication/Player.js:291 +#: src/views/Main/index.js:286 +#: src/views/Publication/Player.js:294 msgid "No video" msgstr "No hay vídeo" @@ -1370,7 +1387,7 @@ msgstr "No hay vídeo" msgid "No video stream available" msgstr "No hay flujo de vídeo disponible" -#: src/views/Settings.js:1238 +#: src/views/Settings.js:1243 msgid "Node ID" msgstr "ID de nodo" @@ -1378,36 +1395,36 @@ msgstr "ID de nodo" msgid "Noise" msgstr "Ruido" -#: src/views/Edit/Sources/AVFoundation.js:139 +#: src/views/Edit/Sources/AVFoundation.js:145 #: src/views/Edit/Summary.js:30 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:98 msgid "None" msgstr "Ninguno" -#: src/views/Playersite.js:351 -#: src/views/Playersite.js:631 +#: src/views/Playersite.js:353 +#: src/views/Playersite.js:644 msgid "Notes" msgstr "Notas" -#: src/views/Settings.js:1926 -#: src/views/Settings.js:1944 +#: src/views/Settings.js:1931 +#: src/views/Settings.js:1949 msgid "Number of log lines to keep." msgstr "Número de líneas de registro a conservar." -#: src/views/Settings.js:1957 +#: src/views/Settings.js:1962 msgid "Number of logs to keep for each process." msgstr "Número de registros a mantener para cada proceso." -#: src/views/Playersite.js:800 -#: src/views/Publication/Player.js:463 +#: src/views/Playersite.js:813 +#: src/views/Publication/Player.js:466 msgid "OK" msgstr "OK" -#: src/views/Settings.js:1492 +#: src/views/Settings.js:1497 msgid "One referrer per line, e.g. http://www.example.com" msgstr "Un referente por línea, por ejemplo: http://www.example.com" -#: src/views/Playersite.js:785 +#: src/views/Playersite.js:798 msgid "Open" msgstr "Abrir" @@ -1415,32 +1432,32 @@ msgstr "Abrir" msgid "Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources." msgstr "El passthrough (copia) sólo debe desactivarse si es necesario. Cada codificación requiere recursos adicionales de la CPU/GPU." -#: src/views/Edit/Sources/Network.js:366 +#: src/views/Edit/Sources/Network.js:382 #: src/views/Edit/Wizard/Sources/Network.js:88 #: src/views/Login.js:282 -#: src/views/Publication/Services/Akamai.js:133 +#: src/views/Publication/Services/Akamai.js:134 #: src/views/Publication/Services/DASH.js:198 #: src/views/Publication/Services/DaCast.js:142 #: src/views/Publication/Services/HLS.js:187 #: src/views/Publication/Services/RTSP.js:156 #: src/views/Publication/Services/Red5.js:157 #: src/views/Publication/Services/WOWZA.js:178 -#: src/views/Settings.js:1448 -#: src/views/Settings.js:1606 +#: src/views/Settings.js:1453 +#: src/views/Settings.js:1611 msgid "Password" msgstr "Contraseña" -#: src/views/Settings.js:1454 -#: src/views/Settings.js:1614 +#: src/views/Settings.js:1459 +#: src/views/Settings.js:1619 msgid "Password for authorization." msgstr "Contraseña para la autorización." -#: src/views/Edit/Sources/Network.js:371 +#: src/views/Edit/Sources/Network.js:387 #: src/views/Edit/Wizard/Sources/Network.js:90 msgid "Password for the device." msgstr "Contraseña para el dispositivo." -#: src/views/Settings.js:1550 +#: src/views/Settings.js:1555 msgid "Persist viewer statistics" msgstr "Persistir las estadísticas de los espectadores" @@ -1456,9 +1473,9 @@ msgstr "Plan: <0>Inicio" msgid "Platforms" msgstr "Plataformas" -#: src/views/Publication/Player.js:320 +#: src/views/Publication/Player.js:323 #: src/views/Settings.js:1144 -#: src/views/Settings.js:1463 +#: src/views/Settings.js:1468 msgid "Playback" msgstr "Reproducción" @@ -1466,16 +1483,16 @@ msgstr "Reproducción" msgid "Player" msgstr "Jugador" -#: src/views/Publication/Player.js:325 +#: src/views/Publication/Player.js:328 msgid "Player URL" msgstr "URL del jugador" -#: src/views/Publication/Player.js:254 +#: src/views/Publication/Player.js:257 msgid "Player settings saved" msgstr "Ajustes del jugador guardados" -#: src/Header.js:270 -#: src/views/Playersite.js:372 +#: src/Header.js:267 +#: src/views/Playersite.js:375 msgid "Playersite" msgstr "Playersite" @@ -1484,15 +1501,15 @@ msgstr "Playersite" msgid "Playlist" msgstr "Lista de reproducción" -#: src/views/Main/index.js:332 +#: src/views/Main/index.js:329 msgid "Please check the <0>process log" msgstr "Por favor, compruebe el <0>registro del proceso" -#: src/views/Publication/Services/Akamai.js:28 +#: src/views/Publication/Services/Akamai.js:29 #: src/views/Publication/Services/Bitmovin.js:23 #: src/views/Publication/Services/Brightcove.js:23 -#: src/views/Publication/Services/CDN77.js:24 -#: src/views/Publication/Services/Core.js:25 +#: src/views/Publication/Services/CDN77.js:23 +#: src/views/Publication/Services/Core.js:26 #: src/views/Publication/Services/DASH.js:35 #: src/views/Publication/Services/DaCast.js:26 #: src/views/Publication/Services/HLS.js:37 @@ -1511,8 +1528,8 @@ msgid "Please contact the operator of the service and check what happens." msgstr "Póngase en contacto con el operador del servicio y compruebe lo que ocurre." #: src/views/Playersite.js:122 -#: src/views/Playersite.js:196 -#: src/views/Publication/Player.js:157 +#: src/views/Playersite.js:197 +#: src/views/Publication/Player.js:159 msgid "Please select a file to upload." msgstr "Por favor, seleccione un archivo para cargar." @@ -1520,21 +1537,21 @@ msgstr "Por favor, seleccione un archivo para cargar." msgid "Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources." msgstr "Por favor, utilice \"Passthrough (copia)\" si es posible. La codificación requiere recursos adicionales de la CPU/GPU." -#: src/views/Edit/Wizard/index.js:418 -#: src/views/Edit/Wizard/index.js:916 +#: src/views/Edit/Wizard/index.js:435 +#: src/views/Edit/Wizard/index.js:933 msgid "Please wait. Probe stream data ..." msgstr "Por favor, espere. Datos del flujo de la sonda ..." -#: src/views/Edit/Wizard/index.js:1086 +#: src/views/Edit/Wizard/index.js:1103 msgid "Please wait. Setting up the stream ..." msgstr "Por favor, espere. Configurando el flujo ..." #: src/views/Publication/Services/Bitmovin.js:92 -#: src/views/Settings.js:1798 +#: src/views/Settings.js:1803 msgid "Port" msgstr "Puerto" -#: src/views/Publication/Player.js:378 +#: src/views/Publication/Player.js:381 msgid "Position" msgstr "Posición" @@ -1552,20 +1569,20 @@ msgstr "Corriente primaria" msgid "Primary stream key" msgstr "Clave de flujo primaria" -#: src/views/Edit/Sources/ALSA.js:131 -#: src/views/Edit/Sources/AVFoundation.js:192 +#: src/views/Edit/Sources/ALSA.js:136 +#: src/views/Edit/Sources/AVFoundation.js:201 #: src/views/Edit/Sources/Framebuffer.js:110 -#: src/views/Edit/Sources/Network.js:489 -#: src/views/Edit/Sources/Network.js:536 -#: src/views/Edit/Sources/Network.js:583 +#: src/views/Edit/Sources/Network.js:505 +#: src/views/Edit/Sources/Network.js:552 +#: src/views/Edit/Sources/Network.js:599 #: src/views/Edit/Sources/Raspicam.js:113 -#: src/views/Edit/Sources/V4L.js:126 +#: src/views/Edit/Sources/V4L.js:131 #: src/views/Edit/Sources/VirtualAudio.js:169 -#: src/views/Edit/Sources/VirtualVideo.js:176 +#: src/views/Edit/Sources/VirtualVideo.js:188 msgid "Probe" msgstr "Sonda" -#: src/views/Edit/index.js:491 +#: src/views/Edit/index.js:493 #: src/views/Publication/Add.js:433 #: src/views/Publication/Edit.js:441 msgid "Process" @@ -1580,40 +1597,41 @@ msgstr "Control de procesos" msgid "Process debug" msgstr "Depuración del proceso" -#: src/views/Main/index.js:407 +#: src/views/Main/index.js:413 #: src/views/Publication/Edit.js:591 msgid "Process debug report" msgstr "Informe de depuración del proceso" -#: src/views/Main/index.js:383 -#: src/views/Main/index.js:399 +#: src/views/Main/index.js:389 +#: src/views/Main/index.js:405 #: src/views/Publication/Edit.js:468 #: src/views/Publication/Edit.js:583 msgid "Process details" msgstr "Detalles del proceso" -#: src/views/Main/index.js:386 +#: src/views/Main/index.js:392 msgid "Process report" msgstr "Informe del proceso" -#: src/views/Edit/index.js:400 -#: src/views/Edit/index.js:461 +#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:463 msgid "Processing & Control" msgstr "Procesamiento y control" #: src/misc/coders/Encoders/video/H264NVENC.js:92 +#: src/misc/coders/Encoders/video/H264VAAPI.js:82 #: src/misc/coders/settings/Video.js:142 -#: src/views/Edit/Wizard/index.js:590 +#: src/views/Edit/Wizard/index.js:607 msgid "Profile" msgstr "Perfil" -#: src/views/Edit/Sources/Network.js:504 -#: src/views/Publication/Services/Akamai.js:143 -#: src/views/Publication/Services/Akamai.js:181 +#: src/views/Edit/Sources/Network.js:520 +#: src/views/Publication/Services/Akamai.js:144 +#: src/views/Publication/Services/Akamai.js:182 #: src/views/Publication/Services/Bitmovin.js:86 #: src/views/Publication/Services/Brightcove.js:87 -#: src/views/Publication/Services/CDN77.js:91 -#: src/views/Publication/Services/Core.js:90 +#: src/views/Publication/Services/CDN77.js:90 +#: src/views/Publication/Services/Core.js:91 #: src/views/Publication/Services/DASH.js:186 #: src/views/Publication/Services/DaCast.js:110 #: src/views/Publication/Services/DaCast.js:168 @@ -1634,7 +1652,7 @@ msgstr "Protocolo" msgid "Protocols" msgstr "Protocolos" -#: src/views/Settings.js:1302 +#: src/views/Settings.js:1307 msgid "Public domain/s" msgstr "Dominio público" @@ -1643,7 +1661,7 @@ msgstr "Dominio público" msgid "Publication service not found" msgstr "Servicio de publicación no encontrado" -#: src/views/Playersite.js:317 +#: src/views/Playersite.js:319 msgid "Publication website settings saved" msgstr "Se guarda la configuración del sitio web de la publicación" @@ -1651,15 +1669,16 @@ msgstr "Se guarda la configuración del sitio web de la publicación" msgid "Publications" msgstr "Publicaciones" -#: src/views/Edit/Sources/Network.js:641 +#: src/views/Edit/Sources/Network.js:657 msgid "Pull Mode" msgstr "Modo de tirar" -#: src/views/Edit/Sources/Network.js:640 +#: src/views/Edit/Sources/Network.js:656 msgid "Pull or recieve the data:" msgstr "Tire o reciba los datos:" #: src/misc/Progress.js:90 +#: src/misc/coders/Encoders/video/H264VAAPI.js:137 msgid "Quality" msgstr "Calidad" @@ -1667,37 +1686,37 @@ msgstr "Calidad" msgid "RGB test pattern" msgstr "Patrón de prueba RGB" -#: src/views/Settings.js:1819 +#: src/views/Settings.js:1824 msgid "RTMP app for publishing." msgstr "Aplicación RTMP para la publicación." -#: src/views/Settings.js:1760 +#: src/views/Settings.js:1765 msgid "RTMP server" msgstr "Servidor RTMP" -#: src/views/Edit/Sources/Network.js:556 +#: src/views/Edit/Sources/Network.js:572 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:50 msgid "RTMP server is not enabled" msgstr "El servidor RTMP no está habilitado" -#: src/views/Settings.js:1806 +#: src/views/Settings.js:1811 msgid "RTMP server listen address." msgstr "Dirección de escucha del servidor RTMP." -#: src/views/Settings.js:1832 +#: src/views/Settings.js:1837 msgid "RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'" msgstr "Token RTMP para publicar y reproducir. El token es el valor del parámetro de consulta URL 'token'." #: src/views/Settings.js:1146 -#: src/views/Settings.js:1755 +#: src/views/Settings.js:1760 msgid "RTMP/S" msgstr "RTMP/S" -#: src/views/Settings.js:1767 +#: src/views/Settings.js:1772 msgid "RTMPS server" msgstr "Servidor RTMPS" -#: src/views/Edit/Sources/Network.js:389 +#: src/views/Edit/Sources/Network.js:405 msgid "RTSP" msgstr "RTSP" @@ -1707,6 +1726,7 @@ msgid "Raspberry Pi camera" msgstr "Cámara Raspberry Pi" #: src/misc/coders/Encoders/video/H264NVENC.js:144 +#: src/misc/coders/Encoders/video/H264VAAPI.js:63 msgid "Rate control" msgstr "Control de la tasa" @@ -1714,11 +1734,11 @@ msgstr "Control de la tasa" msgid "Ratio" msgstr "Ratio" -#: src/views/Edit/Sources/Network.js:418 +#: src/views/Edit/Sources/Network.js:434 msgid "Read input at native speed" msgstr "Leer la entrada a velocidad nativa" -#: src/views/Edit/Sources/Network.js:642 +#: src/views/Edit/Sources/Network.js:658 msgid "Receive Mode" msgstr "Modo de recepción" @@ -1732,13 +1752,13 @@ msgstr "Conecte de nuevo" msgid "Reconnect delay (seconds)" msgstr "Retraso de reconexión (segundos)" -#: src/views/Main/index.js:343 +#: src/views/Main/index.js:340 #: src/views/Publication/Process.js:68 #: src/views/Publication/Process.js:81 msgid "Reconnecting in {0}s" msgstr "Reconexión en {0}s" -#: src/views/Settings.js:1994 +#: src/views/Settings.js:1999 msgid "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." msgstr "La reconexión con Restreamer Core ha fallado durante los últimos {RETRIES} segundos." @@ -1746,6 +1766,14 @@ msgstr "La reconexión con Restreamer Core ha fallado durante los últimos {RETR msgid "Reconnecting to Restreamer Core failed." msgstr "Ha fallado la reconexión con Restreamer Core." +#: src/views/Edit/Sources/ALSA.js:122 +#: src/views/Edit/Sources/AVFoundation.js:181 +#: src/views/Edit/Sources/V4L.js:117 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:135 +#: src/views/Edit/Wizard/Sources/V4L.js:120 +msgid "Refresh" +msgstr "Actualización" + #: src/views/Publication/Services/Restream.js:86 #: src/views/Publication/Services/Twitch.js:78 #: src/views/Publication/Services/Twitter.js:150 @@ -1754,36 +1782,36 @@ msgid "Region" msgstr "Región" #: src/views/Password.js:159 -#: src/views/Settings.js:2014 +#: src/views/Settings.js:2019 msgid "Reload" msgstr "Recargar" -#: src/views/Settings.js:1632 +#: src/views/Settings.js:1637 msgid "Remove the oldest entries if the /memfs is full" msgstr "Eliminar las entradas más antiguas si el /memfs está lleno" -#: src/views/Settings.js:1779 +#: src/views/Settings.js:1784 msgid "Requires activation" msgstr "Requiere activación" -#: src/views/Settings.js:1201 -#: src/views/Settings.js:2031 -#: src/views/Settings.js:2044 -#: src/views/Settings.js:2053 +#: src/views/Settings.js:1206 +#: src/views/Settings.js:2036 +#: src/views/Settings.js:2049 +#: src/views/Settings.js:2058 msgid "Restart" msgstr "Reinicie" -#: src/views/Settings.js:2022 +#: src/views/Settings.js:2027 msgid "Restart required" msgstr "Es necesario reiniciar" #: src/views/Password.js:136 -#: src/views/Settings.js:1982 +#: src/views/Settings.js:1987 msgid "Restarting" msgstr "Reiniciando" #: src/views/Password.js:141 -#: src/views/Settings.js:1987 +#: src/views/Settings.js:1992 msgid "Restarting Restreamer Core ..." msgstr "Reiniciando el núcleo de Restreamer ..." @@ -1791,15 +1819,15 @@ msgstr "Reiniciando el núcleo de Restreamer ..." msgid "Restarting the application failed." msgstr "El reinicio de la aplicación ha fallado." -#: src/views/Settings.js:1229 +#: src/views/Settings.js:1234 msgid "Restreamer Service" msgstr "Servicio de resemantización" -#: src/views/Main/index.js:242 +#: src/views/Main/index.js:239 msgid "Retrieving stream data ..." msgstr "Recuperación de los datos del flujo ..." -#: src/views/Edit/Wizard/index.js:1111 +#: src/views/Edit/Wizard/index.js:1128 #: src/views/Invalid.js:43 #: src/views/Settings.js:1116 msgid "Retry" @@ -1813,13 +1841,13 @@ msgstr "Regla" msgid "Sampling" msgstr "Muestreo" -#: src/views/Edit/Wizard/index.js:1070 -#: src/views/Edit/index.js:558 -#: src/views/Playersite.js:775 +#: src/views/Edit/Wizard/index.js:1087 +#: src/views/Edit/index.js:560 +#: src/views/Playersite.js:788 #: src/views/Publication/Add.js:534 #: src/views/Publication/Edit.js:571 -#: src/views/Publication/Player.js:449 -#: src/views/Settings.js:1972 +#: src/views/Publication/Player.js:452 +#: src/views/Settings.js:1977 msgid "Save" msgstr "Guarde" @@ -1827,7 +1855,7 @@ msgstr "Guarde" msgid "Scale" msgstr "Escala" -#: src/views/Settings.js:1718 +#: src/views/Settings.js:1723 msgid "Seconds to keep files in cache." msgstr "Segundos para mantener los archivos en la caché." @@ -1843,24 +1871,24 @@ msgstr "Segundos hasta que se termina un proceso estancado." msgid "Seconds until the snapshot/thumbnail of the video source is updated." msgstr "Segundos hasta que se actualiza la instantánea/imagen de la fuente de vídeo." -#: src/views/Settings.js:1468 +#: src/views/Settings.js:1473 msgid "Security" msgstr "Seguridad" -#: src/views/Publication/Services/Core.js:127 +#: src/views/Publication/Services/Core.js:122 #: src/views/Publication/Services/Livespotting.js:103 msgid "Security token" msgstr "Ficha de seguridad" -#: src/views/Publication/Player.js:339 +#: src/views/Publication/Player.js:342 msgid "Seekbar color" msgstr "Color de la barra de herramientas" -#: src/misc/controls/HLS.js:59 +#: src/misc/controls/HLS.js:62 msgid "Segment length (seconds)" msgstr "Duración del segmento (segundos)" -#: src/misc/controls/HLS.js:64 +#: src/misc/controls/HLS.js:67 msgid "Segment will be cut on the following keyframe after this time has passed. 2 is recommended." msgstr "El segmento se cortará en el siguiente fotograma clave una vez transcurrido este tiempo. Se recomienda 2." @@ -1869,19 +1897,19 @@ msgstr "El segmento se cortará en el siguiente fotograma clave una vez transcur msgid "Segmentation" msgstr "Segmentación" -#: src/views/Edit/Sources/ALSA.js:114 -#: src/views/Edit/Sources/AVFoundation.js:166 +#: src/views/Edit/Sources/ALSA.js:108 +#: src/views/Edit/Sources/AVFoundation.js:172 #: src/views/Edit/Sources/Framebuffer.js:99 #: src/views/Edit/Sources/Raspicam.js:96 -#: src/views/Edit/Sources/V4L.js:109 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:101 +#: src/views/Edit/Sources/V4L.js:103 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:120 #: src/views/Edit/Wizard/Sources/Raspicam.js:95 -#: src/views/Edit/Wizard/Sources/V4L.js:98 +#: src/views/Edit/Wizard/Sources/V4L.js:114 msgid "Select a device:" msgstr "Seleccione un dispositivo:" #: src/views/Edit/Sources/VirtualAudio.js:84 -msgid "Select audio Source:" +msgid "Select audio source:" msgstr "Seleccione la fuente de audio:" #: src/views/Edit/Sources/VirtualVideo.js:114 @@ -1892,32 +1920,32 @@ msgstr "Seleccione la fuente ..." msgid "Select video source:" msgstr "Seleccione la fuente de vídeo:" -#: src/views/Edit/Wizard/index.js:261 +#: src/views/Edit/Wizard/index.js:268 msgid "Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer)." msgstr "Seleccione si extrae el flujo de una <0>fuente de red (como una cámara de red) o del <1>servidor RTMP interno (por ejemplo, los flujos OBS al Restreamer)." -#: src/misc/EncodingSelect.js:184 +#: src/misc/EncodingSelect.js:196 msgid "Select your encoding setting:" msgstr "Seleccione su configuración de codificación:" -#: src/views/Playersite.js:575 +#: src/views/Playersite.js:588 msgid "Selected" msgstr "Seleccionado" -#: src/views/Playersite.js:392 +#: src/views/Playersite.js:395 msgid "Selected channel" msgstr "Canal seleccionado" -#: src/views/Playersite.js:438 +#: src/views/Playersite.js:449 msgid "Selection" msgstr "Selección" -#: src/views/Settings.js:1185 +#: src/views/Settings.js:1190 msgid "Send anonymous metrics (helps us for future development)" msgstr "Enviar métricas anónimas (nos ayuda para el desarrollo futuro)" -#: src/views/Edit/Sources/Network.js:526 -#: src/views/Edit/Sources/Network.js:573 +#: src/views/Edit/Sources/Network.js:542 +#: src/views/Edit/Sources/Network.js:589 #: src/views/Edit/Wizard/Sources/InternalHLS.js:48 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:68 msgid "Send stream to this address:" @@ -1931,10 +1959,10 @@ msgstr "Enviar vídeo a Framebuffer" msgid "Server" msgstr "Servidor" -#: src/Header.js:260 +#: src/Header.js:257 #: src/views/Login.js:246 #: src/views/Settings.js:1140 -#: src/views/Settings.js:1215 +#: src/views/Settings.js:1220 msgid "Service" msgstr "Servicio" @@ -1943,7 +1971,7 @@ msgstr "Servicio" msgid "Service name" msgstr "Nombre del servicio" -#: src/views/Settings.js:1266 +#: src/views/Settings.js:1271 msgid "Service token for monitoring." msgstr "Ficha de servicio para la supervisión." @@ -1951,15 +1979,15 @@ msgstr "Ficha de servicio para la supervisión." msgid "Sessions" msgstr "Sesiones" -#: src/views/Settings.js:1397 +#: src/views/Settings.js:1402 msgid "Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Establece un límite de ancho de banda en Mbit por segundo para la transferencia de datos HLS salientes. Todos los servicios, como el RTMP y los procesos salientes, se incluyen en el cálculo. Si se supera el ancho de banda, los espectadores HLS reciben el código de estado HTTP 509 (Límite de ancho de banda superado). 0 es ilimitado." -#: src/views/Settings.js:1381 +#: src/views/Settings.js:1386 msgid "Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Establece un límite de espectadores para las sesiones HLS. Si se supera el límite, los espectadores HLS reciben el código de estado HTTP 509 (Límite de ancho de banda superado). 0 es ilimitado." -#: src/views/Settings.js:1220 +#: src/views/Settings.js:1225 msgid "Setting for connection to the service." msgstr "Ajuste para la conexión al servicio." @@ -1971,11 +1999,11 @@ msgstr "Ajustes" msgid "Settings (expert mode)" msgstr "Ajustes (modo experto)" -#: src/views/Settings.js:1648 +#: src/views/Settings.js:1653 msgid "Settings for /data path. The access is protected by" msgstr "Configuración de la ruta /data. El acceso está protegido por" -#: src/views/Settings.js:1575 +#: src/views/Settings.js:1580 msgid "Settings for /memfs path." msgstr "Configuración de la ruta /memfs." @@ -1983,7 +2011,11 @@ msgstr "Configuración de la ruta /memfs." msgid "Settings saved. All changes will be applied after restarting the application." msgstr "Ajustes guardados. Todos los cambios se aplicarán después de reiniciar la aplicación." -#: src/views/Playersite.js:420 +#: src/views/Playersite.js:417 +msgid "Share button" +msgstr "Botón de compartir" + +#: src/views/Playersite.js:431 msgid "Shows a reference to the project." msgstr "Muestra una referencia al proyecto." @@ -1995,7 +2027,7 @@ msgstr "Inscríbase (gratis)" msgid "Silence" msgstr "Silencio" -#: src/views/Edit/Wizard/index.js:881 +#: src/views/Edit/Wizard/index.js:898 msgid "Silence Audio" msgstr "Silencio Audio" @@ -2003,7 +2035,7 @@ msgstr "Silencio Audio" msgid "Sine" msgstr "Sine" -#: src/views/Playersite.js:378 +#: src/views/Playersite.js:381 msgid "Sitename" msgstr "Nombre del sitio" @@ -2011,7 +2043,8 @@ msgstr "Nombre del sitio" msgid "Size" msgstr "Tamaño" -#: src/views/Edit/index.js:480 +#: src/views/Edit/index.js:482 +#: src/views/Main/index.js:372 msgid "Snapshot" msgstr "Instantánea" @@ -2019,7 +2052,7 @@ msgstr "Instantánea" msgid "Social-login (OAuth2, 2FA)" msgstr "Social-login (OAuth2, 2FA)" -#: src/views/Edit/Sources/Network.js:402 +#: src/views/Edit/Sources/Network.js:418 msgid "Socket timeout (microseconds)" msgstr "Tiempo de espera del zócalo (microsegundos)" @@ -2040,33 +2073,33 @@ msgstr "Velocidad" msgid "Stale timeout (seconds)" msgstr "Tiempo de espera (segundos)" -#: src/views/Publication/Player.js:319 -#: src/views/Settings.js:1500 +#: src/views/Publication/Player.js:322 +#: src/views/Settings.js:1505 msgid "Statistics" msgstr "Estadísticas" #: src/views/Settings.js:1145 -#: src/views/Settings.js:1567 +#: src/views/Settings.js:1572 msgid "Storage" msgstr "Almacenamiento" -#: src/views/Settings.js:1558 +#: src/views/Settings.js:1563 msgid "Stores the viewer statistics to the disk." msgstr "Almacena las estadísticas del visor en el disco." #: src/views/Edit/StreamSelect.js:30 #: src/views/Edit/StreamSelect.js:36 #: src/views/Edit/StreamSelect.js:81 -#: src/views/Edit/Wizard/index.js:861 +#: src/views/Edit/Wizard/index.js:878 msgid "Stream" msgstr "Corriente" -#: src/views/Publication/Services/Akamai.js:155 -#: src/views/Publication/Services/CDN77.js:103 +#: src/views/Publication/Services/Akamai.js:156 +#: src/views/Publication/Services/CDN77.js:102 msgid "Stream URL" msgstr "URL de la corriente" -#: src/views/Publication/Services/CDN77.js:114 +#: src/views/Publication/Services/CDN77.js:113 #: src/views/Publication/Services/DaCast.js:153 #: src/views/Publication/Services/Dummy.js:274 #: src/views/Publication/Services/Instagram.js:84 @@ -2079,41 +2112,41 @@ msgid "Stream key" msgstr "Clave de flujo" #: src/views/Publication/Services/Brightcove.js:101 -#: src/views/Publication/Services/Core.js:118 +#: src/views/Publication/Services/Core.js:113 #: src/views/Publication/Services/Red5.js:136 #: src/views/Publication/Services/WOWZA.js:158 msgid "Stream name" msgstr "Nombre de la corriente" -#: src/views/Publication/Services/Akamai.js:166 +#: src/views/Publication/Services/Akamai.js:167 msgid "Stream names" msgstr "Nombres de los arroyos" -#: src/views/Playersite.js:414 +#: src/views/Playersite.js:425 msgid "Support datarhei Restreamer" msgstr "Apoyo a datarhei Restreamer" -#: src/views/Edit/Sources/Network.js:345 +#: src/views/Edit/Sources/Network.js:361 #: src/views/Edit/Wizard/Sources/Network.js:72 msgid "Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more." msgstr "Soporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT y más." #: src/Footer.js:184 -#: src/Header.js:278 -#: src/views/Settings.js:1846 +#: src/Header.js:275 +#: src/views/Settings.js:1851 msgid "System" msgstr "Sistema" -#: src/views/Playersite.js:349 -#: src/views/Playersite.js:429 +#: src/views/Playersite.js:351 +#: src/views/Playersite.js:440 msgid "Template" msgstr "Plantilla" -#: src/views/Playersite.js:451 +#: src/views/Playersite.js:462 msgid "Template to be used for creating the publication website. The delete button removes the selection from the system." msgstr "Plantilla que se utilizará para crear la página web de la publicación. El botón de borrar elimina la selección del sistema." -#: src/views/Playersite.js:653 +#: src/views/Playersite.js:666 msgid "Terms" msgstr "Términos" @@ -2125,7 +2158,7 @@ msgstr "Patrón de prueba" msgid "Test pattern (extended)" msgstr "Patrón de prueba (ampliado)" -#: src/views/Playersite.js:506 +#: src/views/Playersite.js:519 msgid "Text colors" msgstr "Colores del texto" @@ -2133,7 +2166,7 @@ msgstr "Colores del texto" msgid "The amplitude (0.0 - 1.0) of the generated audio stream" msgstr "La amplitud (0,0 - 1,0) del flujo de audio generado" -#: src/views/Settings.js:1205 +#: src/views/Settings.js:1210 msgid "The application is using an older version of the settings." msgstr "La aplicación está utilizando una versión antigua de la configuración." @@ -2145,20 +2178,20 @@ msgstr "La tasa de bits del flujo de audio." msgid "The carrier frequency" msgstr "La frecuencia de la portadora" -#: src/views/Edit/index.js:351 +#: src/views/Edit/index.js:352 msgid "The channel \"{0}\" could not be deleted" msgstr "El canal \"{0}\" no pudo ser borrado" -#: src/views/Edit/index.js:360 +#: src/views/Edit/index.js:361 msgid "The channel \"{0}\" has been deleted" msgstr "El canal \"{0}\" ha sido borrado" -#: src/views/Edit/index.js:602 +#: src/views/Edit/index.js:604 msgid "The deletion of this channel can not be recovered. All publications of this channel will be removed." msgstr "La eliminación de este canal no se puede recuperar. Todas las publicaciones de este canal serán eliminadas." -#: src/views/Edit/Wizard/index.js:161 -#: src/views/Edit/index.js:283 +#: src/views/Edit/Wizard/index.js:170 +#: src/views/Edit/index.js:290 msgid "The input profile is not complete. Please define a video and audio source." msgstr "El perfil de entrada no está completo. Por favor, defina una fuente de vídeo y audio." @@ -2166,7 +2199,7 @@ msgstr "El perfil de entrada no está completo. Por favor, defina una fuente de msgid "The layout of the audio stream." msgstr "La disposición del flujo de audio." -#: src/misc/controls/HLS.js:76 +#: src/misc/controls/HLS.js:79 msgid "The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended." msgstr "El número máximo de segmentos de la lista de reproducción. El 0 contendrá todos los segmentos. Se recomienda 6." @@ -2178,7 +2211,7 @@ msgstr "El color del ruido" msgid "The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission." msgstr "La persona que asoció una obra con esta escritura ha dedicado la obra al dominio público renunciando a todos sus derechos sobre la obra en todo el mundo bajo la ley de derechos de autor, incluyendo todos los derechos conexos y vecinos, en la medida permitida por la ley. Puede copiar, modificar, distribuir y representar la obra, incluso con fines comerciales, todo ello sin pedir permiso." -#: src/views/Settings.js:1310 +#: src/views/Settings.js:1315 msgid "The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma." msgstr "El nombre de dominio público alcanzable del host en el que se ejecuta este Restreamer. Separe los nombres de dominio múltiples con una coma." @@ -2202,68 +2235,58 @@ msgstr "Se ha creado el servicio de publicación" msgid "The sample rate of the audio stream." msgstr "La frecuencia de muestreo del flujo de audio." -#: src/views/Playersite.js:151 -#: src/views/Playersite.js:225 -#: src/views/Publication/Player.js:186 +#: src/views/Playersite.js:152 +#: src/views/Playersite.js:227 +#: src/views/Publication/Player.js:189 msgid "The selected file is too big ({0} bytes). Only {1} bytes are allowed." msgstr "El archivo seleccionado es demasiado grande ({0} bytes). Sólo se permiten {1} bytes." -#: src/views/Playersite.js:140 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}" -msgstr "El tipo de archivo seleccionado ({0}) está ahora permitido. Los tipos de archivo permitidos son {imageAcceptString}" - -#: src/views/Publication/Player.js:175 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}" -msgstr "El tipo de archivo seleccionado ({0}) está ahora permitido. Los tipos de archivo permitidos son {logoAcceptString}" - -#: src/views/Playersite.js:214 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}" -msgstr "El tipo de archivo seleccionado ({0}) está ahora permitido. Los tipos de archivo permitidos son {templateAcceptString}" +#: src/views/Playersite.js:141 +#: src/views/Playersite.js:216 +#: src/views/Publication/Player.js:178 +msgid "The selected file type ({0}) is not allowed. Allowed file types are {types}" +msgstr "El tipo de archivo seleccionado ({0}) no está permitido. Los tipos de archivo permitidos son {types}" #: src/views/Publication/Edit.js:230 msgid "The settings for \"{0}\" have been saved" msgstr "Los ajustes de \"{0}\" se han guardado" -#: src/views/Edit/Wizard/index.js:829 +#: src/views/Edit/Wizard/index.js:846 msgid "The source doesn't provide any audio streams." msgstr "La fuente no proporciona ningún flujo de audio." -#: src/views/Edit/Profile.js:478 +#: src/views/Edit/Profile.js:487 msgid "The source doesn't provide any audio streams. Please check the <0>probe details." msgstr "La fuente no proporciona ningún flujo de audio. Por favor, compruebe los <0>detalles de la sonda." -#: src/views/Edit/Wizard/index.js:837 +#: src/views/Edit/Wizard/index.js:854 msgid "The source doesn't provide any compatible audio streams." msgstr "La fuente no proporciona ningún flujo de audio compatible." -#: src/views/Edit/Wizard/index.js:378 +#: src/views/Edit/Wizard/index.js:392 msgid "The source doesn't provide any compatible video streams. Please check the <0>requirements." msgstr "La fuente no proporciona ningún flujo de vídeo compatible. Por favor, compruebe los <0>requisitos." -#: src/views/Edit/Profile.js:349 +#: src/views/Edit/Profile.js:357 msgid "The source doesn't provide any video streams. Please check the <0>probe details." msgstr "La fuente no proporciona ningún flujo de vídeo. Por favor, compruebe los <0>detalles de la sonda." -#: src/views/Edit/Wizard/index.js:370 +#: src/views/Edit/Wizard/index.js:384 msgid "The source doesn't provide any video streams. Please check the device." msgstr "La fuente no proporciona ningún flujo de vídeo. Por favor, compruebe el dispositivo." -#: src/views/Edit/Wizard/index.js:848 +#: src/views/Edit/Wizard/index.js:865 msgid "The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel." msgstr "La fuente de vídeo no proporciona ningún flujo de audio compatible. Se recomienda <0>Audio silencioso. Los servicios, como YouTube, Facebook y otros, requieren un canal de audio." -#: src/views/Edit/Wizard/index.js:586 +#: src/views/Edit/Wizard/index.js:603 msgid "The video source is compatible. Select the desired resolution:" msgstr "La fuente de vídeo es compatible. Seleccione la resolución deseada:" -#: src/views/Settings.js:1177 +#: src/views/Settings.js:1182 msgid "There are updates available. Here you get more information." msgstr "Hay actualizaciones disponibles. Aquí tiene más información." -#: src/views/Playersite.js:238 -msgid "There war an error during upload: {0}" -msgstr "Se ha producido un error durante la carga: {0}" - #: src/views/Settings.js:911 msgid "There was a problem storing the settings. Settings not saved." msgstr "Hubo un problema al guardar los ajustes. Los ajustes no se han guardado." @@ -2272,12 +2295,13 @@ msgstr "Hubo un problema al guardar los ajustes. Los ajustes no se han guardado. msgid "There was an error connecting to Restreamer Core at {0}." msgstr "Se ha producido un error de conexión con Restreamer Core en {0}." -#: src/views/Playersite.js:164 -#: src/views/Publication/Player.js:199 +#: src/views/Playersite.js:165 +#: src/views/Playersite.js:240 +#: src/views/Publication/Player.js:202 msgid "There was an error during upload: {0}" msgstr "Ha habido un error durante la carga: {0}" -#: src/views/Edit/Wizard/index.js:1106 +#: src/views/Edit/Wizard/index.js:1123 msgid "There was an error setting up the stream." msgstr "Hubo un error al configurar el flujo." @@ -2325,7 +2349,7 @@ msgstr "Esta licencia permite a los reutilizadores distribuir, remezclar, adapta msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." msgstr "Esta licencia permite a los reutilizadores distribuir, remezclar, adaptar y construir sobre el material en cualquier medio o formato, siempre y cuando se dé la atribución al creador. La licencia permite el uso comercial. Si usted remezcla, adapta o construye sobre el material, debe licenciar el material modificado bajo idénticos términos." -#: src/views/Edit/index.js:583 +#: src/views/Edit/index.js:585 msgid "This source cannot be edited while it is in use. To continue, you have to disconnect the source." msgstr "Esta fuente no puede ser editada mientras esté en uso. Para continuar, tiene que desconectar la fuente." @@ -2341,12 +2365,12 @@ msgstr "Esta versión de la interfaz de usuario no es compatible con el núcleo msgid "This version of the UI is compatible." msgstr "Esta versión de la interfaz de usuario es compatible." -#: src/views/Settings.js:1545 +#: src/views/Settings.js:1550 msgid "Time until an inactive viewer connection is treated as closed." msgstr "Tiempo que transcurre hasta que una conexión de visor inactiva es tratada como cerrada." -#: src/views/Settings.js:1258 -#: src/views/Settings.js:1824 +#: src/views/Settings.js:1263 +#: src/views/Settings.js:1829 msgid "Token" msgstr "Ficha" @@ -2391,7 +2415,7 @@ msgid "Transmit the main source to an RTSP Server. More details about the settin msgstr "Transmita la fuente principal a un servidor RTSP. Puede encontrar más detalles sobre los ajustes <0>aquí." #: src/views/Publication/Services/Red5.js:17 -msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." +msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." msgstr "Transmita la fuente principal a un servidor Red5/Pro. Puede encontrar más detalles sobre los ajustes <0>aquí." #: src/views/Publication/Services/SRT.js:25 @@ -2406,7 +2430,7 @@ msgstr "Transmita la fuente principal a un servidor UDP. Puede encontrar más de msgid "Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here." msgstr "Transmita la fuente principal a un servidor WOWZA. Puede encontrar más detalles sobre los ajustes <0>aquí." -#: src/views/Publication/Services/Core.js:17 +#: src/views/Publication/Services/Core.js:18 msgid "Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here." msgstr "Transmitir la fuente principal a un datarhei Core Ressource. Puede encontrar más detalles sobre los ajustes <0>aquí." @@ -2414,7 +2438,7 @@ msgstr "Transmitir la fuente principal a un datarhei Core Ressource. Puede encon msgid "Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here." msgstr "Transmita la fuente principal a una fuente de livespotting.com. Puede encontrar más detalles sobre los ajustes <0>aquí." -#: src/views/Publication/Services/Akamai.js:16 +#: src/views/Publication/Services/Akamai.js:17 msgid "Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here." msgstr "Transmita la fuente principal a los Servicios de Medios en Vivo de Akamai (MSL). Puede encontrar más detalles sobre la configuración del codificador MSL en <0>aquí." @@ -2439,7 +2463,7 @@ msgstr "Transmite su flujo de vídeo con la clave requerida, generada en Twitter msgid "Tune" msgstr "Sintonice" -#: src/views/Edit/Sources/Network.js:393 +#: src/views/Edit/Sources/Network.js:409 #: src/views/Edit/Wizard/Sources/Network.js:77 msgid "UDP transport" msgstr "Transporte UDP" @@ -2448,7 +2472,7 @@ msgstr "Transporte UDP" msgid "Unable to load the config." msgstr "No se puede cargar la configuración." -#: src/views/Settings.js:1240 +#: src/views/Settings.js:1245 msgid "Unique ident on the service." msgstr "Identificación única en el servicio." @@ -2456,22 +2480,22 @@ msgstr "Identificación única en el servicio." msgid "Unknown" msgstr "Desconocido" -#: src/views/Playersite.js:584 +#: src/views/Playersite.js:597 msgid "Unselected" msgstr "No seleccionado" -#: src/views/Playersite.js:469 -#: src/views/Playersite.js:486 -#: src/views/Playersite.js:621 -#: src/views/Publication/Player.js:370 +#: src/views/Playersite.js:482 +#: src/views/Playersite.js:499 +#: src/views/Playersite.js:634 +#: src/views/Publication/Player.js:373 msgid "Upload" msgstr "Subir a" -#: src/views/Playersite.js:279 +#: src/views/Playersite.js:281 msgid "Uploading the file failed" msgstr "La carga del archivo ha fallado" -#: src/views/Publication/Player.js:229 +#: src/views/Publication/Player.js:232 msgid "Uploading the logo failed" msgstr "Falló la carga del logotipo" @@ -2485,15 +2509,15 @@ msgstr "Tiempo de funcionamiento" msgid "Use Auth0 for your running Restreamer Core. More <0>details." msgstr "Utilice Auth0 para su núcleo Restreamer en funcionamiento. Más <0>detalles." -#: src/views/Edit/index.js:425 +#: src/views/Edit/index.js:426 msgid "Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode." msgstr "Utilice el asistente (<0/>) para una configuración rápida y sencilla, o edite (<1/>) las fuentes directamente en el modo personalizado." -#: src/views/Edit/Wizard/index.js:1051 +#: src/views/Edit/Wizard/index.js:1068 msgid "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Utilice los derechos de autor y elija la licencia de imagen correcta. Ya sea libre para todos o muy restringida. Comente brevemente lo que otros pueden hacer con su imagen." -#: src/views/Edit/index.js:528 +#: src/views/Edit/index.js:530 msgid "Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Utilice sus derechos de autor y elija la licencia de imagen adecuada. Ya sea libre para todos o muy restringida. Comente brevemente lo que otros pueden hacer con su imagen." @@ -2501,7 +2525,7 @@ msgstr "Utilice sus derechos de autor y elija la licencia de imagen adecuada. Ya msgid "User registration" msgstr "Registro de usuarios" -#: src/views/Edit/Sources/Network.js:354 +#: src/views/Edit/Sources/Network.js:370 #: src/views/Edit/Wizard/Sources/Network.js:81 #: src/views/Login.js:272 #: src/views/Publication/Services/DASH.js:195 @@ -2510,17 +2534,17 @@ msgstr "Registro de usuarios" #: src/views/Publication/Services/RTSP.js:153 #: src/views/Publication/Services/Red5.js:146 #: src/views/Publication/Services/WOWZA.js:168 -#: src/views/Settings.js:1435 -#: src/views/Settings.js:1593 +#: src/views/Settings.js:1440 +#: src/views/Settings.js:1598 msgid "Username" msgstr "Nombre de usuario" -#: src/views/Settings.js:1441 -#: src/views/Settings.js:1601 +#: src/views/Settings.js:1446 +#: src/views/Settings.js:1606 msgid "Username for authorization." msgstr "Nombre de usuario para la autorización." -#: src/views/Edit/Sources/Network.js:359 +#: src/views/Edit/Sources/Network.js:375 #: src/views/Edit/Wizard/Sources/Network.js:83 msgid "Username for the device." msgstr "Nombre de usuario del dispositivo." @@ -2533,24 +2557,24 @@ msgstr "ID DE LA VPU" msgid "Video" msgstr "Vídeo" -#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:126 #: src/views/Edit/Sources/Raspicam.js:89 -#: src/views/Edit/Sources/V4L.js:96 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:66 +#: src/views/Edit/Sources/V4L.js:109 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 #: src/views/Edit/Wizard/Sources/Raspicam.js:86 -#: src/views/Edit/Wizard/Sources/V4L.js:89 +#: src/views/Edit/Wizard/Sources/V4L.js:105 msgid "Video device" msgstr "Dispositivo de vídeo" -#: src/views/Edit/Profile.js:313 -#: src/views/Edit/ProfileSummary.js:65 +#: src/views/Edit/Profile.js:320 +#: src/views/Edit/ProfileSummary.js:66 #: src/views/Publication/Edit.js:517 msgid "Video settings" msgstr "Ajustes de vídeo" -#: src/views/Edit/Wizard/index.js:257 -#: src/views/Edit/Wizard/index.js:341 -#: src/views/Edit/Wizard/index.js:579 +#: src/views/Edit/Wizard/index.js:264 +#: src/views/Edit/Wizard/index.js:354 +#: src/views/Edit/Wizard/index.js:596 msgid "Video setup" msgstr "Configuración del vídeo" @@ -2566,7 +2590,7 @@ msgid "Viewer" msgstr "Visor" #: src/views/Edit/Sources/VirtualAudio.js:187 -#: src/views/Edit/Sources/VirtualVideo.js:194 +#: src/views/Edit/Sources/VirtualVideo.js:206 msgid "Virtual source" msgstr "Fuente virtual" @@ -2574,7 +2598,7 @@ msgstr "Fuente virtual" msgid "Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs." msgstr "Bienvenido a Restreamer v2, la solución para la publicación rápida y sencilla de vídeos. Gratis para uso privado y comercial. Más ayuda en los <0>docs." -#: src/views/Settings.js:1580 +#: src/views/Settings.js:1585 msgid "Write protection" msgstr "Protección de la escritura" @@ -2582,19 +2606,19 @@ msgstr "Protección de la escritura" msgid "YUV test pattern" msgstr "Patrón de prueba YUV" -#: src/views/Edit/Wizard/index.js:1160 +#: src/views/Edit/Wizard/index.js:1177 msgid "Yes" msgstr "Sí" -#: src/views/Edit/Wizard/index.js:1142 +#: src/views/Edit/Wizard/index.js:1159 msgid "You can't abort the wizard because at least one input must be defined." msgstr "No puede abortar el asistente porque al menos una entrada debe estar definida." -#: src/views/Settings.js:2036 +#: src/views/Settings.js:2041 msgid "You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?" msgstr "Ha cambiado la configuración. Para que los cambios surtan efecto, tiene que reiniciar la aplicación. ¿Quiere reiniciar ahora?" -#: src/views/Main/index.js:350 +#: src/views/Main/index.js:347 #: src/views/Publication/Process.js:73 msgid "You have to reconnect manually" msgstr "Tiene que volver a conectarse manualmente" @@ -2603,11 +2627,11 @@ msgstr "Tiene que volver a conectarse manualmente" msgid "You have unsaved changes. Please save them before you can control the service again." msgstr "Tiene cambios sin guardar. Por favor, guárdelos antes de poder controlar el servicio de nuevo." -#: src/views/Edit/Wizard/index.js:599 +#: src/views/Edit/Wizard/index.js:616 msgid "Your stream needs to be encoded, but there's no suitable encoder available." msgstr "Su flujo necesita ser codificado, pero no hay un codificador adecuado disponible." -#: src/views/Edit/Wizard/index.js:606 +#: src/views/Edit/Wizard/index.js:623 msgid "Your stream needs to be encoded. Choose the desired encoder:" msgstr "Su flujo debe ser codificado. Elija el codificador deseado:" @@ -2619,7 +2643,7 @@ msgstr "azul" msgid "brown" msgstr "marrón" -#: src/views/Publication/Player.js:328 +#: src/views/Publication/Player.js:331 msgid "iframe code" msgstr "código iframe" diff --git a/src/locales/fr/messages.js b/src/locales/fr/messages.js index aa073ff..c6673b1 100644 --- a/src/locales/fr/messages.js +++ b/src/locales/fr/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{"<0>Show probe details":"<0>Montrer les détails de la sonde.","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Le point de terminaison de l'API n'a pas été trouvé. Paramètres non sauvegardés.","AVFoundation":"AVFoundation","Abort":"Abandonner","About":"À propos de","Add":"Ajouter","Add Publication":"Ajouter une publication","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Ajoutez des widgets et des styles externes au site de publication. Vous pouvez trouver quelques exemples sur la page d'aide.","Add new channel":"Ajouter un nouveau canal","Add: {0}":["Ajouter : ",["0"]],"Address":"Adresse","Address for the background image.":"Adresse pour l'image de fond.","Address to listen on for HTTP requests.":"Adresse d'écoute pour les demandes HTTP.","Address to listen on for HTTPS requests.":"Adresse à écouter pour les demandes HTTPS.","Adjust publication site colors and background as you like.":"Ajustez les couleurs et le fond du site de publication comme vous le souhaitez.","Advanced monitoring":"Surveillance avancée","Advanced settings":"Paramètres avancés","Advanced setup":"Configuration avancée","Alerting by email":"Alerte par e-mail","All":"Tous","All important system settings.":"Tous les paramètres importants du système.","Allow all referrer":"Autoriser tous les référents","Allow counting how many viewers the stream has.":"Permet de compter le nombre de spectateurs du flux.","Amplitude":"Amplitude","An environment variable sets this value.":"Une variable d'environnement définit cette valeur.","App":"App","Application":"Application","Are you sure you want to abort the wizard?":"Êtes-vous sûr de vouloir interrompre l'assistant ?","Audio":"Audio","Audio Device":"Dispositif audio","Audio device":"Dispositif audio","Audio from device":"Audio de l'appareil","Audio settings":"Paramètres audio","Audio setup":"Configuration audio","Auth0":"Auth0","Auth0 Tenant":"Auth0 Locataire","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 n'est actuellement pas disponible car cette interface est chargée depuis une origine non sécurisée.","Author":"Auteur","Authorization":"Autorisation","Autoplay":"Jeu automatique","Available":"Disponible sur","Back":"Dos","Background colors":"Couleurs d'arrière-plan","Background image":"Image de fond","Backup URL":"URL de sauvegarde","Backup server":"Serveur de sauvegarde","Backup stream":"Flux de sauvegarde","Backup stream key":"Clé du flux de sauvegarde","Bandwidth":"Bande passante","Bandwidth control":"Contrôle de la bande passante","Banner":"Bannière","Basic":"Base","Beep factor":"Facteur Bip","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Décrivez brièvement ce que le public verra pendant le streaming en direct.","Button color":"Couleur du bouton","Cache for files on /data.":"Cache pour les fichiers sur /data.","Cache time (Seconds)":"Temps de cache (Secondes)","Cache types":"Types de caches","Capture clicks":"Capture des clics","Capture cursor":"Curseur de capture","Channel \"{0}\" saved":["Canal \"",["0"],"\" sauvegardé"],"Channels":"Chaînes","Check for updates":"Vérifier les mises à jour","Check the requirements":"Vérifiez les exigences","Choose a video stream":"Choisissez un flux vidéo","Choose an audio stream":"Choisissez un flux audio","Choose an input device ...":"Choisissez un périphérique d'entrée ...","Choose codec ...":"Choisissez le codec ...","Choose tenant ...":"Choisir le locataire ...","Chunk":"Chunk","Close":"Fermer","Code injection":"Injection de code","Codec":"Codec","Color":"Couleur","Config":"Config","Confirm password":"Conf confirmer le mot de passe","Connect":"Connectez-vous à","Connected device":"Appareil connecté","Connected since <0/>":"Connecté depuis <0/>","Connecting ...":"Connecter ...","Connecting to Restreamer Core ...":"Connexion à Restreamer Core ...","Connecting to Restreamer Core failed probably because of mixed content.":"La connexion à Restreamer Core a échoué, probablement en raison d'un contenu mixte.","Content":"Contenu","Cores":"Cœurs","Create user":"Créer un utilisateur","Creative Commons":"Creative Commons","Custom ...":"Personnalisé...","Custom JSON config for datarhei Core.":"Configuration JSON personnalisée pour le noyau datarhei.","Custom audio device":"Dispositif audio personnalisé","Custom audio index":"Index audio personnalisé","Custom bitrate (kbit/s)":"Débit binaire personnalisé (kbit/s)","Custom code injection":"Injection de code personnalisé","Custom delay":"Délai personnalisé","Custom device":"Dispositif personnalisé","Custom format":"Format personnalisé","Custom framerate":"Taux de rafraîchissement personnalisé","Custom keyframe interval":"Intervalle d'images clés personnalisé","Custom layout":"Mise en page personnalisée","Custom sampling (Hz)":"Échantillonnage personnalisé (Hz)","Custom scale":"Échelle personnalisée","Custom size":"Taille personnalisée","Custom video device":"Dispositif vidéo personnalisé","Custom video index":"Index vidéo personnalisé","Data copied to clipboard":"Données copiées dans le presse-papiers","Death color":"Couleur de la mort","Decoder":"Décodeur","Default":"Défaut","Delay":"Délai","Delay (ms)":"Délai (ms)","Delete":"Supprimer","Deleting a publication service cannot be reversed. The publication stops immediately.":"La suppression d'un service de publication ne peut pas être annulée. La publication s'arrête immédiatement.","Delivering mode":"Mode de livraison","Description":"Description","Design":"Design","Device":"Dispositif","Disconnect":"Déconnexion","Disconnect & Continue":"Déconnecter et continuer","Disconnecting ...":"Déconnexion ...","Disk":"Disque","Disk cache":"Cache disque","Disk storage":"Stockage sur disque","Do you really want to restart the application now?":"Voulez-vous vraiment redémarrer l'application maintenant ?","Do you want to delete \"{0}\"?":["Voulez-vous supprimer \"",["0"],"\" ?"],"Do you want to delete {title}?":["Voulez-vous supprimer ",["titre"]," ?"],"Do you want to disconnect \"{0}\"?":["Voulez-vous déconnecter \"",["0"],"\" ?"],"Docs":"Docs","Documentation":"Documentation","Dup. frames":"Cadres de duplication","EDIT: Player":"EDIT : Joueur","EDIT: Publication Website":"EDIT : Site de la publication","Edit":"Modifier","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Modifiez les sources audio et vidéo pour le flux en direct. Ajoutez une description, et définissez la licence de votre contenu souhaité.","Edit: {title}":["Edit : ",["title"]],"Embed":"Intégrer","Enable RTMP server ...":"Activer le serveur RTMP ...","Enable a periodic beep every second with this value times the carrier frequency":"Active un bip périodique toutes les secondes avec cette valeur multipliée par la fréquence porteuse","Enable backup stream":"Activer le flux de sauvegarde","Enable nerd statistics":"Activer les statistiques des nerds","Enable primary stream":"Activer le flux primaire","Enable snapshots":"Activer les instantanés","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Il est fortement conseillé d'activer l'autorisation. Sinon, n'importe qui peut accéder à cette instance.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"L'activation de l'authentification de base est fortement conseillée. Sinon, n'importe qui pourrait écrire des données sur /memfs.","Encoder":"Codeur","Encoding":"Encodage","Encryption":"Cryptage","Enter a name for the new channel.":"Saisissez un nom pour le nouveau canal.","Enter password":"Entrez le mot de passe","Enter the address of your network source:":"Saisissez l'adresse de votre source réseau :","Enter username":"Entrez le nom d'utilisateur","Entropy coder":"Codeur d'entropie","Error":"Erreur","Error while copying data to clipboard":"Erreur lors de la copie de données dans le presse-papiers","Error: {0}":["Erreur : ",["0"]],"Expands the area above the channel list (live chat).":"Agrandit la zone au-dessus de la liste des chaînes (chat en direct).","Expands the area under the channel description (comment boxes).":"Agrandit la zone située sous la description du canal (cases de commentaires).","Expert mode":"Mode expert","Extend channel list":"Étendre la liste des canaux","Extend content":"Étendre le contenu","Extend footer":"Étendre le pied de page","Extend header":"Prolonger l'en-tête","FFmpeg":"FFmpeg","FPS":"FPS","Failed to correctly cleanup previous process data":"Impossible de nettoyer correctement les données du processus précédent","Failed to create publication service ({0})":["Échec de la création du service de publication (",["0"],")"],"Failed to create publication website files.":"Échec de la création des fichiers du site Web de publication.","Failed to probe the source. Please check the <0>probe details.":"Impossible de sonder la source. Veuillez vérifier les <0>détails de la sonde.","Failed to refresh token: {0}":["Échec du rafraîchissement du jeton : ",["0"]],"Failed to save ingest metadata":"Échec de la sauvegarde des métadonnées d'ingestion","Failed to stop process":"Échec de l'arrêt du processus","Failed to store player size setting.":"Échec de l'enregistrement du paramètre de taille du lecteur.","Failed to store publication service ({0})":["Échec du stockage du service de publication (",["0"],")"],"Failed to update ingest process ({0})":["Échec de la mise à jour du processus d'ingestion (",["0"],")"],"Failed to update the player":"Échec de la mise à jour du lecteur","Failed to verify the source. Please check the address.":"Impossible de vérifier la source. Veuillez vérifier l'adresse.","Finish":"Finition","Flags":"Drapeaux","For Javascripts.":"Pour les Javascripts.","For Stylesheets.":"Pour les feuilles de style.","Force input framerate":"Forcer le taux de rafraîchissement de l'entrée","Format":"Format","Frame drops":"Baisse du cadre","Framebuffer":"Framebuffer","Framerate":"Fréquence d'images","Frequency (Hz)":"Fréquence (Hz)","GET":"GET","General":"Général","Google Analytics ID":"ID Google Analytics","Google Analytics Tracker Name":"Nom du tracker Google Analytics","HLS":"HLS","HLS URL":"URL HLS","HLS statistic for the In-memory storage":"Statistique HLS pour le stockage en mémoire","HTTP and HTTPS":"HTTP et HTTPS","HTTP port":"Port HTTP","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"Port HTTPS","Hardware device":"Dispositif matériel","Header":"En-tête","Headline":"A la une","Hosted Restreamer interface":"Interface hébergée de Restreamer","Human readable name on the service.":"Nom lisible par l'homme sur le service.","IP address":"Adresse IP","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Si vous avez changé les ports, il se peut que Restreamer Core ait déjà redémarré, mais qu'il soit maintenant disponible sur un port différent.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Si vous avez activé Let's Encrypt TLS, l'acquisition des certificats peut prendre un certain temps. Assurez-vous que Restreamer Core est joignable via le port 80 depuis Internet. Veuillez vérifier le journal de la console de Restreamer Core.","Ignore IP ranges":"Ignorer les plages IP","Image URL":"URL de l'image","Imprint":"Impression","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"En plus du lecteur, le Restreamer offre une page d'accueil complète, que vous pouvez utiliser pour présenter votre flux en direct facilement et rapidement.","In-memory":"En mémoire","In-memory storage":"Stockage en mémoire","Incompatible":"Incompatibilité","Inherit":"Hériter de","Inject 1":"Injecter 1","Inject 2":"Injecter 2","Inject 3":"Injecter 3","Inject 4":"Injecter 4","Internal HLS server":"Serveur HLS interne","Internal RTMP server":"Serveur RTMP interne","Interval (seconds)":"Intervalle (secondes)","Issue alert":"Alerte aux problèmes","Keyframe interval (seconds)":"Intervalle entre les images clés (secondes)","Layout":"Mise en page","Let's Encrypt certification":"Certification Let's Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let's Encrypt requiert un ou plusieurs noms de domaine publics et un port 80/TCP accessible.","Level":"Niveau","Level of system protocol.":"Niveau du protocole du système.","License":"Licence","Life color":"Couleur de la vie","Linecolor":"Linecolor","Link":"Lien","Link, mouseover":"Lien, survol de la souris","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Liste des plages IP en notation CIDR, par exemple, 127.0.0.1/32, que les statistiques n'enregistreront pas - une plage IP par ligne. Laissez vide pour enregistrer toutes les sessions.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Liste des extensions de fichiers à mettre en cache (par exemple, \".html\"), une par ligne. Laissez vide pour mettre en cache tous les types de fichiers.","List size (segments)":"Taille de la liste (segments)","Live-Streaming to Facebook Live RTMP service":"Diffusion en direct vers le service RTMP de Facebook Live","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Service RTMP de diffusion en direct sur Instagram Live. La clé du streaming nécessite un service tel que <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Diffusion en direct sur le service RTMP de Twitch Live.","Live-Streaming to Vimeos Live RTMP Service":"Diffusion en direct sur le service RTMP Live de Vimeos","Livesource ID":"Livesource ID","Log level":"Niveau du journal","Logging":"Enregistrement","Login":"Connexion","Login failed: Couldn't load API details":"La connexion a échoué : Impossible de charger les détails de l'API","Login failed: {0}":["La connexion a échoué : ",["0"]],"Login/JWT authorization":"Autorisation de connexion/JWT","Logo":"Logo","Logout":"Déconnexion","MB":"MB","Main Source":"Source principale","Main channel":"Canal principal","Main channel not found":"Canal principal non trouvé","Main channel saved":"Canal principal sauvegardé","Main page channel (index.html).":"Canal de la page principale (index.html).","Maintainer:":"Mainteneur :","Maximum allowed cache size, 0 for unlimited.":"Taille maximale autorisée du cache, 0 pour illimité.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Mégaoctets de RAM maximum autorisés pour /memfs, 0 pour illimité.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Maximum de mégaoctets autorisés à consommer du disque dur. 0 pour illimité.","Maximum bandwidth Mbit/s":"Bande passante maximale Mbit/s","Maximum delay in milliseconds.":"Délai maximal en millisecondes.","Maximum file size (Megabytes)":"Taille maximale du fichier (mégaoctets)","Maximum file size to put in cache.":"Taille maximale du fichier à mettre dans le cache.","Maximum log histroy":"Histroy log maximum","Maximum log lines":"Lignes de journal maximum","Maximum size (Megabytes)":"Taille maximale (mégaoctets)","Maximum viewer idle time (Seconds)":"Temps d'inactivité maximum du téléspectateur (Secondes)","Maximum viewers":"Nombre maximum de téléspectateurs","Memory":"Mémoire","Meta information":"Méta-information","Metadata":"Métadonnées","Mold":"Moisissure","More about Twitter's copyright <0>here.":"Plus d'informations sur les droits d'auteur de Twitter <0>ici.","More about YouTube's copyright <0>here.":"Plus d'informations sur les droits d'auteur de YouTube <0>ici.","More about licenses here":"Plus d'informations sur les licences ici","More about the service":"En savoir plus sur le service","Mute":"Mute","Name":"Nom","Name for the template. If the name already exists, it will be overwritten.":"Nom du modèle. Si le nom existe déjà, il sera écrasé.","Network":"Réseau","Network source":"Source du réseau","Next":"Suivant","Next: Audio":"Suivant : Audio","Next: Video setup":"Suivant : Configuration de la vidéo","No":"Non","No audio":"Pas d'audio","No audio stream available":"Aucun flux audio disponible","No live stream was detected. Please check the software that sends the stream.":"Aucun flux en direct n'a été détecté. Veuillez vérifier le logiciel qui envoie le flux.","No source selected":"Pas de source sélectionnée","No suitable encoder found.":"Aucun codeur approprié n'a été trouvé.","No video":"Pas de vidéo","No video stream available":"Aucun flux vidéo disponible","Node ID":"ID du nœud","Noise":"Bruit","None":"Aucun","Notes":"Notes","Number of log lines to keep.":"Nombre de lignes de journal à conserver.","Number of logs to keep for each process.":"Nombre de journaux à conserver pour chaque processus.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Un référent par ligne, par exemple http://www.example.com.","Open":"Ouvrir","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Le Passthrough (copie) ne doit être désactivé que si nécessaire. Chaque encodage nécessite des ressources CPU/GPU supplémentaires.","Password":"Mot de passe","Password for authorization.":"Mot de passe pour l'autorisation.","Password for the device.":"Mot de passe pour l'appareil.","Persist viewer statistics":"Persistance des statistiques des téléspectateurs","Pixel format":"Format des pixels","Plan: <0>Starter":"Plan : <0>Démarreur","Platforms":"Plateformes","Playback":"Lecture","Player":"Joueur","Player URL":"URL du joueur","Player settings saved":"Sauvegarde des paramètres du lecteur","Playersite":"Site des joueurs","Playlist":"Liste de lecture","Please check the <0>process log":"Veuillez vérifier le <0>Journal du processus.","Please contact the operator of the service and check what happens.":"Veuillez contacter l'opérateur du service et vérifier ce qui se passe.","Please select a file to upload.":"Veuillez sélectionner un fichier à télécharger.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Veuillez utiliser \"Passthrough (copie)\" si possible. L'encodage nécessite des ressources CPU/GPU supplémentaires.","Please wait. Probe stream data ...":"Veuillez patienter. Données du flux de sondes ...","Please wait. Setting up the stream ...":"Veuillez patienter. Configuration du flux ...","Port":"Port","Position":"Position","Preset":"Préréglage","Primary stream":"Flux primaire","Primary stream key":"Clé de flux primaire","Probe":"Sonde","Process":"Processus","Process control":"Contrôle du processus","Process debug":"Débogage du processus","Process debug report":"Rapport de débogage du processus","Process details":"Détails du processus","Process report":"Rapport de processus","Processing & Control":"Traitement et contrôle","Profile":"Profil","Protocol":"Protocole","Protocols":"Protocoles","Public domain/s":"Domaine public/s","Publication service not found":"Service de publication non trouvé","Publication website settings saved":"Sauvegarde des paramètres du site Web de la publication","Publications":"Publications","Pull Mode":"Mode de traction","Pull or recieve the data:":"Tirer ou recevoir les données :","Quality":"Qualité","RGB test pattern":"Mire de test RVB","RTMP app for publishing.":"Application RTMP pour la publication.","RTMP server":"Serveur RTMP","RTMP server is not enabled":"Le serveur RTMP n'est pas activé","RTMP server listen address.":"Adresse d'écoute du serveur RTMP.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Jeton RTMP pour la publication et la lecture. Le jeton est la valeur du paramètre de requête de l'URL \"token\".","RTMP/S":"RTMP/S","RTMPS server":"Serveur RTMPS","RTSP":"RTSP","Raspberry Pi camera":"Caméra Raspberry Pi","Rate control":"Contrôle du taux","Ratio":"Ratio","Read input at native speed":"Lecture de l'entrée à la vitesse native","Receive Mode":"Mode de réception","Reconnect":"Reconnecter","Reconnect delay (seconds)":"Délai de reconnexion (secondes)","Reconnecting in {0}s":["Reconnexion en ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["La reconnexion au Restreamer Core a échoué au cours des ",["RETRIES"]," dernières secondes."],"Reconnecting to Restreamer Core failed.":"La reconnexion à Restreamer Core a échoué.","Region":"Région","Reload":"Rechargez","Remove the oldest entries if the /memfs is full":"Supprimer les entrées les plus anciennes si le /memfs est plein","Requires activation":"Nécessite une activation","Restart":"Redémarrer","Restart required":"Redémarrage nécessaire","Restarting":"Redémarrage de","Restarting Restreamer Core ...":"Redémarrage de Restreamer Core ...","Restarting the application failed.":"Le redémarrage de l'application a échoué.","Restreamer Service":"Service Restreamer","Retrieving stream data ...":"Récupération des données de flux ...","Retry":"Réessayer","Rule":"Règle","Sampling":"Échantillonnage","Save":"Sauvez","Scale":"Échelle","Seconds to keep files in cache.":"Secondes pour garder les fichiers dans le cache.","Seconds until a process is restarted.":"Secondes jusqu'à ce qu'un processus soit redémarré.","Seconds until a staled process is terminated.":"Secondes jusqu'à ce qu'un processus bloqué soit terminé.","Seconds until the snapshot/thumbnail of the video source is updated.":"Secondes jusqu'à ce que l'instantané/la vignette de la source vidéo soit mis à jour.","Security":"Sécurité","Security token":"Jeton de sécurité","Seekbar color":"Couleur du Seekbar","Segment length (seconds)":"Longueur du segment (secondes)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Une fois ce délai écoulé, le segment sera coupé sur l'image clé suivante. Une valeur de 2 est recommandée.","Segmentation":"Segmentation","Select a device:":"Sélectionnez un appareil :","Select audio Source:":"Sélectionnez la source audio :","Select source ...":"Sélectionnez la source ...","Select video source:":"Sélectionnez la source vidéo :","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Choisissez si vous tirez le flux d'une <0>source réseau (comme une caméra réseau) ou du <1>serveur RTMP interne (par exemple, les flux OBS vers le Restreamer).","Select your encoding setting:":"Sélectionnez votre paramètre de codage :","Selected":"Sélectionné","Selected channel":"Canal sélectionné","Selection":"Sélection","Send anonymous metrics (helps us for future development)":"Envoyez des métriques anonymes (nous aide pour le développement futur)","Send stream to this address:":"Envoyez le flux à cette adresse :","Send video to Framebuffer":"Envoyer la vidéo au Framebuffer","Server":"Serveur","Service":"Service","Service name":"Nom du service","Service token for monitoring.":"Jeton de service pour la surveillance.","Sessions":"Sessions","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Définit une limite de bande passante en Mbit par seconde pour le transfert des données HLS sortantes. Tous les services, tels que RTMP et les processus sortants, sont inclus dans le calcul. Si la bande passante est dépassée, les spectateurs HLS reçoivent le code d'état HTTP 509 (Bandwidth Limit Exceeded). 0 est illimité.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Définit une limite de visualisation pour les sessions HLS. Si la limite est dépassée, les spectateurs HLS reçoivent le code d'état HTTP 509 (limite de bande passante dépassée). La valeur 0 est illimitée.","Setting for connection to the service.":"Paramètre pour la connexion au service.","Settings":"Paramètres","Settings (expert mode)":"Paramètres (mode expert)","Settings for /data path. The access is protected by":"Paramètres pour le chemin /data. L'accès est protégé par","Settings for /memfs path.":"Paramètres pour le chemin /memfs.","Settings saved. All changes will be applied after restarting the application.":"Les paramètres sont enregistrés. Toutes les modifications seront appliquées après le redémarrage de l'application.","Shows a reference to the project.":"Affiche une référence au projet.","Sign up (free)":"S'inscrire (gratuit)","Silence":"Silence","Silence Audio":"Silence Audio","Sine":"Sine","Sitename":"Nom de site","Size":"Taille","Snapshot":"Instantané","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Délai d'attente pour les sockets (microsecondes)","Software":"Logiciel","Source":"Source :","Speed":"Vitesse","Stale timeout (seconds)":"Délai d'expiration (secondes)","Statistics":"Statistiques","Storage":"Stockage","Stores the viewer statistics to the disk.":"Stocke les statistiques du visualiseur sur le disque.","Stream":"Stream","Stream URL":"URL du flux","Stream key":"Clé de flux","Stream name":"Nom du cours d'eau","Stream names":"Noms des cours d'eau","Support datarhei Restreamer":"Support datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Prend en charge HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT et plus encore.","System":"Système","Template":"Modèle","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Modèle à utiliser pour créer le site Web de la publication. Le bouton de suppression supprime la sélection du système.","Terms":"Conditions","Test pattern":"Modèle de test","Test pattern (extended)":"Mire (étendue)","Text colors":"Couleurs du texte","The amplitude (0.0 - 1.0) of the generated audio stream":"L'amplitude (0,0 - 1,0) du flux audio généré","The application is using an older version of the settings.":"L'application utilise une ancienne version des paramètres.","The bitrate of the audio stream.":"Le débit binaire du flux audio.","The carrier frequency":"La fréquence porteuse","The channel \"{0}\" could not be deleted":["Le canal \"",["0"],"\" n'a pas pu être supprimé"],"The channel \"{0}\" has been deleted":["Le canal \"",["0"],"\" a été supprimé"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"La suppression de ce canal ne peut pas être récupérée. Toutes les publications de ce canal seront supprimées.","The input profile is not complete. Please define a video and audio source.":"Le profil d'entrée n'est pas complet. Veuillez définir une source vidéo et audio.","The layout of the audio stream.":"La mise en page du flux audio.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"Le nombre maximum de segments de la liste de lecture. 0 contiendra tous les segments. 6 est recommandé.","The noise color":"La couleur du bruit","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"La personne qui a associé une œuvre à cet acte a dédié l'œuvre au domaine public en renonçant à tous ses droits sur l'œuvre dans le monde entier en vertu de la loi sur le droit d'auteur, y compris tous les droits connexes et voisins, dans la mesure autorisée par la loi. Vous pouvez copier, modifier, distribuer et exécuter l'œuvre, même à des fins commerciales, le tout sans demander la permission.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"Le nom de domaine public joignable de l'hôte sur lequel ce Restreamer est exécuté. Séparez les noms de domaine multiples par une virgule.","The publication service \"{0}\" could not be deleted":["Le service de publication \"",["0"],"\" n'a pas pu être supprimé."],"The publication service \"{0}\" has been created":["Le service de publication \"",["0"],"\" a été créé."],"The publication service \"{0}\" has been deleted":["Le service de publication \"",["0"],"\" a été supprimé."],"The publication service has been created":"Le service de publication a été créé","The sample rate of the audio stream.":"La fréquence d'échantillonnage du flux audio.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["Le fichier sélectionné est trop gros (",["0"]," octets). Seuls les ",["1"]," octets sont autorisés."],"The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}":["Le type de fichier sélectionné (",["0"],") est maintenant autorisé. Les types de fichier autorisés sont ",["imageAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}":["Le type de fichier sélectionné (",["0"],") est maintenant autorisé. Les types de fichiers autorisés sont ",["logoAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}":["Le type de fichier sélectionné (",["0"],") est maintenant autorisé. Les types de fichiers autorisés sont ",["templateAcceptString"]],"The settings for \"{0}\" have been saved":["Les paramètres de \"",["0"],"\" ont été sauvegardés."],"The source doesn't provide any audio streams.":"La source ne fournit pas de flux audio.","The source doesn't provide any audio streams. Please check the <0>probe details.":"La source ne fournit pas de flux audio. Veuillez vérifier les <0>détails de la sonde.","The source doesn't provide any compatible audio streams.":"La source ne fournit pas de flux audio compatible.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"La source ne fournit pas de flux vidéo compatible. Veuillez vérifier les <0>exigences.","The source doesn't provide any video streams. Please check the <0>probe details.":"La source ne fournit pas de flux vidéo. Veuillez vérifier les <0>détails de la sonde.","The source doesn't provide any video streams. Please check the device.":"La source ne fournit pas de flux vidéo. Veuillez vérifier l'appareil.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"La source vidéo ne fournit pas de flux audio compatible. <0>Silence audio est recommandé. Les services tels que YouTube, Facebook & Co. nécessitent un canal audio.","The video source is compatible. Select the desired resolution:":"La source vidéo est compatible. Sélectionnez la résolution souhaitée :","There are updates available. Here you get more information.":"Il y a des mises à jour disponibles. Ici vous obtenez plus d'informations.","There war an error during upload: {0}":["Il y a eu une erreur pendant le téléchargement : ",["0"]],"There was a problem storing the settings. Settings not saved.":"Il y a eu un problème pour enregistrer les paramètres. Paramètres non sauvegardés.","There was an error connecting to Restreamer Core at {0}.":["Il y a eu une erreur de connexion à Restreamer Core à ",["0"],"."],"There was an error during upload: {0}":["Il y a eu une erreur pendant le téléchargement : ",["0"]],"There was an error setting up the stream.":"Il y a eu une erreur dans la configuration du flux.","There were some errors in the settings. Settings not saved.":"Il y avait des erreurs dans les paramètres. Les paramètres n'ont pas été sauvegardés.","There's no login method available.":"Il n'y a pas de méthode de connexion disponible.","This is a dummy service that explains to you the concepts of service.":"Il s'agit d'un service factice qui vous explique les concepts du service.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Il ne s'agit pas nécessairement d'une erreur. Cependant, le redémarrage de Restreamer Core peut prendre un peu plus de temps...","This is to mention the copyright regulations for the target of this service.":"Il s'agit de mentionner les règles de copyright pour la cible de ce service.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Cette licence permet aux réutilisateurs de copier et de distribuer le matériel sur n'importe quel support ou dans n'importe quel format, sous une forme non adaptée uniquement, et à condition que le créateur soit mentionné. La licence autorise l'utilisation commerciale.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Cette licence permet aux réutilisateurs de copier et de distribuer le matériel sur n'importe quel support ou dans n'importe quel format, sous une forme non adaptée uniquement, à des fins non commerciales et à condition que le créateur soit mentionné.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou dans n'importe quel format à des fins non commerciales uniquement, et à condition que le créateur soit mentionné.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou dans n'importe quel format à des fins non commerciales uniquement, et à condition que le créateur soit mentionné. Si vous remixez, adaptez ou développez le matériel, vous devez accorder une licence au matériel modifié selon des conditions identiques.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou format, à condition que le créateur soit mentionné. La licence autorise l'utilisation commerciale.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou format, à condition que le créateur soit mentionné. La licence autorise l'utilisation commerciale. Si vous remixez, adaptez ou développez le matériel, vous devez accorder une licence au matériel modifié selon des conditions identiques.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Cette source ne peut pas être éditée lorsqu'elle est en cours d'utilisation. Pour continuer, vous devez déconnecter la source.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Cette version de l'interface utilisateur ne prend pas en charge le binaire FFmpeg disponible (",["0"],"). L'interface utilisateur requiert ",["1"],". Veuillez utiliser un binaire FFmpeg supporté."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Cette version de l'IU ne prend pas en charge le Core connecté (",["0"],"). L'IU requiert ",["1"],". Veuillez utiliser une version compatible de l'IU."],"This version of the UI is compatible.":"Cette version de l'interface utilisateur est compatible.","Time until an inactive viewer connection is treated as closed.":"Temps jusqu'à ce qu'une connexion de téléspectateur inactive soit traitée comme fermée.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmettre des instantanés de la source principale à un serveur HTTP/S. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Transmet le canal audio de la source principale à un serveur Icecast. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmettre la source principale en tant que HTTP-Live-Streaming (HLS) à un serveur HTTP/S. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmettre la source principale en MPEG-DASH à un serveur HTTP/S. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Transmettre la source principale à un service Live de Brightcove. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Transmettre la source principale à un service CDN77 RTMP. Plus d'informations sur la configuration <0>ici.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Transmettre la source principale à un service DaCast RTMP. Plus d'informations sur la configuration <0>ici.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Transmettre la source principale à un service MPEG-TS. Vous trouverez plus de détails sur les réglages ici <0>ici.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur RTMP(e|s|t|te|ts). Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur RTSP. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur Red5/Pro. Vous trouverez plus de détails sur les réglages <0>ici.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur SRT. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur UDP. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur WOWZA. Vous trouverez plus de détails sur les réglages <0>ici.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Transmettre la source principale à un datarhei Core Ressource. Plus de détails sur les paramètres peuvent être trouvés <0>ici.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Transmettre la source principale à une Ressource livespotting.com. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Transmettre la source principale à l'Akamai (MSL) Media Services Live. Vous trouverez plus de détails sur les paramètres de l'encodeur MSL sur <0>ici.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Transmettez la source principale au service d'encodage en nuage Bitmovin, un outil puissant pour le streaming en direct. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Transmettre la source principale au service RTMP de Restream. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Transmet votre vidéo sous forme de flux RTMP avec la clé requise générée dans YouTube Studio. Vous pouvez trouver plus d'informations sur la configuration d'un flux en direct sur le site de la <0>Creator Academy de YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Transmet votre flux vidéo avec la clé requise, qui a été générée dans Twitter Producer. Vous trouverez plus d'informations sur la configuration d'un flux en direct sur le site <0>Producteur de Twitter.","Tune":"Tune","UDP transport":"Transport UDP","Unable to load the config.":"Impossible de charger la configuration.","Unique ident on the service.":"Identifiant unique sur le service.","Unknown":"Inconnu","Unselected":"Non sélectionné","Upload":"Télécharger","Uploading the file failed":"Le téléchargement du fichier a échoué","Uploading the logo failed":"Le téléchargement du logo a échoué","Uptime":"Temps de fonctionnement","Use Auth0 for your running Restreamer Core. More <0>details.":"Utilisez Auth0 pour votre noyau Restreamer en cours d'exécution. Plus de <0>détails.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Utilisez l'assistant (<0/>) pour une configuration rapide et facile, ou éditez (<1/>) les sources directement en mode personnalisé.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilisez vos droits d'auteur et choisissez la bonne licence d'image. Qu'elle soit libre pour tous ou fortement restreinte. Discutez brièvement de ce que les autres sont autorisés à faire avec votre image.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilisez vos droits d'auteur et choisissez la bonne licence d'image. Qu'il s'agisse d'une licence gratuite pour tous ou d'une licence très restreinte. Discutez brièvement de ce que les autres sont autorisés à faire avec votre image.","User registration":"Enregistrement de l'utilisateur","Username":"Nom d'utilisateur :","Username for authorization.":"Nom d'utilisateur pour l'autorisation.","Username for the device.":"Nom d'utilisateur pour l'appareil.","VPU ID":"ID VPU","Video":"Vidéo","Video device":"Appareil vidéo","Video settings":"Paramètres vidéo","Video setup":"Configuration vidéo","Video source":"Source vidéo","Viewer":"Visionneuse","Virtual source":"Source virtuelle","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Bienvenue à Restreamer v2, la solution pour la publication rapide et facile de vidéos. Gratuit pour une utilisation privée et commerciale. Plus d'aide dans les <0>docs.","Write protection":"Protection de l'écriture","YUV test pattern":"Mire de test YUV","Yes":"Oui","You can't abort the wizard because at least one input must be defined.":"Vous ne pouvez pas interrompre l'assistant car au moins une entrée doit être définie.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Vous avez modifié la configuration. Pour que les changements prennent effet, vous devez redémarrer l'application. Voulez-vous redémarrer maintenant ?","You have to reconnect manually":"Vous devez vous reconnecter manuellement","You have unsaved changes. Please save them before you can control the service again.":"Vous avez des modifications non sauvegardées. Veuillez les sauvegarder avant de pouvoir contrôler à nouveau le service.","Your stream needs to be encoded, but there's no suitable encoder available.":"Votre flux doit être encodé, mais aucun encodeur approprié n'est disponible.","Your stream needs to be encoded. Choose the desired encoder:":"Votre flux doit être encodé. Choisissez l'encodeur souhaité :","blue":"bleu","brown":"brun","iframe code":"code iframe","kbit/s":"kbit/s","pink":"rose","velvet":"velours","violet":"violet","white":"blanc"}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{"<0>Compatibility list":"<0>Liste des compatibilités","<0>Show probe details":"<0>Montrer les détails de la sonde.","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Le point de terminaison de l'API n'a pas été trouvé. Paramètres non sauvegardés.","AVFoundation":"AVFoundation","Abort":"Abandonner","About":"À propos de","Add":"Ajouter","Add Publication":"Ajouter une publication","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Ajoutez des widgets et des styles externes au site de publication. Vous pouvez trouver quelques exemples sur la page d'aide.","Add new channel":"Ajouter un nouveau canal","Add: {0}":["Ajouter : ",["0"]],"Address":"Adresse","Address for the background image.":"Adresse pour l'image de fond.","Address to listen on for HTTP requests.":"Adresse d'écoute pour les demandes HTTP.","Address to listen on for HTTPS requests.":"Adresse à écouter pour les demandes HTTPS.","Adjust publication site colors and background as you like.":"Ajustez les couleurs et le fond du site de publication comme vous le souhaitez.","Advanced monitoring":"Surveillance avancée","Advanced settings":"Paramètres avancés","Advanced setup":"Configuration avancée","Alerting by email":"Alerte par e-mail","All":"Tous","All important system settings.":"Tous les paramètres importants du système.","Allow all referrer":"Autoriser tous les référents","Allow counting how many viewers the stream has.":"Permet de compter le nombre de spectateurs du flux.","Amplitude":"Amplitude","An environment variable sets this value.":"Une variable d'environnement définit cette valeur.","App":"App","Application":"Application","Are you sure you want to abort the wizard?":"Êtes-vous sûr de vouloir interrompre l'assistant ?","Audio":"Audio","Audio Device":"Dispositif audio","Audio device":"Dispositif audio","Audio from device":"Audio de l'appareil","Audio settings":"Paramètres audio","Audio setup":"Configuration audio","Auth0":"Auth0","Auth0 Tenant":"Auth0 Locataire","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 n'est actuellement pas disponible car cette interface est chargée depuis une origine non sécurisée.","Author":"Auteur","Authorization":"Autorisation","Automatic cleanup of all media data":"Nettoyage automatique de toutes les données des médias","Autoplay":"Jeu automatique","Available":"Disponible sur","Back":"Dos","Background colors":"Couleurs d'arrière-plan","Background image":"Image de fond","Backup URL":"URL de sauvegarde","Backup server":"Serveur de sauvegarde","Backup stream":"Flux de sauvegarde","Backup stream key":"Clé du flux de sauvegarde","Bandwidth":"Bande passante","Bandwidth control":"Contrôle de la bande passante","Banner":"Bannière","Basic":"Base","Beep factor":"Facteur Bip","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Décrivez brièvement ce que le public verra pendant le streaming en direct.","Button color":"Couleur du bouton","Cache for files on /data.":"Cache pour les fichiers sur /data.","Cache time (Seconds)":"Temps de cache (Secondes)","Cache types":"Types de caches","Capture clicks":"Capture des clics","Capture cursor":"Curseur de capture","Channel \"{0}\" saved":["Canal \"",["0"],"\" sauvegardé"],"Channels":"Chaînes","Check for updates":"Vérifier les mises à jour","Check the requirements":"Vérifiez les exigences","Choose a video stream":"Choisissez un flux vidéo","Choose an audio stream":"Choisissez un flux audio","Choose an input device ...":"Choisissez un périphérique d'entrée ...","Choose codec ...":"Choisissez le codec ...","Choose tenant ...":"Choisir le locataire ...","Chunk":"Chunk","Close":"Fermer","Code injection":"Injection de code","Codec":"Codec","Color":"Couleur","Config":"Config","Confirm password":"Conf confirmer le mot de passe","Connect":"Connectez-vous à","Connected device":"Appareil connecté","Connected since <0/>":"Connecté depuis <0/>","Connecting ...":"Connecter ...","Connecting to Restreamer Core ...":"Connexion à Restreamer Core ...","Connecting to Restreamer Core failed probably because of mixed content.":"La connexion à Restreamer Core a échoué, probablement en raison d'un contenu mixte.","Content":"Contenu","Content URL":"Content URL","Cores":"Cœurs","Create user":"Créer un utilisateur","Creative Commons":"Creative Commons","Custom ...":"Personnalisé...","Custom JSON config for datarhei Core.":"Configuration JSON personnalisée pour le noyau datarhei.","Custom audio device":"Dispositif audio personnalisé","Custom audio index":"Index audio personnalisé","Custom bitrate (kbit/s)":"Débit binaire personnalisé (kbit/s)","Custom code injection":"Injection de code personnalisé","Custom delay":"Délai personnalisé","Custom device":"Dispositif personnalisé","Custom format":"Format personnalisé","Custom framerate":"Taux de rafraîchissement personnalisé","Custom keyframe interval":"Intervalle d'images clés personnalisé","Custom layout":"Mise en page personnalisée","Custom sampling (Hz)":"Échantillonnage personnalisé (Hz)","Custom scale":"Échelle personnalisée","Custom size":"Taille personnalisée","Custom video device":"Dispositif vidéo personnalisé","Custom video index":"Index vidéo personnalisé","Data copied to clipboard":"Données copiées dans le presse-papiers","Death color":"Couleur de la mort","Decoder":"Décodeur","Default":"Défaut","Delay":"Délai","Delay (ms)":"Délai (ms)","Delete":"Supprimer","Deleting a publication service cannot be reversed. The publication stops immediately.":"La suppression d'un service de publication ne peut pas être annulée. La publication s'arrête immédiatement.","Delivering mode":"Mode de livraison","Description":"Description","Design":"Design","Device":"Dispositif","Disconnect":"Déconnexion","Disconnect & Continue":"Déconnecter et continuer","Disconnecting ...":"Déconnexion ...","Disk":"Disque","Disk cache":"Cache disque","Disk storage":"Stockage sur disque","Do you really want to restart the application now?":"Voulez-vous vraiment redémarrer l'application maintenant ?","Do you want to delete \"{0}\"?":["Voulez-vous supprimer \"",["0"],"\" ?"],"Do you want to delete {title}?":["Voulez-vous supprimer ",["titre"]," ?"],"Do you want to disconnect \"{0}\"?":["Voulez-vous déconnecter \"",["0"],"\" ?"],"Docs":"Docs","Documentation":"Documentation","Dup. frames":"Cadres de duplication","EDIT: Player":"EDIT : Joueur","EDIT: Publication Website":"EDIT : Site de la publication","Edit":"Modifier","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Modifiez les sources audio et vidéo pour le flux en direct. Ajoutez une description, et définissez la licence de votre contenu souhaité.","Edit: {title}":["Edit : ",["title"]],"Embed":"Intégrer","Enable RTMP server ...":"Activer le serveur RTMP ...","Enable a periodic beep every second with this value times the carrier frequency":"Active un bip périodique toutes les secondes avec cette valeur multipliée par la fréquence porteuse","Enable backup stream":"Activer le flux de sauvegarde","Enable nerd statistics":"Activer les statistiques des nerds","Enable primary stream":"Activer le flux primaire","Enable snapshots":"Activer les instantanés","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Il est fortement conseillé d'activer l'autorisation. Sinon, n'importe qui peut accéder à cette instance.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"L'activation de l'authentification de base est fortement conseillée. Sinon, n'importe qui pourrait écrire des données sur /memfs.","Encoder":"Codeur","Encoding":"Encodage","Encryption":"Cryptage","Enter a name for the new channel.":"Saisissez un nom pour le nouveau canal.","Enter password":"Entrez le mot de passe","Enter the address of your network source:":"Saisissez l'adresse de votre source réseau :","Enter username":"Entrez le nom d'utilisateur","Entropy coder":"Codeur d'entropie","Error":"Erreur","Error while copying data to clipboard":"Erreur lors de la copie de données dans le presse-papiers","Error: {0}":["Erreur : ",["0"]],"Expands the area above the channel list (live chat).":"Agrandit la zone au-dessus de la liste des chaînes (chat en direct).","Expands the area under the channel description (comment boxes).":"Agrandit la zone située sous la description du canal (cases de commentaires).","Expert mode":"Mode expert","Extend channel list":"Étendre la liste des canaux","Extend content":"Étendre le contenu","Extend footer":"Étendre le pied de page","Extend header":"Prolonger l'en-tête","FFmpeg":"FFmpeg","FPS":"FPS","Failed to create publication service ({0})":["Échec de la création du service de publication (",["0"],")"],"Failed to create publication website files.":"Échec de la création des fichiers du site Web de publication.","Failed to probe the source. Please check the <0>probe details.":"Impossible de sonder la source. Veuillez vérifier les <0>détails de la sonde.","Failed to refresh token: {0}":["Échec du rafraîchissement du jeton : ",["0"]],"Failed to save ingest metadata":"Échec de la sauvegarde des métadonnées d'ingestion","Failed to stop process":"Échec de l'arrêt du processus","Failed to store player size setting.":"Échec de l'enregistrement du paramètre de taille du lecteur.","Failed to store publication service ({0})":["Échec du stockage du service de publication (",["0"],")"],"Failed to update ingest process ({0})":["Échec de la mise à jour du processus d'ingestion (",["0"],")"],"Failed to update the player":"Échec de la mise à jour du lecteur","Failed to verify the source. Please check the address.":"Impossible de vérifier la source. Veuillez vérifier l'adresse.","Finish":"Finition","Flags":"Drapeaux","For Javascripts.":"Pour les Javascripts.","For Stylesheets.":"Pour les feuilles de style.","Force input framerate":"Forcer le taux de rafraîchissement de l'entrée","Format":"Format","Frame drops":"Baisse du cadre","Framebuffer":"Framebuffer","Framerate":"Fréquence d'images","Frequency (Hz)":"Fréquence (Hz)","GET":"GET","General":"Général","Google Analytics ID":"ID Google Analytics","Google Analytics Tracker Name":"Nom du tracker Google Analytics","HLS":"HLS","HLS statistic for the In-memory storage":"Statistique HLS pour le stockage en mémoire","HTTP and HTTPS":"HTTP et HTTPS","HTTP port":"Port HTTP","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"Port HTTPS","Hardware device":"Dispositif matériel","Header":"En-tête","Headline":"A la une","Hosted Restreamer interface":"Interface hébergée de Restreamer","Human readable name on the service.":"Nom lisible par l'homme sur le service.","IP address":"Adresse IP","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Si vous avez changé les ports, il se peut que Restreamer Core ait déjà redémarré, mais qu'il soit maintenant disponible sur un port différent.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Si vous avez activé Let's Encrypt TLS, l'acquisition des certificats peut prendre un certain temps. Assurez-vous que Restreamer Core est joignable via le port 80 depuis Internet. Veuillez vérifier le journal de la console de Restreamer Core.","Ignore IP ranges":"Ignorer les plages IP","Image URL":"URL de l'image","Imprint":"Impression","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"En plus du lecteur, le Restreamer offre une page d'accueil complète, que vous pouvez utiliser pour présenter votre flux en direct facilement et rapidement.","In-memory":"En mémoire","In-memory storage":"Stockage en mémoire","Incompatible":"Incompatibilité","Inherit":"Hériter de","Inject 1":"Injecter 1","Inject 2":"Injecter 2","Inject 3":"Injecter 3","Inject 4":"Injecter 4","Internal HLS server":"Serveur HLS interne","Internal RTMP server":"Serveur RTMP interne","Interval (seconds)":"Intervalle (secondes)","Issue alert":"Alerte aux problèmes","Keyframe interval (seconds)":"Intervalle entre les images clés (secondes)","Layout":"Mise en page","Let's Encrypt certification":"Certification Let's Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let's Encrypt requiert un ou plusieurs noms de domaine publics et un port 80/TCP accessible.","Level":"Niveau","Level of system protocol.":"Niveau du protocole du système.","License":"Licence","Life color":"Couleur de la vie","Linecolor":"Linecolor","Link":"Lien","Link, mouseover":"Lien, survol de la souris","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Liste des plages IP en notation CIDR, par exemple, 127.0.0.1/32, que les statistiques n'enregistreront pas - une plage IP par ligne. Laissez vide pour enregistrer toutes les sessions.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Liste des extensions de fichiers à mettre en cache (par exemple, \".html\"), une par ligne. Laissez vide pour mettre en cache tous les types de fichiers.","List size (segments)":"Taille de la liste (segments)","Live-Streaming to Facebook Live RTMP service":"Diffusion en direct vers le service RTMP de Facebook Live","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Service RTMP de diffusion en direct sur Instagram Live. La clé du streaming nécessite un service tel que <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Diffusion en direct sur le service RTMP de Twitch Live.","Live-Streaming to Vimeo Live RTMP Service":"Diffusion en direct sur le service RTMP Live de Vimeos","Livesource ID":"Livesource ID","Log level":"Niveau du journal","Logging":"Enregistrement","Login":"Connexion","Login failed: Couldn't load API details":"La connexion a échoué : Impossible de charger les détails de l'API","Login failed: {0}":["La connexion a échoué : ",["0"]],"Login/JWT authorization":"Autorisation de connexion/JWT","Logo":"Logo","Logout":"Déconnexion","MB":"MB","Main Source":"Source principale","Main channel":"Canal principal","Main channel not found":"Canal principal non trouvé","Main channel saved":"Canal principal sauvegardé","Main page channel (index.html).":"Canal de la page principale (index.html).","Maintainer:":"Mainteneur :","Maximum allowed cache size, 0 for unlimited.":"Taille maximale autorisée du cache, 0 pour illimité.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Mégaoctets de RAM maximum autorisés pour /memfs, 0 pour illimité.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Maximum de mégaoctets autorisés à consommer du disque dur. 0 pour illimité.","Maximum bandwidth Mbit/s":"Bande passante maximale Mbit/s","Maximum delay in milliseconds.":"Délai maximal en millisecondes.","Maximum file size (Megabytes)":"Taille maximale du fichier (mégaoctets)","Maximum file size to put in cache.":"Taille maximale du fichier à mettre dans le cache.","Maximum log histroy":"Histroy log maximum","Maximum log lines":"Lignes de journal maximum","Maximum size (Megabytes)":"Taille maximale (mégaoctets)","Maximum viewer idle time (Seconds)":"Temps d'inactivité maximum du téléspectateur (Secondes)","Maximum viewers":"Nombre maximum de téléspectateurs","Memory":"Mémoire","Meta information":"Méta-information","Metadata":"Métadonnées","Mold":"Moisissure","More about Twitter's copyright <0>here.":"Plus d'informations sur les droits d'auteur de Twitter <0>ici.","More about YouTube's copyright <0>here.":"Plus d'informations sur les droits d'auteur de YouTube <0>ici.","More about licenses here":"Plus d'informations sur les licences ici","More about the service":"En savoir plus sur le service","Mute":"Mute","Name":"Nom","Name for the template. If the name already exists, it will be overwritten.":"Nom du modèle. Si le nom existe déjà, il sera écrasé.","Network":"Réseau","Network source":"Source du réseau","Next":"Suivant","Next: Audio":"Suivant : Audio","Next: Video setup":"Suivant : Configuration de la vidéo","No":"Non","No audio":"Pas d'audio","No audio stream available":"Aucun flux audio disponible","No input device available":"Aucun dispositif d'entrée disponible","No live stream was detected. Please check the software that sends the stream.":"Aucun flux en direct n'a été détecté. Veuillez vérifier le logiciel qui envoie le flux.","No source selected":"Pas de source sélectionnée","No sources available":"Aucune source disponible","No suitable encoder found.":"Aucun codeur approprié n'a été trouvé.","No video":"Pas de vidéo","No video stream available":"Aucun flux vidéo disponible","Node ID":"ID du nœud","Noise":"Bruit","None":"Aucun","Notes":"Notes","Number of log lines to keep.":"Nombre de lignes de journal à conserver.","Number of logs to keep for each process.":"Nombre de journaux à conserver pour chaque processus.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Un référent par ligne, par exemple http://www.example.com.","Open":"Ouvrir","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Le Passthrough (copie) ne doit être désactivé que si nécessaire. Chaque encodage nécessite des ressources CPU/GPU supplémentaires.","Password":"Mot de passe","Password for authorization.":"Mot de passe pour l'autorisation.","Password for the device.":"Mot de passe pour l'appareil.","Persist viewer statistics":"Persistance des statistiques des téléspectateurs","Pixel format":"Format des pixels","Plan: <0>Starter":"Plan : <0>Démarreur","Platforms":"Plateformes","Playback":"Lecture","Player":"Joueur","Player URL":"URL du joueur","Player settings saved":"Sauvegarde des paramètres du lecteur","Playersite":"Site des joueurs","Playlist":"Liste de lecture","Please check the <0>process log":"Veuillez vérifier le <0>Journal du processus.","Please contact the operator of the service and check what happens.":"Veuillez contacter l'opérateur du service et vérifier ce qui se passe.","Please select a file to upload.":"Veuillez sélectionner un fichier à télécharger.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Veuillez utiliser \"Passthrough (copie)\" si possible. L'encodage nécessite des ressources CPU/GPU supplémentaires.","Please wait. Probe stream data ...":"Veuillez patienter. Données du flux de sondes ...","Please wait. Setting up the stream ...":"Veuillez patienter. Configuration du flux ...","Port":"Port","Position":"Position","Preset":"Préréglage","Primary stream":"Flux primaire","Primary stream key":"Clé de flux primaire","Probe":"Sonde","Process":"Processus","Process control":"Contrôle du processus","Process debug":"Débogage du processus","Process debug report":"Rapport de débogage du processus","Process details":"Détails du processus","Process report":"Rapport de processus","Processing & Control":"Traitement et contrôle","Profile":"Profil","Protocol":"Protocole","Protocols":"Protocoles","Public domain/s":"Domaine public/s","Publication service not found":"Service de publication non trouvé","Publication website settings saved":"Sauvegarde des paramètres du site Web de la publication","Publications":"Publications","Pull Mode":"Mode de traction","Pull or recieve the data:":"Tirer ou recevoir les données :","Quality":"Qualité","RGB test pattern":"Mire de test RVB","RTMP app for publishing.":"Application RTMP pour la publication.","RTMP server":"Serveur RTMP","RTMP server is not enabled":"Le serveur RTMP n'est pas activé","RTMP server listen address.":"Adresse d'écoute du serveur RTMP.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Jeton RTMP pour la publication et la lecture. Le jeton est la valeur du paramètre de requête de l'URL \"token\".","RTMP/S":"RTMP/S","RTMPS server":"Serveur RTMPS","RTSP":"RTSP","Raspberry Pi camera":"Caméra Raspberry Pi","Rate control":"Contrôle du taux","Ratio":"Ratio","Read input at native speed":"Lecture de l'entrée à la vitesse native","Receive Mode":"Mode de réception","Reconnect":"Reconnecter","Reconnect delay (seconds)":"Délai de reconnexion (secondes)","Reconnecting in {0}s":["Reconnexion en ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["La reconnexion au Restreamer Core a échoué au cours des ",["RETRIES"]," dernières secondes."],"Reconnecting to Restreamer Core failed.":"La reconnexion à Restreamer Core a échoué.","Refresh":"Rafraîchir","Region":"Région","Reload":"Rechargez","Remove the oldest entries if the /memfs is full":"Supprimer les entrées les plus anciennes si le /memfs est plein","Requires activation":"Nécessite une activation","Restart":"Redémarrer","Restart required":"Redémarrage nécessaire","Restarting":"Redémarrage de","Restarting Restreamer Core ...":"Redémarrage de Restreamer Core ...","Restarting the application failed.":"Le redémarrage de l'application a échoué.","Restreamer Service":"Service Restreamer","Retrieving stream data ...":"Récupération des données de flux ...","Retry":"Réessayer","Rule":"Règle","Sampling":"Échantillonnage","Save":"Sauvez","Scale":"Échelle","Seconds to keep files in cache.":"Secondes pour garder les fichiers dans le cache.","Seconds until a process is restarted.":"Secondes jusqu'à ce qu'un processus soit redémarré.","Seconds until a staled process is terminated.":"Secondes jusqu'à ce qu'un processus bloqué soit terminé.","Seconds until the snapshot/thumbnail of the video source is updated.":"Secondes jusqu'à ce que l'instantané/la vignette de la source vidéo soit mis à jour.","Security":"Sécurité","Security token":"Jeton de sécurité","Seekbar color":"Couleur du Seekbar","Segment length (seconds)":"Longueur du segment (secondes)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Une fois ce délai écoulé, le segment sera coupé sur l'image clé suivante. Une valeur de 2 est recommandée.","Segmentation":"Segmentation","Select a device:":"Sélectionnez un appareil :","Select audio source:":"Sélectionnez la source audio :","Select source ...":"Sélectionnez la source ...","Select video source:":"Sélectionnez la source vidéo :","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Choisissez si vous tirez le flux d'une <0>source réseau (comme une caméra réseau) ou du <1>serveur RTMP interne (par exemple, les flux OBS vers le Restreamer).","Select your encoding setting:":"Sélectionnez votre paramètre de codage :","Selected":"Sélectionné","Selected channel":"Canal sélectionné","Selection":"Sélection","Send anonymous metrics (helps us for future development)":"Envoyez des métriques anonymes (nous aide pour le développement futur)","Send stream to this address:":"Envoyez le flux à cette adresse :","Send video to Framebuffer":"Envoyer la vidéo au Framebuffer","Server":"Serveur","Service":"Service","Service name":"Nom du service","Service token for monitoring.":"Jeton de service pour la surveillance.","Sessions":"Sessions","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Définit une limite de bande passante en Mbit par seconde pour le transfert des données HLS sortantes. Tous les services, tels que RTMP et les processus sortants, sont inclus dans le calcul. Si la bande passante est dépassée, les spectateurs HLS reçoivent le code d'état HTTP 509 (Bandwidth Limit Exceeded). 0 est illimité.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Définit une limite de visualisation pour les sessions HLS. Si la limite est dépassée, les spectateurs HLS reçoivent le code d'état HTTP 509 (limite de bande passante dépassée). La valeur 0 est illimitée.","Setting for connection to the service.":"Paramètre pour la connexion au service.","Settings":"Paramètres","Settings (expert mode)":"Paramètres (mode expert)","Settings for /data path. The access is protected by":"Paramètres pour le chemin /data. L'accès est protégé par","Settings for /memfs path.":"Paramètres pour le chemin /memfs.","Settings saved. All changes will be applied after restarting the application.":"Les paramètres sont enregistrés. Toutes les modifications seront appliquées après le redémarrage de l'application.","Share button":"Bouton partager","Shows a reference to the project.":"Affiche une référence au projet.","Sign up (free)":"S'inscrire (gratuit)","Silence":"Silence","Silence Audio":"Silence Audio","Sine":"Sine","Sitename":"Nom de site","Size":"Taille","Snapshot":"Instantané","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Délai d'attente pour les sockets (microsecondes)","Software":"Logiciel","Source":"Source :","Speed":"Vitesse","Stale timeout (seconds)":"Délai d'expiration (secondes)","Statistics":"Statistiques","Storage":"Stockage","Stores the viewer statistics to the disk.":"Stocke les statistiques du visualiseur sur le disque.","Stream":"Stream","Stream URL":"URL du flux","Stream key":"Clé de flux","Stream name":"Nom du cours d'eau","Stream names":"Noms des cours d'eau","Support datarhei Restreamer":"Support datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Prend en charge HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT et plus encore.","System":"Système","Template":"Modèle","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Modèle à utiliser pour créer le site Web de la publication. Le bouton de suppression supprime la sélection du système.","Terms":"Conditions","Test pattern":"Modèle de test","Test pattern (extended)":"Mire (étendue)","Text colors":"Couleurs du texte","The amplitude (0.0 - 1.0) of the generated audio stream":"L'amplitude (0,0 - 1,0) du flux audio généré","The application is using an older version of the settings.":"L'application utilise une ancienne version des paramètres.","The bitrate of the audio stream.":"Le débit binaire du flux audio.","The carrier frequency":"La fréquence porteuse","The channel \"{0}\" could not be deleted":["Le canal \"",["0"],"\" n'a pas pu être supprimé"],"The channel \"{0}\" has been deleted":["Le canal \"",["0"],"\" a été supprimé"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"La suppression de ce canal ne peut pas être récupérée. Toutes les publications de ce canal seront supprimées.","The input profile is not complete. Please define a video and audio source.":"Le profil d'entrée n'est pas complet. Veuillez définir une source vidéo et audio.","The layout of the audio stream.":"La mise en page du flux audio.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"Le nombre maximum de segments de la liste de lecture. 0 contiendra tous les segments. 6 est recommandé.","The noise color":"La couleur du bruit","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"La personne qui a associé une œuvre à cet acte a dédié l'œuvre au domaine public en renonçant à tous ses droits sur l'œuvre dans le monde entier en vertu de la loi sur le droit d'auteur, y compris tous les droits connexes et voisins, dans la mesure autorisée par la loi. Vous pouvez copier, modifier, distribuer et exécuter l'œuvre, même à des fins commerciales, le tout sans demander la permission.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"Le nom de domaine public joignable de l'hôte sur lequel ce Restreamer est exécuté. Séparez les noms de domaine multiples par une virgule.","The publication service \"{0}\" could not be deleted":["Le service de publication \"",["0"],"\" n'a pas pu être supprimé."],"The publication service \"{0}\" has been created":["Le service de publication \"",["0"],"\" a été créé."],"The publication service \"{0}\" has been deleted":["Le service de publication \"",["0"],"\" a été supprimé."],"The publication service has been created":"Le service de publication a été créé","The sample rate of the audio stream.":"La fréquence d'échantillonnage du flux audio.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["Le fichier sélectionné est trop gros (",["0"]," octets). Seuls les ",["1"]," octets sont autorisés."],"The selected file type ({0}) is not allowed. Allowed file types are {types}":["Le type de fichier sélectionné (",["0"],") n'est pas autorisé. Les types de fichiers autorisés sont ",["types"]],"The settings for \"{0}\" have been saved":["Les paramètres de \"",["0"],"\" ont été sauvegardés."],"The source doesn't provide any audio streams.":"La source ne fournit pas de flux audio.","The source doesn't provide any audio streams. Please check the <0>probe details.":"La source ne fournit pas de flux audio. Veuillez vérifier les <0>détails de la sonde.","The source doesn't provide any compatible audio streams.":"La source ne fournit pas de flux audio compatible.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"La source ne fournit pas de flux vidéo compatible. Veuillez vérifier les <0>exigences.","The source doesn't provide any video streams. Please check the <0>probe details.":"La source ne fournit pas de flux vidéo. Veuillez vérifier les <0>détails de la sonde.","The source doesn't provide any video streams. Please check the device.":"La source ne fournit pas de flux vidéo. Veuillez vérifier l'appareil.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"La source vidéo ne fournit pas de flux audio compatible. <0>Silence audio est recommandé. Les services tels que YouTube, Facebook & Co. nécessitent un canal audio.","The video source is compatible. Select the desired resolution:":"La source vidéo est compatible. Sélectionnez la résolution souhaitée :","There are updates available. Here you get more information.":"Il y a des mises à jour disponibles. Ici vous obtenez plus d'informations.","There was a problem storing the settings. Settings not saved.":"Il y a eu un problème pour enregistrer les paramètres. Paramètres non sauvegardés.","There was an error connecting to Restreamer Core at {0}.":["Il y a eu une erreur de connexion à Restreamer Core à ",["0"],"."],"There was an error during upload: {0}":["Il y a eu une erreur pendant le téléchargement : ",["0"]],"There was an error setting up the stream.":"Il y a eu une erreur dans la configuration du flux.","There were some errors in the settings. Settings not saved.":"Il y avait des erreurs dans les paramètres. Les paramètres n'ont pas été sauvegardés.","There's no login method available.":"Il n'y a pas de méthode de connexion disponible.","This is a dummy service that explains to you the concepts of service.":"Il s'agit d'un service factice qui vous explique les concepts du service.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Il ne s'agit pas nécessairement d'une erreur. Cependant, le redémarrage de Restreamer Core peut prendre un peu plus de temps...","This is to mention the copyright regulations for the target of this service.":"Il s'agit de mentionner les règles de copyright pour la cible de ce service.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Cette licence permet aux réutilisateurs de copier et de distribuer le matériel sur n'importe quel support ou dans n'importe quel format, sous une forme non adaptée uniquement, et à condition que le créateur soit mentionné. La licence autorise l'utilisation commerciale.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Cette licence permet aux réutilisateurs de copier et de distribuer le matériel sur n'importe quel support ou dans n'importe quel format, sous une forme non adaptée uniquement, à des fins non commerciales et à condition que le créateur soit mentionné.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou dans n'importe quel format à des fins non commerciales uniquement, et à condition que le créateur soit mentionné.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou dans n'importe quel format à des fins non commerciales uniquement, et à condition que le créateur soit mentionné. Si vous remixez, adaptez ou développez le matériel, vous devez accorder une licence au matériel modifié selon des conditions identiques.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou format, à condition que le créateur soit mentionné. La licence autorise l'utilisation commerciale.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou format, à condition que le créateur soit mentionné. La licence autorise l'utilisation commerciale. Si vous remixez, adaptez ou développez le matériel, vous devez accorder une licence au matériel modifié selon des conditions identiques.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Cette source ne peut pas être éditée lorsqu'elle est en cours d'utilisation. Pour continuer, vous devez déconnecter la source.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Cette version de l'interface utilisateur ne prend pas en charge le binaire FFmpeg disponible (",["0"],"). L'interface utilisateur requiert ",["1"],". Veuillez utiliser un binaire FFmpeg supporté."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Cette version de l'IU ne prend pas en charge le Core connecté (",["0"],"). L'IU requiert ",["1"],". Veuillez utiliser une version compatible de l'IU."],"This version of the UI is compatible.":"Cette version de l'interface utilisateur est compatible.","Time until an inactive viewer connection is treated as closed.":"Temps jusqu'à ce qu'une connexion de téléspectateur inactive soit traitée comme fermée.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmettre des instantanés de la source principale à un serveur HTTP/S. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Transmet le canal audio de la source principale à un serveur Icecast. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmettre la source principale en tant que HTTP-Live-Streaming (HLS) à un serveur HTTP/S. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmettre la source principale en MPEG-DASH à un serveur HTTP/S. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Transmettre la source principale à un service Live de Brightcove. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Transmettre la source principale à un service CDN77 RTMP. Plus d'informations sur la configuration <0>ici.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Transmettre la source principale à un service DaCast RTMP. Plus d'informations sur la configuration <0>ici.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Transmettre la source principale à un service MPEG-TS. Vous trouverez plus de détails sur les réglages ici <0>ici.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur RTMP(e|s|t|te|ts). Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur RTSP. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur Red5/Pro. Vous trouverez plus de détails sur les réglages <0>ici.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur SRT. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur UDP. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Transmettre la source principale à un serveur WOWZA. Vous trouverez plus de détails sur les réglages <0>ici.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Transmettre la source principale à un datarhei Core Ressource. Plus de détails sur les paramètres peuvent être trouvés <0>ici.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Transmettre la source principale à une Ressource livespotting.com. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Transmettre la source principale à l'Akamai (MSL) Media Services Live. Vous trouverez plus de détails sur les paramètres de l'encodeur MSL sur <0>ici.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Transmettez la source principale au service d'encodage en nuage Bitmovin, un outil puissant pour le streaming en direct. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Transmettre la source principale au service RTMP de Restream. Vous trouverez plus de détails sur les paramètres <0>ici.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Transmet votre vidéo sous forme de flux RTMP avec la clé requise générée dans YouTube Studio. Vous pouvez trouver plus d'informations sur la configuration d'un flux en direct sur le site de la <0>Creator Academy de YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Transmet votre flux vidéo avec la clé requise, qui a été générée dans Twitter Producer. Vous trouverez plus d'informations sur la configuration d'un flux en direct sur le site <0>Producteur de Twitter.","Tune":"Tune","UDP transport":"Transport UDP","Unable to load the config.":"Impossible de charger la configuration.","Unique ident on the service.":"Identifiant unique sur le service.","Unknown":"Inconnu","Unselected":"Non sélectionné","Upload":"Télécharger","Uploading the file failed":"Le téléchargement du fichier a échoué","Uploading the logo failed":"Le téléchargement du logo a échoué","Uptime":"Temps de fonctionnement","Use Auth0 for your running Restreamer Core. More <0>details.":"Utilisez Auth0 pour votre noyau Restreamer en cours d'exécution. Plus de <0>détails.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Utilisez l'assistant (<0/>) pour une configuration rapide et facile, ou éditez (<1/>) les sources directement en mode personnalisé.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilisez vos droits d'auteur et choisissez la bonne licence d'image. Qu'elle soit libre pour tous ou fortement restreinte. Discutez brièvement de ce que les autres sont autorisés à faire avec votre image.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilisez vos droits d'auteur et choisissez la bonne licence d'image. Qu'il s'agisse d'une licence gratuite pour tous ou d'une licence très restreinte. Discutez brièvement de ce que les autres sont autorisés à faire avec votre image.","User registration":"Enregistrement de l'utilisateur","Username":"Nom d'utilisateur :","Username for authorization.":"Nom d'utilisateur pour l'autorisation.","Username for the device.":"Nom d'utilisateur pour l'appareil.","VPU ID":"ID VPU","Video":"Vidéo","Video device":"Appareil vidéo","Video settings":"Paramètres vidéo","Video setup":"Configuration vidéo","Video source":"Source vidéo","Viewer":"Visionneuse","Virtual source":"Source virtuelle","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Bienvenue à Restreamer v2, la solution pour la publication rapide et facile de vidéos. Gratuit pour une utilisation privée et commerciale. Plus d'aide dans les <0>docs.","Write protection":"Protection de l'écriture","YUV test pattern":"Mire de test YUV","Yes":"Oui","You can't abort the wizard because at least one input must be defined.":"Vous ne pouvez pas interrompre l'assistant car au moins une entrée doit être définie.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Vous avez modifié la configuration. Pour que les changements prennent effet, vous devez redémarrer l'application. Voulez-vous redémarrer maintenant ?","You have to reconnect manually":"Vous devez vous reconnecter manuellement","You have unsaved changes. Please save them before you can control the service again.":"Vous avez des modifications non sauvegardées. Veuillez les sauvegarder avant de pouvoir contrôler à nouveau le service.","Your stream needs to be encoded, but there's no suitable encoder available.":"Votre flux doit être encodé, mais aucun encodeur approprié n'est disponible.","Your stream needs to be encoded. Choose the desired encoder:":"Votre flux doit être encodé. Choisissez l'encodeur souhaité :","blue":"bleu","brown":"brun","iframe code":"code iframe","kbit/s":"kbit/s","pink":"rose","velvet":"velours","violet":"violet","white":"blanc"}}; \ No newline at end of file diff --git a/src/locales/fr/messages.po b/src/locales/fr/messages.po index 137bd9d..555393c 100644 --- a/src/locales/fr/messages.po +++ b/src/locales/fr/messages.po @@ -13,12 +13,16 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/views/Edit/Profile.js:372 -#: src/views/Edit/Profile.js:501 +#: src/misc/EncodingSelect.js:224 +msgid "<0>Compatibility list" +msgstr "<0>Liste des compatibilités" + +#: src/views/Edit/Profile.js:380 +#: src/views/Edit/Profile.js:510 msgid "<0>Show probe details" msgstr "<0>Montrer les détails de la sonde." -#: src/views/Edit/Sources/ALSA.js:150 +#: src/views/Edit/Sources/ALSA.js:156 msgid "ALSA" msgstr "ALSA" @@ -26,26 +30,26 @@ msgstr "ALSA" msgid "API endpoint not found. Settings not saved." msgstr "Le point de terminaison de l'API n'a pas été trouvé. Paramètres non sauvegardés." -#: src/views/Edit/Sources/AVFoundation.js:211 +#: src/views/Edit/Sources/AVFoundation.js:221 msgid "AVFoundation" msgstr "AVFoundation" #: src/misc/ChannelList.js:356 -#: src/views/Edit/Profile.js:402 -#: src/views/Edit/Wizard/index.js:1136 -#: src/views/Edit/index.js:547 -#: src/views/Edit/index.js:573 -#: src/views/Edit/index.js:592 +#: src/views/Edit/Profile.js:410 +#: src/views/Edit/Wizard/index.js:1153 +#: src/views/Edit/index.js:549 +#: src/views/Edit/index.js:575 +#: src/views/Edit/index.js:594 #: src/views/Publication/Add.js:362 #: src/views/Publication/Edit.js:601 -#: src/views/Settings.js:1967 -#: src/views/Settings.js:2026 -#: src/views/Settings.js:2048 +#: src/views/Settings.js:1972 +#: src/views/Settings.js:2031 +#: src/views/Settings.js:2053 msgid "Abort" msgstr "Abandonner" -#: src/Header.js:286 -#: src/Header.js:327 +#: src/Header.js:283 +#: src/Header.js:324 msgid "About" msgstr "À propos de" @@ -57,7 +61,7 @@ msgstr "Ajouter" msgid "Add Publication" msgstr "Ajouter une publication" -#: src/views/Playersite.js:679 +#: src/views/Playersite.js:692 msgid "Add external widgets and styles to the publication site. You can find some examples on the help page." msgstr "Ajoutez des widgets et des styles externes au site de publication. Vous pouvez trouver quelques exemples sur la page d'aide." @@ -69,10 +73,10 @@ msgstr "Ajouter un nouveau canal" msgid "Add: {0}" msgstr "Ajouter : {0}" -#: src/views/Edit/Sources/Network.js:339 +#: src/views/Edit/Sources/Network.js:355 #: src/views/Edit/Wizard/Sources/Network.js:66 #: src/views/Publication/Services/Brightcove.js:95 -#: src/views/Publication/Services/Core.js:99 +#: src/views/Publication/Services/Core.js:100 #: src/views/Publication/Services/DASH.js:192 #: src/views/Publication/Services/HLS.js:181 #: src/views/Publication/Services/Icecast.js:160 @@ -84,23 +88,23 @@ msgstr "Ajouter : {0}" #: src/views/Publication/Services/SRT.js:161 #: src/views/Publication/Services/UDP.js:127 #: src/views/Publication/Services/WOWZA.js:132 -#: src/views/Settings.js:1297 +#: src/views/Settings.js:1302 msgid "Address" msgstr "Adresse" -#: src/views/Playersite.js:616 +#: src/views/Playersite.js:629 msgid "Address for the background image." msgstr "Adresse pour l'image de fond." -#: src/views/Settings.js:1326 +#: src/views/Settings.js:1331 msgid "Address to listen on for HTTP requests." msgstr "Adresse d'écoute pour les demandes HTTP." -#: src/views/Settings.js:1339 +#: src/views/Settings.js:1344 msgid "Address to listen on for HTTPS requests." msgstr "Adresse à écouter pour les demandes HTTPS." -#: src/views/Playersite.js:501 +#: src/views/Playersite.js:514 msgid "Adjust publication site colors and background as you like." msgstr "Ajustez les couleurs et le fond du site de publication comme vous le souhaitez." @@ -108,7 +112,7 @@ msgstr "Ajustez les couleurs et le fond du site de publication comme vous le sou msgid "Advanced monitoring" msgstr "Surveillance avancée" -#: src/views/Edit/Sources/Network.js:380 +#: src/views/Edit/Sources/Network.js:396 #: src/views/Publication/Services/DASH.js:204 #: src/views/Publication/Services/HLS.js:193 #: src/views/Publication/Services/Icecast.js:170 @@ -121,7 +125,7 @@ msgstr "Surveillance avancée" msgid "Advanced settings" msgstr "Paramètres avancés" -#: src/views/Edit/Wizard/index.js:280 +#: src/views/Edit/Wizard/index.js:287 msgid "Advanced setup" msgstr "Configuration avancée" @@ -137,11 +141,11 @@ msgstr "Tous" msgid "All important system settings." msgstr "Tous les paramètres importants du système." -#: src/views/Settings.js:1473 +#: src/views/Settings.js:1478 msgid "Allow all referrer" msgstr "Autoriser tous les référents" -#: src/views/Settings.js:1513 +#: src/views/Settings.js:1518 msgid "Allow counting how many viewers the stream has." msgstr "Permet de compter le nombre de spectateurs du flux." @@ -153,8 +157,8 @@ msgstr "Amplitude" msgid "An environment variable sets this value." msgstr "Une variable d'environnement définit cette valeur." -#: src/views/Publication/Services/Core.js:109 -#: src/views/Settings.js:1811 +#: src/views/Publication/Services/Core.js:107 +#: src/views/Settings.js:1816 msgid "App" msgstr "App" @@ -164,7 +168,7 @@ msgstr "App" msgid "Application" msgstr "Application" -#: src/views/Edit/Wizard/index.js:1155 +#: src/views/Edit/Wizard/index.js:1172 msgid "Are you sure you want to abort the wizard?" msgstr "Êtes-vous sûr de vouloir interrompre l'assistant ?" @@ -172,27 +176,27 @@ msgstr "Êtes-vous sûr de vouloir interrompre l'assistant ?" msgid "Audio" msgstr "Audio" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:92 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:111 msgid "Audio Device" msgstr "Dispositif audio" -#: src/views/Edit/Sources/ALSA.js:101 -#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/ALSA.js:114 +#: src/views/Edit/Sources/AVFoundation.js:159 msgid "Audio device" msgstr "Dispositif audio" -#: src/views/Edit/Wizard/index.js:858 -#: src/views/Edit/Wizard/index.js:870 +#: src/views/Edit/Wizard/index.js:875 +#: src/views/Edit/Wizard/index.js:887 msgid "Audio from device" msgstr "Audio de l'appareil" -#: src/views/Edit/Profile.js:417 -#: src/views/Edit/ProfileSummary.js:89 +#: src/views/Edit/Profile.js:425 +#: src/views/Edit/ProfileSummary.js:90 #: src/views/Publication/Edit.js:533 msgid "Audio settings" msgstr "Paramètres audio" -#: src/views/Edit/Wizard/index.js:811 +#: src/views/Edit/Wizard/index.js:828 msgid "Audio setup" msgstr "Configuration audio" @@ -208,43 +212,47 @@ msgstr "Auth0 Locataire" msgid "Auth0 is currently not available because this interface is loaded from an insecure origin." msgstr "Auth0 n'est actuellement pas disponible car cette interface est chargée depuis une origine non sécurisée." -#: src/misc/controls/Metadata.js:74 +#: src/misc/controls/Metadata.js:71 msgid "Author" msgstr "Auteur" #: src/views/Settings.js:1143 -#: src/views/Settings.js:1410 +#: src/views/Settings.js:1415 msgid "Authorization" msgstr "Autorisation" -#: src/views/Publication/Player.js:434 +#: src/misc/controls/HLS.js:83 +msgid "Automatic cleanup of all media data" +msgstr "Nettoyage automatique de toutes les données des médias" + +#: src/views/Publication/Player.js:437 msgid "Autoplay" msgstr "Jeu automatique" -#: src/views/Playersite.js:434 +#: src/views/Playersite.js:445 msgid "Available" msgstr "Disponible sur" -#: src/views/Edit/Profile.js:532 -#: src/views/Edit/Wizard/index.js:394 -#: src/views/Edit/Wizard/index.js:630 -#: src/views/Edit/Wizard/index.js:895 -#: src/views/Edit/Wizard/index.js:1007 -#: src/views/Edit/Wizard/index.js:1065 -#: src/views/Edit/Wizard/index.js:1147 +#: src/views/Edit/Profile.js:541 +#: src/views/Edit/Wizard/index.js:408 +#: src/views/Edit/Wizard/index.js:647 +#: src/views/Edit/Wizard/index.js:912 +#: src/views/Edit/Wizard/index.js:1024 +#: src/views/Edit/Wizard/index.js:1082 +#: src/views/Edit/Wizard/index.js:1164 #: src/views/Publication/Add.js:528 msgid "Back" msgstr "Dos" -#: src/views/Playersite.js:550 +#: src/views/Playersite.js:563 msgid "Background colors" msgstr "Couleurs d'arrière-plan" -#: src/views/Playersite.js:603 +#: src/views/Playersite.js:616 msgid "Background image" msgstr "Image de fond" -#: src/views/Publication/Services/Akamai.js:195 +#: src/views/Publication/Services/Akamai.js:196 msgid "Backup URL" msgstr "URL de sauvegarde" @@ -256,7 +264,7 @@ msgstr "Serveur de sauvegarde" msgid "Backup stream" msgstr "Flux de sauvegarde" -#: src/views/Publication/Services/Facebook.js:128 +#: src/views/Publication/Services/Facebook.js:124 msgid "Backup stream key" msgstr "Clé du flux de sauvegarde" @@ -265,7 +273,7 @@ msgstr "Clé du flux de sauvegarde" msgid "Bandwidth" msgstr "Bande passante" -#: src/views/Settings.js:1368 +#: src/views/Settings.js:1373 msgid "Bandwidth control" msgstr "Contrôle de la bande passante" @@ -274,7 +282,7 @@ msgid "Banner" msgstr "Bannière" #: src/views/Login.js:241 -#: src/views/Settings.js:1415 +#: src/views/Settings.js:1420 msgid "Basic" msgstr "Base" @@ -287,40 +295,40 @@ msgstr "Facteur Bip" msgid "Bitrate" msgstr "Bitrate" -#: src/views/Edit/Wizard/index.js:996 -#: src/views/Edit/index.js:508 +#: src/views/Edit/Wizard/index.js:1013 +#: src/views/Edit/index.js:510 msgid "Briefly describe what the audience will see during the live stream." msgstr "Décrivez brièvement ce que le public verra pendant le streaming en direct." -#: src/views/Publication/Player.js:349 +#: src/views/Publication/Player.js:352 msgid "Button color" msgstr "Couleur du bouton" -#: src/views/Settings.js:1682 +#: src/views/Settings.js:1687 msgid "Cache for files on /data." msgstr "Cache pour les fichiers sur /data." -#: src/views/Settings.js:1710 +#: src/views/Settings.js:1715 msgid "Cache time (Seconds)" msgstr "Temps de cache (Secondes)" -#: src/views/Settings.js:1738 +#: src/views/Settings.js:1743 msgid "Cache types" msgstr "Types de caches" -#: src/views/Edit/Sources/AVFoundation.js:188 +#: src/views/Edit/Sources/AVFoundation.js:197 msgid "Capture clicks" msgstr "Capture des clics" -#: src/views/Edit/Sources/AVFoundation.js:185 +#: src/views/Edit/Sources/AVFoundation.js:194 msgid "Capture cursor" msgstr "Curseur de capture" -#: src/views/Edit/index.js:326 +#: src/views/Edit/index.js:327 msgid "Channel \"{0}\" saved" msgstr "Canal \"{0}\" sauvegardé" -#: src/views/Edit/Sources/ALSA.js:124 +#: src/views/Edit/Sources/ALSA.js:129 msgid "Channels" msgstr "Chaînes" @@ -340,14 +348,14 @@ msgstr "Choisissez un flux vidéo" msgid "Choose an audio stream" msgstr "Choisissez un flux audio" -#: src/views/Edit/Sources/ALSA.js:90 +#: src/views/Edit/Sources/ALSA.js:96 #: src/views/Edit/Sources/Framebuffer.js:80 #: src/views/Edit/Sources/Raspicam.js:84 -#: src/views/Edit/Sources/V4L.js:84 +#: src/views/Edit/Sources/V4L.js:90 msgid "Choose an input device ..." msgstr "Choisissez un périphérique d'entrée ..." -#: src/misc/EncodingSelect.js:190 +#: src/misc/EncodingSelect.js:202 msgid "Choose codec ..." msgstr "Choisissez le codec ..." @@ -360,28 +368,28 @@ msgstr "Choisir le locataire ..." msgid "Chunk" msgstr "Chunk" -#: src/misc/ModalContent.js:87 -#: src/views/Playersite.js:769 +#: src/misc/ModalContent.js:77 +#: src/views/Playersite.js:782 #: src/views/Publication/Add.js:525 #: src/views/Publication/Edit.js:565 -#: src/views/Publication/Player.js:444 +#: src/views/Publication/Player.js:447 msgid "Close" msgstr "Fermer" -#: src/views/Playersite.js:352 +#: src/views/Playersite.js:354 msgid "Code injection" msgstr "Injection de code" -#: src/misc/EncodingSelect.js:188 +#: src/misc/EncodingSelect.js:200 msgid "Codec" msgstr "Codec" #: src/views/Edit/Sources/VirtualAudio.js:110 -#: src/views/Publication/Player.js:317 +#: src/views/Publication/Player.js:320 msgid "Color" msgstr "Couleur" -#: src/views/Settings.js:1277 +#: src/views/Settings.js:1282 msgid "Config" msgstr "Config" @@ -393,7 +401,7 @@ msgstr "Conf confirmer le mot de passe" msgid "Connect" msgstr "Connectez-vous à" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:134 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:157 msgid "Connected device" msgstr "Appareil connecté" @@ -402,7 +410,7 @@ msgid "Connected since <0/>" msgstr "Connecté depuis <0/>" #: src/misc/ActionButton.js:12 -#: src/views/Main/index.js:308 +#: src/views/Main/index.js:305 #: src/views/Publication/Process.js:40 msgid "Connecting ..." msgstr "Connecter ..." @@ -415,12 +423,16 @@ msgstr "Connexion à Restreamer Core ..." msgid "Connecting to Restreamer Core failed probably because of mixed content." msgstr "La connexion à Restreamer Core a échoué, probablement en raison d'un contenu mixte." -#: src/misc/controls/Metadata.js:73 -#: src/views/Playersite.js:646 -#: src/views/Playersite.js:663 +#: src/misc/controls/Metadata.js:70 +#: src/views/Playersite.js:659 +#: src/views/Playersite.js:676 msgid "Content" msgstr "Contenu" +#: src/views/Main/index.js:365 +msgid "Content URL" +msgstr "" + #: src/Footer.js:193 msgid "Cores" msgstr "Cœurs" @@ -442,22 +454,22 @@ msgstr "Creative Commons" #: src/misc/coders/settings/Video.js:115 #: src/misc/coders/settings/Video.js:181 #: src/misc/coders/settings/Video.js:220 -#: src/views/Edit/Sources/ALSA.js:95 -#: src/views/Edit/Sources/AVFoundation.js:114 -#: src/views/Edit/Sources/AVFoundation.js:147 -#: src/views/Edit/Sources/V4L.js:90 +#: src/views/Edit/Sources/ALSA.js:101 +#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/V4L.js:96 msgid "Custom ..." msgstr "Personnalisé..." -#: src/views/Settings.js:1283 +#: src/views/Settings.js:1288 msgid "Custom JSON config for datarhei Core." msgstr "Configuration JSON personnalisée pour le noyau datarhei." -#: src/views/Edit/Sources/ALSA.js:102 +#: src/views/Edit/Sources/ALSA.js:115 msgid "Custom audio device" msgstr "Dispositif audio personnalisé" -#: src/views/Edit/Sources/AVFoundation.js:154 +#: src/views/Edit/Sources/AVFoundation.js:160 msgid "Custom audio index" msgstr "Index audio personnalisé" @@ -466,7 +478,7 @@ msgstr "Index audio personnalisé" msgid "Custom bitrate (kbit/s)" msgstr "Débit binaire personnalisé (kbit/s)" -#: src/views/Playersite.js:674 +#: src/views/Playersite.js:687 msgid "Custom code injection" msgstr "Injection de code personnalisé" @@ -506,35 +518,36 @@ msgstr "Échelle personnalisée" msgid "Custom size" msgstr "Taille personnalisée" -#: src/views/Edit/Sources/V4L.js:97 +#: src/views/Edit/Sources/V4L.js:110 msgid "Custom video device" msgstr "Dispositif vidéo personnalisé" -#: src/views/Edit/Sources/AVFoundation.js:121 +#: src/views/Edit/Sources/AVFoundation.js:127 msgid "Custom video index" msgstr "Index vidéo personnalisé" -#: src/misc/TextFieldCopy.js:44 +#: src/misc/CopyButton.js:20 +#: src/misc/TextFieldCopy.js:33 #: src/misc/Textarea.js:46 msgid "Data copied to clipboard" msgstr "Données copiées dans le presse-papiers" -#: src/views/Edit/Sources/VirtualVideo.js:164 +#: src/views/Edit/Sources/VirtualVideo.js:167 msgid "Death color" msgstr "Couleur de la mort" -#: src/misc/EncodingSelect.js:198 -#: src/views/Edit/Wizard/index.js:611 +#: src/misc/EncodingSelect.js:210 +#: src/views/Edit/Wizard/index.js:628 msgid "Decoder" msgstr "Décodeur" -#: src/views/Edit/Sources/AVFoundation.js:109 -#: src/views/Edit/Sources/AVFoundation.js:143 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:61 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:87 -#: src/views/Playersite.js:440 -#: src/views/Playersite.js:513 -#: src/views/Playersite.js:557 +#: src/views/Edit/Sources/AVFoundation.js:115 +#: src/views/Edit/Sources/AVFoundation.js:149 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:76 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:105 +#: src/views/Playersite.js:451 +#: src/views/Playersite.js:526 +#: src/views/Playersite.js:570 msgid "Default" msgstr "Défaut" @@ -542,13 +555,13 @@ msgstr "Défaut" msgid "Delay" msgstr "Délai" -#: src/views/Edit/Sources/ALSA.js:127 +#: src/views/Edit/Sources/ALSA.js:132 msgid "Delay (ms)" msgstr "Délai (ms)" -#: src/views/Edit/index.js:561 -#: src/views/Edit/index.js:597 -#: src/views/Playersite.js:461 +#: src/views/Edit/index.js:563 +#: src/views/Edit/index.js:599 +#: src/views/Playersite.js:474 #: src/views/Publication/Edit.js:574 #: src/views/Publication/Edit.js:606 msgid "Delete" @@ -563,18 +576,18 @@ msgstr "La suppression d'un service de publication ne peut pas être annulée. L msgid "Delivering mode" msgstr "Mode de livraison" -#: src/misc/controls/Metadata.js:88 -#: src/misc/controls/Metadata.js:113 +#: src/misc/controls/Metadata.js:85 +#: src/misc/controls/Metadata.js:110 msgid "Description" msgstr "Description" -#: src/views/Playersite.js:350 -#: src/views/Playersite.js:496 +#: src/views/Playersite.js:352 +#: src/views/Playersite.js:509 msgid "Design" msgstr "Design" #: src/views/Edit/Sources/Framebuffer.js:87 -#: src/views/Edit/Wizard/index.js:873 +#: src/views/Edit/Wizard/index.js:890 #: src/views/Publication/Services/Framebuffer.js:93 msgid "Device" msgstr "Dispositif" @@ -585,7 +598,7 @@ msgstr "Dispositif" msgid "Disconnect" msgstr "Déconnexion" -#: src/views/Edit/index.js:578 +#: src/views/Edit/index.js:580 msgid "Disconnect & Continue" msgstr "Déconnecter et continuer" @@ -594,12 +607,12 @@ msgstr "Déconnecter et continuer" msgid "Disconnecting ..." msgstr "Déconnexion ..." -#: src/views/Settings.js:1645 +#: src/views/Settings.js:1650 msgid "Disk" msgstr "Disque" -#: src/views/Settings.js:1679 -#: src/views/Settings.js:1687 +#: src/views/Settings.js:1684 +#: src/views/Settings.js:1692 msgid "Disk cache" msgstr "Cache disque" @@ -608,11 +621,11 @@ msgstr "Cache disque" msgid "Disk storage" msgstr "Stockage sur disque" -#: src/views/Settings.js:2058 +#: src/views/Settings.js:2063 msgid "Do you really want to restart the application now?" msgstr "Voulez-vous vraiment redémarrer l'application maintenant ?" -#: src/views/Edit/index.js:589 +#: src/views/Edit/index.js:591 msgid "Do you want to delete \"{0}\"?" msgstr "Voulez-vous supprimer \"{0}\" ?" @@ -620,12 +633,12 @@ msgstr "Voulez-vous supprimer \"{0}\" ?" msgid "Do you want to delete {title}?" msgstr "Voulez-vous supprimer {titre} ?" -#: src/views/Edit/index.js:570 +#: src/views/Edit/index.js:572 msgid "Do you want to disconnect \"{0}\"?" msgstr "Voulez-vous déconnecter \"{0}\" ?" -#: src/Header.js:292 -#: src/Header.js:333 +#: src/Header.js:289 +#: src/Header.js:330 msgid "Docs" msgstr "Docs" @@ -645,19 +658,19 @@ msgstr "Documentation" msgid "Dup. frames" msgstr "Cadres de duplication" -#: src/views/Publication/Player.js:282 +#: src/views/Publication/Player.js:285 msgid "EDIT: Player" msgstr "EDIT : Joueur" -#: src/views/Playersite.js:344 +#: src/views/Playersite.js:346 msgid "EDIT: Publication Website" msgstr "EDIT : Site de la publication" -#: src/views/Edit/index.js:390 +#: src/views/Edit/index.js:391 msgid "Edit" msgstr "Modifier" -#: src/views/Edit/index.js:416 +#: src/views/Edit/index.js:417 msgid "Edit the audio and video sources for the live stream. Add a description, and set your desired content license." msgstr "Modifiez les sources audio et vidéo pour le flux en direct. Ajoutez une description, et définissez la licence de votre contenu souhaité." @@ -665,11 +678,11 @@ msgstr "Modifiez les sources audio et vidéo pour le flux en direct. Ajoutez une msgid "Edit: {title}" msgstr "Edit : {title}" -#: src/views/Publication/Player.js:316 +#: src/views/Publication/Player.js:319 msgid "Embed" msgstr "Intégrer" -#: src/views/Edit/Sources/Network.js:561 +#: src/views/Edit/Sources/Network.js:577 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:55 msgid "Enable RTMP server ..." msgstr "Activer le serveur RTMP ..." @@ -679,16 +692,16 @@ msgid "Enable a periodic beep every second with this value times the carrier fre msgstr "Active un bip périodique toutes les secondes avec cette valeur multipliée par la fréquence porteuse" #: src/views/Publication/Services/Dummy.js:278 -#: src/views/Publication/Services/Facebook.js:147 +#: src/views/Publication/Services/Facebook.js:139 msgid "Enable backup stream" msgstr "Activer le flux de sauvegarde" -#: src/views/Publication/Player.js:424 +#: src/views/Publication/Player.js:427 msgid "Enable nerd statistics" msgstr "Activer les statistiques des nerds" #: src/views/Publication/Services/Dummy.js:277 -#: src/views/Publication/Services/Facebook.js:146 +#: src/views/Publication/Services/Facebook.js:138 msgid "Enable primary stream" msgstr "Activer le flux primaire" @@ -696,15 +709,15 @@ msgstr "Activer le flux primaire" msgid "Enable snapshots" msgstr "Activer les instantanés" -#: src/views/Settings.js:1428 +#: src/views/Settings.js:1433 msgid "Enabling authorization is strongly advised. Otherwise, anybody can access this instance." msgstr "Il est fortement conseillé d'activer l'autorisation. Sinon, n'importe qui peut accéder à cette instance." -#: src/views/Settings.js:1588 +#: src/views/Settings.js:1593 msgid "Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs." msgstr "L'activation de l'authentification de base est fortement conseillée. Sinon, n'importe qui pourrait écrire des données sur /memfs." -#: src/views/Edit/Wizard/index.js:617 +#: src/views/Edit/Wizard/index.js:634 msgid "Encoder" msgstr "Codeur" @@ -730,7 +743,7 @@ msgstr "Saisissez un nom pour le nouveau canal." msgid "Enter password" msgstr "Entrez le mot de passe" -#: src/views/Edit/Sources/Network.js:332 +#: src/views/Edit/Sources/Network.js:348 #: src/views/Edit/Wizard/Sources/Network.js:59 msgid "Enter the address of your network source:" msgstr "Saisissez l'adresse de votre source réseau :" @@ -743,7 +756,7 @@ msgstr "Entrez le nom d'utilisateur" msgid "Entropy coder" msgstr "Codeur d'entropie" -#: src/views/Edit/Wizard/index.js:1101 +#: src/views/Edit/Wizard/index.js:1118 #: src/views/Incompatible.js:30 #: src/views/Invalid.js:29 #: src/views/Publication/Process.js:63 @@ -751,45 +764,46 @@ msgstr "Codeur d'entropie" msgid "Error" msgstr "Erreur" -#: src/misc/TextFieldCopy.js:46 +#: src/misc/CopyButton.js:22 +#: src/misc/TextFieldCopy.js:35 #: src/misc/Textarea.js:48 msgid "Error while copying data to clipboard" msgstr "Erreur lors de la copie de données dans le presse-papiers" -#: src/views/Main/index.js:327 +#: src/views/Main/index.js:324 #: src/views/Publication/Process.js:64 msgid "Error: {0}" msgstr "Erreur : {0}" -#: src/views/Playersite.js:719 +#: src/views/Playersite.js:732 msgid "Expands the area above the channel list (live chat)." msgstr "Agrandit la zone au-dessus de la liste des chaînes (chat en direct)." -#: src/views/Playersite.js:739 +#: src/views/Playersite.js:752 msgid "Expands the area under the channel description (comment boxes)." msgstr "Agrandit la zone située sous la description du canal (cases de commentaires)." -#: src/views/Settings.js:1194 +#: src/views/Settings.js:1199 msgid "Expert mode" msgstr "Mode expert" -#: src/views/Playersite.js:704 +#: src/views/Playersite.js:717 msgid "Extend channel list" msgstr "Étendre la liste des canaux" -#: src/views/Playersite.js:724 +#: src/views/Playersite.js:737 msgid "Extend content" msgstr "Étendre le contenu" -#: src/views/Playersite.js:744 +#: src/views/Playersite.js:757 msgid "Extend footer" msgstr "Étendre le pied de page" -#: src/views/Playersite.js:684 +#: src/views/Playersite.js:697 msgid "Extend header" msgstr "Prolonger l'en-tête" -#: src/views/Settings.js:1931 +#: src/views/Settings.js:1936 msgid "FFmpeg" msgstr "FFmpeg" @@ -798,20 +812,16 @@ msgstr "FFmpeg" msgid "FPS" msgstr "FPS" -#: src/views/Edit/index.js:290 -msgid "Failed to correctly cleanup previous process data" -msgstr "Impossible de nettoyer correctement les données du processus précédent" - #: src/views/Publication/Add.js:180 msgid "Failed to create publication service ({0})" msgstr "Échec de la création du service de publication ({0})" -#: src/views/Playersite.js:308 +#: src/views/Playersite.js:310 msgid "Failed to create publication website files." msgstr "Échec de la création des fichiers du site Web de publication." -#: src/views/Edit/Profile.js:333 -#: src/views/Edit/Profile.js:462 +#: src/views/Edit/Profile.js:341 +#: src/views/Edit/Profile.js:471 msgid "Failed to probe the source. Please check the <0>probe details." msgstr "Impossible de sonder la source. Veuillez vérifier les <0>détails de la sonde." @@ -819,7 +829,7 @@ msgstr "Impossible de sonder la source. Veuillez vérifier les <0>détails de la msgid "Failed to refresh token: {0}" msgstr "Échec du rafraîchissement du jeton : {0}" -#: src/views/Edit/index.js:303 +#: src/views/Edit/index.js:304 msgid "Failed to save ingest metadata" msgstr "Échec de la sauvegarde des métadonnées d'ingestion" @@ -827,7 +837,7 @@ msgstr "Échec de la sauvegarde des métadonnées d'ingestion" msgid "Failed to stop process" msgstr "Échec de l'arrêt du processus" -#: src/views/Playersite.js:301 +#: src/views/Playersite.js:303 msgid "Failed to store player size setting." msgstr "Échec de l'enregistrement du paramètre de taille du lecteur." @@ -835,36 +845,36 @@ msgstr "Échec de l'enregistrement du paramètre de taille du lecteur." msgid "Failed to store publication service ({0})" msgstr "Échec du stockage du service de publication ({0})" -#: src/views/Edit/index.js:296 +#: src/views/Edit/index.js:297 msgid "Failed to update ingest process ({0})" msgstr "Échec de la mise à jour du processus d'ingestion ({0})" -#: src/views/Edit/index.js:309 +#: src/views/Edit/index.js:310 msgid "Failed to update the player" msgstr "Échec de la mise à jour du lecteur" -#: src/views/Edit/Wizard/index.js:361 -#: src/views/Edit/Wizard/index.js:821 +#: src/views/Edit/Wizard/index.js:375 +#: src/views/Edit/Wizard/index.js:838 msgid "Failed to verify the source. Please check the address." msgstr "Impossible de vérifier la source. Veuillez vérifier l'adresse." -#: src/views/Edit/Profile.js:540 +#: src/views/Edit/Profile.js:549 msgid "Finish" msgstr "Finition" -#: src/views/Edit/Sources/VirtualVideo.js:170 +#: src/views/Edit/Sources/VirtualVideo.js:182 msgid "Flags" msgstr "Drapeaux" -#: src/views/Playersite.js:759 +#: src/views/Playersite.js:772 msgid "For Javascripts." msgstr "Pour les Javascripts." -#: src/views/Playersite.js:699 +#: src/views/Playersite.js:712 msgid "For Stylesheets." msgstr "Pour les feuilles de style." -#: src/views/Edit/Sources/Network.js:423 +#: src/views/Edit/Sources/Network.js:439 msgid "Force input framerate" msgstr "Forcer le taux de rafraîchissement de l'entrée" @@ -881,7 +891,7 @@ msgid "Framebuffer" msgstr "Framebuffer" #: src/misc/coders/settings/Video.js:135 -#: src/views/Edit/Sources/Network.js:436 +#: src/views/Edit/Sources/Network.js:452 msgid "Framerate" msgstr "Fréquence d'images" @@ -889,21 +899,22 @@ msgstr "Fréquence d'images" msgid "Frequency (Hz)" msgstr "Fréquence (Hz)" -#: src/views/Publication/Services/Facebook.js:119 -#: src/views/Publication/Services/Facebook.js:141 +#: src/views/Publication/Services/Core.js:129 +#: src/views/Publication/Services/Facebook.js:115 +#: src/views/Publication/Services/Facebook.js:133 #: src/views/Publication/Services/Instagram.js:88 -#: src/views/Publication/Services/Restream.js:124 -#: src/views/Publication/Services/Twitch.js:137 +#: src/views/Publication/Services/Restream.js:120 +#: src/views/Publication/Services/Twitch.js:133 #: src/views/Publication/Services/Twitter.js:179 #: src/views/Publication/Services/Youtube.js:177 msgid "GET" msgstr "GET" -#: src/views/Edit/Sources/Network.js:455 -#: src/views/Edit/index.js:399 -#: src/views/Edit/index.js:411 -#: src/views/Playersite.js:348 -#: src/views/Playersite.js:361 +#: src/views/Edit/Sources/Network.js:471 +#: src/views/Edit/index.js:400 +#: src/views/Edit/index.js:412 +#: src/views/Playersite.js:350 +#: src/views/Playersite.js:363 #: src/views/Publication/Add.js:372 #: src/views/Publication/Edit.js:386 #: src/views/Publication/Services/DASH.js:211 @@ -918,52 +929,49 @@ msgstr "GET" msgid "General" msgstr "Général" -#: src/views/Publication/Player.js:407 +#: src/views/Publication/Player.js:410 msgid "Google Analytics ID" msgstr "ID Google Analytics" -#: src/views/Publication/Player.js:417 +#: src/views/Publication/Player.js:420 msgid "Google Analytics Tracker Name" msgstr "Nom du tracker Google Analytics" -#: src/views/Edit/index.js:469 +#: src/views/Edit/index.js:471 +#: src/views/Main/index.js:369 msgid "HLS" msgstr "HLS" -#: src/views/Main/index.js:367 -msgid "HLS URL" -msgstr "URL HLS" - -#: src/views/Settings.js:1505 +#: src/views/Settings.js:1510 msgid "HLS statistic for the In-memory storage" msgstr "Statistique HLS pour le stockage en mémoire" -#: src/views/Edit/Sources/Network.js:413 +#: src/views/Edit/Sources/Network.js:429 msgid "HTTP and HTTPS" msgstr "HTTP et HTTPS" -#: src/views/Settings.js:1318 +#: src/views/Settings.js:1323 msgid "HTTP port" msgstr "Port HTTP" -#: src/views/Settings.js:1347 +#: src/views/Settings.js:1352 msgid "HTTPS (SSL/TLS)" msgstr "HTTPS (SSL/TLS)" -#: src/views/Settings.js:1331 +#: src/views/Settings.js:1336 msgid "HTTPS port" msgstr "Port HTTPS" -#: src/views/Edit/Sources/V4L.js:145 -#: src/views/Edit/Wizard/Sources/V4L.js:120 +#: src/views/Edit/Sources/V4L.js:151 +#: src/views/Edit/Wizard/Sources/V4L.js:140 msgid "Hardware device" msgstr "Dispositif matériel" -#: src/views/Playersite.js:566 +#: src/views/Playersite.js:579 msgid "Header" msgstr "En-tête" -#: src/views/Playersite.js:522 +#: src/views/Playersite.js:535 msgid "Headline" msgstr "A la une" @@ -971,7 +979,7 @@ msgstr "A la une" msgid "Hosted Restreamer interface" msgstr "Interface hébergée de Restreamer" -#: src/views/Settings.js:1253 +#: src/views/Settings.js:1258 msgid "Human readable name on the service." msgstr "Nom lisible par l'homme sur le service." @@ -979,32 +987,32 @@ msgstr "Nom lisible par l'homme sur le service." msgid "IP address" msgstr "Adresse IP" -#: src/views/Settings.js:2003 +#: src/views/Settings.js:2008 msgid "If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port." msgstr "Si vous avez changé les ports, il se peut que Restreamer Core ait déjà redémarré, mais qu'il soit maintenant disponible sur un port différent." -#: src/views/Settings.js:1997 +#: src/views/Settings.js:2002 msgid "If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core." msgstr "Si vous avez activé Let's Encrypt TLS, l'acquisition des certificats peut prendre un certain temps. Assurez-vous que Restreamer Core est joignable via le port 80 depuis Internet. Veuillez vérifier le journal de la console de Restreamer Core." -#: src/views/Settings.js:1520 +#: src/views/Settings.js:1525 msgid "Ignore IP ranges" msgstr "Ignorer les plages IP" -#: src/views/Playersite.js:611 -#: src/views/Publication/Player.js:363 +#: src/views/Playersite.js:624 +#: src/views/Publication/Player.js:366 msgid "Image URL" msgstr "URL de l'image" -#: src/views/Playersite.js:636 +#: src/views/Playersite.js:649 msgid "Imprint" msgstr "Impression" -#: src/views/Playersite.js:366 +#: src/views/Playersite.js:368 msgid "In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly." msgstr "En plus du lecteur, le Restreamer offre une page d'accueil complète, que vous pouvez utiliser pour présenter votre flux en direct facilement et rapidement." -#: src/views/Settings.js:1572 +#: src/views/Settings.js:1577 msgid "In-memory" msgstr "En mémoire" @@ -1022,19 +1030,19 @@ msgstr "Incompatibilité" msgid "Inherit" msgstr "Hériter de" -#: src/views/Playersite.js:694 +#: src/views/Playersite.js:707 msgid "Inject 1" msgstr "Injecter 1" -#: src/views/Playersite.js:714 +#: src/views/Playersite.js:727 msgid "Inject 2" msgstr "Injecter 2" -#: src/views/Playersite.js:734 +#: src/views/Playersite.js:747 msgid "Inject 3" msgstr "Injecter 3" -#: src/views/Playersite.js:754 +#: src/views/Playersite.js:767 msgid "Inject 4" msgstr "Injecter 4" @@ -1050,8 +1058,8 @@ msgstr "Serveur RTMP interne" msgid "Interval (seconds)" msgstr "Intervalle (secondes)" -#: src/Header.js:298 -#: src/Header.js:339 +#: src/Header.js:295 +#: src/Header.js:336 msgid "Issue alert" msgstr "Alerte aux problèmes" @@ -1063,11 +1071,11 @@ msgstr "Intervalle entre les images clés (secondes)" msgid "Layout" msgstr "Mise en page" -#: src/views/Settings.js:1352 +#: src/views/Settings.js:1357 msgid "Let's Encrypt certification" msgstr "Certification Let's Encrypt" -#: src/views/Settings.js:1360 +#: src/views/Settings.js:1365 msgid "Let's Encrypt requires one or more public domain names and an accessible port 80/TCP." msgstr "Let's Encrypt requiert un ou plusieurs noms de domaine publics et un port 80/TCP accessible." @@ -1075,42 +1083,42 @@ msgstr "Let's Encrypt requiert un ou plusieurs noms de domaine publics et un por msgid "Level" msgstr "Niveau" -#: src/views/Settings.js:1913 +#: src/views/Settings.js:1918 msgid "Level of system protocol." msgstr "Niveau du protocole du système." -#: src/views/Edit/Wizard/index.js:1044 -#: src/views/Edit/index.js:402 -#: src/views/Edit/index.js:523 +#: src/views/Edit/Wizard/index.js:1061 +#: src/views/Edit/index.js:403 +#: src/views/Edit/index.js:525 msgid "License" msgstr "Licence" -#: src/views/Edit/Sources/VirtualVideo.js:167 +#: src/views/Edit/Sources/VirtualVideo.js:176 msgid "Life color" msgstr "Couleur de la vie" -#: src/views/Playersite.js:593 +#: src/views/Playersite.js:606 msgid "Linecolor" msgstr "Linecolor" -#: src/views/Playersite.js:531 -#: src/views/Publication/Player.js:393 +#: src/views/Playersite.js:544 +#: src/views/Publication/Player.js:396 msgid "Link" msgstr "Lien" -#: src/views/Playersite.js:540 +#: src/views/Playersite.js:553 msgid "Link, mouseover" msgstr "Lien, survol de la souris" -#: src/views/Settings.js:1528 +#: src/views/Settings.js:1533 msgid "List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions." msgstr "Liste des plages IP en notation CIDR, par exemple, 127.0.0.1/32, que les statistiques n'enregistreront pas - une plage IP par ligne. Laissez vide pour enregistrer toutes les sessions." -#: src/views/Settings.js:1746 +#: src/views/Settings.js:1751 msgid "List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types." msgstr "Liste des extensions de fichiers à mettre en cache (par exemple, \".html\"), une par ligne. Laissez vide pour mettre en cache tous les types de fichiers." -#: src/misc/controls/HLS.js:71 +#: src/misc/controls/HLS.js:74 msgid "List size (segments)" msgstr "Taille de la liste (segments)" @@ -1127,27 +1135,27 @@ msgid "Live-Streaming to Twitch Live RTMP Service." msgstr "Diffusion en direct sur le service RTMP de Twitch Live." #: src/views/Publication/Services/Vimeo.js:12 -msgid "Live-Streaming to Vimeos Live RTMP Service" +msgid "Live-Streaming to Vimeo Live RTMP Service" msgstr "Diffusion en direct sur le service RTMP Live de Vimeos" #: src/views/Publication/Services/Livespotting.js:94 msgid "Livesource ID" msgstr "Livesource ID" -#: src/views/Settings.js:1865 +#: src/views/Settings.js:1870 msgid "Log level" msgstr "Niveau du journal" #: src/misc/modals/Process.js:90 #: src/views/Settings.js:1147 -#: src/views/Settings.js:1841 +#: src/views/Settings.js:1846 msgid "Logging" msgstr "Enregistrement" #: src/views/Login.js:297 #: src/views/Login.js:391 #: src/views/Login.js:406 -#: src/views/Publication/Services/Akamai.js:123 +#: src/views/Publication/Services/Akamai.js:124 msgid "Login" msgstr "Connexion" @@ -1163,15 +1171,15 @@ msgstr "La connexion a échoué : Impossible de charger les détails de l'API" msgid "Login failed: {0}" msgstr "La connexion a échoué : {0}" -#: src/views/Settings.js:1420 +#: src/views/Settings.js:1425 msgid "Login/JWT authorization" msgstr "Autorisation de connexion/JWT" -#: src/views/Publication/Player.js:318 +#: src/views/Publication/Player.js:321 msgid "Logo" msgstr "Logo" -#: src/Header.js:310 +#: src/Header.js:307 msgid "Logout" msgstr "Déconnexion" @@ -1179,12 +1187,12 @@ msgstr "Déconnexion" msgid "MB" msgstr "MB" -#: src/views/Edit/index.js:379 +#: src/views/Edit/index.js:380 msgid "Main Source" msgstr "Source principale" -#: src/views/Main/index.js:263 -#: src/views/Playersite.js:386 +#: src/views/Main/index.js:260 +#: src/views/Playersite.js:389 msgid "Main channel" msgstr "Canal principal" @@ -1192,11 +1200,11 @@ msgstr "Canal principal" msgid "Main channel not found" msgstr "Canal principal non trouvé" -#: src/views/Edit/Wizard/index.js:181 +#: src/views/Edit/Wizard/index.js:188 msgid "Main channel saved" msgstr "Canal principal sauvegardé" -#: src/views/Playersite.js:409 +#: src/views/Playersite.js:412 msgid "Main page channel (index.html)." msgstr "Canal de la page principale (index.html)." @@ -1209,19 +1217,19 @@ msgstr "Canal de la page principale (index.html)." msgid "Maintainer:" msgstr "Mainteneur :" -#: src/views/Settings.js:1705 +#: src/views/Settings.js:1710 msgid "Maximum allowed cache size, 0 for unlimited." msgstr "Taille maximale autorisée du cache, 0 pour illimité." -#: src/views/Settings.js:1627 +#: src/views/Settings.js:1632 msgid "Maximum allowed megabytes of RAM for /memfs, 0 for unlimited." msgstr "Mégaoctets de RAM maximum autorisés pour /memfs, 0 pour illimité." -#: src/views/Settings.js:1671 +#: src/views/Settings.js:1676 msgid "Maximum allowed megabytes to consume from hard disk. 0 for unlimited." msgstr "Maximum de mégaoctets autorisés à consommer du disque dur. 0 pour illimité." -#: src/views/Settings.js:1389 +#: src/views/Settings.js:1394 msgid "Maximum bandwidth Mbit/s" msgstr "Bande passante maximale Mbit/s" @@ -1229,34 +1237,34 @@ msgstr "Bande passante maximale Mbit/s" msgid "Maximum delay in milliseconds." msgstr "Délai maximal en millisecondes." -#: src/views/Settings.js:1723 +#: src/views/Settings.js:1728 msgid "Maximum file size (Megabytes)" msgstr "Taille maximale du fichier (mégaoctets)" -#: src/views/Settings.js:1731 +#: src/views/Settings.js:1736 msgid "Maximum file size to put in cache." msgstr "Taille maximale du fichier à mettre dans le cache." -#: src/views/Settings.js:1949 +#: src/views/Settings.js:1954 msgid "Maximum log histroy" msgstr "Histroy log maximum" -#: src/views/Settings.js:1918 -#: src/views/Settings.js:1936 +#: src/views/Settings.js:1923 +#: src/views/Settings.js:1941 msgid "Maximum log lines" msgstr "Lignes de journal maximum" -#: src/views/Settings.js:1619 -#: src/views/Settings.js:1663 -#: src/views/Settings.js:1697 +#: src/views/Settings.js:1624 +#: src/views/Settings.js:1668 +#: src/views/Settings.js:1702 msgid "Maximum size (Megabytes)" msgstr "Taille maximale (mégaoctets)" -#: src/views/Settings.js:1537 +#: src/views/Settings.js:1542 msgid "Maximum viewer idle time (Seconds)" msgstr "Temps d'inactivité maximum du téléspectateur (Secondes)" -#: src/views/Settings.js:1373 +#: src/views/Settings.js:1378 msgid "Maximum viewers" msgstr "Nombre maximum de téléspectateurs" @@ -1264,12 +1272,12 @@ msgstr "Nombre maximum de téléspectateurs" msgid "Memory" msgstr "Mémoire" -#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:402 msgid "Meta information" msgstr "Méta-information" -#: src/views/Edit/Wizard/index.js:989 -#: src/views/Edit/index.js:503 +#: src/views/Edit/Wizard/index.js:1006 +#: src/views/Edit/index.js:505 msgid "Metadata" msgstr "Métadonnées" @@ -1291,44 +1299,44 @@ msgstr "Plus d'informations sur les droits d'auteur de YouTube <0>ici." msgid "More about licenses here" msgstr "Plus d'informations sur les licences ici" -#: src/views/Settings.js:1222 +#: src/views/Settings.js:1227 msgid "More about the service" msgstr "En savoir plus sur le service" -#: src/views/Publication/Player.js:435 +#: src/views/Publication/Player.js:438 msgid "Mute" msgstr "Mute" #: src/misc/ChannelList.js:380 -#: src/misc/controls/Metadata.js:79 -#: src/misc/controls/Metadata.js:101 -#: src/views/Playersite.js:476 -#: src/views/Settings.js:1245 +#: src/misc/controls/Metadata.js:76 +#: src/misc/controls/Metadata.js:98 +#: src/views/Playersite.js:489 +#: src/views/Settings.js:1250 msgid "Name" msgstr "Nom" -#: src/views/Playersite.js:481 +#: src/views/Playersite.js:494 msgid "Name for the template. If the name already exists, it will be overwritten." msgstr "Nom du modèle. Si le nom existe déjà, il sera écrasé." #: src/views/Settings.js:1142 -#: src/views/Settings.js:1292 +#: src/views/Settings.js:1297 msgid "Network" msgstr "Réseau" -#: src/views/Edit/Sources/Network.js:668 +#: src/views/Edit/Sources/Network.js:684 #: src/views/Edit/Wizard/Sources/Network.js:110 msgid "Network source" msgstr "Source du réseau" -#: src/views/Edit/Wizard/index.js:399 -#: src/views/Edit/Wizard/index.js:635 -#: src/views/Edit/Wizard/index.js:900 -#: src/views/Edit/Wizard/index.js:1012 +#: src/views/Edit/Wizard/index.js:413 +#: src/views/Edit/Wizard/index.js:652 +#: src/views/Edit/Wizard/index.js:917 +#: src/views/Edit/Wizard/index.js:1029 msgid "Next" msgstr "Suivant" -#: src/views/Edit/Profile.js:405 +#: src/views/Edit/Profile.js:413 msgid "Next: Audio" msgstr "Suivant : Audio" @@ -1336,12 +1344,12 @@ msgstr "Suivant : Audio" msgid "Next: Video setup" msgstr "Suivant : Configuration de la vidéo" -#: src/views/Edit/Wizard/index.js:1165 +#: src/views/Edit/Wizard/index.js:1182 msgid "No" msgstr "Non" #: src/views/Edit/Sources/NoAudio.js:45 -#: src/views/Edit/Wizard/index.js:884 +#: src/views/Edit/Wizard/index.js:901 msgid "No audio" msgstr "Pas d'audio" @@ -1349,7 +1357,12 @@ msgstr "Pas d'audio" msgid "No audio stream available" msgstr "Aucun flux audio disponible" -#: src/views/Edit/Wizard/index.js:359 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:70 +#: src/views/Edit/Wizard/Sources/V4L.js:99 +msgid "No input device available" +msgstr "Aucun dispositif d'entrée disponible" + +#: src/views/Edit/Wizard/index.js:373 msgid "No live stream was detected. Please check the software that sends the stream." msgstr "Aucun flux en direct n'a été détecté. Veuillez vérifier le logiciel qui envoie le flux." @@ -1357,12 +1370,16 @@ msgstr "Aucun flux en direct n'a été détecté. Veuillez vérifier le logiciel msgid "No source selected" msgstr "Pas de source sélectionnée" -#: src/misc/EncodingSelect.js:152 +#: src/views/Edit/SourceSelect.js:174 +msgid "No sources available" +msgstr "Aucune source disponible" + +#: src/misc/EncodingSelect.js:164 msgid "No suitable encoder found." msgstr "Aucun codeur approprié n'a été trouvé." -#: src/views/Main/index.js:289 -#: src/views/Publication/Player.js:291 +#: src/views/Main/index.js:286 +#: src/views/Publication/Player.js:294 msgid "No video" msgstr "Pas de vidéo" @@ -1370,7 +1387,7 @@ msgstr "Pas de vidéo" msgid "No video stream available" msgstr "Aucun flux vidéo disponible" -#: src/views/Settings.js:1238 +#: src/views/Settings.js:1243 msgid "Node ID" msgstr "ID du nœud" @@ -1378,36 +1395,36 @@ msgstr "ID du nœud" msgid "Noise" msgstr "Bruit" -#: src/views/Edit/Sources/AVFoundation.js:139 +#: src/views/Edit/Sources/AVFoundation.js:145 #: src/views/Edit/Summary.js:30 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:98 msgid "None" msgstr "Aucun" -#: src/views/Playersite.js:351 -#: src/views/Playersite.js:631 +#: src/views/Playersite.js:353 +#: src/views/Playersite.js:644 msgid "Notes" msgstr "Notes" -#: src/views/Settings.js:1926 -#: src/views/Settings.js:1944 +#: src/views/Settings.js:1931 +#: src/views/Settings.js:1949 msgid "Number of log lines to keep." msgstr "Nombre de lignes de journal à conserver." -#: src/views/Settings.js:1957 +#: src/views/Settings.js:1962 msgid "Number of logs to keep for each process." msgstr "Nombre de journaux à conserver pour chaque processus." -#: src/views/Playersite.js:800 -#: src/views/Publication/Player.js:463 +#: src/views/Playersite.js:813 +#: src/views/Publication/Player.js:466 msgid "OK" msgstr "OK" -#: src/views/Settings.js:1492 +#: src/views/Settings.js:1497 msgid "One referrer per line, e.g. http://www.example.com" msgstr "Un référent par ligne, par exemple http://www.example.com." -#: src/views/Playersite.js:785 +#: src/views/Playersite.js:798 msgid "Open" msgstr "Ouvrir" @@ -1415,32 +1432,32 @@ msgstr "Ouvrir" msgid "Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources." msgstr "Le Passthrough (copie) ne doit être désactivé que si nécessaire. Chaque encodage nécessite des ressources CPU/GPU supplémentaires." -#: src/views/Edit/Sources/Network.js:366 +#: src/views/Edit/Sources/Network.js:382 #: src/views/Edit/Wizard/Sources/Network.js:88 #: src/views/Login.js:282 -#: src/views/Publication/Services/Akamai.js:133 +#: src/views/Publication/Services/Akamai.js:134 #: src/views/Publication/Services/DASH.js:198 #: src/views/Publication/Services/DaCast.js:142 #: src/views/Publication/Services/HLS.js:187 #: src/views/Publication/Services/RTSP.js:156 #: src/views/Publication/Services/Red5.js:157 #: src/views/Publication/Services/WOWZA.js:178 -#: src/views/Settings.js:1448 -#: src/views/Settings.js:1606 +#: src/views/Settings.js:1453 +#: src/views/Settings.js:1611 msgid "Password" msgstr "Mot de passe" -#: src/views/Settings.js:1454 -#: src/views/Settings.js:1614 +#: src/views/Settings.js:1459 +#: src/views/Settings.js:1619 msgid "Password for authorization." msgstr "Mot de passe pour l'autorisation." -#: src/views/Edit/Sources/Network.js:371 +#: src/views/Edit/Sources/Network.js:387 #: src/views/Edit/Wizard/Sources/Network.js:90 msgid "Password for the device." msgstr "Mot de passe pour l'appareil." -#: src/views/Settings.js:1550 +#: src/views/Settings.js:1555 msgid "Persist viewer statistics" msgstr "Persistance des statistiques des téléspectateurs" @@ -1456,9 +1473,9 @@ msgstr "Plan : <0>Démarreur" msgid "Platforms" msgstr "Plateformes" -#: src/views/Publication/Player.js:320 +#: src/views/Publication/Player.js:323 #: src/views/Settings.js:1144 -#: src/views/Settings.js:1463 +#: src/views/Settings.js:1468 msgid "Playback" msgstr "Lecture" @@ -1466,16 +1483,16 @@ msgstr "Lecture" msgid "Player" msgstr "Joueur" -#: src/views/Publication/Player.js:325 +#: src/views/Publication/Player.js:328 msgid "Player URL" msgstr "URL du joueur" -#: src/views/Publication/Player.js:254 +#: src/views/Publication/Player.js:257 msgid "Player settings saved" msgstr "Sauvegarde des paramètres du lecteur" -#: src/Header.js:270 -#: src/views/Playersite.js:372 +#: src/Header.js:267 +#: src/views/Playersite.js:375 msgid "Playersite" msgstr "Site des joueurs" @@ -1484,15 +1501,15 @@ msgstr "Site des joueurs" msgid "Playlist" msgstr "Liste de lecture" -#: src/views/Main/index.js:332 +#: src/views/Main/index.js:329 msgid "Please check the <0>process log" msgstr "Veuillez vérifier le <0>Journal du processus." -#: src/views/Publication/Services/Akamai.js:28 +#: src/views/Publication/Services/Akamai.js:29 #: src/views/Publication/Services/Bitmovin.js:23 #: src/views/Publication/Services/Brightcove.js:23 -#: src/views/Publication/Services/CDN77.js:24 -#: src/views/Publication/Services/Core.js:25 +#: src/views/Publication/Services/CDN77.js:23 +#: src/views/Publication/Services/Core.js:26 #: src/views/Publication/Services/DASH.js:35 #: src/views/Publication/Services/DaCast.js:26 #: src/views/Publication/Services/HLS.js:37 @@ -1511,8 +1528,8 @@ msgid "Please contact the operator of the service and check what happens." msgstr "Veuillez contacter l'opérateur du service et vérifier ce qui se passe." #: src/views/Playersite.js:122 -#: src/views/Playersite.js:196 -#: src/views/Publication/Player.js:157 +#: src/views/Playersite.js:197 +#: src/views/Publication/Player.js:159 msgid "Please select a file to upload." msgstr "Veuillez sélectionner un fichier à télécharger." @@ -1520,21 +1537,21 @@ msgstr "Veuillez sélectionner un fichier à télécharger." msgid "Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources." msgstr "Veuillez utiliser \"Passthrough (copie)\" si possible. L'encodage nécessite des ressources CPU/GPU supplémentaires." -#: src/views/Edit/Wizard/index.js:418 -#: src/views/Edit/Wizard/index.js:916 +#: src/views/Edit/Wizard/index.js:435 +#: src/views/Edit/Wizard/index.js:933 msgid "Please wait. Probe stream data ..." msgstr "Veuillez patienter. Données du flux de sondes ..." -#: src/views/Edit/Wizard/index.js:1086 +#: src/views/Edit/Wizard/index.js:1103 msgid "Please wait. Setting up the stream ..." msgstr "Veuillez patienter. Configuration du flux ..." #: src/views/Publication/Services/Bitmovin.js:92 -#: src/views/Settings.js:1798 +#: src/views/Settings.js:1803 msgid "Port" msgstr "Port" -#: src/views/Publication/Player.js:378 +#: src/views/Publication/Player.js:381 msgid "Position" msgstr "Position" @@ -1552,20 +1569,20 @@ msgstr "Flux primaire" msgid "Primary stream key" msgstr "Clé de flux primaire" -#: src/views/Edit/Sources/ALSA.js:131 -#: src/views/Edit/Sources/AVFoundation.js:192 +#: src/views/Edit/Sources/ALSA.js:136 +#: src/views/Edit/Sources/AVFoundation.js:201 #: src/views/Edit/Sources/Framebuffer.js:110 -#: src/views/Edit/Sources/Network.js:489 -#: src/views/Edit/Sources/Network.js:536 -#: src/views/Edit/Sources/Network.js:583 +#: src/views/Edit/Sources/Network.js:505 +#: src/views/Edit/Sources/Network.js:552 +#: src/views/Edit/Sources/Network.js:599 #: src/views/Edit/Sources/Raspicam.js:113 -#: src/views/Edit/Sources/V4L.js:126 +#: src/views/Edit/Sources/V4L.js:131 #: src/views/Edit/Sources/VirtualAudio.js:169 -#: src/views/Edit/Sources/VirtualVideo.js:176 +#: src/views/Edit/Sources/VirtualVideo.js:188 msgid "Probe" msgstr "Sonde" -#: src/views/Edit/index.js:491 +#: src/views/Edit/index.js:493 #: src/views/Publication/Add.js:433 #: src/views/Publication/Edit.js:441 msgid "Process" @@ -1580,40 +1597,41 @@ msgstr "Contrôle du processus" msgid "Process debug" msgstr "Débogage du processus" -#: src/views/Main/index.js:407 +#: src/views/Main/index.js:413 #: src/views/Publication/Edit.js:591 msgid "Process debug report" msgstr "Rapport de débogage du processus" -#: src/views/Main/index.js:383 -#: src/views/Main/index.js:399 +#: src/views/Main/index.js:389 +#: src/views/Main/index.js:405 #: src/views/Publication/Edit.js:468 #: src/views/Publication/Edit.js:583 msgid "Process details" msgstr "Détails du processus" -#: src/views/Main/index.js:386 +#: src/views/Main/index.js:392 msgid "Process report" msgstr "Rapport de processus" -#: src/views/Edit/index.js:400 -#: src/views/Edit/index.js:461 +#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:463 msgid "Processing & Control" msgstr "Traitement et contrôle" #: src/misc/coders/Encoders/video/H264NVENC.js:92 +#: src/misc/coders/Encoders/video/H264VAAPI.js:82 #: src/misc/coders/settings/Video.js:142 -#: src/views/Edit/Wizard/index.js:590 +#: src/views/Edit/Wizard/index.js:607 msgid "Profile" msgstr "Profil" -#: src/views/Edit/Sources/Network.js:504 -#: src/views/Publication/Services/Akamai.js:143 -#: src/views/Publication/Services/Akamai.js:181 +#: src/views/Edit/Sources/Network.js:520 +#: src/views/Publication/Services/Akamai.js:144 +#: src/views/Publication/Services/Akamai.js:182 #: src/views/Publication/Services/Bitmovin.js:86 #: src/views/Publication/Services/Brightcove.js:87 -#: src/views/Publication/Services/CDN77.js:91 -#: src/views/Publication/Services/Core.js:90 +#: src/views/Publication/Services/CDN77.js:90 +#: src/views/Publication/Services/Core.js:91 #: src/views/Publication/Services/DASH.js:186 #: src/views/Publication/Services/DaCast.js:110 #: src/views/Publication/Services/DaCast.js:168 @@ -1634,7 +1652,7 @@ msgstr "Protocole" msgid "Protocols" msgstr "Protocoles" -#: src/views/Settings.js:1302 +#: src/views/Settings.js:1307 msgid "Public domain/s" msgstr "Domaine public/s" @@ -1643,7 +1661,7 @@ msgstr "Domaine public/s" msgid "Publication service not found" msgstr "Service de publication non trouvé" -#: src/views/Playersite.js:317 +#: src/views/Playersite.js:319 msgid "Publication website settings saved" msgstr "Sauvegarde des paramètres du site Web de la publication" @@ -1651,15 +1669,16 @@ msgstr "Sauvegarde des paramètres du site Web de la publication" msgid "Publications" msgstr "Publications" -#: src/views/Edit/Sources/Network.js:641 +#: src/views/Edit/Sources/Network.js:657 msgid "Pull Mode" msgstr "Mode de traction" -#: src/views/Edit/Sources/Network.js:640 +#: src/views/Edit/Sources/Network.js:656 msgid "Pull or recieve the data:" msgstr "Tirer ou recevoir les données :" #: src/misc/Progress.js:90 +#: src/misc/coders/Encoders/video/H264VAAPI.js:137 msgid "Quality" msgstr "Qualité" @@ -1667,37 +1686,37 @@ msgstr "Qualité" msgid "RGB test pattern" msgstr "Mire de test RVB" -#: src/views/Settings.js:1819 +#: src/views/Settings.js:1824 msgid "RTMP app for publishing." msgstr "Application RTMP pour la publication." -#: src/views/Settings.js:1760 +#: src/views/Settings.js:1765 msgid "RTMP server" msgstr "Serveur RTMP" -#: src/views/Edit/Sources/Network.js:556 +#: src/views/Edit/Sources/Network.js:572 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:50 msgid "RTMP server is not enabled" msgstr "Le serveur RTMP n'est pas activé" -#: src/views/Settings.js:1806 +#: src/views/Settings.js:1811 msgid "RTMP server listen address." msgstr "Adresse d'écoute du serveur RTMP." -#: src/views/Settings.js:1832 +#: src/views/Settings.js:1837 msgid "RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'" msgstr "Jeton RTMP pour la publication et la lecture. Le jeton est la valeur du paramètre de requête de l'URL \"token\"." #: src/views/Settings.js:1146 -#: src/views/Settings.js:1755 +#: src/views/Settings.js:1760 msgid "RTMP/S" msgstr "RTMP/S" -#: src/views/Settings.js:1767 +#: src/views/Settings.js:1772 msgid "RTMPS server" msgstr "Serveur RTMPS" -#: src/views/Edit/Sources/Network.js:389 +#: src/views/Edit/Sources/Network.js:405 msgid "RTSP" msgstr "RTSP" @@ -1707,6 +1726,7 @@ msgid "Raspberry Pi camera" msgstr "Caméra Raspberry Pi" #: src/misc/coders/Encoders/video/H264NVENC.js:144 +#: src/misc/coders/Encoders/video/H264VAAPI.js:63 msgid "Rate control" msgstr "Contrôle du taux" @@ -1714,11 +1734,11 @@ msgstr "Contrôle du taux" msgid "Ratio" msgstr "Ratio" -#: src/views/Edit/Sources/Network.js:418 +#: src/views/Edit/Sources/Network.js:434 msgid "Read input at native speed" msgstr "Lecture de l'entrée à la vitesse native" -#: src/views/Edit/Sources/Network.js:642 +#: src/views/Edit/Sources/Network.js:658 msgid "Receive Mode" msgstr "Mode de réception" @@ -1732,13 +1752,13 @@ msgstr "Reconnecter" msgid "Reconnect delay (seconds)" msgstr "Délai de reconnexion (secondes)" -#: src/views/Main/index.js:343 +#: src/views/Main/index.js:340 #: src/views/Publication/Process.js:68 #: src/views/Publication/Process.js:81 msgid "Reconnecting in {0}s" msgstr "Reconnexion en {0}s" -#: src/views/Settings.js:1994 +#: src/views/Settings.js:1999 msgid "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." msgstr "La reconnexion au Restreamer Core a échoué au cours des {RETRIES} dernières secondes." @@ -1746,6 +1766,14 @@ msgstr "La reconnexion au Restreamer Core a échoué au cours des {RETRIES} dern msgid "Reconnecting to Restreamer Core failed." msgstr "La reconnexion à Restreamer Core a échoué." +#: src/views/Edit/Sources/ALSA.js:122 +#: src/views/Edit/Sources/AVFoundation.js:181 +#: src/views/Edit/Sources/V4L.js:117 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:135 +#: src/views/Edit/Wizard/Sources/V4L.js:120 +msgid "Refresh" +msgstr "Rafraîchir" + #: src/views/Publication/Services/Restream.js:86 #: src/views/Publication/Services/Twitch.js:78 #: src/views/Publication/Services/Twitter.js:150 @@ -1754,36 +1782,36 @@ msgid "Region" msgstr "Région" #: src/views/Password.js:159 -#: src/views/Settings.js:2014 +#: src/views/Settings.js:2019 msgid "Reload" msgstr "Rechargez" -#: src/views/Settings.js:1632 +#: src/views/Settings.js:1637 msgid "Remove the oldest entries if the /memfs is full" msgstr "Supprimer les entrées les plus anciennes si le /memfs est plein" -#: src/views/Settings.js:1779 +#: src/views/Settings.js:1784 msgid "Requires activation" msgstr "Nécessite une activation" -#: src/views/Settings.js:1201 -#: src/views/Settings.js:2031 -#: src/views/Settings.js:2044 -#: src/views/Settings.js:2053 +#: src/views/Settings.js:1206 +#: src/views/Settings.js:2036 +#: src/views/Settings.js:2049 +#: src/views/Settings.js:2058 msgid "Restart" msgstr "Redémarrer" -#: src/views/Settings.js:2022 +#: src/views/Settings.js:2027 msgid "Restart required" msgstr "Redémarrage nécessaire" #: src/views/Password.js:136 -#: src/views/Settings.js:1982 +#: src/views/Settings.js:1987 msgid "Restarting" msgstr "Redémarrage de" #: src/views/Password.js:141 -#: src/views/Settings.js:1987 +#: src/views/Settings.js:1992 msgid "Restarting Restreamer Core ..." msgstr "Redémarrage de Restreamer Core ..." @@ -1791,15 +1819,15 @@ msgstr "Redémarrage de Restreamer Core ..." msgid "Restarting the application failed." msgstr "Le redémarrage de l'application a échoué." -#: src/views/Settings.js:1229 +#: src/views/Settings.js:1234 msgid "Restreamer Service" msgstr "Service Restreamer" -#: src/views/Main/index.js:242 +#: src/views/Main/index.js:239 msgid "Retrieving stream data ..." msgstr "Récupération des données de flux ..." -#: src/views/Edit/Wizard/index.js:1111 +#: src/views/Edit/Wizard/index.js:1128 #: src/views/Invalid.js:43 #: src/views/Settings.js:1116 msgid "Retry" @@ -1813,13 +1841,13 @@ msgstr "Règle" msgid "Sampling" msgstr "Échantillonnage" -#: src/views/Edit/Wizard/index.js:1070 -#: src/views/Edit/index.js:558 -#: src/views/Playersite.js:775 +#: src/views/Edit/Wizard/index.js:1087 +#: src/views/Edit/index.js:560 +#: src/views/Playersite.js:788 #: src/views/Publication/Add.js:534 #: src/views/Publication/Edit.js:571 -#: src/views/Publication/Player.js:449 -#: src/views/Settings.js:1972 +#: src/views/Publication/Player.js:452 +#: src/views/Settings.js:1977 msgid "Save" msgstr "Sauvez" @@ -1827,7 +1855,7 @@ msgstr "Sauvez" msgid "Scale" msgstr "Échelle" -#: src/views/Settings.js:1718 +#: src/views/Settings.js:1723 msgid "Seconds to keep files in cache." msgstr "Secondes pour garder les fichiers dans le cache." @@ -1843,24 +1871,24 @@ msgstr "Secondes jusqu'à ce qu'un processus bloqué soit terminé." msgid "Seconds until the snapshot/thumbnail of the video source is updated." msgstr "Secondes jusqu'à ce que l'instantané/la vignette de la source vidéo soit mis à jour." -#: src/views/Settings.js:1468 +#: src/views/Settings.js:1473 msgid "Security" msgstr "Sécurité" -#: src/views/Publication/Services/Core.js:127 +#: src/views/Publication/Services/Core.js:122 #: src/views/Publication/Services/Livespotting.js:103 msgid "Security token" msgstr "Jeton de sécurité" -#: src/views/Publication/Player.js:339 +#: src/views/Publication/Player.js:342 msgid "Seekbar color" msgstr "Couleur du Seekbar" -#: src/misc/controls/HLS.js:59 +#: src/misc/controls/HLS.js:62 msgid "Segment length (seconds)" msgstr "Longueur du segment (secondes)" -#: src/misc/controls/HLS.js:64 +#: src/misc/controls/HLS.js:67 msgid "Segment will be cut on the following keyframe after this time has passed. 2 is recommended." msgstr "Une fois ce délai écoulé, le segment sera coupé sur l'image clé suivante. Une valeur de 2 est recommandée." @@ -1869,19 +1897,19 @@ msgstr "Une fois ce délai écoulé, le segment sera coupé sur l'image clé sui msgid "Segmentation" msgstr "Segmentation" -#: src/views/Edit/Sources/ALSA.js:114 -#: src/views/Edit/Sources/AVFoundation.js:166 +#: src/views/Edit/Sources/ALSA.js:108 +#: src/views/Edit/Sources/AVFoundation.js:172 #: src/views/Edit/Sources/Framebuffer.js:99 #: src/views/Edit/Sources/Raspicam.js:96 -#: src/views/Edit/Sources/V4L.js:109 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:101 +#: src/views/Edit/Sources/V4L.js:103 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:120 #: src/views/Edit/Wizard/Sources/Raspicam.js:95 -#: src/views/Edit/Wizard/Sources/V4L.js:98 +#: src/views/Edit/Wizard/Sources/V4L.js:114 msgid "Select a device:" msgstr "Sélectionnez un appareil :" #: src/views/Edit/Sources/VirtualAudio.js:84 -msgid "Select audio Source:" +msgid "Select audio source:" msgstr "Sélectionnez la source audio :" #: src/views/Edit/Sources/VirtualVideo.js:114 @@ -1892,32 +1920,32 @@ msgstr "Sélectionnez la source ..." msgid "Select video source:" msgstr "Sélectionnez la source vidéo :" -#: src/views/Edit/Wizard/index.js:261 +#: src/views/Edit/Wizard/index.js:268 msgid "Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer)." msgstr "Choisissez si vous tirez le flux d'une <0>source réseau (comme une caméra réseau) ou du <1>serveur RTMP interne (par exemple, les flux OBS vers le Restreamer)." -#: src/misc/EncodingSelect.js:184 +#: src/misc/EncodingSelect.js:196 msgid "Select your encoding setting:" msgstr "Sélectionnez votre paramètre de codage :" -#: src/views/Playersite.js:575 +#: src/views/Playersite.js:588 msgid "Selected" msgstr "Sélectionné" -#: src/views/Playersite.js:392 +#: src/views/Playersite.js:395 msgid "Selected channel" msgstr "Canal sélectionné" -#: src/views/Playersite.js:438 +#: src/views/Playersite.js:449 msgid "Selection" msgstr "Sélection" -#: src/views/Settings.js:1185 +#: src/views/Settings.js:1190 msgid "Send anonymous metrics (helps us for future development)" msgstr "Envoyez des métriques anonymes (nous aide pour le développement futur)" -#: src/views/Edit/Sources/Network.js:526 -#: src/views/Edit/Sources/Network.js:573 +#: src/views/Edit/Sources/Network.js:542 +#: src/views/Edit/Sources/Network.js:589 #: src/views/Edit/Wizard/Sources/InternalHLS.js:48 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:68 msgid "Send stream to this address:" @@ -1931,10 +1959,10 @@ msgstr "Envoyer la vidéo au Framebuffer" msgid "Server" msgstr "Serveur" -#: src/Header.js:260 +#: src/Header.js:257 #: src/views/Login.js:246 #: src/views/Settings.js:1140 -#: src/views/Settings.js:1215 +#: src/views/Settings.js:1220 msgid "Service" msgstr "Service" @@ -1943,7 +1971,7 @@ msgstr "Service" msgid "Service name" msgstr "Nom du service" -#: src/views/Settings.js:1266 +#: src/views/Settings.js:1271 msgid "Service token for monitoring." msgstr "Jeton de service pour la surveillance." @@ -1951,15 +1979,15 @@ msgstr "Jeton de service pour la surveillance." msgid "Sessions" msgstr "Sessions" -#: src/views/Settings.js:1397 +#: src/views/Settings.js:1402 msgid "Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Définit une limite de bande passante en Mbit par seconde pour le transfert des données HLS sortantes. Tous les services, tels que RTMP et les processus sortants, sont inclus dans le calcul. Si la bande passante est dépassée, les spectateurs HLS reçoivent le code d'état HTTP 509 (Bandwidth Limit Exceeded). 0 est illimité." -#: src/views/Settings.js:1381 +#: src/views/Settings.js:1386 msgid "Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Définit une limite de visualisation pour les sessions HLS. Si la limite est dépassée, les spectateurs HLS reçoivent le code d'état HTTP 509 (limite de bande passante dépassée). La valeur 0 est illimitée." -#: src/views/Settings.js:1220 +#: src/views/Settings.js:1225 msgid "Setting for connection to the service." msgstr "Paramètre pour la connexion au service." @@ -1971,11 +1999,11 @@ msgstr "Paramètres" msgid "Settings (expert mode)" msgstr "Paramètres (mode expert)" -#: src/views/Settings.js:1648 +#: src/views/Settings.js:1653 msgid "Settings for /data path. The access is protected by" msgstr "Paramètres pour le chemin /data. L'accès est protégé par" -#: src/views/Settings.js:1575 +#: src/views/Settings.js:1580 msgid "Settings for /memfs path." msgstr "Paramètres pour le chemin /memfs." @@ -1983,7 +2011,11 @@ msgstr "Paramètres pour le chemin /memfs." msgid "Settings saved. All changes will be applied after restarting the application." msgstr "Les paramètres sont enregistrés. Toutes les modifications seront appliquées après le redémarrage de l'application." -#: src/views/Playersite.js:420 +#: src/views/Playersite.js:417 +msgid "Share button" +msgstr "Bouton partager" + +#: src/views/Playersite.js:431 msgid "Shows a reference to the project." msgstr "Affiche une référence au projet." @@ -1995,7 +2027,7 @@ msgstr "S'inscrire (gratuit)" msgid "Silence" msgstr "Silence" -#: src/views/Edit/Wizard/index.js:881 +#: src/views/Edit/Wizard/index.js:898 msgid "Silence Audio" msgstr "Silence Audio" @@ -2003,7 +2035,7 @@ msgstr "Silence Audio" msgid "Sine" msgstr "Sine" -#: src/views/Playersite.js:378 +#: src/views/Playersite.js:381 msgid "Sitename" msgstr "Nom de site" @@ -2011,7 +2043,8 @@ msgstr "Nom de site" msgid "Size" msgstr "Taille" -#: src/views/Edit/index.js:480 +#: src/views/Edit/index.js:482 +#: src/views/Main/index.js:372 msgid "Snapshot" msgstr "Instantané" @@ -2019,7 +2052,7 @@ msgstr "Instantané" msgid "Social-login (OAuth2, 2FA)" msgstr "Social-login (OAuth2, 2FA)" -#: src/views/Edit/Sources/Network.js:402 +#: src/views/Edit/Sources/Network.js:418 msgid "Socket timeout (microseconds)" msgstr "Délai d'attente pour les sockets (microsecondes)" @@ -2040,33 +2073,33 @@ msgstr "Vitesse" msgid "Stale timeout (seconds)" msgstr "Délai d'expiration (secondes)" -#: src/views/Publication/Player.js:319 -#: src/views/Settings.js:1500 +#: src/views/Publication/Player.js:322 +#: src/views/Settings.js:1505 msgid "Statistics" msgstr "Statistiques" #: src/views/Settings.js:1145 -#: src/views/Settings.js:1567 +#: src/views/Settings.js:1572 msgid "Storage" msgstr "Stockage" -#: src/views/Settings.js:1558 +#: src/views/Settings.js:1563 msgid "Stores the viewer statistics to the disk." msgstr "Stocke les statistiques du visualiseur sur le disque." #: src/views/Edit/StreamSelect.js:30 #: src/views/Edit/StreamSelect.js:36 #: src/views/Edit/StreamSelect.js:81 -#: src/views/Edit/Wizard/index.js:861 +#: src/views/Edit/Wizard/index.js:878 msgid "Stream" msgstr "Stream" -#: src/views/Publication/Services/Akamai.js:155 -#: src/views/Publication/Services/CDN77.js:103 +#: src/views/Publication/Services/Akamai.js:156 +#: src/views/Publication/Services/CDN77.js:102 msgid "Stream URL" msgstr "URL du flux" -#: src/views/Publication/Services/CDN77.js:114 +#: src/views/Publication/Services/CDN77.js:113 #: src/views/Publication/Services/DaCast.js:153 #: src/views/Publication/Services/Dummy.js:274 #: src/views/Publication/Services/Instagram.js:84 @@ -2079,41 +2112,41 @@ msgid "Stream key" msgstr "Clé de flux" #: src/views/Publication/Services/Brightcove.js:101 -#: src/views/Publication/Services/Core.js:118 +#: src/views/Publication/Services/Core.js:113 #: src/views/Publication/Services/Red5.js:136 #: src/views/Publication/Services/WOWZA.js:158 msgid "Stream name" msgstr "Nom du cours d'eau" -#: src/views/Publication/Services/Akamai.js:166 +#: src/views/Publication/Services/Akamai.js:167 msgid "Stream names" msgstr "Noms des cours d'eau" -#: src/views/Playersite.js:414 +#: src/views/Playersite.js:425 msgid "Support datarhei Restreamer" msgstr "Support datarhei Restreamer" -#: src/views/Edit/Sources/Network.js:345 +#: src/views/Edit/Sources/Network.js:361 #: src/views/Edit/Wizard/Sources/Network.js:72 msgid "Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more." msgstr "Prend en charge HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT et plus encore." #: src/Footer.js:184 -#: src/Header.js:278 -#: src/views/Settings.js:1846 +#: src/Header.js:275 +#: src/views/Settings.js:1851 msgid "System" msgstr "Système" -#: src/views/Playersite.js:349 -#: src/views/Playersite.js:429 +#: src/views/Playersite.js:351 +#: src/views/Playersite.js:440 msgid "Template" msgstr "Modèle" -#: src/views/Playersite.js:451 +#: src/views/Playersite.js:462 msgid "Template to be used for creating the publication website. The delete button removes the selection from the system." msgstr "Modèle à utiliser pour créer le site Web de la publication. Le bouton de suppression supprime la sélection du système." -#: src/views/Playersite.js:653 +#: src/views/Playersite.js:666 msgid "Terms" msgstr "Conditions" @@ -2125,7 +2158,7 @@ msgstr "Modèle de test" msgid "Test pattern (extended)" msgstr "Mire (étendue)" -#: src/views/Playersite.js:506 +#: src/views/Playersite.js:519 msgid "Text colors" msgstr "Couleurs du texte" @@ -2133,7 +2166,7 @@ msgstr "Couleurs du texte" msgid "The amplitude (0.0 - 1.0) of the generated audio stream" msgstr "L'amplitude (0,0 - 1,0) du flux audio généré" -#: src/views/Settings.js:1205 +#: src/views/Settings.js:1210 msgid "The application is using an older version of the settings." msgstr "L'application utilise une ancienne version des paramètres." @@ -2145,20 +2178,20 @@ msgstr "Le débit binaire du flux audio." msgid "The carrier frequency" msgstr "La fréquence porteuse" -#: src/views/Edit/index.js:351 +#: src/views/Edit/index.js:352 msgid "The channel \"{0}\" could not be deleted" msgstr "Le canal \"{0}\" n'a pas pu être supprimé" -#: src/views/Edit/index.js:360 +#: src/views/Edit/index.js:361 msgid "The channel \"{0}\" has been deleted" msgstr "Le canal \"{0}\" a été supprimé" -#: src/views/Edit/index.js:602 +#: src/views/Edit/index.js:604 msgid "The deletion of this channel can not be recovered. All publications of this channel will be removed." msgstr "La suppression de ce canal ne peut pas être récupérée. Toutes les publications de ce canal seront supprimées." -#: src/views/Edit/Wizard/index.js:161 -#: src/views/Edit/index.js:283 +#: src/views/Edit/Wizard/index.js:170 +#: src/views/Edit/index.js:290 msgid "The input profile is not complete. Please define a video and audio source." msgstr "Le profil d'entrée n'est pas complet. Veuillez définir une source vidéo et audio." @@ -2166,7 +2199,7 @@ msgstr "Le profil d'entrée n'est pas complet. Veuillez définir une source vid msgid "The layout of the audio stream." msgstr "La mise en page du flux audio." -#: src/misc/controls/HLS.js:76 +#: src/misc/controls/HLS.js:79 msgid "The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended." msgstr "Le nombre maximum de segments de la liste de lecture. 0 contiendra tous les segments. 6 est recommandé." @@ -2178,7 +2211,7 @@ msgstr "La couleur du bruit" msgid "The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission." msgstr "La personne qui a associé une œuvre à cet acte a dédié l'œuvre au domaine public en renonçant à tous ses droits sur l'œuvre dans le monde entier en vertu de la loi sur le droit d'auteur, y compris tous les droits connexes et voisins, dans la mesure autorisée par la loi. Vous pouvez copier, modifier, distribuer et exécuter l'œuvre, même à des fins commerciales, le tout sans demander la permission." -#: src/views/Settings.js:1310 +#: src/views/Settings.js:1315 msgid "The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma." msgstr "Le nom de domaine public joignable de l'hôte sur lequel ce Restreamer est exécuté. Séparez les noms de domaine multiples par une virgule." @@ -2202,68 +2235,58 @@ msgstr "Le service de publication a été créé" msgid "The sample rate of the audio stream." msgstr "La fréquence d'échantillonnage du flux audio." -#: src/views/Playersite.js:151 -#: src/views/Playersite.js:225 -#: src/views/Publication/Player.js:186 +#: src/views/Playersite.js:152 +#: src/views/Playersite.js:227 +#: src/views/Publication/Player.js:189 msgid "The selected file is too big ({0} bytes). Only {1} bytes are allowed." msgstr "Le fichier sélectionné est trop gros ({0} octets). Seuls les {1} octets sont autorisés." -#: src/views/Playersite.js:140 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}" -msgstr "Le type de fichier sélectionné ({0}) est maintenant autorisé. Les types de fichier autorisés sont {imageAcceptString}" - -#: src/views/Publication/Player.js:175 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}" -msgstr "Le type de fichier sélectionné ({0}) est maintenant autorisé. Les types de fichiers autorisés sont {logoAcceptString}" - -#: src/views/Playersite.js:214 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}" -msgstr "Le type de fichier sélectionné ({0}) est maintenant autorisé. Les types de fichiers autorisés sont {templateAcceptString}" +#: src/views/Playersite.js:141 +#: src/views/Playersite.js:216 +#: src/views/Publication/Player.js:178 +msgid "The selected file type ({0}) is not allowed. Allowed file types are {types}" +msgstr "Le type de fichier sélectionné ({0}) n'est pas autorisé. Les types de fichiers autorisés sont {types}" #: src/views/Publication/Edit.js:230 msgid "The settings for \"{0}\" have been saved" msgstr "Les paramètres de \"{0}\" ont été sauvegardés." -#: src/views/Edit/Wizard/index.js:829 +#: src/views/Edit/Wizard/index.js:846 msgid "The source doesn't provide any audio streams." msgstr "La source ne fournit pas de flux audio." -#: src/views/Edit/Profile.js:478 +#: src/views/Edit/Profile.js:487 msgid "The source doesn't provide any audio streams. Please check the <0>probe details." msgstr "La source ne fournit pas de flux audio. Veuillez vérifier les <0>détails de la sonde." -#: src/views/Edit/Wizard/index.js:837 +#: src/views/Edit/Wizard/index.js:854 msgid "The source doesn't provide any compatible audio streams." msgstr "La source ne fournit pas de flux audio compatible." -#: src/views/Edit/Wizard/index.js:378 +#: src/views/Edit/Wizard/index.js:392 msgid "The source doesn't provide any compatible video streams. Please check the <0>requirements." msgstr "La source ne fournit pas de flux vidéo compatible. Veuillez vérifier les <0>exigences." -#: src/views/Edit/Profile.js:349 +#: src/views/Edit/Profile.js:357 msgid "The source doesn't provide any video streams. Please check the <0>probe details." msgstr "La source ne fournit pas de flux vidéo. Veuillez vérifier les <0>détails de la sonde." -#: src/views/Edit/Wizard/index.js:370 +#: src/views/Edit/Wizard/index.js:384 msgid "The source doesn't provide any video streams. Please check the device." msgstr "La source ne fournit pas de flux vidéo. Veuillez vérifier l'appareil." -#: src/views/Edit/Wizard/index.js:848 +#: src/views/Edit/Wizard/index.js:865 msgid "The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel." msgstr "La source vidéo ne fournit pas de flux audio compatible. <0>Silence audio est recommandé. Les services tels que YouTube, Facebook & Co. nécessitent un canal audio." -#: src/views/Edit/Wizard/index.js:586 +#: src/views/Edit/Wizard/index.js:603 msgid "The video source is compatible. Select the desired resolution:" msgstr "La source vidéo est compatible. Sélectionnez la résolution souhaitée :" -#: src/views/Settings.js:1177 +#: src/views/Settings.js:1182 msgid "There are updates available. Here you get more information." msgstr "Il y a des mises à jour disponibles. Ici vous obtenez plus d'informations." -#: src/views/Playersite.js:238 -msgid "There war an error during upload: {0}" -msgstr "Il y a eu une erreur pendant le téléchargement : {0}" - #: src/views/Settings.js:911 msgid "There was a problem storing the settings. Settings not saved." msgstr "Il y a eu un problème pour enregistrer les paramètres. Paramètres non sauvegardés." @@ -2272,12 +2295,13 @@ msgstr "Il y a eu un problème pour enregistrer les paramètres. Paramètres non msgid "There was an error connecting to Restreamer Core at {0}." msgstr "Il y a eu une erreur de connexion à Restreamer Core à {0}." -#: src/views/Playersite.js:164 -#: src/views/Publication/Player.js:199 +#: src/views/Playersite.js:165 +#: src/views/Playersite.js:240 +#: src/views/Publication/Player.js:202 msgid "There was an error during upload: {0}" msgstr "Il y a eu une erreur pendant le téléchargement : {0}" -#: src/views/Edit/Wizard/index.js:1106 +#: src/views/Edit/Wizard/index.js:1123 msgid "There was an error setting up the stream." msgstr "Il y a eu une erreur dans la configuration du flux." @@ -2325,7 +2349,7 @@ msgstr "Cette licence permet aux réutilisateurs de distribuer, de remixer, d'ad msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." msgstr "Cette licence permet aux réutilisateurs de distribuer, de remixer, d'adapter et d'utiliser le matériel sur n'importe quel support ou format, à condition que le créateur soit mentionné. La licence autorise l'utilisation commerciale. Si vous remixez, adaptez ou développez le matériel, vous devez accorder une licence au matériel modifié selon des conditions identiques." -#: src/views/Edit/index.js:583 +#: src/views/Edit/index.js:585 msgid "This source cannot be edited while it is in use. To continue, you have to disconnect the source." msgstr "Cette source ne peut pas être éditée lorsqu'elle est en cours d'utilisation. Pour continuer, vous devez déconnecter la source." @@ -2341,12 +2365,12 @@ msgstr "Cette version de l'IU ne prend pas en charge le Core connecté ({0}). L' msgid "This version of the UI is compatible." msgstr "Cette version de l'interface utilisateur est compatible." -#: src/views/Settings.js:1545 +#: src/views/Settings.js:1550 msgid "Time until an inactive viewer connection is treated as closed." msgstr "Temps jusqu'à ce qu'une connexion de téléspectateur inactive soit traitée comme fermée." -#: src/views/Settings.js:1258 -#: src/views/Settings.js:1824 +#: src/views/Settings.js:1263 +#: src/views/Settings.js:1829 msgid "Token" msgstr "Token" @@ -2391,7 +2415,7 @@ msgid "Transmit the main source to an RTSP Server. More details about the settin msgstr "Transmettre la source principale à un serveur RTSP. Vous trouverez plus de détails sur les paramètres <0>ici." #: src/views/Publication/Services/Red5.js:17 -msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." +msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." msgstr "Transmettre la source principale à un serveur Red5/Pro. Vous trouverez plus de détails sur les réglages <0>ici." #: src/views/Publication/Services/SRT.js:25 @@ -2406,7 +2430,7 @@ msgstr "Transmettre la source principale à un serveur UDP. Vous trouverez plus msgid "Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here." msgstr "Transmettre la source principale à un serveur WOWZA. Vous trouverez plus de détails sur les réglages <0>ici." -#: src/views/Publication/Services/Core.js:17 +#: src/views/Publication/Services/Core.js:18 msgid "Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here." msgstr "Transmettre la source principale à un datarhei Core Ressource. Plus de détails sur les paramètres peuvent être trouvés <0>ici." @@ -2414,7 +2438,7 @@ msgstr "Transmettre la source principale à un datarhei Core Ressource. Plus de msgid "Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here." msgstr "Transmettre la source principale à une Ressource livespotting.com. Vous trouverez plus de détails sur les paramètres <0>ici." -#: src/views/Publication/Services/Akamai.js:16 +#: src/views/Publication/Services/Akamai.js:17 msgid "Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here." msgstr "Transmettre la source principale à l'Akamai (MSL) Media Services Live. Vous trouverez plus de détails sur les paramètres de l'encodeur MSL sur <0>ici." @@ -2439,7 +2463,7 @@ msgstr "Transmet votre flux vidéo avec la clé requise, qui a été générée msgid "Tune" msgstr "Tune" -#: src/views/Edit/Sources/Network.js:393 +#: src/views/Edit/Sources/Network.js:409 #: src/views/Edit/Wizard/Sources/Network.js:77 msgid "UDP transport" msgstr "Transport UDP" @@ -2448,7 +2472,7 @@ msgstr "Transport UDP" msgid "Unable to load the config." msgstr "Impossible de charger la configuration." -#: src/views/Settings.js:1240 +#: src/views/Settings.js:1245 msgid "Unique ident on the service." msgstr "Identifiant unique sur le service." @@ -2456,22 +2480,22 @@ msgstr "Identifiant unique sur le service." msgid "Unknown" msgstr "Inconnu" -#: src/views/Playersite.js:584 +#: src/views/Playersite.js:597 msgid "Unselected" msgstr "Non sélectionné" -#: src/views/Playersite.js:469 -#: src/views/Playersite.js:486 -#: src/views/Playersite.js:621 -#: src/views/Publication/Player.js:370 +#: src/views/Playersite.js:482 +#: src/views/Playersite.js:499 +#: src/views/Playersite.js:634 +#: src/views/Publication/Player.js:373 msgid "Upload" msgstr "Télécharger" -#: src/views/Playersite.js:279 +#: src/views/Playersite.js:281 msgid "Uploading the file failed" msgstr "Le téléchargement du fichier a échoué" -#: src/views/Publication/Player.js:229 +#: src/views/Publication/Player.js:232 msgid "Uploading the logo failed" msgstr "Le téléchargement du logo a échoué" @@ -2485,15 +2509,15 @@ msgstr "Temps de fonctionnement" msgid "Use Auth0 for your running Restreamer Core. More <0>details." msgstr "Utilisez Auth0 pour votre noyau Restreamer en cours d'exécution. Plus de <0>détails." -#: src/views/Edit/index.js:425 +#: src/views/Edit/index.js:426 msgid "Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode." msgstr "Utilisez l'assistant (<0/>) pour une configuration rapide et facile, ou éditez (<1/>) les sources directement en mode personnalisé." -#: src/views/Edit/Wizard/index.js:1051 +#: src/views/Edit/Wizard/index.js:1068 msgid "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Utilisez vos droits d'auteur et choisissez la bonne licence d'image. Qu'elle soit libre pour tous ou fortement restreinte. Discutez brièvement de ce que les autres sont autorisés à faire avec votre image." -#: src/views/Edit/index.js:528 +#: src/views/Edit/index.js:530 msgid "Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Utilisez vos droits d'auteur et choisissez la bonne licence d'image. Qu'il s'agisse d'une licence gratuite pour tous ou d'une licence très restreinte. Discutez brièvement de ce que les autres sont autorisés à faire avec votre image." @@ -2501,7 +2525,7 @@ msgstr "Utilisez vos droits d'auteur et choisissez la bonne licence d'image. Qu' msgid "User registration" msgstr "Enregistrement de l'utilisateur" -#: src/views/Edit/Sources/Network.js:354 +#: src/views/Edit/Sources/Network.js:370 #: src/views/Edit/Wizard/Sources/Network.js:81 #: src/views/Login.js:272 #: src/views/Publication/Services/DASH.js:195 @@ -2510,17 +2534,17 @@ msgstr "Enregistrement de l'utilisateur" #: src/views/Publication/Services/RTSP.js:153 #: src/views/Publication/Services/Red5.js:146 #: src/views/Publication/Services/WOWZA.js:168 -#: src/views/Settings.js:1435 -#: src/views/Settings.js:1593 +#: src/views/Settings.js:1440 +#: src/views/Settings.js:1598 msgid "Username" msgstr "Nom d'utilisateur :" -#: src/views/Settings.js:1441 -#: src/views/Settings.js:1601 +#: src/views/Settings.js:1446 +#: src/views/Settings.js:1606 msgid "Username for authorization." msgstr "Nom d'utilisateur pour l'autorisation." -#: src/views/Edit/Sources/Network.js:359 +#: src/views/Edit/Sources/Network.js:375 #: src/views/Edit/Wizard/Sources/Network.js:83 msgid "Username for the device." msgstr "Nom d'utilisateur pour l'appareil." @@ -2533,24 +2557,24 @@ msgstr "ID VPU" msgid "Video" msgstr "Vidéo" -#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:126 #: src/views/Edit/Sources/Raspicam.js:89 -#: src/views/Edit/Sources/V4L.js:96 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:66 +#: src/views/Edit/Sources/V4L.js:109 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 #: src/views/Edit/Wizard/Sources/Raspicam.js:86 -#: src/views/Edit/Wizard/Sources/V4L.js:89 +#: src/views/Edit/Wizard/Sources/V4L.js:105 msgid "Video device" msgstr "Appareil vidéo" -#: src/views/Edit/Profile.js:313 -#: src/views/Edit/ProfileSummary.js:65 +#: src/views/Edit/Profile.js:320 +#: src/views/Edit/ProfileSummary.js:66 #: src/views/Publication/Edit.js:517 msgid "Video settings" msgstr "Paramètres vidéo" -#: src/views/Edit/Wizard/index.js:257 -#: src/views/Edit/Wizard/index.js:341 -#: src/views/Edit/Wizard/index.js:579 +#: src/views/Edit/Wizard/index.js:264 +#: src/views/Edit/Wizard/index.js:354 +#: src/views/Edit/Wizard/index.js:596 msgid "Video setup" msgstr "Configuration vidéo" @@ -2566,7 +2590,7 @@ msgid "Viewer" msgstr "Visionneuse" #: src/views/Edit/Sources/VirtualAudio.js:187 -#: src/views/Edit/Sources/VirtualVideo.js:194 +#: src/views/Edit/Sources/VirtualVideo.js:206 msgid "Virtual source" msgstr "Source virtuelle" @@ -2574,7 +2598,7 @@ msgstr "Source virtuelle" msgid "Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs." msgstr "Bienvenue à Restreamer v2, la solution pour la publication rapide et facile de vidéos. Gratuit pour une utilisation privée et commerciale. Plus d'aide dans les <0>docs." -#: src/views/Settings.js:1580 +#: src/views/Settings.js:1585 msgid "Write protection" msgstr "Protection de l'écriture" @@ -2582,19 +2606,19 @@ msgstr "Protection de l'écriture" msgid "YUV test pattern" msgstr "Mire de test YUV" -#: src/views/Edit/Wizard/index.js:1160 +#: src/views/Edit/Wizard/index.js:1177 msgid "Yes" msgstr "Oui" -#: src/views/Edit/Wizard/index.js:1142 +#: src/views/Edit/Wizard/index.js:1159 msgid "You can't abort the wizard because at least one input must be defined." msgstr "Vous ne pouvez pas interrompre l'assistant car au moins une entrée doit être définie." -#: src/views/Settings.js:2036 +#: src/views/Settings.js:2041 msgid "You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?" msgstr "Vous avez modifié la configuration. Pour que les changements prennent effet, vous devez redémarrer l'application. Voulez-vous redémarrer maintenant ?" -#: src/views/Main/index.js:350 +#: src/views/Main/index.js:347 #: src/views/Publication/Process.js:73 msgid "You have to reconnect manually" msgstr "Vous devez vous reconnecter manuellement" @@ -2603,11 +2627,11 @@ msgstr "Vous devez vous reconnecter manuellement" msgid "You have unsaved changes. Please save them before you can control the service again." msgstr "Vous avez des modifications non sauvegardées. Veuillez les sauvegarder avant de pouvoir contrôler à nouveau le service." -#: src/views/Edit/Wizard/index.js:599 +#: src/views/Edit/Wizard/index.js:616 msgid "Your stream needs to be encoded, but there's no suitable encoder available." msgstr "Votre flux doit être encodé, mais aucun encodeur approprié n'est disponible." -#: src/views/Edit/Wizard/index.js:606 +#: src/views/Edit/Wizard/index.js:623 msgid "Your stream needs to be encoded. Choose the desired encoder:" msgstr "Votre flux doit être encodé. Choisissez l'encodeur souhaité :" @@ -2619,7 +2643,7 @@ msgstr "bleu" msgid "brown" msgstr "brun" -#: src/views/Publication/Player.js:328 +#: src/views/Publication/Player.js:331 msgid "iframe code" msgstr "code iframe" diff --git a/src/locales/it/messages.js b/src/locales/it/messages.js index ba099b7..5907e59 100644 --- a/src/locales/it/messages.js +++ b/src/locales/it/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{"<0>Show probe details":"<0>Mostra dettagli sonda","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Endpoint API non trovato. Impostazioni non salvate.","AVFoundation":"AVFoundation","Abort":"Abort","About":"A proposito di","Add":"Aggiungi","Add Publication":"Aggiungi pubblicazione","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Aggiungere widget e stili esterni al sito di pubblicazione. Può trovare alcuni esempi nella pagina di aiuto.","Add new channel":"Aggiungere un nuovo canale","Add: {0}":["Aggiungi: ",["0"]],"Address":"Indirizzo","Address for the background image.":"Indirizzo per l'immagine di sfondo.","Address to listen on for HTTP requests.":"Indirizzo da ascoltare per le richieste HTTP.","Address to listen on for HTTPS requests.":"Indirizzo su cui ascoltare le richieste HTTPS.","Adjust publication site colors and background as you like.":"Regoli i colori del sito di pubblicazione e lo sfondo come preferisce.","Advanced monitoring":"Monitoraggio avanzato","Advanced settings":"Impostazioni avanzate","Advanced setup":"Configurazione avanzata","Alerting by email":"Avvisi via e-mail","All":"Tutti","All important system settings.":"Tutte le impostazioni importanti del sistema.","Allow all referrer":"Consentire tutti i referenti","Allow counting how many viewers the stream has.":"Permette di contare quanti spettatori ha lo stream.","Amplitude":"Ampiezza","An environment variable sets this value.":"Una variabile d'ambiente imposta questo valore.","App":"App","Application":"Applicazione","Are you sure you want to abort the wizard?":"È sicuro di voler interrompere la procedura guidata?","Audio":"Audio","Audio Device":"Dispositivo audio","Audio device":"Dispositivo audio","Audio from device":"Audio dal dispositivo","Audio settings":"Impostazioni audio","Audio setup":"Configurazione audio","Auth0":"Auth0","Auth0 Tenant":"Auth0 Inquilino","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 non è attualmente disponibile perché questa interfaccia è caricata da un'origine non sicura.","Author":"Autore","Authorization":"Autorizzazione","Autoplay":"Autoplay","Available":"Disponibile","Back":"Indietro","Background colors":"Colori di sfondo","Background image":"Immagine di sfondo","Backup URL":"URL di backup","Backup server":"Server di backup","Backup stream":"Flusso di backup","Backup stream key":"Chiave del flusso di backup","Bandwidth":"Larghezza di banda","Bandwidth control":"Controllo della larghezza di banda","Banner":"Banner","Basic":"Di base","Beep factor":"Fattore bip","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Descriva brevemente ciò che il pubblico vedrà durante il live stream.","Button color":"Colore del pulsante","Cache for files on /data.":"Cache per i file su /data.","Cache time (Seconds)":"Tempo di cache (secondi)","Cache types":"Tipi di cache","Capture clicks":"Cattura i clic","Capture cursor":"Cattura del cursore","Channel \"{0}\" saved":["Canale \"",["0"],"\" salvato"],"Channels":"Canali","Check for updates":"Controlla gli aggiornamenti","Check the requirements":"Controlla i requisiti","Choose a video stream":"Scegliere un flusso video","Choose an audio stream":"Scegliere un flusso audio","Choose an input device ...":"Scegliere un dispositivo di input ...","Choose codec ...":"Scegliere il codec ...","Choose tenant ...":"Scelga l'inquilino ...","Chunk":"Chunk","Close":"Chiudere","Code injection":"Iniezione di codice","Codec":"Codec","Color":"Colore","Config":"Configurazione","Confirm password":"Confermare la password","Connect":"Collegare","Connected device":"Dispositivo collegato","Connected since <0/>":"Collegato da <0/>","Connecting ...":"Collegamento ...","Connecting to Restreamer Core ...":"Collegamento a Restreamer Core ...","Connecting to Restreamer Core failed probably because of mixed content.":"La connessione a Restreamer Core non è riuscita, probabilmente a causa del contenuto misto.","Content":"Contenuto","Cores":"Nuclei","Create user":"Creare un utente","Creative Commons":"Creative Commons","Custom ...":"Personalizzato ...","Custom JSON config for datarhei Core.":"Configurazione JSON personalizzata per datarhei Core.","Custom audio device":"Dispositivo audio personalizzato","Custom audio index":"Indice audio personalizzato","Custom bitrate (kbit/s)":"Bitrate personalizzato (kbit/s)","Custom code injection":"Iniezione di codice personalizzato","Custom delay":"Ritardo personalizzato","Custom device":"Dispositivo personalizzato","Custom format":"Formato personalizzato","Custom framerate":"Framerate personalizzato","Custom keyframe interval":"Intervallo keyframe personalizzato","Custom layout":"Layout personalizzato","Custom sampling (Hz)":"Campionamento personalizzato (Hz)","Custom scale":"Scala personalizzata","Custom size":"Dimensione personalizzata","Custom video device":"Dispositivo video personalizzato","Custom video index":"Indice video personalizzato","Data copied to clipboard":"Dati copiati negli appunti","Death color":"Colore della morte","Decoder":"Decoder","Default":"Default","Delay":"Ritardo","Delay (ms)":"Ritardo (ms)","Delete":"Cancellare","Deleting a publication service cannot be reversed. The publication stops immediately.":"L'eliminazione di un servizio di pubblicazione non può essere annullata. La pubblicazione si interrompe immediatamente.","Delivering mode":"Modalità di consegna","Description":"Descrizione","Design":"Design","Device":"Dispositivo","Disconnect":"Scollegare","Disconnect & Continue":"Disconnettersi e continuare","Disconnecting ...":"Scollegamento ...","Disk":"Disco","Disk cache":"Cache del disco","Disk storage":"Archiviazione su disco","Do you really want to restart the application now?":"Vuoi davvero riavviare l'applicazione ora?","Do you want to delete \"{0}\"?":["Vuole cancellare \"",["0"],"\"?"],"Do you want to delete {title}?":["Vuoi cancellare ",["titolo"],"?"],"Do you want to disconnect \"{0}\"?":["Vuole disconnettere \"",["0"],"\"?"],"Docs":"Documenti","Documentation":"Documentazione","Dup. frames":"Telai duplicati","EDIT: Player":"EDIT: Giocatore","EDIT: Publication Website":"EDIT: Sito web di pubblicazione","Edit":"Modifica","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Modifichi le fonti audio e video per il live stream. Aggiunga una descrizione e imposti la licenza di contenuto desiderata.","Edit: {title}":["Modifica: ",["titolo"]],"Embed":"Incorporare","Enable RTMP server ...":"Abilitare il server RTMP ...","Enable a periodic beep every second with this value times the carrier frequency":"Abilita un bip periodico ogni secondo con questo valore moltiplicato per la frequenza della portante","Enable backup stream":"Attiva il flusso di backup","Enable nerd statistics":"Abilita le statistiche dei nerd","Enable primary stream":"Attiva il flusso primario","Enable snapshots":"Abilita le istantanee","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"L'abilitazione dell'autorizzazione è fortemente consigliata. Altrimenti, chiunque può accedere a questa istanza.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"L'abilitazione dell'autenticazione di base è fortemente consigliata. Altrimenti, chiunque potrebbe scrivere dati su /memfs.","Encoder":"Encoder","Encoding":"Codifica","Encryption":"Crittografia","Enter a name for the new channel.":"Inserisca un nome per il nuovo canale.","Enter password":"Inserire la password","Enter the address of your network source:":"Inserisci l'indirizzo della tua sorgente di rete:","Enter username":"Inserisca il nome utente","Entropy coder":"Codificatore di entropia","Error":"Errore","Error while copying data to clipboard":"Errore durante la copia dei dati negli appunti","Error: {0}":["Errore: ",["0"]],"Expands the area above the channel list (live chat).":"Espande l'area sopra l'elenco dei canali (live chat).","Expands the area under the channel description (comment boxes).":"Espande l'area sotto la descrizione del canale (caselle di commento).","Expert mode":"Modalità esperto","Extend channel list":"Estendere l'elenco dei canali","Extend content":"Estendere il contenuto","Extend footer":"Estendere il piè di pagina","Extend header":"Estendere l'intestazione","FFmpeg":"FFmpeg","FPS":"FPS","Failed to correctly cleanup previous process data":"Non è riuscito a pulire correttamente i dati del processo precedente","Failed to create publication service ({0})":["Impossibile creare il servizio di pubblicazione (",["0"],")"],"Failed to create publication website files.":"Impossibile creare i file del sito web della pubblicazione.","Failed to probe the source. Please check the <0>probe details.":"Impossibile sondare la sorgente. Per favore controlla i <0>dettagli della sonda.","Failed to refresh token: {0}":["Impossibile aggiornare il token: ",["0"]],"Failed to save ingest metadata":"Non è riuscito a salvare i metadati di ingest","Failed to stop process":"Non è riuscito a fermare il processo","Failed to store player size setting.":"Impossibile memorizzare l'impostazione delle dimensioni del giocatore.","Failed to store publication service ({0})":["Impossibile memorizzare il servizio di pubblicazione (",["0"],")"],"Failed to update ingest process ({0})":["Fallito l'aggiornamento del processo di ingest (",["0"],")"],"Failed to update the player":"Non è riuscito ad aggiornare il giocatore","Failed to verify the source. Please check the address.":"Impossibile verificare la fonte. Si prega di controllare l'indirizzo.","Finish":"Finitura","Flags":"Bandiere","For Javascripts.":"Per i Javascript.","For Stylesheets.":"Per i fogli di stile.","Force input framerate":"Forzare il framerate in ingresso","Format":"Formato","Frame drops":"Cadute del telaio","Framebuffer":"Framebuffer","Framerate":"Framerate","Frequency (Hz)":"Frequenza (Hz)","GET":"GET","General":"Generale","Google Analytics ID":"ID di Google Analytics","Google Analytics Tracker Name":"Nome del tracker di Google Analytics","HLS":"HLS","HLS URL":"URL HLS","HLS statistic for the In-memory storage":"Statistica HLS per l'archiviazione In-memory","HTTP and HTTPS":"HTTP e HTTPS","HTTP port":"Porta HTTP","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"Porta HTTPS","Hardware device":"Dispositivo hardware","Header":"Intestazione","Headline":"Titolo","Hosted Restreamer interface":"Interfaccia Restreamer in hosting","Human readable name on the service.":"Nome leggibile dall'uomo del servizio.","IP address":"Indirizzo IP","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Se ha cambiato le porte, è possibile che Restreamer Core sia già stato riavviato, ma ora è disponibile su una porta diversa.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Se ha attivato Let's Encrypt TLS, potrebbe essere necessario un po' di tempo per acquisire i certificati. Si assicuri che Restreamer Core sia raggiungibile tramite la porta 80 da Internet. Controlli il registro della console di Restreamer Core.","Ignore IP ranges":"Ignora gli intervalli IP","Image URL":"URL dell'immagine","Imprint":"Impronta","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"Oltre al player, Restreamer offre una landingpage completa, che può utilizzare per presentare il suo live stream in modo semplice e veloce.","In-memory":"In-memory","In-memory storage":"Archiviazione in memoria","Incompatible":"Incompatibile","Inherit":"Eredita","Inject 1":"Iniettare 1","Inject 2":"Iniettare 2","Inject 3":"Iniettare 3","Inject 4":"Iniettare 4","Internal HLS server":"Server HLS interno","Internal RTMP server":"Server RTMP interno","Interval (seconds)":"Intervallo (secondi)","Issue alert":"Allarme problemi","Keyframe interval (seconds)":"Intervallo dei fotogrammi chiave (secondi)","Layout":"Layout","Let's Encrypt certification":"Certificazione Let's Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let's Encrypt richiede uno o più nomi di dominio pubblico e una porta 80/TCP accessibile.","Level":"Livello","Level of system protocol.":"Livello di protocollo del sistema.","License":"Licenza","Life color":"Colore della vita","Linecolor":"Linecolor","Link":"Link","Link, mouseover":"Link, passaggio del mouse","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Elenco di intervalli IP in notazione CIDR, ad esempio 127.0.0.1/32, che le statistiche non registreranno, un intervallo IP per riga. Lasciare vuoto per registrare tutte le sessioni.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Elenco di estensioni di file da mettere in cache (ad esempio \".html\"), una per riga. Lasciare vuoto per mettere in cache tutti i tipi di file.","List size (segments)":"Dimensione della lista (segmenti)","Live-Streaming to Facebook Live RTMP service":"Live-Streaming verso il servizio RTMP di Facebook Live","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Live-Streaming su Instagram Live RTMP Service. La chiave di streaming richiede un servizio come <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Live-Streaming su Twitch Live RTMP Service.","Live-Streaming to Vimeos Live RTMP Service":"Trasmissione in diretta su Vimeos Live RTMP Service","Livesource ID":"ID Livesource","Log level":"Livello di registro","Logging":"Registrazione","Login":"Accesso","Login failed: Couldn't load API details":"Accesso fallito: Impossibile caricare i dettagli API","Login failed: {0}":["Accesso fallito: ",["0"]],"Login/JWT authorization":"Accesso/Autorizzazione JWT","Logo":"Logo","Logout":"Disconnessione","MB":"MB","Main Source":"Fonte principale","Main channel":"Canale principale","Main channel not found":"Canale principale non trovato","Main channel saved":"Canale principale salvato","Main page channel (index.html).":"Canale della pagina principale (index.html).","Maintainer:":"Manutentore:","Maximum allowed cache size, 0 for unlimited.":"Dimensione massima consentita della cache, 0 per illimitata.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Megabyte massimi consentiti di RAM per /memfs, 0 per illimitato.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Megabyte massimi consentiti da consumare dal disco rigido. 0 per illimitato.","Maximum bandwidth Mbit/s":"Larghezza di banda massima Mbit/s","Maximum delay in milliseconds.":"Ritardo massimo in millisecondi.","Maximum file size (Megabytes)":"Dimensione massima del file (Megabyte)","Maximum file size to put in cache.":"Dimensione massima del file da inserire nella cache.","Maximum log histroy":"Istanza di log massima","Maximum log lines":"Linee di registro massime","Maximum size (Megabytes)":"Dimensione massima (Megabyte)","Maximum viewer idle time (Seconds)":"Tempo massimo di inattività del telespettatore (secondi)","Maximum viewers":"Spettatori massimi","Memory":"Memoria","Meta information":"Meta informazioni","Metadata":"Metadati","Mold":"Stampo","More about Twitter's copyright <0>here.":"Maggiori informazioni sul copyright di Twitter <0>qui.","More about YouTube's copyright <0>here.":"Maggiori informazioni sul copyright di YouTube <0>qui.","More about licenses here":"Maggiori informazioni sulle licenze qui","More about the service":"Maggiori informazioni sul servizio","Mute":"Muto","Name":"Nome","Name for the template. If the name already exists, it will be overwritten.":"Nome del modello. Se il nome esiste già, verrà sovrascritto.","Network":"Rete","Network source":"Fonte della rete","Next":"Prossimo","Next: Audio":"Prossimo: Audio","Next: Video setup":"Prossimo: Impostazione video","No":"No","No audio":"Nessun audio","No audio stream available":"Nessun flusso audio disponibile","No live stream was detected. Please check the software that sends the stream.":"Non è stato rilevato alcun flusso in diretta. Si prega di controllare il software che invia il flusso.","No source selected":"Nessuna fonte selezionata","No suitable encoder found.":"Nessun encoder adatto trovato.","No video":"Nessun video","No video stream available":"Nessun flusso video disponibile","Node ID":"ID del nodo","Noise":"Rumore","None":"Nessuno","Notes":"Note","Number of log lines to keep.":"Numero di righe di registro da conservare.","Number of logs to keep for each process.":"Numero di registri da conservare per ogni processo.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Un referente per riga, ad esempio http://www.example.com.","Open":"Aperto","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Il passthrough (copia) deve essere disattivato solo se necessario. Ogni codifica richiede risorse CPU/GPU aggiuntive.","Password":"Password","Password for authorization.":"Password per l'autorizzazione.","Password for the device.":"Password per il dispositivo.","Persist viewer statistics":"Persistere le statistiche dei visualizzatori","Pixel format":"Formato pixel","Plan: <0>Starter":"Piano: <0>Inizio","Platforms":"Piattaforme","Playback":"Riproduzione","Player":"Giocatore","Player URL":"URL del giocatore","Player settings saved":"Impostazioni del giocatore salvate","Playersite":"Playersite","Playlist":"Playlist","Please check the <0>process log":"Si prega di controllare il <0>log del processo","Please contact the operator of the service and check what happens.":"Contatta l'operatore del servizio e verifica cosa succede.","Please select a file to upload.":"Seleziona un file da caricare.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Se possibile, utilizzi \"Passthrough (copia)\". La codifica richiede risorse CPU/GPU aggiuntive.","Please wait. Probe stream data ...":"Si prega di attendere. Flusso di dati della sonda ...","Please wait. Setting up the stream ...":"Si prega di attendere. Impostazione del flusso ...","Port":"Porto","Position":"Posizione","Preset":"Preset","Primary stream":"Flusso primario","Primary stream key":"Chiave di flusso primaria","Probe":"Sonda","Process":"Processo","Process control":"Controllo del processo","Process debug":"Debug del processo","Process debug report":"Rapporto di debug del processo","Process details":"Dettagli del processo","Process report":"Rapporto sul processo","Processing & Control":"Elaborazione e controllo","Profile":"Profilo","Protocol":"Protocollo","Protocols":"Protocolli","Public domain/s":"Dominio pubblico/i","Publication service not found":"Servizio di pubblicazione non trovato","Publication website settings saved":"Impostazioni del sito web di pubblicazione salvate","Publications":"Pubblicazioni","Pull Mode":"Modo di tirare","Pull or recieve the data:":"Tirare o ricevere i dati:","Quality":"Qualità","RGB test pattern":"Modello di test RGB","RTMP app for publishing.":"App RTMP per la pubblicazione.","RTMP server":"Server RTMP","RTMP server is not enabled":"Il server RTMP non è abilitato","RTMP server listen address.":"Indirizzo di ascolto del server RTMP.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Token RTMP per la pubblicazione e la riproduzione. Il token è il valore del parametro di query URL 'token'.","RTMP/S":"RTMP/S","RTMPS server":"Server RTMPS","RTSP":"RTSP","Raspberry Pi camera":"Fotocamera Raspberry Pi","Rate control":"Controllo del tasso","Ratio":"Rapporto","Read input at native speed":"Leggere l'input a velocità nativa","Receive Mode":"Modalità di ricezione","Reconnect":"Ricollegare","Reconnect delay (seconds)":"Ritardo di riconnessione (secondi)","Reconnecting in {0}s":["Riconnettersi in ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["La riconnessione a Restreamer Core non è riuscita negli ultimi ",["RETRIES"]," secondi."],"Reconnecting to Restreamer Core failed.":"La riconnessione a Restreamer Core non è riuscita.","Region":"Regione","Reload":"Ricarica","Remove the oldest entries if the /memfs is full":"Rimuovere le voci più vecchie se la /memfs è piena","Requires activation":"Richiede l'attivazione","Restart":"Riavviare","Restart required":"Riavvio richiesto","Restarting":"Riavvio","Restarting Restreamer Core ...":"Riavvio di Restreamer Core ...","Restarting the application failed.":"Il riavvio dell'applicazione non è riuscito.","Restreamer Service":"Servizio Restreamer","Retrieving stream data ...":"Recuperare i dati del flusso ...","Retry":"Riprova","Rule":"Regola","Sampling":"Campionamento","Save":"Salva","Scale":"Scala","Seconds to keep files in cache.":"Secondi per mantenere i file nella cache.","Seconds until a process is restarted.":"Secondi fino al riavvio di un processo.","Seconds until a staled process is terminated.":"Secondi fino alla terminazione di un processo in stallo.","Seconds until the snapshot/thumbnail of the video source is updated.":"Secondi fino all'aggiornamento dell'istantanea/ miniatura della sorgente video.","Security":"Sicurezza","Security token":"Token di sicurezza","Seekbar color":"Colore Seekbar","Segment length (seconds)":"Lunghezza del segmento (secondi)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Il segmento verrà tagliato sul fotogramma chiave successivo, una volta trascorso questo tempo. Si consiglia il valore 2.","Segmentation":"Segmentazione","Select a device:":"Selezionare un dispositivo:","Select audio Source:":"Seleziona la sorgente audio:","Select source ...":"Selezionare la fonte ...","Select video source:":"Selezionare la sorgente video:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Selezioni se prelevare il flusso da una <0>sorgente di rete (come una telecamera di rete) o dal <1>server RTMP interno (ad esempio, i flussi OBS verso il Restreamer).","Select your encoding setting:":"Seleziona la tua impostazione di codifica:","Selected":"Selezionato","Selected channel":"Canale selezionato","Selection":"Selezione","Send anonymous metrics (helps us for future development)":"Invii metriche anonime (ci aiuta per lo sviluppo futuro)","Send stream to this address:":"Invia il flusso a questo indirizzo:","Send video to Framebuffer":"Invia il video al Framebuffer","Server":"Server","Service":"Servizio","Service name":"Nome del servizio","Service token for monitoring.":"Token di servizio per il monitoraggio.","Sessions":"Sessioni","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Imposta un limite di larghezza di banda in Mbit al secondo per il trasferimento di dati HLS in uscita. Tutti i servizi, come RTMP e i processi in uscita, sono inclusi nel calcolo. Se la larghezza di banda viene superata, gli spettatori HLS ricevono il codice di stato HTTP 509 (Limite di larghezza di banda superato). 0 è illimitato.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Imposta un limite di visualizzazione per le sessioni HLS. Se il limite viene superato, gli spettatori HLS ricevono il codice di stato HTTP 509 (Bandwidth Limit Exceeded). 0 è illimitato.","Setting for connection to the service.":"Impostazione per la connessione al servizio.","Settings":"Impostazioni","Settings (expert mode)":"Impostazioni (modalità esperto)","Settings for /data path. The access is protected by":"Impostazioni per il percorso /data. L'accesso è protetto da","Settings for /memfs path.":"Impostazioni per il percorso /memfs.","Settings saved. All changes will be applied after restarting the application.":"Impostazioni salvate. Tutte le modifiche saranno applicate dopo il riavvio dell'applicazione.","Shows a reference to the project.":"Mostra un riferimento al progetto.","Sign up (free)":"Si iscriva (gratis)","Silence":"Silenzio","Silence Audio":"Silenzio Audio","Sine":"Seno","Sitename":"Nome del sito","Size":"Dimensione","Snapshot":"Snapshot","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Timeout della presa (microsecondi)","Software":"Software","Source":"Fonte","Speed":"Velocità","Stale timeout (seconds)":"Timeout di stallo (secondi)","Statistics":"Statistiche","Storage":"Stoccaggio","Stores the viewer statistics to the disk.":"Memorizza le statistiche del visualizzatore sul disco.","Stream":"Flusso","Stream URL":"URL del flusso","Stream key":"Chiave del flusso","Stream name":"Nome del flusso","Stream names":"Nomi dei flussi","Support datarhei Restreamer":"Supporto datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Supporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT e altro.","System":"Sistema","Template":"Modello","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Modello da utilizzare per la creazione del sito web della pubblicazione. Il pulsante Elimina rimuove la selezione dal sistema.","Terms":"Termini","Test pattern":"Modello di test","Test pattern (extended)":"Modello di test (esteso)","Text colors":"Colori del testo","The amplitude (0.0 - 1.0) of the generated audio stream":"L'ampiezza (0.0 - 1.0) del flusso audio generato","The application is using an older version of the settings.":"L'applicazione sta usando una vecchia versione delle impostazioni.","The bitrate of the audio stream.":"Il bitrate del flusso audio.","The carrier frequency":"La frequenza portante","The channel \"{0}\" could not be deleted":["Non è stato possibile eliminare il canale \"",["0"],"\"."],"The channel \"{0}\" has been deleted":["Il canale \"",["0"],"\" è stato cancellato."],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"La cancellazione di questo canale non può essere recuperata. Tutte le pubblicazioni di questo canale saranno rimosse.","The input profile is not complete. Please define a video and audio source.":"Il profilo di ingresso non è completo. Si prega di definire una sorgente video e audio.","The layout of the audio stream.":"Il layout del flusso audio.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"Il numero massimo di segmenti della playlist. 0 conterrà tutti i segmenti. 6 è consigliato.","The noise color":"Il colore del rumore","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"La persona che ha associato un'opera con questo atto ha dedicato l'opera al pubblico dominio rinunciando a tutti i suoi diritti sull'opera in tutto il mondo secondo la legge sul diritto d'autore, compresi tutti i diritti connessi e vicini, nella misura consentita dalla legge. Puoi copiare, modificare, distribuire ed eseguire l'opera, anche per scopi commerciali, il tutto senza chiedere il permesso.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"Il nome di dominio pubblico raggiungibile dell'host su cui gira questo Restreamer. Separi i nomi di dominio multipli con una virgola.","The publication service \"{0}\" could not be deleted":["Il servizio di pubblicazione \"",["0"],"\" non può essere eliminato"],"The publication service \"{0}\" has been created":["Il servizio di pubblicazione \"",["0"],"\" è stato creato"],"The publication service \"{0}\" has been deleted":["Il servizio di pubblicazione \"",["0"],"\" è stato cancellato"],"The publication service has been created":"Il servizio di pubblicazione è stato creato","The sample rate of the audio stream.":"La frequenza di campionamento del flusso audio.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["Il file selezionato è troppo grande (",["0"]," byte). Sono ammessi solo ",["1"]," byte."],"The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}":["Il tipo di file selezionato (",["0"],") è ora consentito. I tipi di file consentiti sono ",["imageAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}":["Il tipo di file selezionato (",["0"],") è ora permesso. I tipi di file consentiti sono ",["logoAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}":["Il tipo di file selezionato (",["0"],") è ora consentito. I tipi di file consentiti sono ",["templateAcceptString"]],"The settings for \"{0}\" have been saved":["Le impostazioni per \"",["0"],"\" sono state salvate"],"The source doesn't provide any audio streams.":"La fonte non fornisce alcun flusso audio.","The source doesn't provide any audio streams. Please check the <0>probe details.":"La sorgente non fornisce alcun flusso audio. Per favore controlla i <0>dettagli della sonda.","The source doesn't provide any compatible audio streams.":"La fonte non fornisce alcun flusso audio compatibile.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"La fonte non fornisce alcun flusso video compatibile. Per favore controlla i <0>requisiti.","The source doesn't provide any video streams. Please check the <0>probe details.":"La fonte non fornisce alcun flusso video. Per favore controlla i <0>dettagli della sonda.","The source doesn't provide any video streams. Please check the device.":"La fonte non fornisce alcun flusso video. Si prega di controllare il dispositivo.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"La sorgente video non fornisce alcun flusso audio compatibile. Si raccomanda <0>Audio silenzioso. I servizi come YouTube, Facebook & Co. richiedono un canale audio.","The video source is compatible. Select the desired resolution:":"La sorgente video è compatibile. Selezionare la risoluzione desiderata:","There are updates available. Here you get more information.":"Sono disponibili degli aggiornamenti. Qui può ottenere maggiori informazioni.","There war an error during upload: {0}":["C'è un errore durante il caricamento: ",["0"]],"There was a problem storing the settings. Settings not saved.":"Si è verificato un problema nella memorizzazione delle impostazioni. Le impostazioni non sono state salvate.","There was an error connecting to Restreamer Core at {0}.":["Si è verificato un errore di connessione a Restreamer Core a ",["0"],"."],"There was an error during upload: {0}":["Si è verificato un errore durante il caricamento: ",["0"]],"There was an error setting up the stream.":"C'è stato un errore nell'impostazione del flusso.","There were some errors in the settings. Settings not saved.":"Ci sono stati alcuni errori nelle impostazioni. Impostazioni non salvate.","There's no login method available.":"Non c'è un metodo di accesso disponibile.","This is a dummy service that explains to you the concepts of service.":"Questo è un servizio fittizio che le spiega i concetti di servizio.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Non si tratta necessariamente di un errore. Tuttavia, potrebbe essere necessario un po' più di tempo perché Restreamer Core si riavvii...","This is to mention the copyright regulations for the target of this service.":"Questo per citare le norme sul copyright per il target di questo servizio.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Questa licenza permette ai riutilizzatori di copiare e distribuire il materiale in qualsiasi mezzo o formato solo in forma non adattata, e solo a condizione che venga data attribuzione al creatore. La licenza permette l'uso commerciale.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Questa licenza permette ai riutilizzatori di copiare e distribuire il materiale in qualsiasi mezzo o formato solo in forma non adattata, solo per scopi non commerciali, e solo a condizione che venga data attribuzione al creatore.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato solo per scopi non commerciali, e solo finché viene data attribuzione al creatore.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato solo per scopi non commerciali, e solo finché viene data l'attribuzione al creatore. Se remixate, adattate o costruite sul materiale, dovete dare in licenza il materiale modificato sotto gli stessi termini.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato, purché venga data l'attribuzione al creatore. La licenza permette l'uso commerciale.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato, purché venga data l'attribuzione al creatore. La licenza permette l'uso commerciale. Se remixate, adattate o costruite sul materiale, dovete dare in licenza il materiale modificato sotto gli stessi termini.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Questa sorgente non può essere modificata mentre è in uso. Per continuare, deve scollegare la sorgente.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Questa versione dell'interfaccia utente non supporta il binario FFmpeg disponibile (",["0"],"). L'interfaccia utente richiede ",["1"],". Utilizzi un binario FFmpeg supportato."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Questa versione dell'interfaccia utente non supporta il Core connesso (",["0"],"). L'interfaccia utente richiede ",["1"],". Utilizzi una versione compatibile dell'interfaccia utente."],"This version of the UI is compatible.":"Questa versione dell'UI è compatibile.","Time until an inactive viewer connection is treated as closed.":"Tempo fino a quando una connessione inattiva del visualizzatore viene trattata come chiusa.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Trasmette le istantanee della sorgente principale a un server HTTP/S. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Trasmette il canale audio della sorgente principale a un server Icecast. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale come HTTP-Live-Streaming (HLS) a un server HTTP/S. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale come MPEG-DASH a un server HTTP/S. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un servizio Brightcove Live. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Trasmette la sorgente principale a un servizio RTMP di CDN77. Maggiori informazioni sulla configurazione <0>qui.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Trasmette la sorgente principale a un servizio RTMP DaCast. Maggiori informazioni sulla configurazione <0>qui.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Trasmette la sorgente principale a un Servizio MPEG-TS. Maggiori dettagli sulle impostazioni sono disponibili qui <0>qui.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server RTMP(e|s|t|te|ts). Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server RTSP. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un Server Red5/Pro. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server SRT. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server UDP. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server WOWZA. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a una risorsa Core datarhei. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Trasmette la fonte principale ad una fonte di livespotting.com. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Trasmette la sorgente principale a Akamai (MSL) Media Services Live. Maggiori dettagli sulle impostazioni dell'Encoder MSL sono disponibili su <0>qui.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Trasmette la sorgente principale al servizio di codifica cloud Bitmovin, un potente strumento per lo streaming live. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Trasmette la sorgente principale al Servizio Restream RTMP. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Trasmette il suo video come flusso RTMP con la chiave necessaria generata in YouTube Studio. Può trovare maggiori informazioni sull'impostazione di un live stream nella <0>Creator Academy di YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Trasmette il suo flusso video con la chiave richiesta, che è stata generata in Twitter Producer. Può trovare maggiori informazioni sull'impostazione di un live stream su Twitter <0>Producer.","Tune":"Tune","UDP transport":"Trasporto UDP","Unable to load the config.":"Impossibile caricare la configurazione.","Unique ident on the service.":"Identità unica del servizio.","Unknown":"Sconosciuto","Unselected":"Non selezionato","Upload":"Carica","Uploading the file failed":"Il caricamento del file non è riuscito","Uploading the logo failed":"Caricamento del logo fallito","Uptime":"Uptime","Use Auth0 for your running Restreamer Core. More <0>details.":"Utilizzi Auth0 per il suo Restreamer Core in esecuzione. Ulteriori <0>dettagli.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Utilizzi la procedura guidata (<0/>) per un'impostazione rapida e semplice, oppure modifichi (<1/>) le sorgenti direttamente in modalità personalizzata.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilizzi il suo copyright e scelga la licenza d'immagine corretta. Che sia libera per tutti o altamente limitata. Discuta brevemente di ciò che gli altri possono fare con la sua immagine.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Usa il tuo copyright e scegli la giusta licenza per le immagini. Che sia libera per tutti o altamente limitata. Discuti brevemente su cosa gli altri possono fare con la tua immagine.","User registration":"Registrazione dell'utente","Username":"Nome utente","Username for authorization.":"Nome utente per l'autorizzazione.","Username for the device.":"Nome utente del dispositivo.","VPU ID":"ID VPU","Video":"Video","Video device":"Dispositivo video","Video settings":"Impostazioni video","Video setup":"Configurazione video","Video source":"Fonte video","Viewer":"Visualizzatore","Virtual source":"Fonte virtuale","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Benvenuti a Restreamer v2, la soluzione per pubblicare video in modo facile e veloce. Gratuito per uso privato e commerciale. Ulteriore aiuto nei <0>docs.","Write protection":"Scrivere la protezione","YUV test pattern":"Modello di test YUV","Yes":"Sì","You can't abort the wizard because at least one input must be defined.":"Non può interrompere la procedura guidata perché deve essere definito almeno un ingresso.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Hai cambiato la configurazione. Affinché le modifiche abbiano effetto, devi riavviare l'applicazione. Vuoi riavviare ora?","You have to reconnect manually":"Devi riconnetterti manualmente","You have unsaved changes. Please save them before you can control the service again.":"Hai delle modifiche non salvate. Per favore, salvale prima di poter controllare di nuovo il servizio.","Your stream needs to be encoded, but there's no suitable encoder available.":"Il suo flusso deve essere codificato, ma non è disponibile un codificatore adatto.","Your stream needs to be encoded. Choose the desired encoder:":"Il tuo flusso deve essere codificato. Scegli il codificatore desiderato:","blue":"blu","brown":"marrone","iframe code":"codice iframe","kbit/s":"kbit/s","pink":"rosa","velvet":"velluto","violet":"viola","white":"bianco"}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{"<0>Compatibility list":"<0>Elenco di compatibilità","<0>Show probe details":"<0>Mostra dettagli sonda","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Endpoint API non trovato. Impostazioni non salvate.","AVFoundation":"AVFoundation","Abort":"Abort","About":"A proposito di","Add":"Aggiungi","Add Publication":"Aggiungi pubblicazione","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Aggiungere widget e stili esterni al sito di pubblicazione. Può trovare alcuni esempi nella pagina di aiuto.","Add new channel":"Aggiungere un nuovo canale","Add: {0}":["Aggiungi: ",["0"]],"Address":"Indirizzo","Address for the background image.":"Indirizzo per l'immagine di sfondo.","Address to listen on for HTTP requests.":"Indirizzo da ascoltare per le richieste HTTP.","Address to listen on for HTTPS requests.":"Indirizzo su cui ascoltare le richieste HTTPS.","Adjust publication site colors and background as you like.":"Regoli i colori del sito di pubblicazione e lo sfondo come preferisce.","Advanced monitoring":"Monitoraggio avanzato","Advanced settings":"Impostazioni avanzate","Advanced setup":"Configurazione avanzata","Alerting by email":"Avvisi via e-mail","All":"Tutti","All important system settings.":"Tutte le impostazioni importanti del sistema.","Allow all referrer":"Consentire tutti i referenti","Allow counting how many viewers the stream has.":"Permette di contare quanti spettatori ha lo stream.","Amplitude":"Ampiezza","An environment variable sets this value.":"Una variabile d'ambiente imposta questo valore.","App":"App","Application":"Applicazione","Are you sure you want to abort the wizard?":"È sicuro di voler interrompere la procedura guidata?","Audio":"Audio","Audio Device":"Dispositivo audio","Audio device":"Dispositivo audio","Audio from device":"Audio dal dispositivo","Audio settings":"Impostazioni audio","Audio setup":"Configurazione audio","Auth0":"Auth0","Auth0 Tenant":"Auth0 Inquilino","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 non è attualmente disponibile perché questa interfaccia è caricata da un'origine non sicura.","Author":"Autore","Authorization":"Autorizzazione","Automatic cleanup of all media data":"Pulizia automatica di tutti i dati dei media","Autoplay":"Autoplay","Available":"Disponibile","Back":"Indietro","Background colors":"Colori di sfondo","Background image":"Immagine di sfondo","Backup URL":"URL di backup","Backup server":"Server di backup","Backup stream":"Flusso di backup","Backup stream key":"Chiave del flusso di backup","Bandwidth":"Larghezza di banda","Bandwidth control":"Controllo della larghezza di banda","Banner":"Banner","Basic":"Di base","Beep factor":"Fattore bip","Bitrate":"Bitrate","Briefly describe what the audience will see during the live stream.":"Descriva brevemente ciò che il pubblico vedrà durante il live stream.","Button color":"Colore del pulsante","Cache for files on /data.":"Cache per i file su /data.","Cache time (Seconds)":"Tempo di cache (secondi)","Cache types":"Tipi di cache","Capture clicks":"Cattura i clic","Capture cursor":"Cattura del cursore","Channel \"{0}\" saved":["Canale \"",["0"],"\" salvato"],"Channels":"Canali","Check for updates":"Controlla gli aggiornamenti","Check the requirements":"Controlla i requisiti","Choose a video stream":"Scegliere un flusso video","Choose an audio stream":"Scegliere un flusso audio","Choose an input device ...":"Scegliere un dispositivo di input ...","Choose codec ...":"Scegliere il codec ...","Choose tenant ...":"Scelga l'inquilino ...","Chunk":"Chunk","Close":"Chiudere","Code injection":"Iniezione di codice","Codec":"Codec","Color":"Colore","Config":"Configurazione","Confirm password":"Confermare la password","Connect":"Collegare","Connected device":"Dispositivo collegato","Connected since <0/>":"Collegato da <0/>","Connecting ...":"Collegamento ...","Connecting to Restreamer Core ...":"Collegamento a Restreamer Core ...","Connecting to Restreamer Core failed probably because of mixed content.":"La connessione a Restreamer Core non è riuscita, probabilmente a causa del contenuto misto.","Content":"Contenuto","Content URL":"Content URL","Cores":"Nuclei","Create user":"Creare un utente","Creative Commons":"Creative Commons","Custom ...":"Personalizzato ...","Custom JSON config for datarhei Core.":"Configurazione JSON personalizzata per datarhei Core.","Custom audio device":"Dispositivo audio personalizzato","Custom audio index":"Indice audio personalizzato","Custom bitrate (kbit/s)":"Bitrate personalizzato (kbit/s)","Custom code injection":"Iniezione di codice personalizzato","Custom delay":"Ritardo personalizzato","Custom device":"Dispositivo personalizzato","Custom format":"Formato personalizzato","Custom framerate":"Framerate personalizzato","Custom keyframe interval":"Intervallo keyframe personalizzato","Custom layout":"Layout personalizzato","Custom sampling (Hz)":"Campionamento personalizzato (Hz)","Custom scale":"Scala personalizzata","Custom size":"Dimensione personalizzata","Custom video device":"Dispositivo video personalizzato","Custom video index":"Indice video personalizzato","Data copied to clipboard":"Dati copiati negli appunti","Death color":"Colore della morte","Decoder":"Decoder","Default":"Default","Delay":"Ritardo","Delay (ms)":"Ritardo (ms)","Delete":"Cancellare","Deleting a publication service cannot be reversed. The publication stops immediately.":"L'eliminazione di un servizio di pubblicazione non può essere annullata. La pubblicazione si interrompe immediatamente.","Delivering mode":"Modalità di consegna","Description":"Descrizione","Design":"Design","Device":"Dispositivo","Disconnect":"Scollegare","Disconnect & Continue":"Disconnettersi e continuare","Disconnecting ...":"Scollegamento ...","Disk":"Disco","Disk cache":"Cache del disco","Disk storage":"Archiviazione su disco","Do you really want to restart the application now?":"Vuoi davvero riavviare l'applicazione ora?","Do you want to delete \"{0}\"?":["Vuole cancellare \"",["0"],"\"?"],"Do you want to delete {title}?":["Vuoi cancellare ",["titolo"],"?"],"Do you want to disconnect \"{0}\"?":["Vuole disconnettere \"",["0"],"\"?"],"Docs":"Documenti","Documentation":"Documentazione","Dup. frames":"Telai duplicati","EDIT: Player":"EDIT: Giocatore","EDIT: Publication Website":"EDIT: Sito web di pubblicazione","Edit":"Modifica","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Modifichi le fonti audio e video per il live stream. Aggiunga una descrizione e imposti la licenza di contenuto desiderata.","Edit: {title}":["Modifica: ",["titolo"]],"Embed":"Incorporare","Enable RTMP server ...":"Abilitare il server RTMP ...","Enable a periodic beep every second with this value times the carrier frequency":"Abilita un bip periodico ogni secondo con questo valore moltiplicato per la frequenza della portante","Enable backup stream":"Attiva il flusso di backup","Enable nerd statistics":"Abilita le statistiche dei nerd","Enable primary stream":"Attiva il flusso primario","Enable snapshots":"Abilita le istantanee","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"L'abilitazione dell'autorizzazione è fortemente consigliata. Altrimenti, chiunque può accedere a questa istanza.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"L'abilitazione dell'autenticazione di base è fortemente consigliata. Altrimenti, chiunque potrebbe scrivere dati su /memfs.","Encoder":"Encoder","Encoding":"Codifica","Encryption":"Crittografia","Enter a name for the new channel.":"Inserisca un nome per il nuovo canale.","Enter password":"Inserire la password","Enter the address of your network source:":"Inserisci l'indirizzo della tua sorgente di rete:","Enter username":"Inserisca il nome utente","Entropy coder":"Codificatore di entropia","Error":"Errore","Error while copying data to clipboard":"Errore durante la copia dei dati negli appunti","Error: {0}":["Errore: ",["0"]],"Expands the area above the channel list (live chat).":"Espande l'area sopra l'elenco dei canali (live chat).","Expands the area under the channel description (comment boxes).":"Espande l'area sotto la descrizione del canale (caselle di commento).","Expert mode":"Modalità esperto","Extend channel list":"Estendere l'elenco dei canali","Extend content":"Estendere il contenuto","Extend footer":"Estendere il piè di pagina","Extend header":"Estendere l'intestazione","FFmpeg":"FFmpeg","FPS":"FPS","Failed to create publication service ({0})":["Impossibile creare il servizio di pubblicazione (",["0"],")"],"Failed to create publication website files.":"Impossibile creare i file del sito web della pubblicazione.","Failed to probe the source. Please check the <0>probe details.":"Impossibile sondare la sorgente. Per favore controlla i <0>dettagli della sonda.","Failed to refresh token: {0}":["Impossibile aggiornare il token: ",["0"]],"Failed to save ingest metadata":"Non è riuscito a salvare i metadati di ingest","Failed to stop process":"Non è riuscito a fermare il processo","Failed to store player size setting.":"Impossibile memorizzare l'impostazione delle dimensioni del giocatore.","Failed to store publication service ({0})":["Impossibile memorizzare il servizio di pubblicazione (",["0"],")"],"Failed to update ingest process ({0})":["Fallito l'aggiornamento del processo di ingest (",["0"],")"],"Failed to update the player":"Non è riuscito ad aggiornare il giocatore","Failed to verify the source. Please check the address.":"Impossibile verificare la fonte. Si prega di controllare l'indirizzo.","Finish":"Finitura","Flags":"Bandiere","For Javascripts.":"Per i Javascript.","For Stylesheets.":"Per i fogli di stile.","Force input framerate":"Forzare il framerate in ingresso","Format":"Formato","Frame drops":"Cadute del telaio","Framebuffer":"Framebuffer","Framerate":"Framerate","Frequency (Hz)":"Frequenza (Hz)","GET":"GET","General":"Generale","Google Analytics ID":"ID di Google Analytics","Google Analytics Tracker Name":"Nome del tracker di Google Analytics","HLS":"HLS","HLS statistic for the In-memory storage":"Statistica HLS per l'archiviazione In-memory","HTTP and HTTPS":"HTTP e HTTPS","HTTP port":"Porta HTTP","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"Porta HTTPS","Hardware device":"Dispositivo hardware","Header":"Intestazione","Headline":"Titolo","Hosted Restreamer interface":"Interfaccia Restreamer in hosting","Human readable name on the service.":"Nome leggibile dall'uomo del servizio.","IP address":"Indirizzo IP","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Se ha cambiato le porte, è possibile che Restreamer Core sia già stato riavviato, ma ora è disponibile su una porta diversa.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Se ha attivato Let's Encrypt TLS, potrebbe essere necessario un po' di tempo per acquisire i certificati. Si assicuri che Restreamer Core sia raggiungibile tramite la porta 80 da Internet. Controlli il registro della console di Restreamer Core.","Ignore IP ranges":"Ignora gli intervalli IP","Image URL":"URL dell'immagine","Imprint":"Impronta","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"Oltre al player, Restreamer offre una landingpage completa, che può utilizzare per presentare il suo live stream in modo semplice e veloce.","In-memory":"In-memory","In-memory storage":"Archiviazione in memoria","Incompatible":"Incompatibile","Inherit":"Eredita","Inject 1":"Iniettare 1","Inject 2":"Iniettare 2","Inject 3":"Iniettare 3","Inject 4":"Iniettare 4","Internal HLS server":"Server HLS interno","Internal RTMP server":"Server RTMP interno","Interval (seconds)":"Intervallo (secondi)","Issue alert":"Allarme problemi","Keyframe interval (seconds)":"Intervallo dei fotogrammi chiave (secondi)","Layout":"Layout","Let's Encrypt certification":"Certificazione Let's Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Let's Encrypt richiede uno o più nomi di dominio pubblico e una porta 80/TCP accessibile.","Level":"Livello","Level of system protocol.":"Livello di protocollo del sistema.","License":"Licenza","Life color":"Colore della vita","Linecolor":"Linecolor","Link":"Link","Link, mouseover":"Link, passaggio del mouse","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Elenco di intervalli IP in notazione CIDR, ad esempio 127.0.0.1/32, che le statistiche non registreranno, un intervallo IP per riga. Lasciare vuoto per registrare tutte le sessioni.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Elenco di estensioni di file da mettere in cache (ad esempio \".html\"), una per riga. Lasciare vuoto per mettere in cache tutti i tipi di file.","List size (segments)":"Dimensione della lista (segmenti)","Live-Streaming to Facebook Live RTMP service":"Live-Streaming verso il servizio RTMP di Facebook Live","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Live-Streaming su Instagram Live RTMP Service. La chiave di streaming richiede un servizio come <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Live-Streaming su Twitch Live RTMP Service.","Live-Streaming to Vimeo Live RTMP Service":"Trasmissione in diretta su Vimeo Live RTMP Service","Livesource ID":"ID Livesource","Log level":"Livello di registro","Logging":"Registrazione","Login":"Accesso","Login failed: Couldn't load API details":"Accesso fallito: Impossibile caricare i dettagli API","Login failed: {0}":["Accesso fallito: ",["0"]],"Login/JWT authorization":"Accesso/Autorizzazione JWT","Logo":"Logo","Logout":"Disconnessione","MB":"MB","Main Source":"Fonte principale","Main channel":"Canale principale","Main channel not found":"Canale principale non trovato","Main channel saved":"Canale principale salvato","Main page channel (index.html).":"Canale della pagina principale (index.html).","Maintainer:":"Manutentore:","Maximum allowed cache size, 0 for unlimited.":"Dimensione massima consentita della cache, 0 per illimitata.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Megabyte massimi consentiti di RAM per /memfs, 0 per illimitato.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Megabyte massimi consentiti da consumare dal disco rigido. 0 per illimitato.","Maximum bandwidth Mbit/s":"Larghezza di banda massima Mbit/s","Maximum delay in milliseconds.":"Ritardo massimo in millisecondi.","Maximum file size (Megabytes)":"Dimensione massima del file (Megabyte)","Maximum file size to put in cache.":"Dimensione massima del file da inserire nella cache.","Maximum log histroy":"Istanza di log massima","Maximum log lines":"Linee di registro massime","Maximum size (Megabytes)":"Dimensione massima (Megabyte)","Maximum viewer idle time (Seconds)":"Tempo massimo di inattività del telespettatore (secondi)","Maximum viewers":"Spettatori massimi","Memory":"Memoria","Meta information":"Meta informazioni","Metadata":"Metadati","Mold":"Stampo","More about Twitter's copyright <0>here.":"Maggiori informazioni sul copyright di Twitter <0>qui.","More about YouTube's copyright <0>here.":"Maggiori informazioni sul copyright di YouTube <0>qui.","More about licenses here":"Maggiori informazioni sulle licenze qui","More about the service":"Maggiori informazioni sul servizio","Mute":"Muto","Name":"Nome","Name for the template. If the name already exists, it will be overwritten.":"Nome del modello. Se il nome esiste già, verrà sovrascritto.","Network":"Rete","Network source":"Fonte della rete","Next":"Prossimo","Next: Audio":"Prossimo: Audio","Next: Video setup":"Prossimo: Impostazione video","No":"No","No audio":"Nessun audio","No audio stream available":"Nessun flusso audio disponibile","No input device available":"Nessun dispositivo di input disponibile","No live stream was detected. Please check the software that sends the stream.":"Non è stato rilevato alcun flusso in diretta. Si prega di controllare il software che invia il flusso.","No source selected":"Nessuna fonte selezionata","No sources available":"Nessuna fonte disponibile","No suitable encoder found.":"Nessun encoder adatto trovato.","No video":"Nessun video","No video stream available":"Nessun flusso video disponibile","Node ID":"ID del nodo","Noise":"Rumore","None":"Nessuno","Notes":"Note","Number of log lines to keep.":"Numero di righe di registro da conservare.","Number of logs to keep for each process.":"Numero di registri da conservare per ogni processo.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Un referente per riga, ad esempio http://www.example.com.","Open":"Aperto","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Il passthrough (copia) deve essere disattivato solo se necessario. Ogni codifica richiede risorse CPU/GPU aggiuntive.","Password":"Password","Password for authorization.":"Password per l'autorizzazione.","Password for the device.":"Password per il dispositivo.","Persist viewer statistics":"Persistere le statistiche dei visualizzatori","Pixel format":"Formato pixel","Plan: <0>Starter":"Piano: <0>Inizio","Platforms":"Piattaforme","Playback":"Riproduzione","Player":"Giocatore","Player URL":"URL del giocatore","Player settings saved":"Impostazioni del giocatore salvate","Playersite":"Playersite","Playlist":"Playlist","Please check the <0>process log":"Si prega di controllare il <0>log del processo","Please contact the operator of the service and check what happens.":"Contatta l'operatore del servizio e verifica cosa succede.","Please select a file to upload.":"Seleziona un file da caricare.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Se possibile, utilizzi \"Passthrough (copia)\". La codifica richiede risorse CPU/GPU aggiuntive.","Please wait. Probe stream data ...":"Si prega di attendere. Flusso di dati della sonda ...","Please wait. Setting up the stream ...":"Si prega di attendere. Impostazione del flusso ...","Port":"Porto","Position":"Posizione","Preset":"Preset","Primary stream":"Flusso primario","Primary stream key":"Chiave di flusso primaria","Probe":"Sonda","Process":"Processo","Process control":"Controllo del processo","Process debug":"Debug del processo","Process debug report":"Rapporto di debug del processo","Process details":"Dettagli del processo","Process report":"Rapporto sul processo","Processing & Control":"Elaborazione e controllo","Profile":"Profilo","Protocol":"Protocollo","Protocols":"Protocolli","Public domain/s":"Dominio pubblico/i","Publication service not found":"Servizio di pubblicazione non trovato","Publication website settings saved":"Impostazioni del sito web di pubblicazione salvate","Publications":"Pubblicazioni","Pull Mode":"Modo di tirare","Pull or recieve the data:":"Tirare o ricevere i dati:","Quality":"Qualità","RGB test pattern":"Modello di test RGB","RTMP app for publishing.":"App RTMP per la pubblicazione.","RTMP server":"Server RTMP","RTMP server is not enabled":"Il server RTMP non è abilitato","RTMP server listen address.":"Indirizzo di ascolto del server RTMP.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Token RTMP per la pubblicazione e la riproduzione. Il token è il valore del parametro di query URL 'token'.","RTMP/S":"RTMP/S","RTMPS server":"Server RTMPS","RTSP":"RTSP","Raspberry Pi camera":"Fotocamera Raspberry Pi","Rate control":"Controllo del tasso","Ratio":"Rapporto","Read input at native speed":"Leggere l'input a velocità nativa","Receive Mode":"Modalità di ricezione","Reconnect":"Ricollegare","Reconnect delay (seconds)":"Ritardo di riconnessione (secondi)","Reconnecting in {0}s":["Riconnettersi in ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["La riconnessione a Restreamer Core non è riuscita negli ultimi ",["RETRIES"]," secondi."],"Reconnecting to Restreamer Core failed.":"La riconnessione a Restreamer Core non è riuscita.","Refresh":"Aggiornamento","Region":"Regione","Reload":"Ricarica","Remove the oldest entries if the /memfs is full":"Rimuovere le voci più vecchie se la /memfs è piena","Requires activation":"Richiede l'attivazione","Restart":"Riavviare","Restart required":"Riavvio richiesto","Restarting":"Riavvio","Restarting Restreamer Core ...":"Riavvio di Restreamer Core ...","Restarting the application failed.":"Il riavvio dell'applicazione non è riuscito.","Restreamer Service":"Servizio Restreamer","Retrieving stream data ...":"Recuperare i dati del flusso ...","Retry":"Riprova","Rule":"Regola","Sampling":"Campionamento","Save":"Salva","Scale":"Scala","Seconds to keep files in cache.":"Secondi per mantenere i file nella cache.","Seconds until a process is restarted.":"Secondi fino al riavvio di un processo.","Seconds until a staled process is terminated.":"Secondi fino alla terminazione di un processo in stallo.","Seconds until the snapshot/thumbnail of the video source is updated.":"Secondi fino all'aggiornamento dell'istantanea/ miniatura della sorgente video.","Security":"Sicurezza","Security token":"Token di sicurezza","Seekbar color":"Colore Seekbar","Segment length (seconds)":"Lunghezza del segmento (secondi)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Il segmento verrà tagliato sul fotogramma chiave successivo, una volta trascorso questo tempo. Si consiglia il valore 2.","Segmentation":"Segmentazione","Select a device:":"Selezionare un dispositivo:","Select audio source:":"Seleziona la sorgente audio:","Select source ...":"Selezionare la fonte ...","Select video source:":"Selezionare la sorgente video:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Selezioni se prelevare il flusso da una <0>sorgente di rete (come una telecamera di rete) o dal <1>server RTMP interno (ad esempio, i flussi OBS verso il Restreamer).","Select your encoding setting:":"Seleziona la tua impostazione di codifica:","Selected":"Selezionato","Selected channel":"Canale selezionato","Selection":"Selezione","Send anonymous metrics (helps us for future development)":"Invii metriche anonime (ci aiuta per lo sviluppo futuro)","Send stream to this address:":"Invia il flusso a questo indirizzo:","Send video to Framebuffer":"Invia il video al Framebuffer","Server":"Server","Service":"Servizio","Service name":"Nome del servizio","Service token for monitoring.":"Token di servizio per il monitoraggio.","Sessions":"Sessioni","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Imposta un limite di larghezza di banda in Mbit al secondo per il trasferimento di dati HLS in uscita. Tutti i servizi, come RTMP e i processi in uscita, sono inclusi nel calcolo. Se la larghezza di banda viene superata, gli spettatori HLS ricevono il codice di stato HTTP 509 (Limite di larghezza di banda superato). 0 è illimitato.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Imposta un limite di visualizzazione per le sessioni HLS. Se il limite viene superato, gli spettatori HLS ricevono il codice di stato HTTP 509 (Bandwidth Limit Exceeded). 0 è illimitato.","Setting for connection to the service.":"Impostazione per la connessione al servizio.","Settings":"Impostazioni","Settings (expert mode)":"Impostazioni (modalità esperto)","Settings for /data path. The access is protected by":"Impostazioni per il percorso /data. L'accesso è protetto da","Settings for /memfs path.":"Impostazioni per il percorso /memfs.","Settings saved. All changes will be applied after restarting the application.":"Impostazioni salvate. Tutte le modifiche saranno applicate dopo il riavvio dell'applicazione.","Share button":"Tasto condividi","Shows a reference to the project.":"Mostra un riferimento al progetto.","Sign up (free)":"Si iscriva (gratis)","Silence":"Silenzio","Silence Audio":"Silenzio Audio","Sine":"Seno","Sitename":"Nome del sito","Size":"Dimensione","Snapshot":"Snapshot","Social-login (OAuth2, 2FA)":"Social-login (OAuth2, 2FA)","Socket timeout (microseconds)":"Timeout della presa (microsecondi)","Software":"Software","Source":"Fonte","Speed":"Velocità","Stale timeout (seconds)":"Timeout di stallo (secondi)","Statistics":"Statistiche","Storage":"Stoccaggio","Stores the viewer statistics to the disk.":"Memorizza le statistiche del visualizzatore sul disco.","Stream":"Flusso","Stream URL":"URL del flusso","Stream key":"Chiave del flusso","Stream name":"Nome del flusso","Stream names":"Nomi dei flussi","Support datarhei Restreamer":"Supporto datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Supporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT e altro.","System":"Sistema","Template":"Modello","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Modello da utilizzare per la creazione del sito web della pubblicazione. Il pulsante Elimina rimuove la selezione dal sistema.","Terms":"Termini","Test pattern":"Modello di test","Test pattern (extended)":"Modello di test (esteso)","Text colors":"Colori del testo","The amplitude (0.0 - 1.0) of the generated audio stream":"L'ampiezza (0.0 - 1.0) del flusso audio generato","The application is using an older version of the settings.":"L'applicazione sta usando una vecchia versione delle impostazioni.","The bitrate of the audio stream.":"Il bitrate del flusso audio.","The carrier frequency":"La frequenza portante","The channel \"{0}\" could not be deleted":["Non è stato possibile eliminare il canale \"",["0"],"\"."],"The channel \"{0}\" has been deleted":["Il canale \"",["0"],"\" è stato cancellato."],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"La cancellazione di questo canale non può essere recuperata. Tutte le pubblicazioni di questo canale saranno rimosse.","The input profile is not complete. Please define a video and audio source.":"Il profilo di ingresso non è completo. Si prega di definire una sorgente video e audio.","The layout of the audio stream.":"Il layout del flusso audio.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"Il numero massimo di segmenti della playlist. 0 conterrà tutti i segmenti. 6 è consigliato.","The noise color":"Il colore del rumore","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"La persona che ha associato un'opera con questo atto ha dedicato l'opera al pubblico dominio rinunciando a tutti i suoi diritti sull'opera in tutto il mondo secondo la legge sul diritto d'autore, compresi tutti i diritti connessi e vicini, nella misura consentita dalla legge. Puoi copiare, modificare, distribuire ed eseguire l'opera, anche per scopi commerciali, il tutto senza chiedere il permesso.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"Il nome di dominio pubblico raggiungibile dell'host su cui gira questo Restreamer. Separi i nomi di dominio multipli con una virgola.","The publication service \"{0}\" could not be deleted":["Il servizio di pubblicazione \"",["0"],"\" non può essere eliminato"],"The publication service \"{0}\" has been created":["Il servizio di pubblicazione \"",["0"],"\" è stato creato"],"The publication service \"{0}\" has been deleted":["Il servizio di pubblicazione \"",["0"],"\" è stato cancellato"],"The publication service has been created":"Il servizio di pubblicazione è stato creato","The sample rate of the audio stream.":"La frequenza di campionamento del flusso audio.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["Il file selezionato è troppo grande (",["0"]," byte). Sono ammessi solo ",["1"]," byte."],"The selected file type ({0}) is not allowed. Allowed file types are {types}":["Il tipo di file selezionato (",["0"],") non è consentito. I tipi di file consentiti sono ",["types"]],"The settings for \"{0}\" have been saved":["Le impostazioni per \"",["0"],"\" sono state salvate"],"The source doesn't provide any audio streams.":"La fonte non fornisce alcun flusso audio.","The source doesn't provide any audio streams. Please check the <0>probe details.":"La sorgente non fornisce alcun flusso audio. Per favore controlla i <0>dettagli della sonda.","The source doesn't provide any compatible audio streams.":"La fonte non fornisce alcun flusso audio compatibile.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"La fonte non fornisce alcun flusso video compatibile. Per favore controlla i <0>requisiti.","The source doesn't provide any video streams. Please check the <0>probe details.":"La fonte non fornisce alcun flusso video. Per favore controlla i <0>dettagli della sonda.","The source doesn't provide any video streams. Please check the device.":"La fonte non fornisce alcun flusso video. Si prega di controllare il dispositivo.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"La sorgente video non fornisce alcun flusso audio compatibile. Si raccomanda <0>Audio silenzioso. I servizi come YouTube, Facebook & Co. richiedono un canale audio.","The video source is compatible. Select the desired resolution:":"La sorgente video è compatibile. Selezionare la risoluzione desiderata:","There are updates available. Here you get more information.":"Sono disponibili degli aggiornamenti. Qui può ottenere maggiori informazioni.","There was a problem storing the settings. Settings not saved.":"Si è verificato un problema nella memorizzazione delle impostazioni. Le impostazioni non sono state salvate.","There was an error connecting to Restreamer Core at {0}.":["Si è verificato un errore di connessione a Restreamer Core a ",["0"],"."],"There was an error during upload: {0}":["Si è verificato un errore durante il caricamento: ",["0"]],"There was an error setting up the stream.":"C'è stato un errore nell'impostazione del flusso.","There were some errors in the settings. Settings not saved.":"Ci sono stati alcuni errori nelle impostazioni. Impostazioni non salvate.","There's no login method available.":"Non c'è un metodo di accesso disponibile.","This is a dummy service that explains to you the concepts of service.":"Questo è un servizio fittizio che le spiega i concetti di servizio.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Non si tratta necessariamente di un errore. Tuttavia, potrebbe essere necessario un po' più di tempo perché Restreamer Core si riavvii...","This is to mention the copyright regulations for the target of this service.":"Questo per citare le norme sul copyright per il target di questo servizio.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Questa licenza permette ai riutilizzatori di copiare e distribuire il materiale in qualsiasi mezzo o formato solo in forma non adattata, e solo a condizione che venga data attribuzione al creatore. La licenza permette l'uso commerciale.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Questa licenza permette ai riutilizzatori di copiare e distribuire il materiale in qualsiasi mezzo o formato solo in forma non adattata, solo per scopi non commerciali, e solo a condizione che venga data attribuzione al creatore.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato solo per scopi non commerciali, e solo finché viene data attribuzione al creatore.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato solo per scopi non commerciali, e solo finché viene data l'attribuzione al creatore. Se remixate, adattate o costruite sul materiale, dovete dare in licenza il materiale modificato sotto gli stessi termini.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato, purché venga data l'attribuzione al creatore. La licenza permette l'uso commerciale.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato, purché venga data l'attribuzione al creatore. La licenza permette l'uso commerciale. Se remixate, adattate o costruite sul materiale, dovete dare in licenza il materiale modificato sotto gli stessi termini.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Questa sorgente non può essere modificata mentre è in uso. Per continuare, deve scollegare la sorgente.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Questa versione dell'interfaccia utente non supporta il binario FFmpeg disponibile (",["0"],"). L'interfaccia utente richiede ",["1"],". Utilizzi un binario FFmpeg supportato."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Questa versione dell'interfaccia utente non supporta il Core connesso (",["0"],"). L'interfaccia utente richiede ",["1"],". Utilizzi una versione compatibile dell'interfaccia utente."],"This version of the UI is compatible.":"Questa versione dell'UI è compatibile.","Time until an inactive viewer connection is treated as closed.":"Tempo fino a quando una connessione inattiva del visualizzatore viene trattata come chiusa.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Trasmette le istantanee della sorgente principale a un server HTTP/S. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Trasmette il canale audio della sorgente principale a un server Icecast. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale come HTTP-Live-Streaming (HLS) a un server HTTP/S. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale come MPEG-DASH a un server HTTP/S. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un servizio Brightcove Live. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Trasmette la sorgente principale a un servizio RTMP di CDN77. Maggiori informazioni sulla configurazione <0>qui.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Trasmette la sorgente principale a un servizio RTMP DaCast. Maggiori informazioni sulla configurazione <0>qui.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Trasmette la sorgente principale a un Servizio MPEG-TS. Maggiori dettagli sulle impostazioni sono disponibili qui <0>qui.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server RTMP(e|s|t|te|ts). Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server RTSP. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un Server Red5/Pro. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server SRT. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server UDP. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a un server WOWZA. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Trasmette la sorgente principale a una risorsa Core datarhei. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Trasmette la fonte principale ad una fonte di livespotting.com. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Trasmette la sorgente principale a Akamai (MSL) Media Services Live. Maggiori dettagli sulle impostazioni dell'Encoder MSL sono disponibili su <0>qui.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Trasmette la sorgente principale al servizio di codifica cloud Bitmovin, un potente strumento per lo streaming live. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Trasmette la sorgente principale al Servizio Restream RTMP. Maggiori dettagli sulle impostazioni sono disponibili <0>qui.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Trasmette il suo video come flusso RTMP con la chiave necessaria generata in YouTube Studio. Può trovare maggiori informazioni sull'impostazione di un live stream nella <0>Creator Academy di YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Trasmette il suo flusso video con la chiave richiesta, che è stata generata in Twitter Producer. Può trovare maggiori informazioni sull'impostazione di un live stream su Twitter <0>Producer.","Tune":"Tune","UDP transport":"Trasporto UDP","Unable to load the config.":"Impossibile caricare la configurazione.","Unique ident on the service.":"Identità unica del servizio.","Unknown":"Sconosciuto","Unselected":"Non selezionato","Upload":"Carica","Uploading the file failed":"Il caricamento del file non è riuscito","Uploading the logo failed":"Caricamento del logo fallito","Uptime":"Uptime","Use Auth0 for your running Restreamer Core. More <0>details.":"Utilizzi Auth0 per il suo Restreamer Core in esecuzione. Ulteriori <0>dettagli.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Utilizzi la procedura guidata (<0/>) per un'impostazione rapida e semplice, oppure modifichi (<1/>) le sorgenti direttamente in modalità personalizzata.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Utilizzi il suo copyright e scelga la licenza d'immagine corretta. Che sia libera per tutti o altamente limitata. Discuta brevemente di ciò che gli altri possono fare con la sua immagine.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Usa il tuo copyright e scegli la giusta licenza per le immagini. Che sia libera per tutti o altamente limitata. Discuti brevemente su cosa gli altri possono fare con la tua immagine.","User registration":"Registrazione dell'utente","Username":"Nome utente","Username for authorization.":"Nome utente per l'autorizzazione.","Username for the device.":"Nome utente del dispositivo.","VPU ID":"ID VPU","Video":"Video","Video device":"Dispositivo video","Video settings":"Impostazioni video","Video setup":"Configurazione video","Video source":"Fonte video","Viewer":"Visualizzatore","Virtual source":"Fonte virtuale","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Benvenuti a Restreamer v2, la soluzione per pubblicare video in modo facile e veloce. Gratuito per uso privato e commerciale. Ulteriore aiuto nei <0>docs.","Write protection":"Scrivere la protezione","YUV test pattern":"Modello di test YUV","Yes":"Sì","You can't abort the wizard because at least one input must be defined.":"Non può interrompere la procedura guidata perché deve essere definito almeno un ingresso.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Hai cambiato la configurazione. Affinché le modifiche abbiano effetto, devi riavviare l'applicazione. Vuoi riavviare ora?","You have to reconnect manually":"Devi riconnetterti manualmente","You have unsaved changes. Please save them before you can control the service again.":"Hai delle modifiche non salvate. Per favore, salvale prima di poter controllare di nuovo il servizio.","Your stream needs to be encoded, but there's no suitable encoder available.":"Il suo flusso deve essere codificato, ma non è disponibile un codificatore adatto.","Your stream needs to be encoded. Choose the desired encoder:":"Il tuo flusso deve essere codificato. Scegli il codificatore desiderato:","blue":"blu","brown":"marrone","iframe code":"codice iframe","kbit/s":"kbit/s","pink":"rosa","velvet":"velluto","violet":"viola","white":"bianco"}}; \ No newline at end of file diff --git a/src/locales/it/messages.po b/src/locales/it/messages.po index 41d2ce8..9530ae3 100644 --- a/src/locales/it/messages.po +++ b/src/locales/it/messages.po @@ -13,12 +13,16 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/views/Edit/Profile.js:372 -#: src/views/Edit/Profile.js:501 +#: src/misc/EncodingSelect.js:224 +msgid "<0>Compatibility list" +msgstr "<0>Elenco di compatibilità" + +#: src/views/Edit/Profile.js:380 +#: src/views/Edit/Profile.js:510 msgid "<0>Show probe details" msgstr "<0>Mostra dettagli sonda" -#: src/views/Edit/Sources/ALSA.js:150 +#: src/views/Edit/Sources/ALSA.js:156 msgid "ALSA" msgstr "ALSA" @@ -26,26 +30,26 @@ msgstr "ALSA" msgid "API endpoint not found. Settings not saved." msgstr "Endpoint API non trovato. Impostazioni non salvate." -#: src/views/Edit/Sources/AVFoundation.js:211 +#: src/views/Edit/Sources/AVFoundation.js:221 msgid "AVFoundation" msgstr "AVFoundation" #: src/misc/ChannelList.js:356 -#: src/views/Edit/Profile.js:402 -#: src/views/Edit/Wizard/index.js:1136 -#: src/views/Edit/index.js:547 -#: src/views/Edit/index.js:573 -#: src/views/Edit/index.js:592 +#: src/views/Edit/Profile.js:410 +#: src/views/Edit/Wizard/index.js:1153 +#: src/views/Edit/index.js:549 +#: src/views/Edit/index.js:575 +#: src/views/Edit/index.js:594 #: src/views/Publication/Add.js:362 #: src/views/Publication/Edit.js:601 -#: src/views/Settings.js:1967 -#: src/views/Settings.js:2026 -#: src/views/Settings.js:2048 +#: src/views/Settings.js:1972 +#: src/views/Settings.js:2031 +#: src/views/Settings.js:2053 msgid "Abort" msgstr "Abort" -#: src/Header.js:286 -#: src/Header.js:327 +#: src/Header.js:283 +#: src/Header.js:324 msgid "About" msgstr "A proposito di" @@ -57,7 +61,7 @@ msgstr "Aggiungi" msgid "Add Publication" msgstr "Aggiungi pubblicazione" -#: src/views/Playersite.js:679 +#: src/views/Playersite.js:692 msgid "Add external widgets and styles to the publication site. You can find some examples on the help page." msgstr "Aggiungere widget e stili esterni al sito di pubblicazione. Può trovare alcuni esempi nella pagina di aiuto." @@ -69,10 +73,10 @@ msgstr "Aggiungere un nuovo canale" msgid "Add: {0}" msgstr "Aggiungi: {0}" -#: src/views/Edit/Sources/Network.js:339 +#: src/views/Edit/Sources/Network.js:355 #: src/views/Edit/Wizard/Sources/Network.js:66 #: src/views/Publication/Services/Brightcove.js:95 -#: src/views/Publication/Services/Core.js:99 +#: src/views/Publication/Services/Core.js:100 #: src/views/Publication/Services/DASH.js:192 #: src/views/Publication/Services/HLS.js:181 #: src/views/Publication/Services/Icecast.js:160 @@ -84,23 +88,23 @@ msgstr "Aggiungi: {0}" #: src/views/Publication/Services/SRT.js:161 #: src/views/Publication/Services/UDP.js:127 #: src/views/Publication/Services/WOWZA.js:132 -#: src/views/Settings.js:1297 +#: src/views/Settings.js:1302 msgid "Address" msgstr "Indirizzo" -#: src/views/Playersite.js:616 +#: src/views/Playersite.js:629 msgid "Address for the background image." msgstr "Indirizzo per l'immagine di sfondo." -#: src/views/Settings.js:1326 +#: src/views/Settings.js:1331 msgid "Address to listen on for HTTP requests." msgstr "Indirizzo da ascoltare per le richieste HTTP." -#: src/views/Settings.js:1339 +#: src/views/Settings.js:1344 msgid "Address to listen on for HTTPS requests." msgstr "Indirizzo su cui ascoltare le richieste HTTPS." -#: src/views/Playersite.js:501 +#: src/views/Playersite.js:514 msgid "Adjust publication site colors and background as you like." msgstr "Regoli i colori del sito di pubblicazione e lo sfondo come preferisce." @@ -108,7 +112,7 @@ msgstr "Regoli i colori del sito di pubblicazione e lo sfondo come preferisce." msgid "Advanced monitoring" msgstr "Monitoraggio avanzato" -#: src/views/Edit/Sources/Network.js:380 +#: src/views/Edit/Sources/Network.js:396 #: src/views/Publication/Services/DASH.js:204 #: src/views/Publication/Services/HLS.js:193 #: src/views/Publication/Services/Icecast.js:170 @@ -121,7 +125,7 @@ msgstr "Monitoraggio avanzato" msgid "Advanced settings" msgstr "Impostazioni avanzate" -#: src/views/Edit/Wizard/index.js:280 +#: src/views/Edit/Wizard/index.js:287 msgid "Advanced setup" msgstr "Configurazione avanzata" @@ -137,11 +141,11 @@ msgstr "Tutti" msgid "All important system settings." msgstr "Tutte le impostazioni importanti del sistema." -#: src/views/Settings.js:1473 +#: src/views/Settings.js:1478 msgid "Allow all referrer" msgstr "Consentire tutti i referenti" -#: src/views/Settings.js:1513 +#: src/views/Settings.js:1518 msgid "Allow counting how many viewers the stream has." msgstr "Permette di contare quanti spettatori ha lo stream." @@ -153,8 +157,8 @@ msgstr "Ampiezza" msgid "An environment variable sets this value." msgstr "Una variabile d'ambiente imposta questo valore." -#: src/views/Publication/Services/Core.js:109 -#: src/views/Settings.js:1811 +#: src/views/Publication/Services/Core.js:107 +#: src/views/Settings.js:1816 msgid "App" msgstr "App" @@ -164,7 +168,7 @@ msgstr "App" msgid "Application" msgstr "Applicazione" -#: src/views/Edit/Wizard/index.js:1155 +#: src/views/Edit/Wizard/index.js:1172 msgid "Are you sure you want to abort the wizard?" msgstr "È sicuro di voler interrompere la procedura guidata?" @@ -172,27 +176,27 @@ msgstr "È sicuro di voler interrompere la procedura guidata?" msgid "Audio" msgstr "Audio" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:92 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:111 msgid "Audio Device" msgstr "Dispositivo audio" -#: src/views/Edit/Sources/ALSA.js:101 -#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/ALSA.js:114 +#: src/views/Edit/Sources/AVFoundation.js:159 msgid "Audio device" msgstr "Dispositivo audio" -#: src/views/Edit/Wizard/index.js:858 -#: src/views/Edit/Wizard/index.js:870 +#: src/views/Edit/Wizard/index.js:875 +#: src/views/Edit/Wizard/index.js:887 msgid "Audio from device" msgstr "Audio dal dispositivo" -#: src/views/Edit/Profile.js:417 -#: src/views/Edit/ProfileSummary.js:89 +#: src/views/Edit/Profile.js:425 +#: src/views/Edit/ProfileSummary.js:90 #: src/views/Publication/Edit.js:533 msgid "Audio settings" msgstr "Impostazioni audio" -#: src/views/Edit/Wizard/index.js:811 +#: src/views/Edit/Wizard/index.js:828 msgid "Audio setup" msgstr "Configurazione audio" @@ -208,43 +212,47 @@ msgstr "Auth0 Inquilino" msgid "Auth0 is currently not available because this interface is loaded from an insecure origin." msgstr "Auth0 non è attualmente disponibile perché questa interfaccia è caricata da un'origine non sicura." -#: src/misc/controls/Metadata.js:74 +#: src/misc/controls/Metadata.js:71 msgid "Author" msgstr "Autore" #: src/views/Settings.js:1143 -#: src/views/Settings.js:1410 +#: src/views/Settings.js:1415 msgid "Authorization" msgstr "Autorizzazione" -#: src/views/Publication/Player.js:434 +#: src/misc/controls/HLS.js:83 +msgid "Automatic cleanup of all media data" +msgstr "Pulizia automatica di tutti i dati dei media" + +#: src/views/Publication/Player.js:437 msgid "Autoplay" msgstr "Autoplay" -#: src/views/Playersite.js:434 +#: src/views/Playersite.js:445 msgid "Available" msgstr "Disponibile" -#: src/views/Edit/Profile.js:532 -#: src/views/Edit/Wizard/index.js:394 -#: src/views/Edit/Wizard/index.js:630 -#: src/views/Edit/Wizard/index.js:895 -#: src/views/Edit/Wizard/index.js:1007 -#: src/views/Edit/Wizard/index.js:1065 -#: src/views/Edit/Wizard/index.js:1147 +#: src/views/Edit/Profile.js:541 +#: src/views/Edit/Wizard/index.js:408 +#: src/views/Edit/Wizard/index.js:647 +#: src/views/Edit/Wizard/index.js:912 +#: src/views/Edit/Wizard/index.js:1024 +#: src/views/Edit/Wizard/index.js:1082 +#: src/views/Edit/Wizard/index.js:1164 #: src/views/Publication/Add.js:528 msgid "Back" msgstr "Indietro" -#: src/views/Playersite.js:550 +#: src/views/Playersite.js:563 msgid "Background colors" msgstr "Colori di sfondo" -#: src/views/Playersite.js:603 +#: src/views/Playersite.js:616 msgid "Background image" msgstr "Immagine di sfondo" -#: src/views/Publication/Services/Akamai.js:195 +#: src/views/Publication/Services/Akamai.js:196 msgid "Backup URL" msgstr "URL di backup" @@ -256,7 +264,7 @@ msgstr "Server di backup" msgid "Backup stream" msgstr "Flusso di backup" -#: src/views/Publication/Services/Facebook.js:128 +#: src/views/Publication/Services/Facebook.js:124 msgid "Backup stream key" msgstr "Chiave del flusso di backup" @@ -265,7 +273,7 @@ msgstr "Chiave del flusso di backup" msgid "Bandwidth" msgstr "Larghezza di banda" -#: src/views/Settings.js:1368 +#: src/views/Settings.js:1373 msgid "Bandwidth control" msgstr "Controllo della larghezza di banda" @@ -274,7 +282,7 @@ msgid "Banner" msgstr "Banner" #: src/views/Login.js:241 -#: src/views/Settings.js:1415 +#: src/views/Settings.js:1420 msgid "Basic" msgstr "Di base" @@ -287,40 +295,40 @@ msgstr "Fattore bip" msgid "Bitrate" msgstr "Bitrate" -#: src/views/Edit/Wizard/index.js:996 -#: src/views/Edit/index.js:508 +#: src/views/Edit/Wizard/index.js:1013 +#: src/views/Edit/index.js:510 msgid "Briefly describe what the audience will see during the live stream." msgstr "Descriva brevemente ciò che il pubblico vedrà durante il live stream." -#: src/views/Publication/Player.js:349 +#: src/views/Publication/Player.js:352 msgid "Button color" msgstr "Colore del pulsante" -#: src/views/Settings.js:1682 +#: src/views/Settings.js:1687 msgid "Cache for files on /data." msgstr "Cache per i file su /data." -#: src/views/Settings.js:1710 +#: src/views/Settings.js:1715 msgid "Cache time (Seconds)" msgstr "Tempo di cache (secondi)" -#: src/views/Settings.js:1738 +#: src/views/Settings.js:1743 msgid "Cache types" msgstr "Tipi di cache" -#: src/views/Edit/Sources/AVFoundation.js:188 +#: src/views/Edit/Sources/AVFoundation.js:197 msgid "Capture clicks" msgstr "Cattura i clic" -#: src/views/Edit/Sources/AVFoundation.js:185 +#: src/views/Edit/Sources/AVFoundation.js:194 msgid "Capture cursor" msgstr "Cattura del cursore" -#: src/views/Edit/index.js:326 +#: src/views/Edit/index.js:327 msgid "Channel \"{0}\" saved" msgstr "Canale \"{0}\" salvato" -#: src/views/Edit/Sources/ALSA.js:124 +#: src/views/Edit/Sources/ALSA.js:129 msgid "Channels" msgstr "Canali" @@ -340,14 +348,14 @@ msgstr "Scegliere un flusso video" msgid "Choose an audio stream" msgstr "Scegliere un flusso audio" -#: src/views/Edit/Sources/ALSA.js:90 +#: src/views/Edit/Sources/ALSA.js:96 #: src/views/Edit/Sources/Framebuffer.js:80 #: src/views/Edit/Sources/Raspicam.js:84 -#: src/views/Edit/Sources/V4L.js:84 +#: src/views/Edit/Sources/V4L.js:90 msgid "Choose an input device ..." msgstr "Scegliere un dispositivo di input ..." -#: src/misc/EncodingSelect.js:190 +#: src/misc/EncodingSelect.js:202 msgid "Choose codec ..." msgstr "Scegliere il codec ..." @@ -360,28 +368,28 @@ msgstr "Scelga l'inquilino ..." msgid "Chunk" msgstr "Chunk" -#: src/misc/ModalContent.js:87 -#: src/views/Playersite.js:769 +#: src/misc/ModalContent.js:77 +#: src/views/Playersite.js:782 #: src/views/Publication/Add.js:525 #: src/views/Publication/Edit.js:565 -#: src/views/Publication/Player.js:444 +#: src/views/Publication/Player.js:447 msgid "Close" msgstr "Chiudere" -#: src/views/Playersite.js:352 +#: src/views/Playersite.js:354 msgid "Code injection" msgstr "Iniezione di codice" -#: src/misc/EncodingSelect.js:188 +#: src/misc/EncodingSelect.js:200 msgid "Codec" msgstr "Codec" #: src/views/Edit/Sources/VirtualAudio.js:110 -#: src/views/Publication/Player.js:317 +#: src/views/Publication/Player.js:320 msgid "Color" msgstr "Colore" -#: src/views/Settings.js:1277 +#: src/views/Settings.js:1282 msgid "Config" msgstr "Configurazione" @@ -393,7 +401,7 @@ msgstr "Confermare la password" msgid "Connect" msgstr "Collegare" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:134 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:157 msgid "Connected device" msgstr "Dispositivo collegato" @@ -402,7 +410,7 @@ msgid "Connected since <0/>" msgstr "Collegato da <0/>" #: src/misc/ActionButton.js:12 -#: src/views/Main/index.js:308 +#: src/views/Main/index.js:305 #: src/views/Publication/Process.js:40 msgid "Connecting ..." msgstr "Collegamento ..." @@ -415,12 +423,16 @@ msgstr "Collegamento a Restreamer Core ..." msgid "Connecting to Restreamer Core failed probably because of mixed content." msgstr "La connessione a Restreamer Core non è riuscita, probabilmente a causa del contenuto misto." -#: src/misc/controls/Metadata.js:73 -#: src/views/Playersite.js:646 -#: src/views/Playersite.js:663 +#: src/misc/controls/Metadata.js:70 +#: src/views/Playersite.js:659 +#: src/views/Playersite.js:676 msgid "Content" msgstr "Contenuto" +#: src/views/Main/index.js:365 +msgid "Content URL" +msgstr "" + #: src/Footer.js:193 msgid "Cores" msgstr "Nuclei" @@ -442,22 +454,22 @@ msgstr "Creative Commons" #: src/misc/coders/settings/Video.js:115 #: src/misc/coders/settings/Video.js:181 #: src/misc/coders/settings/Video.js:220 -#: src/views/Edit/Sources/ALSA.js:95 -#: src/views/Edit/Sources/AVFoundation.js:114 -#: src/views/Edit/Sources/AVFoundation.js:147 -#: src/views/Edit/Sources/V4L.js:90 +#: src/views/Edit/Sources/ALSA.js:101 +#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/V4L.js:96 msgid "Custom ..." msgstr "Personalizzato ..." -#: src/views/Settings.js:1283 +#: src/views/Settings.js:1288 msgid "Custom JSON config for datarhei Core." msgstr "Configurazione JSON personalizzata per datarhei Core." -#: src/views/Edit/Sources/ALSA.js:102 +#: src/views/Edit/Sources/ALSA.js:115 msgid "Custom audio device" msgstr "Dispositivo audio personalizzato" -#: src/views/Edit/Sources/AVFoundation.js:154 +#: src/views/Edit/Sources/AVFoundation.js:160 msgid "Custom audio index" msgstr "Indice audio personalizzato" @@ -466,7 +478,7 @@ msgstr "Indice audio personalizzato" msgid "Custom bitrate (kbit/s)" msgstr "Bitrate personalizzato (kbit/s)" -#: src/views/Playersite.js:674 +#: src/views/Playersite.js:687 msgid "Custom code injection" msgstr "Iniezione di codice personalizzato" @@ -506,35 +518,36 @@ msgstr "Scala personalizzata" msgid "Custom size" msgstr "Dimensione personalizzata" -#: src/views/Edit/Sources/V4L.js:97 +#: src/views/Edit/Sources/V4L.js:110 msgid "Custom video device" msgstr "Dispositivo video personalizzato" -#: src/views/Edit/Sources/AVFoundation.js:121 +#: src/views/Edit/Sources/AVFoundation.js:127 msgid "Custom video index" msgstr "Indice video personalizzato" -#: src/misc/TextFieldCopy.js:44 +#: src/misc/CopyButton.js:20 +#: src/misc/TextFieldCopy.js:33 #: src/misc/Textarea.js:46 msgid "Data copied to clipboard" msgstr "Dati copiati negli appunti" -#: src/views/Edit/Sources/VirtualVideo.js:164 +#: src/views/Edit/Sources/VirtualVideo.js:167 msgid "Death color" msgstr "Colore della morte" -#: src/misc/EncodingSelect.js:198 -#: src/views/Edit/Wizard/index.js:611 +#: src/misc/EncodingSelect.js:210 +#: src/views/Edit/Wizard/index.js:628 msgid "Decoder" msgstr "Decoder" -#: src/views/Edit/Sources/AVFoundation.js:109 -#: src/views/Edit/Sources/AVFoundation.js:143 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:61 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:87 -#: src/views/Playersite.js:440 -#: src/views/Playersite.js:513 -#: src/views/Playersite.js:557 +#: src/views/Edit/Sources/AVFoundation.js:115 +#: src/views/Edit/Sources/AVFoundation.js:149 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:76 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:105 +#: src/views/Playersite.js:451 +#: src/views/Playersite.js:526 +#: src/views/Playersite.js:570 msgid "Default" msgstr "Default" @@ -542,13 +555,13 @@ msgstr "Default" msgid "Delay" msgstr "Ritardo" -#: src/views/Edit/Sources/ALSA.js:127 +#: src/views/Edit/Sources/ALSA.js:132 msgid "Delay (ms)" msgstr "Ritardo (ms)" -#: src/views/Edit/index.js:561 -#: src/views/Edit/index.js:597 -#: src/views/Playersite.js:461 +#: src/views/Edit/index.js:563 +#: src/views/Edit/index.js:599 +#: src/views/Playersite.js:474 #: src/views/Publication/Edit.js:574 #: src/views/Publication/Edit.js:606 msgid "Delete" @@ -563,18 +576,18 @@ msgstr "L'eliminazione di un servizio di pubblicazione non può essere annullata msgid "Delivering mode" msgstr "Modalità di consegna" -#: src/misc/controls/Metadata.js:88 -#: src/misc/controls/Metadata.js:113 +#: src/misc/controls/Metadata.js:85 +#: src/misc/controls/Metadata.js:110 msgid "Description" msgstr "Descrizione" -#: src/views/Playersite.js:350 -#: src/views/Playersite.js:496 +#: src/views/Playersite.js:352 +#: src/views/Playersite.js:509 msgid "Design" msgstr "Design" #: src/views/Edit/Sources/Framebuffer.js:87 -#: src/views/Edit/Wizard/index.js:873 +#: src/views/Edit/Wizard/index.js:890 #: src/views/Publication/Services/Framebuffer.js:93 msgid "Device" msgstr "Dispositivo" @@ -585,7 +598,7 @@ msgstr "Dispositivo" msgid "Disconnect" msgstr "Scollegare" -#: src/views/Edit/index.js:578 +#: src/views/Edit/index.js:580 msgid "Disconnect & Continue" msgstr "Disconnettersi e continuare" @@ -594,12 +607,12 @@ msgstr "Disconnettersi e continuare" msgid "Disconnecting ..." msgstr "Scollegamento ..." -#: src/views/Settings.js:1645 +#: src/views/Settings.js:1650 msgid "Disk" msgstr "Disco" -#: src/views/Settings.js:1679 -#: src/views/Settings.js:1687 +#: src/views/Settings.js:1684 +#: src/views/Settings.js:1692 msgid "Disk cache" msgstr "Cache del disco" @@ -608,11 +621,11 @@ msgstr "Cache del disco" msgid "Disk storage" msgstr "Archiviazione su disco" -#: src/views/Settings.js:2058 +#: src/views/Settings.js:2063 msgid "Do you really want to restart the application now?" msgstr "Vuoi davvero riavviare l'applicazione ora?" -#: src/views/Edit/index.js:589 +#: src/views/Edit/index.js:591 msgid "Do you want to delete \"{0}\"?" msgstr "Vuole cancellare \"{0}\"?" @@ -620,12 +633,12 @@ msgstr "Vuole cancellare \"{0}\"?" msgid "Do you want to delete {title}?" msgstr "Vuoi cancellare {titolo}?" -#: src/views/Edit/index.js:570 +#: src/views/Edit/index.js:572 msgid "Do you want to disconnect \"{0}\"?" msgstr "Vuole disconnettere \"{0}\"?" -#: src/Header.js:292 -#: src/Header.js:333 +#: src/Header.js:289 +#: src/Header.js:330 msgid "Docs" msgstr "Documenti" @@ -645,19 +658,19 @@ msgstr "Documentazione" msgid "Dup. frames" msgstr "Telai duplicati" -#: src/views/Publication/Player.js:282 +#: src/views/Publication/Player.js:285 msgid "EDIT: Player" msgstr "EDIT: Giocatore" -#: src/views/Playersite.js:344 +#: src/views/Playersite.js:346 msgid "EDIT: Publication Website" msgstr "EDIT: Sito web di pubblicazione" -#: src/views/Edit/index.js:390 +#: src/views/Edit/index.js:391 msgid "Edit" msgstr "Modifica" -#: src/views/Edit/index.js:416 +#: src/views/Edit/index.js:417 msgid "Edit the audio and video sources for the live stream. Add a description, and set your desired content license." msgstr "Modifichi le fonti audio e video per il live stream. Aggiunga una descrizione e imposti la licenza di contenuto desiderata." @@ -665,11 +678,11 @@ msgstr "Modifichi le fonti audio e video per il live stream. Aggiunga una descri msgid "Edit: {title}" msgstr "Modifica: {titolo}" -#: src/views/Publication/Player.js:316 +#: src/views/Publication/Player.js:319 msgid "Embed" msgstr "Incorporare" -#: src/views/Edit/Sources/Network.js:561 +#: src/views/Edit/Sources/Network.js:577 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:55 msgid "Enable RTMP server ..." msgstr "Abilitare il server RTMP ..." @@ -679,16 +692,16 @@ msgid "Enable a periodic beep every second with this value times the carrier fre msgstr "Abilita un bip periodico ogni secondo con questo valore moltiplicato per la frequenza della portante" #: src/views/Publication/Services/Dummy.js:278 -#: src/views/Publication/Services/Facebook.js:147 +#: src/views/Publication/Services/Facebook.js:139 msgid "Enable backup stream" msgstr "Attiva il flusso di backup" -#: src/views/Publication/Player.js:424 +#: src/views/Publication/Player.js:427 msgid "Enable nerd statistics" msgstr "Abilita le statistiche dei nerd" #: src/views/Publication/Services/Dummy.js:277 -#: src/views/Publication/Services/Facebook.js:146 +#: src/views/Publication/Services/Facebook.js:138 msgid "Enable primary stream" msgstr "Attiva il flusso primario" @@ -696,15 +709,15 @@ msgstr "Attiva il flusso primario" msgid "Enable snapshots" msgstr "Abilita le istantanee" -#: src/views/Settings.js:1428 +#: src/views/Settings.js:1433 msgid "Enabling authorization is strongly advised. Otherwise, anybody can access this instance." msgstr "L'abilitazione dell'autorizzazione è fortemente consigliata. Altrimenti, chiunque può accedere a questa istanza." -#: src/views/Settings.js:1588 +#: src/views/Settings.js:1593 msgid "Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs." msgstr "L'abilitazione dell'autenticazione di base è fortemente consigliata. Altrimenti, chiunque potrebbe scrivere dati su /memfs." -#: src/views/Edit/Wizard/index.js:617 +#: src/views/Edit/Wizard/index.js:634 msgid "Encoder" msgstr "Encoder" @@ -730,7 +743,7 @@ msgstr "Inserisca un nome per il nuovo canale." msgid "Enter password" msgstr "Inserire la password" -#: src/views/Edit/Sources/Network.js:332 +#: src/views/Edit/Sources/Network.js:348 #: src/views/Edit/Wizard/Sources/Network.js:59 msgid "Enter the address of your network source:" msgstr "Inserisci l'indirizzo della tua sorgente di rete:" @@ -743,7 +756,7 @@ msgstr "Inserisca il nome utente" msgid "Entropy coder" msgstr "Codificatore di entropia" -#: src/views/Edit/Wizard/index.js:1101 +#: src/views/Edit/Wizard/index.js:1118 #: src/views/Incompatible.js:30 #: src/views/Invalid.js:29 #: src/views/Publication/Process.js:63 @@ -751,45 +764,46 @@ msgstr "Codificatore di entropia" msgid "Error" msgstr "Errore" -#: src/misc/TextFieldCopy.js:46 +#: src/misc/CopyButton.js:22 +#: src/misc/TextFieldCopy.js:35 #: src/misc/Textarea.js:48 msgid "Error while copying data to clipboard" msgstr "Errore durante la copia dei dati negli appunti" -#: src/views/Main/index.js:327 +#: src/views/Main/index.js:324 #: src/views/Publication/Process.js:64 msgid "Error: {0}" msgstr "Errore: {0}" -#: src/views/Playersite.js:719 +#: src/views/Playersite.js:732 msgid "Expands the area above the channel list (live chat)." msgstr "Espande l'area sopra l'elenco dei canali (live chat)." -#: src/views/Playersite.js:739 +#: src/views/Playersite.js:752 msgid "Expands the area under the channel description (comment boxes)." msgstr "Espande l'area sotto la descrizione del canale (caselle di commento)." -#: src/views/Settings.js:1194 +#: src/views/Settings.js:1199 msgid "Expert mode" msgstr "Modalità esperto" -#: src/views/Playersite.js:704 +#: src/views/Playersite.js:717 msgid "Extend channel list" msgstr "Estendere l'elenco dei canali" -#: src/views/Playersite.js:724 +#: src/views/Playersite.js:737 msgid "Extend content" msgstr "Estendere il contenuto" -#: src/views/Playersite.js:744 +#: src/views/Playersite.js:757 msgid "Extend footer" msgstr "Estendere il piè di pagina" -#: src/views/Playersite.js:684 +#: src/views/Playersite.js:697 msgid "Extend header" msgstr "Estendere l'intestazione" -#: src/views/Settings.js:1931 +#: src/views/Settings.js:1936 msgid "FFmpeg" msgstr "FFmpeg" @@ -798,20 +812,16 @@ msgstr "FFmpeg" msgid "FPS" msgstr "FPS" -#: src/views/Edit/index.js:290 -msgid "Failed to correctly cleanup previous process data" -msgstr "Non è riuscito a pulire correttamente i dati del processo precedente" - #: src/views/Publication/Add.js:180 msgid "Failed to create publication service ({0})" msgstr "Impossibile creare il servizio di pubblicazione ({0})" -#: src/views/Playersite.js:308 +#: src/views/Playersite.js:310 msgid "Failed to create publication website files." msgstr "Impossibile creare i file del sito web della pubblicazione." -#: src/views/Edit/Profile.js:333 -#: src/views/Edit/Profile.js:462 +#: src/views/Edit/Profile.js:341 +#: src/views/Edit/Profile.js:471 msgid "Failed to probe the source. Please check the <0>probe details." msgstr "Impossibile sondare la sorgente. Per favore controlla i <0>dettagli della sonda." @@ -819,7 +829,7 @@ msgstr "Impossibile sondare la sorgente. Per favore controlla i <0>dettagli dell msgid "Failed to refresh token: {0}" msgstr "Impossibile aggiornare il token: {0}" -#: src/views/Edit/index.js:303 +#: src/views/Edit/index.js:304 msgid "Failed to save ingest metadata" msgstr "Non è riuscito a salvare i metadati di ingest" @@ -827,7 +837,7 @@ msgstr "Non è riuscito a salvare i metadati di ingest" msgid "Failed to stop process" msgstr "Non è riuscito a fermare il processo" -#: src/views/Playersite.js:301 +#: src/views/Playersite.js:303 msgid "Failed to store player size setting." msgstr "Impossibile memorizzare l'impostazione delle dimensioni del giocatore." @@ -835,36 +845,36 @@ msgstr "Impossibile memorizzare l'impostazione delle dimensioni del giocatore." msgid "Failed to store publication service ({0})" msgstr "Impossibile memorizzare il servizio di pubblicazione ({0})" -#: src/views/Edit/index.js:296 +#: src/views/Edit/index.js:297 msgid "Failed to update ingest process ({0})" msgstr "Fallito l'aggiornamento del processo di ingest ({0})" -#: src/views/Edit/index.js:309 +#: src/views/Edit/index.js:310 msgid "Failed to update the player" msgstr "Non è riuscito ad aggiornare il giocatore" -#: src/views/Edit/Wizard/index.js:361 -#: src/views/Edit/Wizard/index.js:821 +#: src/views/Edit/Wizard/index.js:375 +#: src/views/Edit/Wizard/index.js:838 msgid "Failed to verify the source. Please check the address." msgstr "Impossibile verificare la fonte. Si prega di controllare l'indirizzo." -#: src/views/Edit/Profile.js:540 +#: src/views/Edit/Profile.js:549 msgid "Finish" msgstr "Finitura" -#: src/views/Edit/Sources/VirtualVideo.js:170 +#: src/views/Edit/Sources/VirtualVideo.js:182 msgid "Flags" msgstr "Bandiere" -#: src/views/Playersite.js:759 +#: src/views/Playersite.js:772 msgid "For Javascripts." msgstr "Per i Javascript." -#: src/views/Playersite.js:699 +#: src/views/Playersite.js:712 msgid "For Stylesheets." msgstr "Per i fogli di stile." -#: src/views/Edit/Sources/Network.js:423 +#: src/views/Edit/Sources/Network.js:439 msgid "Force input framerate" msgstr "Forzare il framerate in ingresso" @@ -881,7 +891,7 @@ msgid "Framebuffer" msgstr "Framebuffer" #: src/misc/coders/settings/Video.js:135 -#: src/views/Edit/Sources/Network.js:436 +#: src/views/Edit/Sources/Network.js:452 msgid "Framerate" msgstr "Framerate" @@ -889,21 +899,22 @@ msgstr "Framerate" msgid "Frequency (Hz)" msgstr "Frequenza (Hz)" -#: src/views/Publication/Services/Facebook.js:119 -#: src/views/Publication/Services/Facebook.js:141 +#: src/views/Publication/Services/Core.js:129 +#: src/views/Publication/Services/Facebook.js:115 +#: src/views/Publication/Services/Facebook.js:133 #: src/views/Publication/Services/Instagram.js:88 -#: src/views/Publication/Services/Restream.js:124 -#: src/views/Publication/Services/Twitch.js:137 +#: src/views/Publication/Services/Restream.js:120 +#: src/views/Publication/Services/Twitch.js:133 #: src/views/Publication/Services/Twitter.js:179 #: src/views/Publication/Services/Youtube.js:177 msgid "GET" msgstr "GET" -#: src/views/Edit/Sources/Network.js:455 -#: src/views/Edit/index.js:399 -#: src/views/Edit/index.js:411 -#: src/views/Playersite.js:348 -#: src/views/Playersite.js:361 +#: src/views/Edit/Sources/Network.js:471 +#: src/views/Edit/index.js:400 +#: src/views/Edit/index.js:412 +#: src/views/Playersite.js:350 +#: src/views/Playersite.js:363 #: src/views/Publication/Add.js:372 #: src/views/Publication/Edit.js:386 #: src/views/Publication/Services/DASH.js:211 @@ -918,52 +929,49 @@ msgstr "GET" msgid "General" msgstr "Generale" -#: src/views/Publication/Player.js:407 +#: src/views/Publication/Player.js:410 msgid "Google Analytics ID" msgstr "ID di Google Analytics" -#: src/views/Publication/Player.js:417 +#: src/views/Publication/Player.js:420 msgid "Google Analytics Tracker Name" msgstr "Nome del tracker di Google Analytics" -#: src/views/Edit/index.js:469 +#: src/views/Edit/index.js:471 +#: src/views/Main/index.js:369 msgid "HLS" msgstr "HLS" -#: src/views/Main/index.js:367 -msgid "HLS URL" -msgstr "URL HLS" - -#: src/views/Settings.js:1505 +#: src/views/Settings.js:1510 msgid "HLS statistic for the In-memory storage" msgstr "Statistica HLS per l'archiviazione In-memory" -#: src/views/Edit/Sources/Network.js:413 +#: src/views/Edit/Sources/Network.js:429 msgid "HTTP and HTTPS" msgstr "HTTP e HTTPS" -#: src/views/Settings.js:1318 +#: src/views/Settings.js:1323 msgid "HTTP port" msgstr "Porta HTTP" -#: src/views/Settings.js:1347 +#: src/views/Settings.js:1352 msgid "HTTPS (SSL/TLS)" msgstr "HTTPS (SSL/TLS)" -#: src/views/Settings.js:1331 +#: src/views/Settings.js:1336 msgid "HTTPS port" msgstr "Porta HTTPS" -#: src/views/Edit/Sources/V4L.js:145 -#: src/views/Edit/Wizard/Sources/V4L.js:120 +#: src/views/Edit/Sources/V4L.js:151 +#: src/views/Edit/Wizard/Sources/V4L.js:140 msgid "Hardware device" msgstr "Dispositivo hardware" -#: src/views/Playersite.js:566 +#: src/views/Playersite.js:579 msgid "Header" msgstr "Intestazione" -#: src/views/Playersite.js:522 +#: src/views/Playersite.js:535 msgid "Headline" msgstr "Titolo" @@ -971,7 +979,7 @@ msgstr "Titolo" msgid "Hosted Restreamer interface" msgstr "Interfaccia Restreamer in hosting" -#: src/views/Settings.js:1253 +#: src/views/Settings.js:1258 msgid "Human readable name on the service." msgstr "Nome leggibile dall'uomo del servizio." @@ -979,32 +987,32 @@ msgstr "Nome leggibile dall'uomo del servizio." msgid "IP address" msgstr "Indirizzo IP" -#: src/views/Settings.js:2003 +#: src/views/Settings.js:2008 msgid "If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port." msgstr "Se ha cambiato le porte, è possibile che Restreamer Core sia già stato riavviato, ma ora è disponibile su una porta diversa." -#: src/views/Settings.js:1997 +#: src/views/Settings.js:2002 msgid "If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core." msgstr "Se ha attivato Let's Encrypt TLS, potrebbe essere necessario un po' di tempo per acquisire i certificati. Si assicuri che Restreamer Core sia raggiungibile tramite la porta 80 da Internet. Controlli il registro della console di Restreamer Core." -#: src/views/Settings.js:1520 +#: src/views/Settings.js:1525 msgid "Ignore IP ranges" msgstr "Ignora gli intervalli IP" -#: src/views/Playersite.js:611 -#: src/views/Publication/Player.js:363 +#: src/views/Playersite.js:624 +#: src/views/Publication/Player.js:366 msgid "Image URL" msgstr "URL dell'immagine" -#: src/views/Playersite.js:636 +#: src/views/Playersite.js:649 msgid "Imprint" msgstr "Impronta" -#: src/views/Playersite.js:366 +#: src/views/Playersite.js:368 msgid "In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly." msgstr "Oltre al player, Restreamer offre una landingpage completa, che può utilizzare per presentare il suo live stream in modo semplice e veloce." -#: src/views/Settings.js:1572 +#: src/views/Settings.js:1577 msgid "In-memory" msgstr "In-memory" @@ -1022,19 +1030,19 @@ msgstr "Incompatibile" msgid "Inherit" msgstr "Eredita" -#: src/views/Playersite.js:694 +#: src/views/Playersite.js:707 msgid "Inject 1" msgstr "Iniettare 1" -#: src/views/Playersite.js:714 +#: src/views/Playersite.js:727 msgid "Inject 2" msgstr "Iniettare 2" -#: src/views/Playersite.js:734 +#: src/views/Playersite.js:747 msgid "Inject 3" msgstr "Iniettare 3" -#: src/views/Playersite.js:754 +#: src/views/Playersite.js:767 msgid "Inject 4" msgstr "Iniettare 4" @@ -1050,8 +1058,8 @@ msgstr "Server RTMP interno" msgid "Interval (seconds)" msgstr "Intervallo (secondi)" -#: src/Header.js:298 -#: src/Header.js:339 +#: src/Header.js:295 +#: src/Header.js:336 msgid "Issue alert" msgstr "Allarme problemi" @@ -1063,11 +1071,11 @@ msgstr "Intervallo dei fotogrammi chiave (secondi)" msgid "Layout" msgstr "Layout" -#: src/views/Settings.js:1352 +#: src/views/Settings.js:1357 msgid "Let's Encrypt certification" msgstr "Certificazione Let's Encrypt" -#: src/views/Settings.js:1360 +#: src/views/Settings.js:1365 msgid "Let's Encrypt requires one or more public domain names and an accessible port 80/TCP." msgstr "Let's Encrypt richiede uno o più nomi di dominio pubblico e una porta 80/TCP accessibile." @@ -1075,42 +1083,42 @@ msgstr "Let's Encrypt richiede uno o più nomi di dominio pubblico e una porta 8 msgid "Level" msgstr "Livello" -#: src/views/Settings.js:1913 +#: src/views/Settings.js:1918 msgid "Level of system protocol." msgstr "Livello di protocollo del sistema." -#: src/views/Edit/Wizard/index.js:1044 -#: src/views/Edit/index.js:402 -#: src/views/Edit/index.js:523 +#: src/views/Edit/Wizard/index.js:1061 +#: src/views/Edit/index.js:403 +#: src/views/Edit/index.js:525 msgid "License" msgstr "Licenza" -#: src/views/Edit/Sources/VirtualVideo.js:167 +#: src/views/Edit/Sources/VirtualVideo.js:176 msgid "Life color" msgstr "Colore della vita" -#: src/views/Playersite.js:593 +#: src/views/Playersite.js:606 msgid "Linecolor" msgstr "Linecolor" -#: src/views/Playersite.js:531 -#: src/views/Publication/Player.js:393 +#: src/views/Playersite.js:544 +#: src/views/Publication/Player.js:396 msgid "Link" msgstr "Link" -#: src/views/Playersite.js:540 +#: src/views/Playersite.js:553 msgid "Link, mouseover" msgstr "Link, passaggio del mouse" -#: src/views/Settings.js:1528 +#: src/views/Settings.js:1533 msgid "List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions." msgstr "Elenco di intervalli IP in notazione CIDR, ad esempio 127.0.0.1/32, che le statistiche non registreranno, un intervallo IP per riga. Lasciare vuoto per registrare tutte le sessioni." -#: src/views/Settings.js:1746 +#: src/views/Settings.js:1751 msgid "List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types." msgstr "Elenco di estensioni di file da mettere in cache (ad esempio \".html\"), una per riga. Lasciare vuoto per mettere in cache tutti i tipi di file." -#: src/misc/controls/HLS.js:71 +#: src/misc/controls/HLS.js:74 msgid "List size (segments)" msgstr "Dimensione della lista (segmenti)" @@ -1127,27 +1135,27 @@ msgid "Live-Streaming to Twitch Live RTMP Service." msgstr "Live-Streaming su Twitch Live RTMP Service." #: src/views/Publication/Services/Vimeo.js:12 -msgid "Live-Streaming to Vimeos Live RTMP Service" -msgstr "Trasmissione in diretta su Vimeos Live RTMP Service" +msgid "Live-Streaming to Vimeo Live RTMP Service" +msgstr "Trasmissione in diretta su Vimeo Live RTMP Service" #: src/views/Publication/Services/Livespotting.js:94 msgid "Livesource ID" msgstr "ID Livesource" -#: src/views/Settings.js:1865 +#: src/views/Settings.js:1870 msgid "Log level" msgstr "Livello di registro" #: src/misc/modals/Process.js:90 #: src/views/Settings.js:1147 -#: src/views/Settings.js:1841 +#: src/views/Settings.js:1846 msgid "Logging" msgstr "Registrazione" #: src/views/Login.js:297 #: src/views/Login.js:391 #: src/views/Login.js:406 -#: src/views/Publication/Services/Akamai.js:123 +#: src/views/Publication/Services/Akamai.js:124 msgid "Login" msgstr "Accesso" @@ -1163,15 +1171,15 @@ msgstr "Accesso fallito: Impossibile caricare i dettagli API" msgid "Login failed: {0}" msgstr "Accesso fallito: {0}" -#: src/views/Settings.js:1420 +#: src/views/Settings.js:1425 msgid "Login/JWT authorization" msgstr "Accesso/Autorizzazione JWT" -#: src/views/Publication/Player.js:318 +#: src/views/Publication/Player.js:321 msgid "Logo" msgstr "Logo" -#: src/Header.js:310 +#: src/Header.js:307 msgid "Logout" msgstr "Disconnessione" @@ -1179,12 +1187,12 @@ msgstr "Disconnessione" msgid "MB" msgstr "MB" -#: src/views/Edit/index.js:379 +#: src/views/Edit/index.js:380 msgid "Main Source" msgstr "Fonte principale" -#: src/views/Main/index.js:263 -#: src/views/Playersite.js:386 +#: src/views/Main/index.js:260 +#: src/views/Playersite.js:389 msgid "Main channel" msgstr "Canale principale" @@ -1192,11 +1200,11 @@ msgstr "Canale principale" msgid "Main channel not found" msgstr "Canale principale non trovato" -#: src/views/Edit/Wizard/index.js:181 +#: src/views/Edit/Wizard/index.js:188 msgid "Main channel saved" msgstr "Canale principale salvato" -#: src/views/Playersite.js:409 +#: src/views/Playersite.js:412 msgid "Main page channel (index.html)." msgstr "Canale della pagina principale (index.html)." @@ -1209,19 +1217,19 @@ msgstr "Canale della pagina principale (index.html)." msgid "Maintainer:" msgstr "Manutentore:" -#: src/views/Settings.js:1705 +#: src/views/Settings.js:1710 msgid "Maximum allowed cache size, 0 for unlimited." msgstr "Dimensione massima consentita della cache, 0 per illimitata." -#: src/views/Settings.js:1627 +#: src/views/Settings.js:1632 msgid "Maximum allowed megabytes of RAM for /memfs, 0 for unlimited." msgstr "Megabyte massimi consentiti di RAM per /memfs, 0 per illimitato." -#: src/views/Settings.js:1671 +#: src/views/Settings.js:1676 msgid "Maximum allowed megabytes to consume from hard disk. 0 for unlimited." msgstr "Megabyte massimi consentiti da consumare dal disco rigido. 0 per illimitato." -#: src/views/Settings.js:1389 +#: src/views/Settings.js:1394 msgid "Maximum bandwidth Mbit/s" msgstr "Larghezza di banda massima Mbit/s" @@ -1229,34 +1237,34 @@ msgstr "Larghezza di banda massima Mbit/s" msgid "Maximum delay in milliseconds." msgstr "Ritardo massimo in millisecondi." -#: src/views/Settings.js:1723 +#: src/views/Settings.js:1728 msgid "Maximum file size (Megabytes)" msgstr "Dimensione massima del file (Megabyte)" -#: src/views/Settings.js:1731 +#: src/views/Settings.js:1736 msgid "Maximum file size to put in cache." msgstr "Dimensione massima del file da inserire nella cache." -#: src/views/Settings.js:1949 +#: src/views/Settings.js:1954 msgid "Maximum log histroy" msgstr "Istanza di log massima" -#: src/views/Settings.js:1918 -#: src/views/Settings.js:1936 +#: src/views/Settings.js:1923 +#: src/views/Settings.js:1941 msgid "Maximum log lines" msgstr "Linee di registro massime" -#: src/views/Settings.js:1619 -#: src/views/Settings.js:1663 -#: src/views/Settings.js:1697 +#: src/views/Settings.js:1624 +#: src/views/Settings.js:1668 +#: src/views/Settings.js:1702 msgid "Maximum size (Megabytes)" msgstr "Dimensione massima (Megabyte)" -#: src/views/Settings.js:1537 +#: src/views/Settings.js:1542 msgid "Maximum viewer idle time (Seconds)" msgstr "Tempo massimo di inattività del telespettatore (secondi)" -#: src/views/Settings.js:1373 +#: src/views/Settings.js:1378 msgid "Maximum viewers" msgstr "Spettatori massimi" @@ -1264,12 +1272,12 @@ msgstr "Spettatori massimi" msgid "Memory" msgstr "Memoria" -#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:402 msgid "Meta information" msgstr "Meta informazioni" -#: src/views/Edit/Wizard/index.js:989 -#: src/views/Edit/index.js:503 +#: src/views/Edit/Wizard/index.js:1006 +#: src/views/Edit/index.js:505 msgid "Metadata" msgstr "Metadati" @@ -1291,44 +1299,44 @@ msgstr "Maggiori informazioni sul copyright di YouTube <0>qui." msgid "More about licenses here" msgstr "Maggiori informazioni sulle licenze qui" -#: src/views/Settings.js:1222 +#: src/views/Settings.js:1227 msgid "More about the service" msgstr "Maggiori informazioni sul servizio" -#: src/views/Publication/Player.js:435 +#: src/views/Publication/Player.js:438 msgid "Mute" msgstr "Muto" #: src/misc/ChannelList.js:380 -#: src/misc/controls/Metadata.js:79 -#: src/misc/controls/Metadata.js:101 -#: src/views/Playersite.js:476 -#: src/views/Settings.js:1245 +#: src/misc/controls/Metadata.js:76 +#: src/misc/controls/Metadata.js:98 +#: src/views/Playersite.js:489 +#: src/views/Settings.js:1250 msgid "Name" msgstr "Nome" -#: src/views/Playersite.js:481 +#: src/views/Playersite.js:494 msgid "Name for the template. If the name already exists, it will be overwritten." msgstr "Nome del modello. Se il nome esiste già, verrà sovrascritto." #: src/views/Settings.js:1142 -#: src/views/Settings.js:1292 +#: src/views/Settings.js:1297 msgid "Network" msgstr "Rete" -#: src/views/Edit/Sources/Network.js:668 +#: src/views/Edit/Sources/Network.js:684 #: src/views/Edit/Wizard/Sources/Network.js:110 msgid "Network source" msgstr "Fonte della rete" -#: src/views/Edit/Wizard/index.js:399 -#: src/views/Edit/Wizard/index.js:635 -#: src/views/Edit/Wizard/index.js:900 -#: src/views/Edit/Wizard/index.js:1012 +#: src/views/Edit/Wizard/index.js:413 +#: src/views/Edit/Wizard/index.js:652 +#: src/views/Edit/Wizard/index.js:917 +#: src/views/Edit/Wizard/index.js:1029 msgid "Next" msgstr "Prossimo" -#: src/views/Edit/Profile.js:405 +#: src/views/Edit/Profile.js:413 msgid "Next: Audio" msgstr "Prossimo: Audio" @@ -1336,12 +1344,12 @@ msgstr "Prossimo: Audio" msgid "Next: Video setup" msgstr "Prossimo: Impostazione video" -#: src/views/Edit/Wizard/index.js:1165 +#: src/views/Edit/Wizard/index.js:1182 msgid "No" msgstr "No" #: src/views/Edit/Sources/NoAudio.js:45 -#: src/views/Edit/Wizard/index.js:884 +#: src/views/Edit/Wizard/index.js:901 msgid "No audio" msgstr "Nessun audio" @@ -1349,7 +1357,12 @@ msgstr "Nessun audio" msgid "No audio stream available" msgstr "Nessun flusso audio disponibile" -#: src/views/Edit/Wizard/index.js:359 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:70 +#: src/views/Edit/Wizard/Sources/V4L.js:99 +msgid "No input device available" +msgstr "Nessun dispositivo di input disponibile" + +#: src/views/Edit/Wizard/index.js:373 msgid "No live stream was detected. Please check the software that sends the stream." msgstr "Non è stato rilevato alcun flusso in diretta. Si prega di controllare il software che invia il flusso." @@ -1357,12 +1370,16 @@ msgstr "Non è stato rilevato alcun flusso in diretta. Si prega di controllare i msgid "No source selected" msgstr "Nessuna fonte selezionata" -#: src/misc/EncodingSelect.js:152 +#: src/views/Edit/SourceSelect.js:174 +msgid "No sources available" +msgstr "Nessuna fonte disponibile" + +#: src/misc/EncodingSelect.js:164 msgid "No suitable encoder found." msgstr "Nessun encoder adatto trovato." -#: src/views/Main/index.js:289 -#: src/views/Publication/Player.js:291 +#: src/views/Main/index.js:286 +#: src/views/Publication/Player.js:294 msgid "No video" msgstr "Nessun video" @@ -1370,7 +1387,7 @@ msgstr "Nessun video" msgid "No video stream available" msgstr "Nessun flusso video disponibile" -#: src/views/Settings.js:1238 +#: src/views/Settings.js:1243 msgid "Node ID" msgstr "ID del nodo" @@ -1378,36 +1395,36 @@ msgstr "ID del nodo" msgid "Noise" msgstr "Rumore" -#: src/views/Edit/Sources/AVFoundation.js:139 +#: src/views/Edit/Sources/AVFoundation.js:145 #: src/views/Edit/Summary.js:30 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:98 msgid "None" msgstr "Nessuno" -#: src/views/Playersite.js:351 -#: src/views/Playersite.js:631 +#: src/views/Playersite.js:353 +#: src/views/Playersite.js:644 msgid "Notes" msgstr "Note" -#: src/views/Settings.js:1926 -#: src/views/Settings.js:1944 +#: src/views/Settings.js:1931 +#: src/views/Settings.js:1949 msgid "Number of log lines to keep." msgstr "Numero di righe di registro da conservare." -#: src/views/Settings.js:1957 +#: src/views/Settings.js:1962 msgid "Number of logs to keep for each process." msgstr "Numero di registri da conservare per ogni processo." -#: src/views/Playersite.js:800 -#: src/views/Publication/Player.js:463 +#: src/views/Playersite.js:813 +#: src/views/Publication/Player.js:466 msgid "OK" msgstr "OK" -#: src/views/Settings.js:1492 +#: src/views/Settings.js:1497 msgid "One referrer per line, e.g. http://www.example.com" msgstr "Un referente per riga, ad esempio http://www.example.com." -#: src/views/Playersite.js:785 +#: src/views/Playersite.js:798 msgid "Open" msgstr "Aperto" @@ -1415,32 +1432,32 @@ msgstr "Aperto" msgid "Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources." msgstr "Il passthrough (copia) deve essere disattivato solo se necessario. Ogni codifica richiede risorse CPU/GPU aggiuntive." -#: src/views/Edit/Sources/Network.js:366 +#: src/views/Edit/Sources/Network.js:382 #: src/views/Edit/Wizard/Sources/Network.js:88 #: src/views/Login.js:282 -#: src/views/Publication/Services/Akamai.js:133 +#: src/views/Publication/Services/Akamai.js:134 #: src/views/Publication/Services/DASH.js:198 #: src/views/Publication/Services/DaCast.js:142 #: src/views/Publication/Services/HLS.js:187 #: src/views/Publication/Services/RTSP.js:156 #: src/views/Publication/Services/Red5.js:157 #: src/views/Publication/Services/WOWZA.js:178 -#: src/views/Settings.js:1448 -#: src/views/Settings.js:1606 +#: src/views/Settings.js:1453 +#: src/views/Settings.js:1611 msgid "Password" msgstr "Password" -#: src/views/Settings.js:1454 -#: src/views/Settings.js:1614 +#: src/views/Settings.js:1459 +#: src/views/Settings.js:1619 msgid "Password for authorization." msgstr "Password per l'autorizzazione." -#: src/views/Edit/Sources/Network.js:371 +#: src/views/Edit/Sources/Network.js:387 #: src/views/Edit/Wizard/Sources/Network.js:90 msgid "Password for the device." msgstr "Password per il dispositivo." -#: src/views/Settings.js:1550 +#: src/views/Settings.js:1555 msgid "Persist viewer statistics" msgstr "Persistere le statistiche dei visualizzatori" @@ -1456,9 +1473,9 @@ msgstr "Piano: <0>Inizio" msgid "Platforms" msgstr "Piattaforme" -#: src/views/Publication/Player.js:320 +#: src/views/Publication/Player.js:323 #: src/views/Settings.js:1144 -#: src/views/Settings.js:1463 +#: src/views/Settings.js:1468 msgid "Playback" msgstr "Riproduzione" @@ -1466,16 +1483,16 @@ msgstr "Riproduzione" msgid "Player" msgstr "Giocatore" -#: src/views/Publication/Player.js:325 +#: src/views/Publication/Player.js:328 msgid "Player URL" msgstr "URL del giocatore" -#: src/views/Publication/Player.js:254 +#: src/views/Publication/Player.js:257 msgid "Player settings saved" msgstr "Impostazioni del giocatore salvate" -#: src/Header.js:270 -#: src/views/Playersite.js:372 +#: src/Header.js:267 +#: src/views/Playersite.js:375 msgid "Playersite" msgstr "Playersite" @@ -1484,15 +1501,15 @@ msgstr "Playersite" msgid "Playlist" msgstr "Playlist" -#: src/views/Main/index.js:332 +#: src/views/Main/index.js:329 msgid "Please check the <0>process log" msgstr "Si prega di controllare il <0>log del processo" -#: src/views/Publication/Services/Akamai.js:28 +#: src/views/Publication/Services/Akamai.js:29 #: src/views/Publication/Services/Bitmovin.js:23 #: src/views/Publication/Services/Brightcove.js:23 -#: src/views/Publication/Services/CDN77.js:24 -#: src/views/Publication/Services/Core.js:25 +#: src/views/Publication/Services/CDN77.js:23 +#: src/views/Publication/Services/Core.js:26 #: src/views/Publication/Services/DASH.js:35 #: src/views/Publication/Services/DaCast.js:26 #: src/views/Publication/Services/HLS.js:37 @@ -1511,8 +1528,8 @@ msgid "Please contact the operator of the service and check what happens." msgstr "Contatta l'operatore del servizio e verifica cosa succede." #: src/views/Playersite.js:122 -#: src/views/Playersite.js:196 -#: src/views/Publication/Player.js:157 +#: src/views/Playersite.js:197 +#: src/views/Publication/Player.js:159 msgid "Please select a file to upload." msgstr "Seleziona un file da caricare." @@ -1520,21 +1537,21 @@ msgstr "Seleziona un file da caricare." msgid "Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources." msgstr "Se possibile, utilizzi \"Passthrough (copia)\". La codifica richiede risorse CPU/GPU aggiuntive." -#: src/views/Edit/Wizard/index.js:418 -#: src/views/Edit/Wizard/index.js:916 +#: src/views/Edit/Wizard/index.js:435 +#: src/views/Edit/Wizard/index.js:933 msgid "Please wait. Probe stream data ..." msgstr "Si prega di attendere. Flusso di dati della sonda ..." -#: src/views/Edit/Wizard/index.js:1086 +#: src/views/Edit/Wizard/index.js:1103 msgid "Please wait. Setting up the stream ..." msgstr "Si prega di attendere. Impostazione del flusso ..." #: src/views/Publication/Services/Bitmovin.js:92 -#: src/views/Settings.js:1798 +#: src/views/Settings.js:1803 msgid "Port" msgstr "Porto" -#: src/views/Publication/Player.js:378 +#: src/views/Publication/Player.js:381 msgid "Position" msgstr "Posizione" @@ -1552,20 +1569,20 @@ msgstr "Flusso primario" msgid "Primary stream key" msgstr "Chiave di flusso primaria" -#: src/views/Edit/Sources/ALSA.js:131 -#: src/views/Edit/Sources/AVFoundation.js:192 +#: src/views/Edit/Sources/ALSA.js:136 +#: src/views/Edit/Sources/AVFoundation.js:201 #: src/views/Edit/Sources/Framebuffer.js:110 -#: src/views/Edit/Sources/Network.js:489 -#: src/views/Edit/Sources/Network.js:536 -#: src/views/Edit/Sources/Network.js:583 +#: src/views/Edit/Sources/Network.js:505 +#: src/views/Edit/Sources/Network.js:552 +#: src/views/Edit/Sources/Network.js:599 #: src/views/Edit/Sources/Raspicam.js:113 -#: src/views/Edit/Sources/V4L.js:126 +#: src/views/Edit/Sources/V4L.js:131 #: src/views/Edit/Sources/VirtualAudio.js:169 -#: src/views/Edit/Sources/VirtualVideo.js:176 +#: src/views/Edit/Sources/VirtualVideo.js:188 msgid "Probe" msgstr "Sonda" -#: src/views/Edit/index.js:491 +#: src/views/Edit/index.js:493 #: src/views/Publication/Add.js:433 #: src/views/Publication/Edit.js:441 msgid "Process" @@ -1580,40 +1597,41 @@ msgstr "Controllo del processo" msgid "Process debug" msgstr "Debug del processo" -#: src/views/Main/index.js:407 +#: src/views/Main/index.js:413 #: src/views/Publication/Edit.js:591 msgid "Process debug report" msgstr "Rapporto di debug del processo" -#: src/views/Main/index.js:383 -#: src/views/Main/index.js:399 +#: src/views/Main/index.js:389 +#: src/views/Main/index.js:405 #: src/views/Publication/Edit.js:468 #: src/views/Publication/Edit.js:583 msgid "Process details" msgstr "Dettagli del processo" -#: src/views/Main/index.js:386 +#: src/views/Main/index.js:392 msgid "Process report" msgstr "Rapporto sul processo" -#: src/views/Edit/index.js:400 -#: src/views/Edit/index.js:461 +#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:463 msgid "Processing & Control" msgstr "Elaborazione e controllo" #: src/misc/coders/Encoders/video/H264NVENC.js:92 +#: src/misc/coders/Encoders/video/H264VAAPI.js:82 #: src/misc/coders/settings/Video.js:142 -#: src/views/Edit/Wizard/index.js:590 +#: src/views/Edit/Wizard/index.js:607 msgid "Profile" msgstr "Profilo" -#: src/views/Edit/Sources/Network.js:504 -#: src/views/Publication/Services/Akamai.js:143 -#: src/views/Publication/Services/Akamai.js:181 +#: src/views/Edit/Sources/Network.js:520 +#: src/views/Publication/Services/Akamai.js:144 +#: src/views/Publication/Services/Akamai.js:182 #: src/views/Publication/Services/Bitmovin.js:86 #: src/views/Publication/Services/Brightcove.js:87 -#: src/views/Publication/Services/CDN77.js:91 -#: src/views/Publication/Services/Core.js:90 +#: src/views/Publication/Services/CDN77.js:90 +#: src/views/Publication/Services/Core.js:91 #: src/views/Publication/Services/DASH.js:186 #: src/views/Publication/Services/DaCast.js:110 #: src/views/Publication/Services/DaCast.js:168 @@ -1634,7 +1652,7 @@ msgstr "Protocollo" msgid "Protocols" msgstr "Protocolli" -#: src/views/Settings.js:1302 +#: src/views/Settings.js:1307 msgid "Public domain/s" msgstr "Dominio pubblico/i" @@ -1643,7 +1661,7 @@ msgstr "Dominio pubblico/i" msgid "Publication service not found" msgstr "Servizio di pubblicazione non trovato" -#: src/views/Playersite.js:317 +#: src/views/Playersite.js:319 msgid "Publication website settings saved" msgstr "Impostazioni del sito web di pubblicazione salvate" @@ -1651,15 +1669,16 @@ msgstr "Impostazioni del sito web di pubblicazione salvate" msgid "Publications" msgstr "Pubblicazioni" -#: src/views/Edit/Sources/Network.js:641 +#: src/views/Edit/Sources/Network.js:657 msgid "Pull Mode" msgstr "Modo di tirare" -#: src/views/Edit/Sources/Network.js:640 +#: src/views/Edit/Sources/Network.js:656 msgid "Pull or recieve the data:" msgstr "Tirare o ricevere i dati:" #: src/misc/Progress.js:90 +#: src/misc/coders/Encoders/video/H264VAAPI.js:137 msgid "Quality" msgstr "Qualità" @@ -1667,37 +1686,37 @@ msgstr "Qualità" msgid "RGB test pattern" msgstr "Modello di test RGB" -#: src/views/Settings.js:1819 +#: src/views/Settings.js:1824 msgid "RTMP app for publishing." msgstr "App RTMP per la pubblicazione." -#: src/views/Settings.js:1760 +#: src/views/Settings.js:1765 msgid "RTMP server" msgstr "Server RTMP" -#: src/views/Edit/Sources/Network.js:556 +#: src/views/Edit/Sources/Network.js:572 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:50 msgid "RTMP server is not enabled" msgstr "Il server RTMP non è abilitato" -#: src/views/Settings.js:1806 +#: src/views/Settings.js:1811 msgid "RTMP server listen address." msgstr "Indirizzo di ascolto del server RTMP." -#: src/views/Settings.js:1832 +#: src/views/Settings.js:1837 msgid "RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'" msgstr "Token RTMP per la pubblicazione e la riproduzione. Il token è il valore del parametro di query URL 'token'." #: src/views/Settings.js:1146 -#: src/views/Settings.js:1755 +#: src/views/Settings.js:1760 msgid "RTMP/S" msgstr "RTMP/S" -#: src/views/Settings.js:1767 +#: src/views/Settings.js:1772 msgid "RTMPS server" msgstr "Server RTMPS" -#: src/views/Edit/Sources/Network.js:389 +#: src/views/Edit/Sources/Network.js:405 msgid "RTSP" msgstr "RTSP" @@ -1707,6 +1726,7 @@ msgid "Raspberry Pi camera" msgstr "Fotocamera Raspberry Pi" #: src/misc/coders/Encoders/video/H264NVENC.js:144 +#: src/misc/coders/Encoders/video/H264VAAPI.js:63 msgid "Rate control" msgstr "Controllo del tasso" @@ -1714,11 +1734,11 @@ msgstr "Controllo del tasso" msgid "Ratio" msgstr "Rapporto" -#: src/views/Edit/Sources/Network.js:418 +#: src/views/Edit/Sources/Network.js:434 msgid "Read input at native speed" msgstr "Leggere l'input a velocità nativa" -#: src/views/Edit/Sources/Network.js:642 +#: src/views/Edit/Sources/Network.js:658 msgid "Receive Mode" msgstr "Modalità di ricezione" @@ -1732,13 +1752,13 @@ msgstr "Ricollegare" msgid "Reconnect delay (seconds)" msgstr "Ritardo di riconnessione (secondi)" -#: src/views/Main/index.js:343 +#: src/views/Main/index.js:340 #: src/views/Publication/Process.js:68 #: src/views/Publication/Process.js:81 msgid "Reconnecting in {0}s" msgstr "Riconnettersi in {0}s" -#: src/views/Settings.js:1994 +#: src/views/Settings.js:1999 msgid "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." msgstr "La riconnessione a Restreamer Core non è riuscita negli ultimi {RETRIES} secondi." @@ -1746,6 +1766,14 @@ msgstr "La riconnessione a Restreamer Core non è riuscita negli ultimi {RETRIES msgid "Reconnecting to Restreamer Core failed." msgstr "La riconnessione a Restreamer Core non è riuscita." +#: src/views/Edit/Sources/ALSA.js:122 +#: src/views/Edit/Sources/AVFoundation.js:181 +#: src/views/Edit/Sources/V4L.js:117 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:135 +#: src/views/Edit/Wizard/Sources/V4L.js:120 +msgid "Refresh" +msgstr "Aggiornamento" + #: src/views/Publication/Services/Restream.js:86 #: src/views/Publication/Services/Twitch.js:78 #: src/views/Publication/Services/Twitter.js:150 @@ -1754,36 +1782,36 @@ msgid "Region" msgstr "Regione" #: src/views/Password.js:159 -#: src/views/Settings.js:2014 +#: src/views/Settings.js:2019 msgid "Reload" msgstr "Ricarica" -#: src/views/Settings.js:1632 +#: src/views/Settings.js:1637 msgid "Remove the oldest entries if the /memfs is full" msgstr "Rimuovere le voci più vecchie se la /memfs è piena" -#: src/views/Settings.js:1779 +#: src/views/Settings.js:1784 msgid "Requires activation" msgstr "Richiede l'attivazione" -#: src/views/Settings.js:1201 -#: src/views/Settings.js:2031 -#: src/views/Settings.js:2044 -#: src/views/Settings.js:2053 +#: src/views/Settings.js:1206 +#: src/views/Settings.js:2036 +#: src/views/Settings.js:2049 +#: src/views/Settings.js:2058 msgid "Restart" msgstr "Riavviare" -#: src/views/Settings.js:2022 +#: src/views/Settings.js:2027 msgid "Restart required" msgstr "Riavvio richiesto" #: src/views/Password.js:136 -#: src/views/Settings.js:1982 +#: src/views/Settings.js:1987 msgid "Restarting" msgstr "Riavvio" #: src/views/Password.js:141 -#: src/views/Settings.js:1987 +#: src/views/Settings.js:1992 msgid "Restarting Restreamer Core ..." msgstr "Riavvio di Restreamer Core ..." @@ -1791,15 +1819,15 @@ msgstr "Riavvio di Restreamer Core ..." msgid "Restarting the application failed." msgstr "Il riavvio dell'applicazione non è riuscito." -#: src/views/Settings.js:1229 +#: src/views/Settings.js:1234 msgid "Restreamer Service" msgstr "Servizio Restreamer" -#: src/views/Main/index.js:242 +#: src/views/Main/index.js:239 msgid "Retrieving stream data ..." msgstr "Recuperare i dati del flusso ..." -#: src/views/Edit/Wizard/index.js:1111 +#: src/views/Edit/Wizard/index.js:1128 #: src/views/Invalid.js:43 #: src/views/Settings.js:1116 msgid "Retry" @@ -1813,13 +1841,13 @@ msgstr "Regola" msgid "Sampling" msgstr "Campionamento" -#: src/views/Edit/Wizard/index.js:1070 -#: src/views/Edit/index.js:558 -#: src/views/Playersite.js:775 +#: src/views/Edit/Wizard/index.js:1087 +#: src/views/Edit/index.js:560 +#: src/views/Playersite.js:788 #: src/views/Publication/Add.js:534 #: src/views/Publication/Edit.js:571 -#: src/views/Publication/Player.js:449 -#: src/views/Settings.js:1972 +#: src/views/Publication/Player.js:452 +#: src/views/Settings.js:1977 msgid "Save" msgstr "Salva" @@ -1827,7 +1855,7 @@ msgstr "Salva" msgid "Scale" msgstr "Scala" -#: src/views/Settings.js:1718 +#: src/views/Settings.js:1723 msgid "Seconds to keep files in cache." msgstr "Secondi per mantenere i file nella cache." @@ -1843,24 +1871,24 @@ msgstr "Secondi fino alla terminazione di un processo in stallo." msgid "Seconds until the snapshot/thumbnail of the video source is updated." msgstr "Secondi fino all'aggiornamento dell'istantanea/ miniatura della sorgente video." -#: src/views/Settings.js:1468 +#: src/views/Settings.js:1473 msgid "Security" msgstr "Sicurezza" -#: src/views/Publication/Services/Core.js:127 +#: src/views/Publication/Services/Core.js:122 #: src/views/Publication/Services/Livespotting.js:103 msgid "Security token" msgstr "Token di sicurezza" -#: src/views/Publication/Player.js:339 +#: src/views/Publication/Player.js:342 msgid "Seekbar color" msgstr "Colore Seekbar" -#: src/misc/controls/HLS.js:59 +#: src/misc/controls/HLS.js:62 msgid "Segment length (seconds)" msgstr "Lunghezza del segmento (secondi)" -#: src/misc/controls/HLS.js:64 +#: src/misc/controls/HLS.js:67 msgid "Segment will be cut on the following keyframe after this time has passed. 2 is recommended." msgstr "Il segmento verrà tagliato sul fotogramma chiave successivo, una volta trascorso questo tempo. Si consiglia il valore 2." @@ -1869,19 +1897,19 @@ msgstr "Il segmento verrà tagliato sul fotogramma chiave successivo, una volta msgid "Segmentation" msgstr "Segmentazione" -#: src/views/Edit/Sources/ALSA.js:114 -#: src/views/Edit/Sources/AVFoundation.js:166 +#: src/views/Edit/Sources/ALSA.js:108 +#: src/views/Edit/Sources/AVFoundation.js:172 #: src/views/Edit/Sources/Framebuffer.js:99 #: src/views/Edit/Sources/Raspicam.js:96 -#: src/views/Edit/Sources/V4L.js:109 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:101 +#: src/views/Edit/Sources/V4L.js:103 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:120 #: src/views/Edit/Wizard/Sources/Raspicam.js:95 -#: src/views/Edit/Wizard/Sources/V4L.js:98 +#: src/views/Edit/Wizard/Sources/V4L.js:114 msgid "Select a device:" msgstr "Selezionare un dispositivo:" #: src/views/Edit/Sources/VirtualAudio.js:84 -msgid "Select audio Source:" +msgid "Select audio source:" msgstr "Seleziona la sorgente audio:" #: src/views/Edit/Sources/VirtualVideo.js:114 @@ -1892,32 +1920,32 @@ msgstr "Selezionare la fonte ..." msgid "Select video source:" msgstr "Selezionare la sorgente video:" -#: src/views/Edit/Wizard/index.js:261 +#: src/views/Edit/Wizard/index.js:268 msgid "Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer)." msgstr "Selezioni se prelevare il flusso da una <0>sorgente di rete (come una telecamera di rete) o dal <1>server RTMP interno (ad esempio, i flussi OBS verso il Restreamer)." -#: src/misc/EncodingSelect.js:184 +#: src/misc/EncodingSelect.js:196 msgid "Select your encoding setting:" msgstr "Seleziona la tua impostazione di codifica:" -#: src/views/Playersite.js:575 +#: src/views/Playersite.js:588 msgid "Selected" msgstr "Selezionato" -#: src/views/Playersite.js:392 +#: src/views/Playersite.js:395 msgid "Selected channel" msgstr "Canale selezionato" -#: src/views/Playersite.js:438 +#: src/views/Playersite.js:449 msgid "Selection" msgstr "Selezione" -#: src/views/Settings.js:1185 +#: src/views/Settings.js:1190 msgid "Send anonymous metrics (helps us for future development)" msgstr "Invii metriche anonime (ci aiuta per lo sviluppo futuro)" -#: src/views/Edit/Sources/Network.js:526 -#: src/views/Edit/Sources/Network.js:573 +#: src/views/Edit/Sources/Network.js:542 +#: src/views/Edit/Sources/Network.js:589 #: src/views/Edit/Wizard/Sources/InternalHLS.js:48 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:68 msgid "Send stream to this address:" @@ -1931,10 +1959,10 @@ msgstr "Invia il video al Framebuffer" msgid "Server" msgstr "Server" -#: src/Header.js:260 +#: src/Header.js:257 #: src/views/Login.js:246 #: src/views/Settings.js:1140 -#: src/views/Settings.js:1215 +#: src/views/Settings.js:1220 msgid "Service" msgstr "Servizio" @@ -1943,7 +1971,7 @@ msgstr "Servizio" msgid "Service name" msgstr "Nome del servizio" -#: src/views/Settings.js:1266 +#: src/views/Settings.js:1271 msgid "Service token for monitoring." msgstr "Token di servizio per il monitoraggio." @@ -1951,15 +1979,15 @@ msgstr "Token di servizio per il monitoraggio." msgid "Sessions" msgstr "Sessioni" -#: src/views/Settings.js:1397 +#: src/views/Settings.js:1402 msgid "Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Imposta un limite di larghezza di banda in Mbit al secondo per il trasferimento di dati HLS in uscita. Tutti i servizi, come RTMP e i processi in uscita, sono inclusi nel calcolo. Se la larghezza di banda viene superata, gli spettatori HLS ricevono il codice di stato HTTP 509 (Limite di larghezza di banda superato). 0 è illimitato." -#: src/views/Settings.js:1381 +#: src/views/Settings.js:1386 msgid "Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Imposta un limite di visualizzazione per le sessioni HLS. Se il limite viene superato, gli spettatori HLS ricevono il codice di stato HTTP 509 (Bandwidth Limit Exceeded). 0 è illimitato." -#: src/views/Settings.js:1220 +#: src/views/Settings.js:1225 msgid "Setting for connection to the service." msgstr "Impostazione per la connessione al servizio." @@ -1971,11 +1999,11 @@ msgstr "Impostazioni" msgid "Settings (expert mode)" msgstr "Impostazioni (modalità esperto)" -#: src/views/Settings.js:1648 +#: src/views/Settings.js:1653 msgid "Settings for /data path. The access is protected by" msgstr "Impostazioni per il percorso /data. L'accesso è protetto da" -#: src/views/Settings.js:1575 +#: src/views/Settings.js:1580 msgid "Settings for /memfs path." msgstr "Impostazioni per il percorso /memfs." @@ -1983,7 +2011,11 @@ msgstr "Impostazioni per il percorso /memfs." msgid "Settings saved. All changes will be applied after restarting the application." msgstr "Impostazioni salvate. Tutte le modifiche saranno applicate dopo il riavvio dell'applicazione." -#: src/views/Playersite.js:420 +#: src/views/Playersite.js:417 +msgid "Share button" +msgstr "Tasto condividi" + +#: src/views/Playersite.js:431 msgid "Shows a reference to the project." msgstr "Mostra un riferimento al progetto." @@ -1995,7 +2027,7 @@ msgstr "Si iscriva (gratis)" msgid "Silence" msgstr "Silenzio" -#: src/views/Edit/Wizard/index.js:881 +#: src/views/Edit/Wizard/index.js:898 msgid "Silence Audio" msgstr "Silenzio Audio" @@ -2003,7 +2035,7 @@ msgstr "Silenzio Audio" msgid "Sine" msgstr "Seno" -#: src/views/Playersite.js:378 +#: src/views/Playersite.js:381 msgid "Sitename" msgstr "Nome del sito" @@ -2011,7 +2043,8 @@ msgstr "Nome del sito" msgid "Size" msgstr "Dimensione" -#: src/views/Edit/index.js:480 +#: src/views/Edit/index.js:482 +#: src/views/Main/index.js:372 msgid "Snapshot" msgstr "Snapshot" @@ -2019,7 +2052,7 @@ msgstr "Snapshot" msgid "Social-login (OAuth2, 2FA)" msgstr "Social-login (OAuth2, 2FA)" -#: src/views/Edit/Sources/Network.js:402 +#: src/views/Edit/Sources/Network.js:418 msgid "Socket timeout (microseconds)" msgstr "Timeout della presa (microsecondi)" @@ -2040,33 +2073,33 @@ msgstr "Velocità" msgid "Stale timeout (seconds)" msgstr "Timeout di stallo (secondi)" -#: src/views/Publication/Player.js:319 -#: src/views/Settings.js:1500 +#: src/views/Publication/Player.js:322 +#: src/views/Settings.js:1505 msgid "Statistics" msgstr "Statistiche" #: src/views/Settings.js:1145 -#: src/views/Settings.js:1567 +#: src/views/Settings.js:1572 msgid "Storage" msgstr "Stoccaggio" -#: src/views/Settings.js:1558 +#: src/views/Settings.js:1563 msgid "Stores the viewer statistics to the disk." msgstr "Memorizza le statistiche del visualizzatore sul disco." #: src/views/Edit/StreamSelect.js:30 #: src/views/Edit/StreamSelect.js:36 #: src/views/Edit/StreamSelect.js:81 -#: src/views/Edit/Wizard/index.js:861 +#: src/views/Edit/Wizard/index.js:878 msgid "Stream" msgstr "Flusso" -#: src/views/Publication/Services/Akamai.js:155 -#: src/views/Publication/Services/CDN77.js:103 +#: src/views/Publication/Services/Akamai.js:156 +#: src/views/Publication/Services/CDN77.js:102 msgid "Stream URL" msgstr "URL del flusso" -#: src/views/Publication/Services/CDN77.js:114 +#: src/views/Publication/Services/CDN77.js:113 #: src/views/Publication/Services/DaCast.js:153 #: src/views/Publication/Services/Dummy.js:274 #: src/views/Publication/Services/Instagram.js:84 @@ -2079,41 +2112,41 @@ msgid "Stream key" msgstr "Chiave del flusso" #: src/views/Publication/Services/Brightcove.js:101 -#: src/views/Publication/Services/Core.js:118 +#: src/views/Publication/Services/Core.js:113 #: src/views/Publication/Services/Red5.js:136 #: src/views/Publication/Services/WOWZA.js:158 msgid "Stream name" msgstr "Nome del flusso" -#: src/views/Publication/Services/Akamai.js:166 +#: src/views/Publication/Services/Akamai.js:167 msgid "Stream names" msgstr "Nomi dei flussi" -#: src/views/Playersite.js:414 +#: src/views/Playersite.js:425 msgid "Support datarhei Restreamer" msgstr "Supporto datarhei Restreamer" -#: src/views/Edit/Sources/Network.js:345 +#: src/views/Edit/Sources/Network.js:361 #: src/views/Edit/Wizard/Sources/Network.js:72 msgid "Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more." msgstr "Supporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT e altro." #: src/Footer.js:184 -#: src/Header.js:278 -#: src/views/Settings.js:1846 +#: src/Header.js:275 +#: src/views/Settings.js:1851 msgid "System" msgstr "Sistema" -#: src/views/Playersite.js:349 -#: src/views/Playersite.js:429 +#: src/views/Playersite.js:351 +#: src/views/Playersite.js:440 msgid "Template" msgstr "Modello" -#: src/views/Playersite.js:451 +#: src/views/Playersite.js:462 msgid "Template to be used for creating the publication website. The delete button removes the selection from the system." msgstr "Modello da utilizzare per la creazione del sito web della pubblicazione. Il pulsante Elimina rimuove la selezione dal sistema." -#: src/views/Playersite.js:653 +#: src/views/Playersite.js:666 msgid "Terms" msgstr "Termini" @@ -2125,7 +2158,7 @@ msgstr "Modello di test" msgid "Test pattern (extended)" msgstr "Modello di test (esteso)" -#: src/views/Playersite.js:506 +#: src/views/Playersite.js:519 msgid "Text colors" msgstr "Colori del testo" @@ -2133,7 +2166,7 @@ msgstr "Colori del testo" msgid "The amplitude (0.0 - 1.0) of the generated audio stream" msgstr "L'ampiezza (0.0 - 1.0) del flusso audio generato" -#: src/views/Settings.js:1205 +#: src/views/Settings.js:1210 msgid "The application is using an older version of the settings." msgstr "L'applicazione sta usando una vecchia versione delle impostazioni." @@ -2145,20 +2178,20 @@ msgstr "Il bitrate del flusso audio." msgid "The carrier frequency" msgstr "La frequenza portante" -#: src/views/Edit/index.js:351 +#: src/views/Edit/index.js:352 msgid "The channel \"{0}\" could not be deleted" msgstr "Non è stato possibile eliminare il canale \"{0}\"." -#: src/views/Edit/index.js:360 +#: src/views/Edit/index.js:361 msgid "The channel \"{0}\" has been deleted" msgstr "Il canale \"{0}\" è stato cancellato." -#: src/views/Edit/index.js:602 +#: src/views/Edit/index.js:604 msgid "The deletion of this channel can not be recovered. All publications of this channel will be removed." msgstr "La cancellazione di questo canale non può essere recuperata. Tutte le pubblicazioni di questo canale saranno rimosse." -#: src/views/Edit/Wizard/index.js:161 -#: src/views/Edit/index.js:283 +#: src/views/Edit/Wizard/index.js:170 +#: src/views/Edit/index.js:290 msgid "The input profile is not complete. Please define a video and audio source." msgstr "Il profilo di ingresso non è completo. Si prega di definire una sorgente video e audio." @@ -2166,7 +2199,7 @@ msgstr "Il profilo di ingresso non è completo. Si prega di definire una sorgent msgid "The layout of the audio stream." msgstr "Il layout del flusso audio." -#: src/misc/controls/HLS.js:76 +#: src/misc/controls/HLS.js:79 msgid "The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended." msgstr "Il numero massimo di segmenti della playlist. 0 conterrà tutti i segmenti. 6 è consigliato." @@ -2178,7 +2211,7 @@ msgstr "Il colore del rumore" msgid "The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission." msgstr "La persona che ha associato un'opera con questo atto ha dedicato l'opera al pubblico dominio rinunciando a tutti i suoi diritti sull'opera in tutto il mondo secondo la legge sul diritto d'autore, compresi tutti i diritti connessi e vicini, nella misura consentita dalla legge. Puoi copiare, modificare, distribuire ed eseguire l'opera, anche per scopi commerciali, il tutto senza chiedere il permesso." -#: src/views/Settings.js:1310 +#: src/views/Settings.js:1315 msgid "The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma." msgstr "Il nome di dominio pubblico raggiungibile dell'host su cui gira questo Restreamer. Separi i nomi di dominio multipli con una virgola." @@ -2202,68 +2235,58 @@ msgstr "Il servizio di pubblicazione è stato creato" msgid "The sample rate of the audio stream." msgstr "La frequenza di campionamento del flusso audio." -#: src/views/Playersite.js:151 -#: src/views/Playersite.js:225 -#: src/views/Publication/Player.js:186 +#: src/views/Playersite.js:152 +#: src/views/Playersite.js:227 +#: src/views/Publication/Player.js:189 msgid "The selected file is too big ({0} bytes). Only {1} bytes are allowed." msgstr "Il file selezionato è troppo grande ({0} byte). Sono ammessi solo {1} byte." -#: src/views/Playersite.js:140 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}" -msgstr "Il tipo di file selezionato ({0}) è ora consentito. I tipi di file consentiti sono {imageAcceptString}" - -#: src/views/Publication/Player.js:175 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}" -msgstr "Il tipo di file selezionato ({0}) è ora permesso. I tipi di file consentiti sono {logoAcceptString}" - -#: src/views/Playersite.js:214 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}" -msgstr "Il tipo di file selezionato ({0}) è ora consentito. I tipi di file consentiti sono {templateAcceptString}" +#: src/views/Playersite.js:141 +#: src/views/Playersite.js:216 +#: src/views/Publication/Player.js:178 +msgid "The selected file type ({0}) is not allowed. Allowed file types are {types}" +msgstr "Il tipo di file selezionato ({0}) non è consentito. I tipi di file consentiti sono {types}" #: src/views/Publication/Edit.js:230 msgid "The settings for \"{0}\" have been saved" msgstr "Le impostazioni per \"{0}\" sono state salvate" -#: src/views/Edit/Wizard/index.js:829 +#: src/views/Edit/Wizard/index.js:846 msgid "The source doesn't provide any audio streams." msgstr "La fonte non fornisce alcun flusso audio." -#: src/views/Edit/Profile.js:478 +#: src/views/Edit/Profile.js:487 msgid "The source doesn't provide any audio streams. Please check the <0>probe details." msgstr "La sorgente non fornisce alcun flusso audio. Per favore controlla i <0>dettagli della sonda." -#: src/views/Edit/Wizard/index.js:837 +#: src/views/Edit/Wizard/index.js:854 msgid "The source doesn't provide any compatible audio streams." msgstr "La fonte non fornisce alcun flusso audio compatibile." -#: src/views/Edit/Wizard/index.js:378 +#: src/views/Edit/Wizard/index.js:392 msgid "The source doesn't provide any compatible video streams. Please check the <0>requirements." msgstr "La fonte non fornisce alcun flusso video compatibile. Per favore controlla i <0>requisiti." -#: src/views/Edit/Profile.js:349 +#: src/views/Edit/Profile.js:357 msgid "The source doesn't provide any video streams. Please check the <0>probe details." msgstr "La fonte non fornisce alcun flusso video. Per favore controlla i <0>dettagli della sonda." -#: src/views/Edit/Wizard/index.js:370 +#: src/views/Edit/Wizard/index.js:384 msgid "The source doesn't provide any video streams. Please check the device." msgstr "La fonte non fornisce alcun flusso video. Si prega di controllare il dispositivo." -#: src/views/Edit/Wizard/index.js:848 +#: src/views/Edit/Wizard/index.js:865 msgid "The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel." msgstr "La sorgente video non fornisce alcun flusso audio compatibile. Si raccomanda <0>Audio silenzioso. I servizi come YouTube, Facebook & Co. richiedono un canale audio." -#: src/views/Edit/Wizard/index.js:586 +#: src/views/Edit/Wizard/index.js:603 msgid "The video source is compatible. Select the desired resolution:" msgstr "La sorgente video è compatibile. Selezionare la risoluzione desiderata:" -#: src/views/Settings.js:1177 +#: src/views/Settings.js:1182 msgid "There are updates available. Here you get more information." msgstr "Sono disponibili degli aggiornamenti. Qui può ottenere maggiori informazioni." -#: src/views/Playersite.js:238 -msgid "There war an error during upload: {0}" -msgstr "C'è un errore durante il caricamento: {0}" - #: src/views/Settings.js:911 msgid "There was a problem storing the settings. Settings not saved." msgstr "Si è verificato un problema nella memorizzazione delle impostazioni. Le impostazioni non sono state salvate." @@ -2272,12 +2295,13 @@ msgstr "Si è verificato un problema nella memorizzazione delle impostazioni. Le msgid "There was an error connecting to Restreamer Core at {0}." msgstr "Si è verificato un errore di connessione a Restreamer Core a {0}." -#: src/views/Playersite.js:164 -#: src/views/Publication/Player.js:199 +#: src/views/Playersite.js:165 +#: src/views/Playersite.js:240 +#: src/views/Publication/Player.js:202 msgid "There was an error during upload: {0}" msgstr "Si è verificato un errore durante il caricamento: {0}" -#: src/views/Edit/Wizard/index.js:1106 +#: src/views/Edit/Wizard/index.js:1123 msgid "There was an error setting up the stream." msgstr "C'è stato un errore nell'impostazione del flusso." @@ -2325,7 +2349,7 @@ msgstr "Questa licenza permette ai riutilizzatori di distribuire, remixare, adat msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." msgstr "Questa licenza permette ai riutilizzatori di distribuire, remixare, adattare e costruire sul materiale in qualsiasi mezzo o formato, purché venga data l'attribuzione al creatore. La licenza permette l'uso commerciale. Se remixate, adattate o costruite sul materiale, dovete dare in licenza il materiale modificato sotto gli stessi termini." -#: src/views/Edit/index.js:583 +#: src/views/Edit/index.js:585 msgid "This source cannot be edited while it is in use. To continue, you have to disconnect the source." msgstr "Questa sorgente non può essere modificata mentre è in uso. Per continuare, deve scollegare la sorgente." @@ -2341,12 +2365,12 @@ msgstr "Questa versione dell'interfaccia utente non supporta il Core connesso ({ msgid "This version of the UI is compatible." msgstr "Questa versione dell'UI è compatibile." -#: src/views/Settings.js:1545 +#: src/views/Settings.js:1550 msgid "Time until an inactive viewer connection is treated as closed." msgstr "Tempo fino a quando una connessione inattiva del visualizzatore viene trattata come chiusa." -#: src/views/Settings.js:1258 -#: src/views/Settings.js:1824 +#: src/views/Settings.js:1263 +#: src/views/Settings.js:1829 msgid "Token" msgstr "Token" @@ -2391,7 +2415,7 @@ msgid "Transmit the main source to an RTSP Server. More details about the settin msgstr "Trasmette la sorgente principale a un server RTSP. Maggiori dettagli sulle impostazioni sono disponibili <0>qui." #: src/views/Publication/Services/Red5.js:17 -msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." +msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." msgstr "Trasmette la sorgente principale a un Server Red5/Pro. Maggiori dettagli sulle impostazioni sono disponibili <0>qui." #: src/views/Publication/Services/SRT.js:25 @@ -2406,7 +2430,7 @@ msgstr "Trasmette la sorgente principale a un server UDP. Maggiori dettagli sull msgid "Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here." msgstr "Trasmette la sorgente principale a un server WOWZA. Maggiori dettagli sulle impostazioni sono disponibili <0>qui." -#: src/views/Publication/Services/Core.js:17 +#: src/views/Publication/Services/Core.js:18 msgid "Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here." msgstr "Trasmette la sorgente principale a una risorsa Core datarhei. Maggiori dettagli sulle impostazioni sono disponibili <0>qui." @@ -2414,7 +2438,7 @@ msgstr "Trasmette la sorgente principale a una risorsa Core datarhei. Maggiori d msgid "Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here." msgstr "Trasmette la fonte principale ad una fonte di livespotting.com. Maggiori dettagli sulle impostazioni sono disponibili <0>qui." -#: src/views/Publication/Services/Akamai.js:16 +#: src/views/Publication/Services/Akamai.js:17 msgid "Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here." msgstr "Trasmette la sorgente principale a Akamai (MSL) Media Services Live. Maggiori dettagli sulle impostazioni dell'Encoder MSL sono disponibili su <0>qui." @@ -2439,7 +2463,7 @@ msgstr "Trasmette il suo flusso video con la chiave richiesta, che è stata gene msgid "Tune" msgstr "Tune" -#: src/views/Edit/Sources/Network.js:393 +#: src/views/Edit/Sources/Network.js:409 #: src/views/Edit/Wizard/Sources/Network.js:77 msgid "UDP transport" msgstr "Trasporto UDP" @@ -2448,7 +2472,7 @@ msgstr "Trasporto UDP" msgid "Unable to load the config." msgstr "Impossibile caricare la configurazione." -#: src/views/Settings.js:1240 +#: src/views/Settings.js:1245 msgid "Unique ident on the service." msgstr "Identità unica del servizio." @@ -2456,22 +2480,22 @@ msgstr "Identità unica del servizio." msgid "Unknown" msgstr "Sconosciuto" -#: src/views/Playersite.js:584 +#: src/views/Playersite.js:597 msgid "Unselected" msgstr "Non selezionato" -#: src/views/Playersite.js:469 -#: src/views/Playersite.js:486 -#: src/views/Playersite.js:621 -#: src/views/Publication/Player.js:370 +#: src/views/Playersite.js:482 +#: src/views/Playersite.js:499 +#: src/views/Playersite.js:634 +#: src/views/Publication/Player.js:373 msgid "Upload" msgstr "Carica" -#: src/views/Playersite.js:279 +#: src/views/Playersite.js:281 msgid "Uploading the file failed" msgstr "Il caricamento del file non è riuscito" -#: src/views/Publication/Player.js:229 +#: src/views/Publication/Player.js:232 msgid "Uploading the logo failed" msgstr "Caricamento del logo fallito" @@ -2485,15 +2509,15 @@ msgstr "Uptime" msgid "Use Auth0 for your running Restreamer Core. More <0>details." msgstr "Utilizzi Auth0 per il suo Restreamer Core in esecuzione. Ulteriori <0>dettagli." -#: src/views/Edit/index.js:425 +#: src/views/Edit/index.js:426 msgid "Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode." msgstr "Utilizzi la procedura guidata (<0/>) per un'impostazione rapida e semplice, oppure modifichi (<1/>) le sorgenti direttamente in modalità personalizzata." -#: src/views/Edit/Wizard/index.js:1051 +#: src/views/Edit/Wizard/index.js:1068 msgid "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Utilizzi il suo copyright e scelga la licenza d'immagine corretta. Che sia libera per tutti o altamente limitata. Discuta brevemente di ciò che gli altri possono fare con la sua immagine." -#: src/views/Edit/index.js:528 +#: src/views/Edit/index.js:530 msgid "Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Usa il tuo copyright e scegli la giusta licenza per le immagini. Che sia libera per tutti o altamente limitata. Discuti brevemente su cosa gli altri possono fare con la tua immagine." @@ -2501,7 +2525,7 @@ msgstr "Usa il tuo copyright e scegli la giusta licenza per le immagini. Che sia msgid "User registration" msgstr "Registrazione dell'utente" -#: src/views/Edit/Sources/Network.js:354 +#: src/views/Edit/Sources/Network.js:370 #: src/views/Edit/Wizard/Sources/Network.js:81 #: src/views/Login.js:272 #: src/views/Publication/Services/DASH.js:195 @@ -2510,17 +2534,17 @@ msgstr "Registrazione dell'utente" #: src/views/Publication/Services/RTSP.js:153 #: src/views/Publication/Services/Red5.js:146 #: src/views/Publication/Services/WOWZA.js:168 -#: src/views/Settings.js:1435 -#: src/views/Settings.js:1593 +#: src/views/Settings.js:1440 +#: src/views/Settings.js:1598 msgid "Username" msgstr "Nome utente" -#: src/views/Settings.js:1441 -#: src/views/Settings.js:1601 +#: src/views/Settings.js:1446 +#: src/views/Settings.js:1606 msgid "Username for authorization." msgstr "Nome utente per l'autorizzazione." -#: src/views/Edit/Sources/Network.js:359 +#: src/views/Edit/Sources/Network.js:375 #: src/views/Edit/Wizard/Sources/Network.js:83 msgid "Username for the device." msgstr "Nome utente del dispositivo." @@ -2533,24 +2557,24 @@ msgstr "ID VPU" msgid "Video" msgstr "Video" -#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:126 #: src/views/Edit/Sources/Raspicam.js:89 -#: src/views/Edit/Sources/V4L.js:96 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:66 +#: src/views/Edit/Sources/V4L.js:109 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 #: src/views/Edit/Wizard/Sources/Raspicam.js:86 -#: src/views/Edit/Wizard/Sources/V4L.js:89 +#: src/views/Edit/Wizard/Sources/V4L.js:105 msgid "Video device" msgstr "Dispositivo video" -#: src/views/Edit/Profile.js:313 -#: src/views/Edit/ProfileSummary.js:65 +#: src/views/Edit/Profile.js:320 +#: src/views/Edit/ProfileSummary.js:66 #: src/views/Publication/Edit.js:517 msgid "Video settings" msgstr "Impostazioni video" -#: src/views/Edit/Wizard/index.js:257 -#: src/views/Edit/Wizard/index.js:341 -#: src/views/Edit/Wizard/index.js:579 +#: src/views/Edit/Wizard/index.js:264 +#: src/views/Edit/Wizard/index.js:354 +#: src/views/Edit/Wizard/index.js:596 msgid "Video setup" msgstr "Configurazione video" @@ -2566,7 +2590,7 @@ msgid "Viewer" msgstr "Visualizzatore" #: src/views/Edit/Sources/VirtualAudio.js:187 -#: src/views/Edit/Sources/VirtualVideo.js:194 +#: src/views/Edit/Sources/VirtualVideo.js:206 msgid "Virtual source" msgstr "Fonte virtuale" @@ -2574,7 +2598,7 @@ msgstr "Fonte virtuale" msgid "Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs." msgstr "Benvenuti a Restreamer v2, la soluzione per pubblicare video in modo facile e veloce. Gratuito per uso privato e commerciale. Ulteriore aiuto nei <0>docs." -#: src/views/Settings.js:1580 +#: src/views/Settings.js:1585 msgid "Write protection" msgstr "Scrivere la protezione" @@ -2582,19 +2606,19 @@ msgstr "Scrivere la protezione" msgid "YUV test pattern" msgstr "Modello di test YUV" -#: src/views/Edit/Wizard/index.js:1160 +#: src/views/Edit/Wizard/index.js:1177 msgid "Yes" msgstr "Sì" -#: src/views/Edit/Wizard/index.js:1142 +#: src/views/Edit/Wizard/index.js:1159 msgid "You can't abort the wizard because at least one input must be defined." msgstr "Non può interrompere la procedura guidata perché deve essere definito almeno un ingresso." -#: src/views/Settings.js:2036 +#: src/views/Settings.js:2041 msgid "You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?" msgstr "Hai cambiato la configurazione. Affinché le modifiche abbiano effetto, devi riavviare l'applicazione. Vuoi riavviare ora?" -#: src/views/Main/index.js:350 +#: src/views/Main/index.js:347 #: src/views/Publication/Process.js:73 msgid "You have to reconnect manually" msgstr "Devi riconnetterti manualmente" @@ -2603,11 +2627,11 @@ msgstr "Devi riconnetterti manualmente" msgid "You have unsaved changes. Please save them before you can control the service again." msgstr "Hai delle modifiche non salvate. Per favore, salvale prima di poter controllare di nuovo il servizio." -#: src/views/Edit/Wizard/index.js:599 +#: src/views/Edit/Wizard/index.js:616 msgid "Your stream needs to be encoded, but there's no suitable encoder available." msgstr "Il suo flusso deve essere codificato, ma non è disponibile un codificatore adatto." -#: src/views/Edit/Wizard/index.js:606 +#: src/views/Edit/Wizard/index.js:623 msgid "Your stream needs to be encoded. Choose the desired encoder:" msgstr "Il tuo flusso deve essere codificato. Scegli il codificatore desiderato:" @@ -2619,7 +2643,7 @@ msgstr "blu" msgid "brown" msgstr "marrone" -#: src/views/Publication/Player.js:328 +#: src/views/Publication/Player.js:331 msgid "iframe code" msgstr "codice iframe" diff --git a/src/locales/pt/messages.js b/src/locales/pt/messages.js index 1e9ec1e..092b019 100644 --- a/src/locales/pt/messages.js +++ b/src/locales/pt/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{"<0>Show probe details":"<0>Mostrar detalhes da sonda","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Ponto final API não encontrado. Configurações não salvas.","AVFoundation":"AVFoundation","Abort":"Abortar","About":"Sobre","Add":"Adicione","Add Publication":"Adicionar Publicação","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Adicione widgets e estilos externos ao site de publicação. Você pode encontrar alguns exemplos na página de ajuda.","Add new channel":"Adicionar novo canal","Add: {0}":["Adicionar: ",["0"]],"Address":"Endereço","Address for the background image.":"Endereço para a imagem de fundo.","Address to listen on for HTTP requests.":"Endereço para ouvir os pedidos HTTP.","Address to listen on for HTTPS requests.":"Endereço para ouvir os pedidos de HTTPS.","Adjust publication site colors and background as you like.":"Ajuste as cores e o fundo do site de publicação como você quiser.","Advanced monitoring":"Monitoramento avançado","Advanced settings":"Configurações avançadas","Advanced setup":"Configuração avançada","Alerting by email":"Alerta por e-mail","All":"Todos","All important system settings.":"Todas as configurações importantes do sistema.","Allow all referrer":"Permitir a todos os encaminhadores","Allow counting how many viewers the stream has.":"Permitir contar quantos espectadores o fluxo tem.","Amplitude":"Amplitude","An environment variable sets this value.":"Uma variável de ambiente define este valor.","App":"App","Application":"Aplicação","Are you sure you want to abort the wizard?":"Você tem certeza de que quer abortar o feiticeiro?","Audio":"Áudio","Audio Device":"Dispositivo de áudio","Audio device":"Dispositivo de áudio","Audio from device":"Áudio do dispositivo","Audio settings":"Configurações de áudio","Audio setup":"Configuração de áudio","Auth0":"Auth0","Auth0 Tenant":"Auth0 Inquilino","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 não está atualmente disponível porque esta interface é carregada a partir de uma origem insegura.","Author":"Autor","Authorization":"Autorização","Autoplay":"Autoplay","Available":"Disponível em","Back":"Voltar","Background colors":"Cores de fundo","Background image":"Imagem de fundo","Backup URL":"URL de backup","Backup server":"Servidor de backup","Backup stream":"Fluxo de backup","Backup stream key":"Chave de fluxo de backup","Bandwidth":"Largura de banda","Bandwidth control":"Controle de largura de banda","Banner":"Banner","Basic":"Básico","Beep factor":"Fator Beep","Bitrate":"Taxa de bits","Briefly describe what the audience will see during the live stream.":"Descrever brevemente o que o público verá durante a transmissão ao vivo.","Button color":"Cor do botão","Cache for files on /data.":"Cache para arquivos em /dados.","Cache time (Seconds)":"Tempo de cache (Segundos)","Cache types":"Tipos de cachês","Capture clicks":"Cliques de captura","Capture cursor":"Captura do cursor","Channel \"{0}\" saved":["Canal \"",["0"],"\" salvo"],"Channels":"Canais","Check for updates":"Verificar por atualizações","Check the requirements":"Verifique os requisitos","Choose a video stream":"Escolha um fluxo de vídeo","Choose an audio stream":"Escolha um fluxo de áudio","Choose an input device ...":"Escolha um dispositivo de entrada ...","Choose codec ...":"Escolha o codec ...","Choose tenant ...":"Escolher inquilino ...","Chunk":"Pedaço","Close":"Fechar","Code injection":"Injeção de código","Codec":"Codec","Color":"Cor","Config":"Config","Confirm password":"Confirmar senha","Connect":"Conecte","Connected device":"Dispositivo conectado","Connected since <0/>":"Conectado desde <0/>","Connecting ...":"Conectando ...","Connecting to Restreamer Core ...":"Conectando-se ao Restreamer Core ...","Connecting to Restreamer Core failed probably because of mixed content.":"A conexão com o Restreamer Core falhou provavelmente por causa do conteúdo misto.","Content":"Conteúdo","Cores":"Núcleos","Create user":"Criar usuário","Creative Commons":"Creative Commons","Custom ...":"Personalizado ...","Custom JSON config for datarhei Core.":"Configuração JSON personalizada para datarhei Core.","Custom audio device":"Dispositivo de áudio personalizado","Custom audio index":"Índice de áudio personalizado","Custom bitrate (kbit/s)":"Taxa de bits personalizada (kbit/s)","Custom code injection":"Injeção de código personalizado","Custom delay":"Atraso personalizado","Custom device":"Dispositivo personalizado","Custom format":"Formato personalizado","Custom framerate":"Framerate personalizado","Custom keyframe interval":"Intervalo de chaveiro personalizado","Custom layout":"Layout personalizado","Custom sampling (Hz)":"Amostragem personalizada (Hz)","Custom scale":"Escala personalizada","Custom size":"Tamanho personalizado","Custom video device":"Dispositivo de vídeo personalizado","Custom video index":"Índice de vídeo personalizado","Data copied to clipboard":"Dados copiados para a prancheta","Death color":"Cor da morte","Decoder":"Decodificador","Default":"Predefinição","Delay":"Atraso","Delay (ms)":"Atraso (ms)","Delete":"Excluir","Deleting a publication service cannot be reversed. The publication stops immediately.":"A eliminação de um serviço de publicação não pode ser revertida. A publicação pára imediatamente.","Delivering mode":"Modo de entrega","Description":"Descrição","Design":"Projeto","Device":"Dispositivo","Disconnect":"Desconectar","Disconnect & Continue":"Desconectar e continuar","Disconnecting ...":"Desconectando ...","Disk":"Disco","Disk cache":"Cache de disco","Disk storage":"Armazenamento em disco","Do you really want to restart the application now?":"Você realmente quer reiniciar a aplicação agora?","Do you want to delete \"{0}\"?":["Você quer excluir \"",["0"],"\"?"],"Do you want to delete {title}?":["Você quer apagar ",["título"],"?"],"Do you want to disconnect \"{0}\"?":["Você quer desconectar \"",["0"],"\"?"],"Docs":"Docs","Documentation":"Documentação","Dup. frames":"Molduras Dup","EDIT: Player":"EDIT: Jogador","EDIT: Publication Website":"EDIT: Site de publicação","Edit":"Editar","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Edite as fontes de áudio e vídeo para a transmissão ao vivo. Adicione uma descrição e defina sua licença de conteúdo desejada.","Edit: {title}":["Edição: ",["título"]],"Embed":"Embutir","Enable RTMP server ...":"Habilitar servidor RTMP ...","Enable a periodic beep every second with this value times the carrier frequency":"Habilitar um bip periódico a cada segundo com este valor vezes a freqüência portadora","Enable backup stream":"Habilitar o fluxo de backup","Enable nerd statistics":"Habilitar estatísticas de nerds","Enable primary stream":"Habilitar o fluxo primário","Enable snapshots":"Habilitar instantâneos","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Aconselha-se vivamente a autorização. Caso contrário, qualquer pessoa pode ter acesso a esta instância.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Aconselha-se vivamente que se habilite a auth básica. Caso contrário, qualquer pessoa poderia escrever dados para /memfs.","Encoder":"Codificador","Encoding":"Codificação","Encryption":"Criptografia","Enter a name for the new channel.":"Digite um nome para o novo canal.","Enter password":"Digite a senha","Enter the address of your network source:":"Digite o endereço de sua fonte de rede:","Enter username":"Digite o nome de usuário","Entropy coder":"Codificador de entropia","Error":"Erro","Error while copying data to clipboard":"Erro ao copiar dados para a prancheta","Error: {0}":["Erro: ",["0"]],"Expands the area above the channel list (live chat).":"Expande a área acima da lista de canais (bate-papo ao vivo).","Expands the area under the channel description (comment boxes).":"Expande a área sob a descrição do canal (caixas de comentários).","Expert mode":"Modo especialista","Extend channel list":"Ampliar a lista de canais","Extend content":"Ampliar o conteúdo","Extend footer":"Ampliar o rodapé","Extend header":"Ampliar cabeçalho","FFmpeg":"FFmpeg","FPS":"FPS","Failed to correctly cleanup previous process data":"Falha na limpeza correta dos dados do processo anterior","Failed to create publication service ({0})":["Falha na criação do serviço de publicação (",["0"],")"],"Failed to create publication website files.":"Falha na criação dos arquivos do site de publicação.","Failed to probe the source. Please check the <0>probe details.":"Falha na sondagem da fonte. Por favor, verifique os <0> detalhes da sonda.","Failed to refresh token: {0}":["Falha em atualizar a ficha: ",["0"]],"Failed to save ingest metadata":"Falha em salvar metadados ingeridos","Failed to stop process":"Falha em interromper o processo","Failed to store player size setting.":"Falha no ajuste do tamanho do jogador.","Failed to store publication service ({0})":["Falha no serviço de publicação de lojas (",["0"],")"],"Failed to update ingest process ({0})":["Falha em atualizar o processo de ingestão (",["0"],")"],"Failed to update the player":"Falha na atualização do jogador","Failed to verify the source. Please check the address.":"Falha na verificação da fonte. Por favor, verifique o endereço.","Finish":"Terminar","Flags":"Bandeiras","For Javascripts.":"Para Javascripts.","For Stylesheets.":"Para Fichas de Estilo.","Force input framerate":"Forçar o frame de entrada","Format":"Formato","Frame drops":"Gotas de moldura","Framebuffer":"Framebuffer","Framerate":"Framerate","Frequency (Hz)":"Freqüência (Hz)","GET":"GET","General":"Geral","Google Analytics ID":"Google Analytics ID","Google Analytics Tracker Name":"Nome do Google Analytics Tracker","HLS":"HLS","HLS URL":"URL DO HLS","HLS statistic for the In-memory storage":"Estatísticas HLS para o armazenamento In-memory","HTTP and HTTPS":"HTTP e HTTPS","HTTP port":"Porta HTTP","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"Porto HTTPS","Hardware device":"Dispositivo de ferragens","Header":"Cabeçalho","Headline":"Manchete","Hosted Restreamer interface":"Interface Restreamer hospedado","Human readable name on the service.":"Nome legível pelo ser humano no serviço.","IP address":"Endereço IP","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Se você mudou os portos, pode ser que o Restreamer Core já tenha reiniciado, mas agora ele está disponível em um porto diferente.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Se você ativou Let's Encrypt TLS, pode levar algum tempo para adquirir os certificados. Certifique-se de que o Restreamer Core esteja acessível via porta 80 a partir da Internet. Por favor, verifique o log do console do Restreamer Core.","Ignore IP ranges":"Ignorar as faixas de IP","Image URL":"URL da imagem","Imprint":"Impresso","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"Além do jogador, o Restreamer oferece uma página de desembarque completa, que você pode usar para apresentar seu stream ao vivo com facilidade e rapidez.","In-memory":"In-memory","In-memory storage":"Armazenamento em memória","Incompatible":"Incompatível","Inherit":"Inerte","Inject 1":"Injetar 1","Inject 2":"Injetar 2","Inject 3":"Injetar 3","Inject 4":"Injetar 4","Internal HLS server":"Servidor interno HLS","Internal RTMP server":"Servidor RTMP interno","Interval (seconds)":"Intervalo (segundos)","Issue alert":"Alerta de emissão","Keyframe interval (seconds)":"Intervalo do quadro-chave (segundos)","Layout":"Layout","Let's Encrypt certification":"Vamos encriptar a certificação","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Vamos Encriptar requer um ou mais nomes de domínio público e uma porta 80/TCP acessível.","Level":"Nível","Level of system protocol.":"Nível de protocolo do sistema.","License":"Licença","Life color":"Cor da vida","Linecolor":"Linecolor","Link":"Link","Link, mouseover":"Link, mouseover","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Lista de faixas de IP na notação CIDR, por exemplo, 127.0.0.0.1/32, que as estatísticas não registrarão uma faixa IP por linha. Deixe em branco para registrar todas as sessões.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Lista de extensões de arquivo para cache (por exemplo, \".html\"), uma por linha. Deixar vazio para o cache de todos os tipos de arquivo.","List size (segments)":"Tamanho da lista (segmentos)","Live-Streaming to Facebook Live RTMP service":"Live-Streaming para o serviço RTMP ao vivo no Facebook","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Live-Streaming para Instagram Live RTMP Service. A chave de fluxo requer um serviço como <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Live-Streaming para Twitch Live RTMP Service.","Live-Streaming to Vimeos Live RTMP Service":"Live-Streaming para Vimeos Live RTMP Service","Livesource ID":"Identificação de fonte de vida","Log level":"Nível de log","Logging":"Logging","Login":"Login","Login failed: Couldn't load API details":"O login falhou: Não foi possível carregar detalhes API","Login failed: {0}":["O login falhou: ",["0"]],"Login/JWT authorization":"Login/JWT autorização","Logo":"Logotipo","Logout":"Logout","MB":"MB","Main Source":"Fonte principal","Main channel":"Canal principal","Main channel not found":"Canal principal não encontrado","Main channel saved":"Canal principal salvo","Main page channel (index.html).":"Canal da página principal (index.html).","Maintainer:":"Mantenedor:","Maximum allowed cache size, 0 for unlimited.":"Tamanho máximo de cache permitido, 0 para ilimitado.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Máximo permitido de megabytes de RAM para /memfs, 0 para ilimitado.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Consumo máximo permitido de megabytes a partir do disco rígido. 0 por ilimitado.","Maximum bandwidth Mbit/s":"Largura de banda máxima Mbit/s","Maximum delay in milliseconds.":"Atraso máximo em milissegundos.","Maximum file size (Megabytes)":"Tamanho máximo do arquivo (Megabytes)","Maximum file size to put in cache.":"Tamanho máximo de arquivo para colocar em cache.","Maximum log histroy":"Histórico log máximo","Maximum log lines":"Máximo de linhas de toras","Maximum size (Megabytes)":"Tamanho máximo (Megabytes)","Maximum viewer idle time (Seconds)":"Tempo máximo de ociosidade do espectador (segundos)","Maximum viewers":"Máximo de espectadores","Memory":"Memória","Meta information":"Meta informação","Metadata":"Metadados","Mold":"Molde","More about Twitter's copyright <0>here.":"Mais sobre os direitos autorais do Twitter <0>aqui.","More about YouTube's copyright <0>here.":"Mais sobre os direitos autorais do YouTube <0>aqui.","More about licenses here":"Mais sobre licenças aqui","More about the service":"Mais sobre o serviço","Mute":"Mudo","Name":"Nome","Name for the template. If the name already exists, it will be overwritten.":"Nome para o modelo. Se o nome já existir, ele será sobregravado.","Network":"Rede","Network source":"Fonte da rede","Next":"Próximo","Next: Audio":"A seguir: Áudio","Next: Video setup":"A seguir: Configuração do vídeo","No":"Não","No audio":"Sem áudio","No audio stream available":"Nenhum fluxo de áudio disponível","No live stream was detected. Please check the software that sends the stream.":"Nenhum fluxo vivo foi detectado. Por favor, verifique o software que envia o fluxo.","No source selected":"Nenhuma fonte selecionada","No suitable encoder found.":"Não foi encontrado nenhum codificador adequado.","No video":"Nenhum vídeo","No video stream available":"Nenhum fluxo de vídeo disponível","Node ID":"Identificação do nó","Noise":"Ruído","None":"Nenhum","Notes":"Notas","Number of log lines to keep.":"Número de linhas de registro a manter.","Number of logs to keep for each process.":"Número de logs a serem mantidos para cada processo.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Uma referência por linha, por exemplo http://www.example.com","Open":"Aberto","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"A passagem (cópia) só deve ser desativada se necessário. Cada codificação requer recursos adicionais de CPU/GPU.","Password":"Senha","Password for authorization.":"Senha para autorização.","Password for the device.":"Senha para o dispositivo.","Persist viewer statistics":"Estatísticas persistentes dos telespectadores","Pixel format":"Formato Pixel","Plan: <0>Starter":"Plano: <0>Iniciador","Platforms":"Plataformas","Playback":"Reprodução","Player":"Jogador","Player URL":"URL do jogador","Player settings saved":"Configurações do jogador salvas","Playersite":"Playersite","Playlist":"Lista de reprodução","Please check the <0>process log":"Por favor, verifique o <0>log de processo","Please contact the operator of the service and check what happens.":"Favor contatar o operador do serviço e verificar o que acontece.","Please select a file to upload.":"Por favor, selecione um arquivo para carregar.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Favor utilizar \"Passthrough (cópia)\", se possível. A codificação requer recursos adicionais de CPU/GPU.","Please wait. Probe stream data ...":"Por favor, aguarde. Dados do fluxo da sonda ...","Please wait. Setting up the stream ...":"Por favor, aguarde. Preparando o fluxo ...","Port":"Porto","Position":"Posição","Preset":"Predefinição","Primary stream":"Fluxo primário","Primary stream key":"Chave de fluxo primário","Probe":"Sonda","Process":"Processo","Process control":"Controle de processo","Process debug":"Processo de depuração","Process debug report":"Relatório de depuração do processo","Process details":"Detalhes do processo","Process report":"Relatório de processo","Processing & Control":"Processamento e controle","Profile":"Perfil","Protocol":"Protocolo","Protocols":"Protocolos","Public domain/s":"Domínio público/s","Publication service not found":"Serviço de publicação não encontrado","Publication website settings saved":"Configurações do site de publicação salvas","Publications":"Publicações","Pull Mode":"Modo Puxar","Pull or recieve the data:":"Puxar ou receber os dados:","Quality":"Qualidade","RGB test pattern":"Padrão de teste RGB","RTMP app for publishing.":"Aplicação RTMP para publicação.","RTMP server":"Servidor RTMP","RTMP server is not enabled":"O servidor RTMP não está habilitado","RTMP server listen address.":"Endereço de escuta do servidor RTMP.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Ficha RTMP para publicação e reprodução. O token é o valor do parâmetro de consulta de URL 'token'","RTMP/S":"RTMP/S","RTMPS server":"Servidor RTMPS","RTSP":"RTSP","Raspberry Pi camera":"Câmera Raspberry Pi","Rate control":"Controle de tarifas","Ratio":"Relação","Read input at native speed":"Ler a entrada em velocidade nativa","Receive Mode":"Modo Receber","Reconnect":"Reconecte","Reconnect delay (seconds)":"Retardo de reconexão (segundos)","Reconnecting in {0}s":["Reconexão em ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["A reconexão ao Restreamer Core falhou durante os últimos ",["RETRIES"]," segundos."],"Reconnecting to Restreamer Core failed.":"A reconexão com o Restreamer Core falhou.","Region":"Região","Reload":"Recarregar","Remove the oldest entries if the /memfs is full":"Remover as entradas mais antigas se o /memfs estiver cheio","Requires activation":"Requer ativação","Restart":"Reinicie","Restart required":"Reinício necessário","Restarting":"Reinicialização","Restarting Restreamer Core ...":"Reiniciando o Núcleo de Restreamer ...","Restarting the application failed.":"A reinicialização do pedido falhou.","Restreamer Service":"Serviço de Restreamer","Retrieving stream data ...":"Recuperando dados do fluxo ...","Retry":"Tentativa","Rule":"Regra","Sampling":"Amostragem","Save":"Salvar","Scale":"Escala","Seconds to keep files in cache.":"Segundos para manter os arquivos em cache.","Seconds until a process is restarted.":"Segundos até que um processo seja reiniciado.","Seconds until a staled process is terminated.":"Segundos até o término de um processo parado.","Seconds until the snapshot/thumbnail of the video source is updated.":"Segundos até que o instantâneo/imagem da fonte de vídeo seja atualizado.","Security":"Segurança","Security token":"Ficha de segurança","Seekbar color":"Cor da barra de busca","Segment length (seconds)":"Comprimento do segmento (segundos)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"O segmento será cortado no seguinte quadro-chave após este tempo ter passado. 2 é recomendado.","Segmentation":"Segmentação","Select a device:":"Selecione um dispositivo:","Select audio Source:":"Selecione a fonte de áudio:","Select source ...":"Selecione a fonte ...","Select video source:":"Selecione a fonte de vídeo:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Selecione se você puxa o fluxo de uma <0> fonte de rede (como uma câmera de rede) ou o <1> servidor RTMP interno (por exemplo, fluxos OBS para o Restreamer).","Select your encoding setting:":"Selecione sua configuração de codificação:","Selected":"Selecionado","Selected channel":"Canal selecionado","Selection":"Seleção","Send anonymous metrics (helps us for future development)":"Enviar métricas anônimas (nos ajuda para o desenvolvimento futuro)","Send stream to this address:":"Enviar fluxo para este endereço:","Send video to Framebuffer":"Enviar vídeo para Framebuffer","Server":"Servidor","Service":"Serviço","Service name":"Nome do serviço","Service token for monitoring.":"Ficha de serviço para monitoramento.","Sessions":"Sessões","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Define um limite de largura de banda em Mbit por segundo para a transferência de dados HLS de saída. Todos os serviços, tais como RTMP e processos de saída, são incluídos no cálculo. Se a largura de banda for excedida, os visualizadores de HLS recebem o código de status HTTP 509 (Limite de Largura de Banda Excedido). 0 é ilimitado.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Define um limite de visualização para as sessões de HLS. Se o limite for excedido, os espectadores de HLS recebem o código de status HTTP 509 (Limite de Largura de Banda Excedido). 0 é ilimitado.","Setting for connection to the service.":"Configuração para conexão com o serviço.","Settings":"Configurações","Settings (expert mode)":"Configurações (modo especialista)","Settings for /data path. The access is protected by":"Configurações para /dados de caminho. O acesso é protegido por","Settings for /memfs path.":"Configurações para /memfs caminho.","Settings saved. All changes will be applied after restarting the application.":"Configurações salvas. Todas as mudanças serão aplicadas após reiniciar a aplicação.","Shows a reference to the project.":"Mostra uma referência ao projeto.","Sign up (free)":"Cadastre-se (gratuito)","Silence":"Silêncio","Silence Audio":"Áudio do silêncio","Sine":"Sine","Sitename":"Nome do Sitename","Size":"Tamanho","Snapshot":"Snapshot","Social-login (OAuth2, 2FA)":"Login social (OAuth2, 2FA)","Socket timeout (microseconds)":"Tempo limite da tomada (microssegundos)","Software":"Software","Source":"Fonte","Speed":"Velocidade","Stale timeout (seconds)":"Tempo esgotado (segundos)","Statistics":"Estatísticas","Storage":"Armazenamento","Stores the viewer statistics to the disk.":"Armazena as estatísticas do telespectador no disco.","Stream":"Corrente","Stream URL":"URL do fluxo","Stream key":"Chave do fluxo","Stream name":"Nome do riacho","Stream names":"Nomes dos fluxos","Support datarhei Restreamer":"Suporte datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Suporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT e muito mais.","System":"Sistema","Template":"Modelo","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Modelo a ser utilizado para a criação do site de publicação. O botão apagar remove a seleção do sistema.","Terms":"Termos","Test pattern":"Padrão de teste","Test pattern (extended)":"Padrão de teste (estendido)","Text colors":"Cores do texto","The amplitude (0.0 - 1.0) of the generated audio stream":"A amplitude (0,0 - 1,0) do fluxo de áudio gerado","The application is using an older version of the settings.":"A aplicação está usando uma versão mais antiga das configurações.","The bitrate of the audio stream.":"A taxa de bits do fluxo de áudio.","The carrier frequency":"A freqüência portadora","The channel \"{0}\" could not be deleted":["O canal \"",["0"],"\" não pôde ser excluído"],"The channel \"{0}\" has been deleted":["O canal \"",["0"],"\" foi excluído"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"A eliminação deste canal não pode ser recuperada. Todas as publicações deste canal serão removidas.","The input profile is not complete. Please define a video and audio source.":"O perfil de entrada não está completo. Por favor, defina uma fonte de vídeo e áudio.","The layout of the audio stream.":"O layout do fluxo de áudio.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"O número máximo de segmentos da playlist. 0 conterá todos os segmentos. 6 é recomendado.","The noise color":"A cor do ruído","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"A pessoa que associou uma obra a esta escritura dedicou a obra ao domínio público, renunciando a todos os seus direitos à obra em todo o mundo sob a lei de direitos autorais, incluindo todos os direitos conexos e vizinhos, na medida do permitido por lei. Você pode copiar, modificar, distribuir e executar a obra, mesmo para fins comerciais, tudo sem pedir permissão.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"O nome de domínio acessível ao público do host em que este Restreamer está funcionando. Separe vários nomes de domínio por uma vírgula.","The publication service \"{0}\" could not be deleted":["O serviço de publicação \"",["0"],"\" não pôde ser excluído"],"The publication service \"{0}\" has been created":["Foi criado o serviço de publicação \"",["0"],"\""],"The publication service \"{0}\" has been deleted":["O serviço de publicação \"",["0"],"\" foi eliminado"],"The publication service has been created":"O serviço de publicação foi criado","The sample rate of the audio stream.":"A taxa de amostragem do fluxo de áudio.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["O arquivo selecionado é muito grande (",["0"]," bytes). Somente ",["1"]," bytes são permitidos."],"The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}":["O tipo de arquivo selecionado (",["0"],") é agora permitido. Os tipos de arquivo permitidos são ",["imageAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}":["O tipo de arquivo selecionado (",["0"],") é agora permitido. Os tipos de arquivo permitidos são ",["logoAcceptString"]],"The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}":["O tipo de arquivo selecionado (",["0"],") é agora permitido. Os tipos de arquivo permitidos são ",["templateAcceptString"]],"The settings for \"{0}\" have been saved":["As configurações para \"",["0"],"\" foram salvas"],"The source doesn't provide any audio streams.":"A fonte não fornece nenhum fluxo de áudio.","The source doesn't provide any audio streams. Please check the <0>probe details.":"A fonte não fornece nenhum fluxo de áudio. Por favor, verifique os detalhes da <0>probe.","The source doesn't provide any compatible audio streams.":"A fonte não fornece nenhum fluxo de áudio compatível.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"A fonte não fornece nenhuma transmissão de vídeo compatível. Por favor, verifique as <0>requisitos.","The source doesn't provide any video streams. Please check the <0>probe details.":"A fonte não fornece nenhuma transmissão de vídeo. Por favor, verifique os detalhes da <0>probe.","The source doesn't provide any video streams. Please check the device.":"A fonte não fornece nenhuma transmissão de vídeo. Por favor, verifique o dispositivo.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"A fonte de vídeo não fornece nenhum fluxo de áudio compatível. <0>Silêncio de áudio é recomendado. Serviços como, por exemplo, YouTube, Facebook & Co. requerem um canal de áudio.","The video source is compatible. Select the desired resolution:":"A fonte de vídeo é compatível. Selecione a resolução desejada:","There are updates available. Here you get more information.":"Há atualizações disponíveis. Aqui você obtém mais informações.","There war an error during upload: {0}":["Há um erro durante o upload: ",["0"]],"There was a problem storing the settings. Settings not saved.":"Havia um problema no armazenamento das configurações. As configurações não foram salvas.","There was an error connecting to Restreamer Core at {0}.":["Houve um erro de conexão com o Restreamer Core em ",["0"],"."],"There was an error during upload: {0}":["Houve um erro durante o upload: ",["0"]],"There was an error setting up the stream.":"Houve um erro ao configurar o fluxo.","There were some errors in the settings. Settings not saved.":"Houve alguns erros nas configurações. As configurações não foram salvas.","There's no login method available.":"Não há nenhum método de login disponível.","This is a dummy service that explains to you the concepts of service.":"Este é um serviço fictício que explica a você os conceitos de serviço.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Isto não é necessariamente um erro. Entretanto, pode levar um pouco mais de tempo para que o Restreamer Core reinicie.","This is to mention the copyright regulations for the target of this service.":"Isto para mencionar os regulamentos de direitos autorais para o alvo deste serviço.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Esta licença permite aos reutilizadores copiar e distribuir o material em qualquer meio ou formato apenas de forma desadaptada, e apenas enquanto a atribuição for dada ao criador. A licença permite o uso comercial.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Esta licença permite aos reutilizadores copiar e distribuir o material em qualquer meio ou formato apenas de forma não adaptada, apenas para fins não comerciais, e apenas enquanto a atribuição for dada ao criador.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato apenas para fins não comerciais, e apenas enquanto a atribuição for dada ao criador.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato apenas para fins não comerciais, e apenas enquanto a atribuição for dada ao criador. Se você remixar, adaptar ou construir sobre o material, você deve licenciar o material modificado sob termos idênticos.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato, desde que a atribuição seja dada ao criador. A licença permite o uso comercial.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato, desde que a atribuição seja dada ao criador. A licença permite o uso comercial. Se você remixar, adaptar, ou construir sobre o material, você deve licenciar o material modificado sob termos idênticos.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Esta fonte não pode ser editada enquanto estiver em uso. Para continuar, você tem que desconectar a fonte.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Esta versão da IU não suporta o binário FFmpeg disponível (",["0"],"). A interface de usuário requer ",["1"],". Por favor, use um binário FFmpeg compatível."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Esta versão da IU não suporta o Núcleo conectado (",["0"],"). A interface de usuário requer ",["1"],". Por favor, use uma versão compatível da IU."],"This version of the UI is compatible.":"Esta versão da IU é compatível.","Time until an inactive viewer connection is treated as closed.":"Tempo até que uma conexão inativa do visor seja tratada como fechada.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmitir instantâneos da fonte principal para um servidor HTTP/S. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Transmitir o canal de áudio da fonte principal para um servidor Icecast. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal como HTTP-Live-Streaming (HLS) para um servidor HTTP/S. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal como MPEG-DASH para um servidor HTTP/S. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Transmitir a fonte principal a um Serviço Brightcove Live. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Transmitir a fonte principal para um Serviço CDN77 RTMP. Mais sobre a configuração <0>aqui.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Transmitir a fonte principal a um Serviço DaCast RTMP. Mais sobre a configuração <0>aqui.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Transmitir a fonte principal para um serviço MPEG-TS. Mais detalhes sobre as configurações podem ser encontrados aqui <0>aqui.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Transmita a fonte principal para um servidor RTMP(e|s|t|te|ts). Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um servidor RTSP. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um Servidor Red5/Pro. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um servidor SRT. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um servidor UDP. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um servidor WOWZA. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Transmitir a fonte principal a um datarhei Core Ressource. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Transmitir a fonte principal a um livepotting.com Ressource. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Transmita a fonte principal para a Akamai (MSL) Media Services Live. Mais detalhes sobre as configurações do codificador MSL podem ser encontrados em <0>here.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Transmitir a fonte principal para o serviço de codificação em nuvem Bitmovin, uma ferramenta poderosa para o streaming ao vivo. Mais detalhes sobre as configurações podem ser encontrados em <0>here.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Transmitir a fonte principal para o Serviço RTMP da Restream. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Transmite seu vídeo como um fluxo RTMP com a chave necessária gerada no YouTube Studio. Você pode encontrar mais informações sobre a criação de um stream ao vivo no YouTube <0>Creator Academy.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Transmite seu fluxo de vídeo com a chave necessária, que foi gerada no Twitter Producer. Você pode encontrar mais informações sobre a configuração de um fluxo ao vivo no Twitter's <0>Produtor.","Tune":"Tune","UDP transport":"Transporte UDP","Unable to load the config.":"Incapaz de carregar a configuração.","Unique ident on the service.":"Identidade única no serviço.","Unknown":"Desconhecido","Unselected":"Não selecionado","Upload":"Upload","Uploading the file failed":"O upload do arquivo falhou","Uploading the logo failed":"O carregamento do logotipo falhou","Uptime":"Horário de funcionamento","Use Auth0 for your running Restreamer Core. More <0>details.":"Use o Auth0 para seu Restreamer Core em funcionamento. Mais <0>detalhes.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Use o assistente (<0/>) para uma configuração rápida e fácil, ou edite (<1/>) as fontes diretamente no modo personalizado.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use seus direitos autorais e escolha a licença de imagem correta. Seja gratuita para todos ou altamente restrita. Discuta brevemente o que outros estão autorizados a fazer com sua imagem.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use seus direitos autorais e escolha a licença de imagem correta. Seja gratuita para todos ou altamente restrita. Discuta brevemente o que outros estão autorizados a fazer com sua imagem.","User registration":"Registro de usuário","Username":"Nome de usuário","Username for authorization.":"Nome de usuário para autorização.","Username for the device.":"Nome de usuário para o dispositivo.","VPU ID":"ID DA VPU","Video":"Vídeo","Video device":"Dispositivo de vídeo","Video settings":"Configurações de vídeo","Video setup":"Configuração do vídeo","Video source":"Fonte do vídeo","Viewer":"Visualizador","Virtual source":"Fonte virtual","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Bem-vindo à Restreamer v2, a solução para a publicação rápida e fácil de vídeos. Grátis para uso privado e comercial. Mais ajuda no <0>docs.","Write protection":"Proteção de escrita","YUV test pattern":"Padrão de teste YUV","Yes":"Sim","You can't abort the wizard because at least one input must be defined.":"Você não pode abortar o assistente porque pelo menos uma entrada deve ser definida.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Você mudou a configuração. Para que as mudanças tenham efeito, você tem que reiniciar a aplicação. Você quer reiniciar agora?","You have to reconnect manually":"Você tem que reconectar manualmente","You have unsaved changes. Please save them before you can control the service again.":"Você tem mudanças não salvas. Por favor, salve-as antes de poder controlar o serviço novamente.","Your stream needs to be encoded, but there's no suitable encoder available.":"Seu fluxo precisa ser codificado, mas não há um codificador adequado disponível.","Your stream needs to be encoded. Choose the desired encoder:":"Seu fluxo precisa ser codificado. Escolha o codificador desejado:","blue":"azul","brown":"marrom","iframe code":"código iframe","kbit/s":"kbit/s","pink":"rosa","velvet":"veludo","violet":"violeta","white":"branco"}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{"<0>Compatibility list":"<0>Lista de compatibilidade","<0>Show probe details":"<0>Mostrar detalhes da sonda","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Ponto final API não encontrado. Configurações não salvas.","AVFoundation":"AVFoundation","Abort":"Abortar","About":"Sobre","Add":"Adicione","Add Publication":"Adicionar Publicação","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Adicione widgets e estilos externos ao site de publicação. Você pode encontrar alguns exemplos na página de ajuda.","Add new channel":"Adicionar novo canal","Add: {0}":["Adicionar: ",["0"]],"Address":"Endereço","Address for the background image.":"Endereço para a imagem de fundo.","Address to listen on for HTTP requests.":"Endereço para ouvir os pedidos HTTP.","Address to listen on for HTTPS requests.":"Endereço para ouvir os pedidos de HTTPS.","Adjust publication site colors and background as you like.":"Ajuste as cores e o fundo do site de publicação como você quiser.","Advanced monitoring":"Monitoramento avançado","Advanced settings":"Configurações avançadas","Advanced setup":"Configuração avançada","Alerting by email":"Alerta por e-mail","All":"Todos","All important system settings.":"Todas as configurações importantes do sistema.","Allow all referrer":"Permitir a todos os encaminhadores","Allow counting how many viewers the stream has.":"Permitir contar quantos espectadores o fluxo tem.","Amplitude":"Amplitude","An environment variable sets this value.":"Uma variável de ambiente define este valor.","App":"App","Application":"Aplicação","Are you sure you want to abort the wizard?":"Você tem certeza de que quer abortar o feiticeiro?","Audio":"Áudio","Audio Device":"Dispositivo de áudio","Audio device":"Dispositivo de áudio","Audio from device":"Áudio do dispositivo","Audio settings":"Configurações de áudio","Audio setup":"Configuração de áudio","Auth0":"Auth0","Auth0 Tenant":"Auth0 Inquilino","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 não está atualmente disponível porque esta interface é carregada a partir de uma origem insegura.","Author":"Autor","Authorization":"Autorização","Automatic cleanup of all media data":"Limpeza automática de todos os dados da mídia","Autoplay":"Autoplay","Available":"Disponível em","Back":"Voltar","Background colors":"Cores de fundo","Background image":"Imagem de fundo","Backup URL":"URL de backup","Backup server":"Servidor de backup","Backup stream":"Fluxo de backup","Backup stream key":"Chave de fluxo de backup","Bandwidth":"Largura de banda","Bandwidth control":"Controle de largura de banda","Banner":"Banner","Basic":"Básico","Beep factor":"Fator Beep","Bitrate":"Taxa de bits","Briefly describe what the audience will see during the live stream.":"Descrever brevemente o que o público verá durante a transmissão ao vivo.","Button color":"Cor do botão","Cache for files on /data.":"Cache para arquivos em /dados.","Cache time (Seconds)":"Tempo de cache (Segundos)","Cache types":"Tipos de cachês","Capture clicks":"Cliques de captura","Capture cursor":"Captura do cursor","Channel \"{0}\" saved":["Canal \"",["0"],"\" salvo"],"Channels":"Canais","Check for updates":"Verificar por atualizações","Check the requirements":"Verifique os requisitos","Choose a video stream":"Escolha um fluxo de vídeo","Choose an audio stream":"Escolha um fluxo de áudio","Choose an input device ...":"Escolha um dispositivo de entrada ...","Choose codec ...":"Escolha o codec ...","Choose tenant ...":"Escolher inquilino ...","Chunk":"Pedaço","Close":"Fechar","Code injection":"Injeção de código","Codec":"Codec","Color":"Cor","Config":"Config","Confirm password":"Confirmar senha","Connect":"Conecte","Connected device":"Dispositivo conectado","Connected since <0/>":"Conectado desde <0/>","Connecting ...":"Conectando ...","Connecting to Restreamer Core ...":"Conectando-se ao Restreamer Core ...","Connecting to Restreamer Core failed probably because of mixed content.":"A conexão com o Restreamer Core falhou provavelmente por causa do conteúdo misto.","Content":"Conteúdo","Content URL":"Content URL","Cores":"Núcleos","Create user":"Criar usuário","Creative Commons":"Creative Commons","Custom ...":"Personalizado ...","Custom JSON config for datarhei Core.":"Configuração JSON personalizada para datarhei Core.","Custom audio device":"Dispositivo de áudio personalizado","Custom audio index":"Índice de áudio personalizado","Custom bitrate (kbit/s)":"Taxa de bits personalizada (kbit/s)","Custom code injection":"Injeção de código personalizado","Custom delay":"Atraso personalizado","Custom device":"Dispositivo personalizado","Custom format":"Formato personalizado","Custom framerate":"Framerate personalizado","Custom keyframe interval":"Intervalo de chaveiro personalizado","Custom layout":"Layout personalizado","Custom sampling (Hz)":"Amostragem personalizada (Hz)","Custom scale":"Escala personalizada","Custom size":"Tamanho personalizado","Custom video device":"Dispositivo de vídeo personalizado","Custom video index":"Índice de vídeo personalizado","Data copied to clipboard":"Dados copiados para a prancheta","Death color":"Cor da morte","Decoder":"Decodificador","Default":"Predefinição","Delay":"Atraso","Delay (ms)":"Atraso (ms)","Delete":"Excluir","Deleting a publication service cannot be reversed. The publication stops immediately.":"A eliminação de um serviço de publicação não pode ser revertida. A publicação pára imediatamente.","Delivering mode":"Modo de entrega","Description":"Descrição","Design":"Projeto","Device":"Dispositivo","Disconnect":"Desconectar","Disconnect & Continue":"Desconectar e continuar","Disconnecting ...":"Desconectando ...","Disk":"Disco","Disk cache":"Cache de disco","Disk storage":"Armazenamento em disco","Do you really want to restart the application now?":"Você realmente quer reiniciar a aplicação agora?","Do you want to delete \"{0}\"?":["Você quer excluir \"",["0"],"\"?"],"Do you want to delete {title}?":["Você quer apagar ",["título"],"?"],"Do you want to disconnect \"{0}\"?":["Você quer desconectar \"",["0"],"\"?"],"Docs":"Docs","Documentation":"Documentação","Dup. frames":"Molduras Dup","EDIT: Player":"EDIT: Jogador","EDIT: Publication Website":"EDIT: Site de publicação","Edit":"Editar","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Edite as fontes de áudio e vídeo para a transmissão ao vivo. Adicione uma descrição e defina sua licença de conteúdo desejada.","Edit: {title}":["Edição: ",["título"]],"Embed":"Embutir","Enable RTMP server ...":"Habilitar servidor RTMP ...","Enable a periodic beep every second with this value times the carrier frequency":"Habilitar um bip periódico a cada segundo com este valor vezes a freqüência portadora","Enable backup stream":"Habilitar o fluxo de backup","Enable nerd statistics":"Habilitar estatísticas de nerds","Enable primary stream":"Habilitar o fluxo primário","Enable snapshots":"Habilitar instantâneos","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Aconselha-se vivamente a autorização. Caso contrário, qualquer pessoa pode ter acesso a esta instância.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Aconselha-se vivamente que se habilite a auth básica. Caso contrário, qualquer pessoa poderia escrever dados para /memfs.","Encoder":"Codificador","Encoding":"Codificação","Encryption":"Criptografia","Enter a name for the new channel.":"Digite um nome para o novo canal.","Enter password":"Digite a senha","Enter the address of your network source:":"Digite o endereço de sua fonte de rede:","Enter username":"Digite o nome de usuário","Entropy coder":"Codificador de entropia","Error":"Erro","Error while copying data to clipboard":"Erro ao copiar dados para a prancheta","Error: {0}":["Erro: ",["0"]],"Expands the area above the channel list (live chat).":"Expande a área acima da lista de canais (bate-papo ao vivo).","Expands the area under the channel description (comment boxes).":"Expande a área sob a descrição do canal (caixas de comentários).","Expert mode":"Modo especialista","Extend channel list":"Ampliar a lista de canais","Extend content":"Ampliar o conteúdo","Extend footer":"Ampliar o rodapé","Extend header":"Ampliar cabeçalho","FFmpeg":"FFmpeg","FPS":"FPS","Failed to create publication service ({0})":["Falha na criação do serviço de publicação (",["0"],")"],"Failed to create publication website files.":"Falha na criação dos arquivos do site de publicação.","Failed to probe the source. Please check the <0>probe details.":"Falha na sondagem da fonte. Por favor, verifique os <0> detalhes da sonda.","Failed to refresh token: {0}":["Falha em atualizar a ficha: ",["0"]],"Failed to save ingest metadata":"Falha em salvar metadados ingeridos","Failed to stop process":"Falha em interromper o processo","Failed to store player size setting.":"Falha no ajuste do tamanho do jogador.","Failed to store publication service ({0})":["Falha no serviço de publicação de lojas (",["0"],")"],"Failed to update ingest process ({0})":["Falha em atualizar o processo de ingestão (",["0"],")"],"Failed to update the player":"Falha na atualização do jogador","Failed to verify the source. Please check the address.":"Falha na verificação da fonte. Por favor, verifique o endereço.","Finish":"Terminar","Flags":"Bandeiras","For Javascripts.":"Para Javascripts.","For Stylesheets.":"Para Fichas de Estilo.","Force input framerate":"Forçar o frame de entrada","Format":"Formato","Frame drops":"Gotas de moldura","Framebuffer":"Framebuffer","Framerate":"Framerate","Frequency (Hz)":"Freqüência (Hz)","GET":"GET","General":"Geral","Google Analytics ID":"Google Analytics ID","Google Analytics Tracker Name":"Nome do Google Analytics Tracker","HLS":"HLS","HLS statistic for the In-memory storage":"Estatísticas HLS para o armazenamento In-memory","HTTP and HTTPS":"HTTP e HTTPS","HTTP port":"Porta HTTP","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"Porto HTTPS","Hardware device":"Dispositivo de ferragens","Header":"Cabeçalho","Headline":"Manchete","Hosted Restreamer interface":"Interface Restreamer hospedado","Human readable name on the service.":"Nome legível pelo ser humano no serviço.","IP address":"Endereço IP","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Se você mudou os portos, pode ser que o Restreamer Core já tenha reiniciado, mas agora ele está disponível em um porto diferente.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Se você ativou Let's Encrypt TLS, pode levar algum tempo para adquirir os certificados. Certifique-se de que o Restreamer Core esteja acessível via porta 80 a partir da Internet. Por favor, verifique o log do console do Restreamer Core.","Ignore IP ranges":"Ignorar as faixas de IP","Image URL":"URL da imagem","Imprint":"Impresso","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"Além do jogador, o Restreamer oferece uma página de desembarque completa, que você pode usar para apresentar seu stream ao vivo com facilidade e rapidez.","In-memory":"In-memory","In-memory storage":"Armazenamento em memória","Incompatible":"Incompatível","Inherit":"Inerte","Inject 1":"Injetar 1","Inject 2":"Injetar 2","Inject 3":"Injetar 3","Inject 4":"Injetar 4","Internal HLS server":"Servidor interno HLS","Internal RTMP server":"Servidor RTMP interno","Interval (seconds)":"Intervalo (segundos)","Issue alert":"Alerta de emissão","Keyframe interval (seconds)":"Intervalo do quadro-chave (segundos)","Layout":"Layout","Let's Encrypt certification":"Vamos encriptar a certificação","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Vamos Encriptar requer um ou mais nomes de domínio público e uma porta 80/TCP acessível.","Level":"Nível","Level of system protocol.":"Nível de protocolo do sistema.","License":"Licença","Life color":"Cor da vida","Linecolor":"Linecolor","Link":"Link","Link, mouseover":"Link, mouseover","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Lista de faixas de IP na notação CIDR, por exemplo, 127.0.0.0.1/32, que as estatísticas não registrarão uma faixa IP por linha. Deixe em branco para registrar todas as sessões.","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Lista de extensões de arquivo para cache (por exemplo, \".html\"), uma por linha. Deixar vazio para o cache de todos os tipos de arquivo.","List size (segments)":"Tamanho da lista (segmentos)","Live-Streaming to Facebook Live RTMP service":"Live-Streaming para o serviço RTMP ao vivo no Facebook","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Live-Streaming para Instagram Live RTMP Service. A chave de fluxo requer um serviço como <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Live-Streaming para Twitch Live RTMP Service.","Live-Streaming to Vimeo Live RTMP Service":"Live-Streaming para Vimeo Live RTMP Service","Livesource ID":"Identificação de fonte de vida","Log level":"Nível de log","Logging":"Logging","Login":"Login","Login failed: Couldn't load API details":"O login falhou: Não foi possível carregar detalhes API","Login failed: {0}":["O login falhou: ",["0"]],"Login/JWT authorization":"Login/JWT autorização","Logo":"Logotipo","Logout":"Logout","MB":"MB","Main Source":"Fonte principal","Main channel":"Canal principal","Main channel not found":"Canal principal não encontrado","Main channel saved":"Canal principal salvo","Main page channel (index.html).":"Canal da página principal (index.html).","Maintainer:":"Mantenedor:","Maximum allowed cache size, 0 for unlimited.":"Tamanho máximo de cache permitido, 0 para ilimitado.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Máximo permitido de megabytes de RAM para /memfs, 0 para ilimitado.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Consumo máximo permitido de megabytes a partir do disco rígido. 0 por ilimitado.","Maximum bandwidth Mbit/s":"Largura de banda máxima Mbit/s","Maximum delay in milliseconds.":"Atraso máximo em milissegundos.","Maximum file size (Megabytes)":"Tamanho máximo do arquivo (Megabytes)","Maximum file size to put in cache.":"Tamanho máximo de arquivo para colocar em cache.","Maximum log histroy":"Histórico log máximo","Maximum log lines":"Máximo de linhas de toras","Maximum size (Megabytes)":"Tamanho máximo (Megabytes)","Maximum viewer idle time (Seconds)":"Tempo máximo de ociosidade do espectador (segundos)","Maximum viewers":"Máximo de espectadores","Memory":"Memória","Meta information":"Meta informação","Metadata":"Metadados","Mold":"Molde","More about Twitter's copyright <0>here.":"Mais sobre os direitos autorais do Twitter <0>aqui.","More about YouTube's copyright <0>here.":"Mais sobre os direitos autorais do YouTube <0>aqui.","More about licenses here":"Mais sobre licenças aqui","More about the service":"Mais sobre o serviço","Mute":"Mudo","Name":"Nome","Name for the template. If the name already exists, it will be overwritten.":"Nome para o modelo. Se o nome já existir, ele será sobregravado.","Network":"Rede","Network source":"Fonte da rede","Next":"Próximo","Next: Audio":"A seguir: Áudio","Next: Video setup":"A seguir: Configuração do vídeo","No":"Não","No audio":"Sem áudio","No audio stream available":"Nenhum fluxo de áudio disponível","No input device available":"Nenhum dispositivo de entrada disponível","No live stream was detected. Please check the software that sends the stream.":"Nenhum fluxo vivo foi detectado. Por favor, verifique o software que envia o fluxo.","No source selected":"Nenhuma fonte selecionada","No sources available":"Não há fontes disponíveis","No suitable encoder found.":"Não foi encontrado nenhum codificador adequado.","No video":"Nenhum vídeo","No video stream available":"Nenhum fluxo de vídeo disponível","Node ID":"Identificação do nó","Noise":"Ruído","None":"Nenhum","Notes":"Notas","Number of log lines to keep.":"Número de linhas de registro a manter.","Number of logs to keep for each process.":"Número de logs a serem mantidos para cada processo.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Uma referência por linha, por exemplo http://www.example.com","Open":"Aberto","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"A passagem (cópia) só deve ser desativada se necessário. Cada codificação requer recursos adicionais de CPU/GPU.","Password":"Senha","Password for authorization.":"Senha para autorização.","Password for the device.":"Senha para o dispositivo.","Persist viewer statistics":"Estatísticas persistentes dos telespectadores","Pixel format":"Formato Pixel","Plan: <0>Starter":"Plano: <0>Iniciador","Platforms":"Plataformas","Playback":"Reprodução","Player":"Jogador","Player URL":"URL do jogador","Player settings saved":"Configurações do jogador salvas","Playersite":"Playersite","Playlist":"Lista de reprodução","Please check the <0>process log":"Por favor, verifique o <0>log de processo","Please contact the operator of the service and check what happens.":"Favor contatar o operador do serviço e verificar o que acontece.","Please select a file to upload.":"Por favor, selecione um arquivo para carregar.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Favor utilizar \"Passthrough (cópia)\", se possível. A codificação requer recursos adicionais de CPU/GPU.","Please wait. Probe stream data ...":"Por favor, aguarde. Dados do fluxo da sonda ...","Please wait. Setting up the stream ...":"Por favor, aguarde. Preparando o fluxo ...","Port":"Porto","Position":"Posição","Preset":"Predefinição","Primary stream":"Fluxo primário","Primary stream key":"Chave de fluxo primário","Probe":"Sonda","Process":"Processo","Process control":"Controle de processo","Process debug":"Processo de depuração","Process debug report":"Relatório de depuração do processo","Process details":"Detalhes do processo","Process report":"Relatório de processo","Processing & Control":"Processamento e controle","Profile":"Perfil","Protocol":"Protocolo","Protocols":"Protocolos","Public domain/s":"Domínio público/s","Publication service not found":"Serviço de publicação não encontrado","Publication website settings saved":"Configurações do site de publicação salvas","Publications":"Publicações","Pull Mode":"Modo Puxar","Pull or recieve the data:":"Puxar ou receber os dados:","Quality":"Qualidade","RGB test pattern":"Padrão de teste RGB","RTMP app for publishing.":"Aplicação RTMP para publicação.","RTMP server":"Servidor RTMP","RTMP server is not enabled":"O servidor RTMP não está habilitado","RTMP server listen address.":"Endereço de escuta do servidor RTMP.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Ficha RTMP para publicação e reprodução. O token é o valor do parâmetro de consulta de URL 'token'","RTMP/S":"RTMP/S","RTMPS server":"Servidor RTMPS","RTSP":"RTSP","Raspberry Pi camera":"Câmera Raspberry Pi","Rate control":"Controle de tarifas","Ratio":"Relação","Read input at native speed":"Ler a entrada em velocidade nativa","Receive Mode":"Modo Receber","Reconnect":"Reconecte","Reconnect delay (seconds)":"Retardo de reconexão (segundos)","Reconnecting in {0}s":["Reconexão em ",["0"],"s"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["A reconexão ao Restreamer Core falhou durante os últimos ",["RETRIES"]," segundos."],"Reconnecting to Restreamer Core failed.":"A reconexão com o Restreamer Core falhou.","Refresh":"Atualização","Region":"Região","Reload":"Recarregar","Remove the oldest entries if the /memfs is full":"Remover as entradas mais antigas se o /memfs estiver cheio","Requires activation":"Requer ativação","Restart":"Reinicie","Restart required":"Reinício necessário","Restarting":"Reinicialização","Restarting Restreamer Core ...":"Reiniciando o Núcleo de Restreamer ...","Restarting the application failed.":"A reinicialização do pedido falhou.","Restreamer Service":"Serviço de Restreamer","Retrieving stream data ...":"Recuperando dados do fluxo ...","Retry":"Tentativa","Rule":"Regra","Sampling":"Amostragem","Save":"Salvar","Scale":"Escala","Seconds to keep files in cache.":"Segundos para manter os arquivos em cache.","Seconds until a process is restarted.":"Segundos até que um processo seja reiniciado.","Seconds until a staled process is terminated.":"Segundos até o término de um processo parado.","Seconds until the snapshot/thumbnail of the video source is updated.":"Segundos até que o instantâneo/imagem da fonte de vídeo seja atualizado.","Security":"Segurança","Security token":"Ficha de segurança","Seekbar color":"Cor da barra de busca","Segment length (seconds)":"Comprimento do segmento (segundos)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"O segmento será cortado no seguinte quadro-chave após este tempo ter passado. 2 é recomendado.","Segmentation":"Segmentação","Select a device:":"Selecione um dispositivo:","Select audio source:":"Selecione a fonte de áudio:","Select source ...":"Selecione a fonte ...","Select video source:":"Selecione a fonte de vídeo:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Selecione se você puxa o fluxo de uma <0> fonte de rede (como uma câmera de rede) ou o <1> servidor RTMP interno (por exemplo, fluxos OBS para o Restreamer).","Select your encoding setting:":"Selecione sua configuração de codificação:","Selected":"Selecionado","Selected channel":"Canal selecionado","Selection":"Seleção","Send anonymous metrics (helps us for future development)":"Enviar métricas anônimas (nos ajuda para o desenvolvimento futuro)","Send stream to this address:":"Enviar fluxo para este endereço:","Send video to Framebuffer":"Enviar vídeo para Framebuffer","Server":"Servidor","Service":"Serviço","Service name":"Nome do serviço","Service token for monitoring.":"Ficha de serviço para monitoramento.","Sessions":"Sessões","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Define um limite de largura de banda em Mbit por segundo para a transferência de dados HLS de saída. Todos os serviços, tais como RTMP e processos de saída, são incluídos no cálculo. Se a largura de banda for excedida, os visualizadores de HLS recebem o código de status HTTP 509 (Limite de Largura de Banda Excedido). 0 é ilimitado.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Define um limite de visualização para as sessões de HLS. Se o limite for excedido, os espectadores de HLS recebem o código de status HTTP 509 (Limite de Largura de Banda Excedido). 0 é ilimitado.","Setting for connection to the service.":"Configuração para conexão com o serviço.","Settings":"Configurações","Settings (expert mode)":"Configurações (modo especialista)","Settings for /data path. The access is protected by":"Configurações para /dados de caminho. O acesso é protegido por","Settings for /memfs path.":"Configurações para /memfs caminho.","Settings saved. All changes will be applied after restarting the application.":"Configurações salvas. Todas as mudanças serão aplicadas após reiniciar a aplicação.","Share button":"Botão compartilhar","Shows a reference to the project.":"Mostra uma referência ao projeto.","Sign up (free)":"Cadastre-se (gratuito)","Silence":"Silêncio","Silence Audio":"Áudio do silêncio","Sine":"Sine","Sitename":"Nome do Sitename","Size":"Tamanho","Snapshot":"Snapshot","Social-login (OAuth2, 2FA)":"Login social (OAuth2, 2FA)","Socket timeout (microseconds)":"Tempo limite da tomada (microssegundos)","Software":"Software","Source":"Fonte","Speed":"Velocidade","Stale timeout (seconds)":"Tempo esgotado (segundos)","Statistics":"Estatísticas","Storage":"Armazenamento","Stores the viewer statistics to the disk.":"Armazena as estatísticas do telespectador no disco.","Stream":"Corrente","Stream URL":"URL do fluxo","Stream key":"Chave do fluxo","Stream name":"Nome do riacho","Stream names":"Nomes dos fluxos","Support datarhei Restreamer":"Suporte datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Suporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT e muito mais.","System":"Sistema","Template":"Modelo","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Modelo a ser utilizado para a criação do site de publicação. O botão apagar remove a seleção do sistema.","Terms":"Termos","Test pattern":"Padrão de teste","Test pattern (extended)":"Padrão de teste (estendido)","Text colors":"Cores do texto","The amplitude (0.0 - 1.0) of the generated audio stream":"A amplitude (0,0 - 1,0) do fluxo de áudio gerado","The application is using an older version of the settings.":"A aplicação está usando uma versão mais antiga das configurações.","The bitrate of the audio stream.":"A taxa de bits do fluxo de áudio.","The carrier frequency":"A freqüência portadora","The channel \"{0}\" could not be deleted":["O canal \"",["0"],"\" não pôde ser excluído"],"The channel \"{0}\" has been deleted":["O canal \"",["0"],"\" foi excluído"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"A eliminação deste canal não pode ser recuperada. Todas as publicações deste canal serão removidas.","The input profile is not complete. Please define a video and audio source.":"O perfil de entrada não está completo. Por favor, defina uma fonte de vídeo e áudio.","The layout of the audio stream.":"O layout do fluxo de áudio.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"O número máximo de segmentos da playlist. 0 conterá todos os segmentos. 6 é recomendado.","The noise color":"A cor do ruído","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"A pessoa que associou uma obra a esta escritura dedicou a obra ao domínio público, renunciando a todos os seus direitos à obra em todo o mundo sob a lei de direitos autorais, incluindo todos os direitos conexos e vizinhos, na medida do permitido por lei. Você pode copiar, modificar, distribuir e executar a obra, mesmo para fins comerciais, tudo sem pedir permissão.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"O nome de domínio acessível ao público do host em que este Restreamer está funcionando. Separe vários nomes de domínio por uma vírgula.","The publication service \"{0}\" could not be deleted":["O serviço de publicação \"",["0"],"\" não pôde ser excluído"],"The publication service \"{0}\" has been created":["Foi criado o serviço de publicação \"",["0"],"\""],"The publication service \"{0}\" has been deleted":["O serviço de publicação \"",["0"],"\" foi eliminado"],"The publication service has been created":"O serviço de publicação foi criado","The sample rate of the audio stream.":"A taxa de amostragem do fluxo de áudio.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["O arquivo selecionado é muito grande (",["0"]," bytes). Somente ",["1"]," bytes são permitidos."],"The selected file type ({0}) is not allowed. Allowed file types are {types}":["O tipo de arquivo selecionado (",["0"],") não é permitido. Os tipos de arquivo permitidos são ",["types"],"."],"The settings for \"{0}\" have been saved":["As configurações para \"",["0"],"\" foram salvas"],"The source doesn't provide any audio streams.":"A fonte não fornece nenhum fluxo de áudio.","The source doesn't provide any audio streams. Please check the <0>probe details.":"A fonte não fornece nenhum fluxo de áudio. Por favor, verifique os detalhes da <0>probe.","The source doesn't provide any compatible audio streams.":"A fonte não fornece nenhum fluxo de áudio compatível.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"A fonte não fornece nenhuma transmissão de vídeo compatível. Por favor, verifique as <0>requisitos.","The source doesn't provide any video streams. Please check the <0>probe details.":"A fonte não fornece nenhuma transmissão de vídeo. Por favor, verifique os detalhes da <0>probe.","The source doesn't provide any video streams. Please check the device.":"A fonte não fornece nenhuma transmissão de vídeo. Por favor, verifique o dispositivo.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"A fonte de vídeo não fornece nenhum fluxo de áudio compatível. <0>Silêncio de áudio é recomendado. Serviços como, por exemplo, YouTube, Facebook & Co. requerem um canal de áudio.","The video source is compatible. Select the desired resolution:":"A fonte de vídeo é compatível. Selecione a resolução desejada:","There are updates available. Here you get more information.":"Há atualizações disponíveis. Aqui você obtém mais informações.","There was a problem storing the settings. Settings not saved.":"Havia um problema no armazenamento das configurações. As configurações não foram salvas.","There was an error connecting to Restreamer Core at {0}.":["Houve um erro de conexão com o Restreamer Core em ",["0"],"."],"There was an error during upload: {0}":["Houve um erro durante o upload: ",["0"]],"There was an error setting up the stream.":"Houve um erro ao configurar o fluxo.","There were some errors in the settings. Settings not saved.":"Houve alguns erros nas configurações. As configurações não foram salvas.","There's no login method available.":"Não há nenhum método de login disponível.","This is a dummy service that explains to you the concepts of service.":"Este é um serviço fictício que explica a você os conceitos de serviço.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Isto não é necessariamente um erro. Entretanto, pode levar um pouco mais de tempo para que o Restreamer Core reinicie.","This is to mention the copyright regulations for the target of this service.":"Isto para mencionar os regulamentos de direitos autorais para o alvo deste serviço.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Esta licença permite aos reutilizadores copiar e distribuir o material em qualquer meio ou formato apenas de forma desadaptada, e apenas enquanto a atribuição for dada ao criador. A licença permite o uso comercial.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Esta licença permite aos reutilizadores copiar e distribuir o material em qualquer meio ou formato apenas de forma não adaptada, apenas para fins não comerciais, e apenas enquanto a atribuição for dada ao criador.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato apenas para fins não comerciais, e apenas enquanto a atribuição for dada ao criador.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato apenas para fins não comerciais, e apenas enquanto a atribuição for dada ao criador. Se você remixar, adaptar ou construir sobre o material, você deve licenciar o material modificado sob termos idênticos.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato, desde que a atribuição seja dada ao criador. A licença permite o uso comercial.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato, desde que a atribuição seja dada ao criador. A licença permite o uso comercial. Se você remixar, adaptar, ou construir sobre o material, você deve licenciar o material modificado sob termos idênticos.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Esta fonte não pode ser editada enquanto estiver em uso. Para continuar, você tem que desconectar a fonte.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Esta versão da IU não suporta o binário FFmpeg disponível (",["0"],"). A interface de usuário requer ",["1"],". Por favor, use um binário FFmpeg compatível."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Esta versão da IU não suporta o Núcleo conectado (",["0"],"). A interface de usuário requer ",["1"],". Por favor, use uma versão compatível da IU."],"This version of the UI is compatible.":"Esta versão da IU é compatível.","Time until an inactive viewer connection is treated as closed.":"Tempo até que uma conexão inativa do visor seja tratada como fechada.","Token":"Token","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmitir instantâneos da fonte principal para um servidor HTTP/S. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Transmitir o canal de áudio da fonte principal para um servidor Icecast. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal como HTTP-Live-Streaming (HLS) para um servidor HTTP/S. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal como MPEG-DASH para um servidor HTTP/S. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Transmitir a fonte principal a um Serviço Brightcove Live. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Transmitir a fonte principal para um Serviço CDN77 RTMP. Mais sobre a configuração <0>aqui.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Transmitir a fonte principal a um Serviço DaCast RTMP. Mais sobre a configuração <0>aqui.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Transmitir a fonte principal para um serviço MPEG-TS. Mais detalhes sobre as configurações podem ser encontrados aqui <0>aqui.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Transmita a fonte principal para um servidor RTMP(e|s|t|te|ts). Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um servidor RTSP. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um Servidor Red5/Pro. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um servidor SRT. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um servidor UDP. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Transmitir a fonte principal para um servidor WOWZA. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Transmitir a fonte principal a um datarhei Core Ressource. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Transmitir a fonte principal a um livepotting.com Ressource. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Transmita a fonte principal para a Akamai (MSL) Media Services Live. Mais detalhes sobre as configurações do codificador MSL podem ser encontrados em <0>here.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Transmitir a fonte principal para o serviço de codificação em nuvem Bitmovin, uma ferramenta poderosa para o streaming ao vivo. Mais detalhes sobre as configurações podem ser encontrados em <0>here.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Transmitir a fonte principal para o Serviço RTMP da Restream. Mais detalhes sobre as configurações podem ser encontrados <0>aqui.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Transmite seu vídeo como um fluxo RTMP com a chave necessária gerada no YouTube Studio. Você pode encontrar mais informações sobre a criação de um stream ao vivo no YouTube <0>Creator Academy.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Transmite seu fluxo de vídeo com a chave necessária, que foi gerada no Twitter Producer. Você pode encontrar mais informações sobre a configuração de um fluxo ao vivo no Twitter's <0>Produtor.","Tune":"Tune","UDP transport":"Transporte UDP","Unable to load the config.":"Incapaz de carregar a configuração.","Unique ident on the service.":"Identidade única no serviço.","Unknown":"Desconhecido","Unselected":"Não selecionado","Upload":"Upload","Uploading the file failed":"O upload do arquivo falhou","Uploading the logo failed":"O carregamento do logotipo falhou","Uptime":"Horário de funcionamento","Use Auth0 for your running Restreamer Core. More <0>details.":"Use o Auth0 para seu Restreamer Core em funcionamento. Mais <0>detalhes.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Use o assistente (<0/>) para uma configuração rápida e fácil, ou edite (<1/>) as fontes diretamente no modo personalizado.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use seus direitos autorais e escolha a licença de imagem correta. Seja gratuita para todos ou altamente restrita. Discuta brevemente o que outros estão autorizados a fazer com sua imagem.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Use seus direitos autorais e escolha a licença de imagem correta. Seja gratuita para todos ou altamente restrita. Discuta brevemente o que outros estão autorizados a fazer com sua imagem.","User registration":"Registro de usuário","Username":"Nome de usuário","Username for authorization.":"Nome de usuário para autorização.","Username for the device.":"Nome de usuário para o dispositivo.","VPU ID":"ID DA VPU","Video":"Vídeo","Video device":"Dispositivo de vídeo","Video settings":"Configurações de vídeo","Video setup":"Configuração do vídeo","Video source":"Fonte do vídeo","Viewer":"Visualizador","Virtual source":"Fonte virtual","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Bem-vindo à Restreamer v2, a solução para a publicação rápida e fácil de vídeos. Grátis para uso privado e comercial. Mais ajuda no <0>docs.","Write protection":"Proteção de escrita","YUV test pattern":"Padrão de teste YUV","Yes":"Sim","You can't abort the wizard because at least one input must be defined.":"Você não pode abortar o assistente porque pelo menos uma entrada deve ser definida.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Você mudou a configuração. Para que as mudanças tenham efeito, você tem que reiniciar a aplicação. Você quer reiniciar agora?","You have to reconnect manually":"Você tem que reconectar manualmente","You have unsaved changes. Please save them before you can control the service again.":"Você tem mudanças não salvas. Por favor, salve-as antes de poder controlar o serviço novamente.","Your stream needs to be encoded, but there's no suitable encoder available.":"Seu fluxo precisa ser codificado, mas não há um codificador adequado disponível.","Your stream needs to be encoded. Choose the desired encoder:":"Seu fluxo precisa ser codificado. Escolha o codificador desejado:","blue":"azul","brown":"marrom","iframe code":"código iframe","kbit/s":"kbit/s","pink":"rosa","velvet":"veludo","violet":"violeta","white":"branco"}}; \ No newline at end of file diff --git a/src/locales/pt/messages.po b/src/locales/pt/messages.po index 4ffebc6..6dbae98 100644 --- a/src/locales/pt/messages.po +++ b/src/locales/pt/messages.po @@ -13,12 +13,16 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/views/Edit/Profile.js:372 -#: src/views/Edit/Profile.js:501 +#: src/misc/EncodingSelect.js:224 +msgid "<0>Compatibility list" +msgstr "<0>Lista de compatibilidade" + +#: src/views/Edit/Profile.js:380 +#: src/views/Edit/Profile.js:510 msgid "<0>Show probe details" msgstr "<0>Mostrar detalhes da sonda" -#: src/views/Edit/Sources/ALSA.js:150 +#: src/views/Edit/Sources/ALSA.js:156 msgid "ALSA" msgstr "ALSA" @@ -26,26 +30,26 @@ msgstr "ALSA" msgid "API endpoint not found. Settings not saved." msgstr "Ponto final API não encontrado. Configurações não salvas." -#: src/views/Edit/Sources/AVFoundation.js:211 +#: src/views/Edit/Sources/AVFoundation.js:221 msgid "AVFoundation" msgstr "AVFoundation" #: src/misc/ChannelList.js:356 -#: src/views/Edit/Profile.js:402 -#: src/views/Edit/Wizard/index.js:1136 -#: src/views/Edit/index.js:547 -#: src/views/Edit/index.js:573 -#: src/views/Edit/index.js:592 +#: src/views/Edit/Profile.js:410 +#: src/views/Edit/Wizard/index.js:1153 +#: src/views/Edit/index.js:549 +#: src/views/Edit/index.js:575 +#: src/views/Edit/index.js:594 #: src/views/Publication/Add.js:362 #: src/views/Publication/Edit.js:601 -#: src/views/Settings.js:1967 -#: src/views/Settings.js:2026 -#: src/views/Settings.js:2048 +#: src/views/Settings.js:1972 +#: src/views/Settings.js:2031 +#: src/views/Settings.js:2053 msgid "Abort" msgstr "Abortar" -#: src/Header.js:286 -#: src/Header.js:327 +#: src/Header.js:283 +#: src/Header.js:324 msgid "About" msgstr "Sobre" @@ -57,7 +61,7 @@ msgstr "Adicione" msgid "Add Publication" msgstr "Adicionar Publicação" -#: src/views/Playersite.js:679 +#: src/views/Playersite.js:692 msgid "Add external widgets and styles to the publication site. You can find some examples on the help page." msgstr "Adicione widgets e estilos externos ao site de publicação. Você pode encontrar alguns exemplos na página de ajuda." @@ -69,10 +73,10 @@ msgstr "Adicionar novo canal" msgid "Add: {0}" msgstr "Adicionar: {0}" -#: src/views/Edit/Sources/Network.js:339 +#: src/views/Edit/Sources/Network.js:355 #: src/views/Edit/Wizard/Sources/Network.js:66 #: src/views/Publication/Services/Brightcove.js:95 -#: src/views/Publication/Services/Core.js:99 +#: src/views/Publication/Services/Core.js:100 #: src/views/Publication/Services/DASH.js:192 #: src/views/Publication/Services/HLS.js:181 #: src/views/Publication/Services/Icecast.js:160 @@ -84,23 +88,23 @@ msgstr "Adicionar: {0}" #: src/views/Publication/Services/SRT.js:161 #: src/views/Publication/Services/UDP.js:127 #: src/views/Publication/Services/WOWZA.js:132 -#: src/views/Settings.js:1297 +#: src/views/Settings.js:1302 msgid "Address" msgstr "Endereço" -#: src/views/Playersite.js:616 +#: src/views/Playersite.js:629 msgid "Address for the background image." msgstr "Endereço para a imagem de fundo." -#: src/views/Settings.js:1326 +#: src/views/Settings.js:1331 msgid "Address to listen on for HTTP requests." msgstr "Endereço para ouvir os pedidos HTTP." -#: src/views/Settings.js:1339 +#: src/views/Settings.js:1344 msgid "Address to listen on for HTTPS requests." msgstr "Endereço para ouvir os pedidos de HTTPS." -#: src/views/Playersite.js:501 +#: src/views/Playersite.js:514 msgid "Adjust publication site colors and background as you like." msgstr "Ajuste as cores e o fundo do site de publicação como você quiser." @@ -108,7 +112,7 @@ msgstr "Ajuste as cores e o fundo do site de publicação como você quiser." msgid "Advanced monitoring" msgstr "Monitoramento avançado" -#: src/views/Edit/Sources/Network.js:380 +#: src/views/Edit/Sources/Network.js:396 #: src/views/Publication/Services/DASH.js:204 #: src/views/Publication/Services/HLS.js:193 #: src/views/Publication/Services/Icecast.js:170 @@ -121,7 +125,7 @@ msgstr "Monitoramento avançado" msgid "Advanced settings" msgstr "Configurações avançadas" -#: src/views/Edit/Wizard/index.js:280 +#: src/views/Edit/Wizard/index.js:287 msgid "Advanced setup" msgstr "Configuração avançada" @@ -137,11 +141,11 @@ msgstr "Todos" msgid "All important system settings." msgstr "Todas as configurações importantes do sistema." -#: src/views/Settings.js:1473 +#: src/views/Settings.js:1478 msgid "Allow all referrer" msgstr "Permitir a todos os encaminhadores" -#: src/views/Settings.js:1513 +#: src/views/Settings.js:1518 msgid "Allow counting how many viewers the stream has." msgstr "Permitir contar quantos espectadores o fluxo tem." @@ -153,8 +157,8 @@ msgstr "Amplitude" msgid "An environment variable sets this value." msgstr "Uma variável de ambiente define este valor." -#: src/views/Publication/Services/Core.js:109 -#: src/views/Settings.js:1811 +#: src/views/Publication/Services/Core.js:107 +#: src/views/Settings.js:1816 msgid "App" msgstr "App" @@ -164,7 +168,7 @@ msgstr "App" msgid "Application" msgstr "Aplicação" -#: src/views/Edit/Wizard/index.js:1155 +#: src/views/Edit/Wizard/index.js:1172 msgid "Are you sure you want to abort the wizard?" msgstr "Você tem certeza de que quer abortar o feiticeiro?" @@ -172,27 +176,27 @@ msgstr "Você tem certeza de que quer abortar o feiticeiro?" msgid "Audio" msgstr "Áudio" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:92 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:111 msgid "Audio Device" msgstr "Dispositivo de áudio" -#: src/views/Edit/Sources/ALSA.js:101 -#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/ALSA.js:114 +#: src/views/Edit/Sources/AVFoundation.js:159 msgid "Audio device" msgstr "Dispositivo de áudio" -#: src/views/Edit/Wizard/index.js:858 -#: src/views/Edit/Wizard/index.js:870 +#: src/views/Edit/Wizard/index.js:875 +#: src/views/Edit/Wizard/index.js:887 msgid "Audio from device" msgstr "Áudio do dispositivo" -#: src/views/Edit/Profile.js:417 -#: src/views/Edit/ProfileSummary.js:89 +#: src/views/Edit/Profile.js:425 +#: src/views/Edit/ProfileSummary.js:90 #: src/views/Publication/Edit.js:533 msgid "Audio settings" msgstr "Configurações de áudio" -#: src/views/Edit/Wizard/index.js:811 +#: src/views/Edit/Wizard/index.js:828 msgid "Audio setup" msgstr "Configuração de áudio" @@ -208,43 +212,47 @@ msgstr "Auth0 Inquilino" msgid "Auth0 is currently not available because this interface is loaded from an insecure origin." msgstr "Auth0 não está atualmente disponível porque esta interface é carregada a partir de uma origem insegura." -#: src/misc/controls/Metadata.js:74 +#: src/misc/controls/Metadata.js:71 msgid "Author" msgstr "Autor" #: src/views/Settings.js:1143 -#: src/views/Settings.js:1410 +#: src/views/Settings.js:1415 msgid "Authorization" msgstr "Autorização" -#: src/views/Publication/Player.js:434 +#: src/misc/controls/HLS.js:83 +msgid "Automatic cleanup of all media data" +msgstr "Limpeza automática de todos os dados da mídia" + +#: src/views/Publication/Player.js:437 msgid "Autoplay" msgstr "Autoplay" -#: src/views/Playersite.js:434 +#: src/views/Playersite.js:445 msgid "Available" msgstr "Disponível em" -#: src/views/Edit/Profile.js:532 -#: src/views/Edit/Wizard/index.js:394 -#: src/views/Edit/Wizard/index.js:630 -#: src/views/Edit/Wizard/index.js:895 -#: src/views/Edit/Wizard/index.js:1007 -#: src/views/Edit/Wizard/index.js:1065 -#: src/views/Edit/Wizard/index.js:1147 +#: src/views/Edit/Profile.js:541 +#: src/views/Edit/Wizard/index.js:408 +#: src/views/Edit/Wizard/index.js:647 +#: src/views/Edit/Wizard/index.js:912 +#: src/views/Edit/Wizard/index.js:1024 +#: src/views/Edit/Wizard/index.js:1082 +#: src/views/Edit/Wizard/index.js:1164 #: src/views/Publication/Add.js:528 msgid "Back" msgstr "Voltar" -#: src/views/Playersite.js:550 +#: src/views/Playersite.js:563 msgid "Background colors" msgstr "Cores de fundo" -#: src/views/Playersite.js:603 +#: src/views/Playersite.js:616 msgid "Background image" msgstr "Imagem de fundo" -#: src/views/Publication/Services/Akamai.js:195 +#: src/views/Publication/Services/Akamai.js:196 msgid "Backup URL" msgstr "URL de backup" @@ -256,7 +264,7 @@ msgstr "Servidor de backup" msgid "Backup stream" msgstr "Fluxo de backup" -#: src/views/Publication/Services/Facebook.js:128 +#: src/views/Publication/Services/Facebook.js:124 msgid "Backup stream key" msgstr "Chave de fluxo de backup" @@ -265,7 +273,7 @@ msgstr "Chave de fluxo de backup" msgid "Bandwidth" msgstr "Largura de banda" -#: src/views/Settings.js:1368 +#: src/views/Settings.js:1373 msgid "Bandwidth control" msgstr "Controle de largura de banda" @@ -274,7 +282,7 @@ msgid "Banner" msgstr "Banner" #: src/views/Login.js:241 -#: src/views/Settings.js:1415 +#: src/views/Settings.js:1420 msgid "Basic" msgstr "Básico" @@ -287,40 +295,40 @@ msgstr "Fator Beep" msgid "Bitrate" msgstr "Taxa de bits" -#: src/views/Edit/Wizard/index.js:996 -#: src/views/Edit/index.js:508 +#: src/views/Edit/Wizard/index.js:1013 +#: src/views/Edit/index.js:510 msgid "Briefly describe what the audience will see during the live stream." msgstr "Descrever brevemente o que o público verá durante a transmissão ao vivo." -#: src/views/Publication/Player.js:349 +#: src/views/Publication/Player.js:352 msgid "Button color" msgstr "Cor do botão" -#: src/views/Settings.js:1682 +#: src/views/Settings.js:1687 msgid "Cache for files on /data." msgstr "Cache para arquivos em /dados." -#: src/views/Settings.js:1710 +#: src/views/Settings.js:1715 msgid "Cache time (Seconds)" msgstr "Tempo de cache (Segundos)" -#: src/views/Settings.js:1738 +#: src/views/Settings.js:1743 msgid "Cache types" msgstr "Tipos de cachês" -#: src/views/Edit/Sources/AVFoundation.js:188 +#: src/views/Edit/Sources/AVFoundation.js:197 msgid "Capture clicks" msgstr "Cliques de captura" -#: src/views/Edit/Sources/AVFoundation.js:185 +#: src/views/Edit/Sources/AVFoundation.js:194 msgid "Capture cursor" msgstr "Captura do cursor" -#: src/views/Edit/index.js:326 +#: src/views/Edit/index.js:327 msgid "Channel \"{0}\" saved" msgstr "Canal \"{0}\" salvo" -#: src/views/Edit/Sources/ALSA.js:124 +#: src/views/Edit/Sources/ALSA.js:129 msgid "Channels" msgstr "Canais" @@ -340,14 +348,14 @@ msgstr "Escolha um fluxo de vídeo" msgid "Choose an audio stream" msgstr "Escolha um fluxo de áudio" -#: src/views/Edit/Sources/ALSA.js:90 +#: src/views/Edit/Sources/ALSA.js:96 #: src/views/Edit/Sources/Framebuffer.js:80 #: src/views/Edit/Sources/Raspicam.js:84 -#: src/views/Edit/Sources/V4L.js:84 +#: src/views/Edit/Sources/V4L.js:90 msgid "Choose an input device ..." msgstr "Escolha um dispositivo de entrada ..." -#: src/misc/EncodingSelect.js:190 +#: src/misc/EncodingSelect.js:202 msgid "Choose codec ..." msgstr "Escolha o codec ..." @@ -360,28 +368,28 @@ msgstr "Escolher inquilino ..." msgid "Chunk" msgstr "Pedaço" -#: src/misc/ModalContent.js:87 -#: src/views/Playersite.js:769 +#: src/misc/ModalContent.js:77 +#: src/views/Playersite.js:782 #: src/views/Publication/Add.js:525 #: src/views/Publication/Edit.js:565 -#: src/views/Publication/Player.js:444 +#: src/views/Publication/Player.js:447 msgid "Close" msgstr "Fechar" -#: src/views/Playersite.js:352 +#: src/views/Playersite.js:354 msgid "Code injection" msgstr "Injeção de código" -#: src/misc/EncodingSelect.js:188 +#: src/misc/EncodingSelect.js:200 msgid "Codec" msgstr "Codec" #: src/views/Edit/Sources/VirtualAudio.js:110 -#: src/views/Publication/Player.js:317 +#: src/views/Publication/Player.js:320 msgid "Color" msgstr "Cor" -#: src/views/Settings.js:1277 +#: src/views/Settings.js:1282 msgid "Config" msgstr "Config" @@ -393,7 +401,7 @@ msgstr "Confirmar senha" msgid "Connect" msgstr "Conecte" -#: src/views/Edit/Wizard/Sources/AVFoundation.js:134 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:157 msgid "Connected device" msgstr "Dispositivo conectado" @@ -402,7 +410,7 @@ msgid "Connected since <0/>" msgstr "Conectado desde <0/>" #: src/misc/ActionButton.js:12 -#: src/views/Main/index.js:308 +#: src/views/Main/index.js:305 #: src/views/Publication/Process.js:40 msgid "Connecting ..." msgstr "Conectando ..." @@ -415,12 +423,16 @@ msgstr "Conectando-se ao Restreamer Core ..." msgid "Connecting to Restreamer Core failed probably because of mixed content." msgstr "A conexão com o Restreamer Core falhou provavelmente por causa do conteúdo misto." -#: src/misc/controls/Metadata.js:73 -#: src/views/Playersite.js:646 -#: src/views/Playersite.js:663 +#: src/misc/controls/Metadata.js:70 +#: src/views/Playersite.js:659 +#: src/views/Playersite.js:676 msgid "Content" msgstr "Conteúdo" +#: src/views/Main/index.js:365 +msgid "Content URL" +msgstr "" + #: src/Footer.js:193 msgid "Cores" msgstr "Núcleos" @@ -442,22 +454,22 @@ msgstr "Creative Commons" #: src/misc/coders/settings/Video.js:115 #: src/misc/coders/settings/Video.js:181 #: src/misc/coders/settings/Video.js:220 -#: src/views/Edit/Sources/ALSA.js:95 -#: src/views/Edit/Sources/AVFoundation.js:114 -#: src/views/Edit/Sources/AVFoundation.js:147 -#: src/views/Edit/Sources/V4L.js:90 +#: src/views/Edit/Sources/ALSA.js:101 +#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/V4L.js:96 msgid "Custom ..." msgstr "Personalizado ..." -#: src/views/Settings.js:1283 +#: src/views/Settings.js:1288 msgid "Custom JSON config for datarhei Core." msgstr "Configuração JSON personalizada para datarhei Core." -#: src/views/Edit/Sources/ALSA.js:102 +#: src/views/Edit/Sources/ALSA.js:115 msgid "Custom audio device" msgstr "Dispositivo de áudio personalizado" -#: src/views/Edit/Sources/AVFoundation.js:154 +#: src/views/Edit/Sources/AVFoundation.js:160 msgid "Custom audio index" msgstr "Índice de áudio personalizado" @@ -466,7 +478,7 @@ msgstr "Índice de áudio personalizado" msgid "Custom bitrate (kbit/s)" msgstr "Taxa de bits personalizada (kbit/s)" -#: src/views/Playersite.js:674 +#: src/views/Playersite.js:687 msgid "Custom code injection" msgstr "Injeção de código personalizado" @@ -506,35 +518,36 @@ msgstr "Escala personalizada" msgid "Custom size" msgstr "Tamanho personalizado" -#: src/views/Edit/Sources/V4L.js:97 +#: src/views/Edit/Sources/V4L.js:110 msgid "Custom video device" msgstr "Dispositivo de vídeo personalizado" -#: src/views/Edit/Sources/AVFoundation.js:121 +#: src/views/Edit/Sources/AVFoundation.js:127 msgid "Custom video index" msgstr "Índice de vídeo personalizado" -#: src/misc/TextFieldCopy.js:44 +#: src/misc/CopyButton.js:20 +#: src/misc/TextFieldCopy.js:33 #: src/misc/Textarea.js:46 msgid "Data copied to clipboard" msgstr "Dados copiados para a prancheta" -#: src/views/Edit/Sources/VirtualVideo.js:164 +#: src/views/Edit/Sources/VirtualVideo.js:167 msgid "Death color" msgstr "Cor da morte" -#: src/misc/EncodingSelect.js:198 -#: src/views/Edit/Wizard/index.js:611 +#: src/misc/EncodingSelect.js:210 +#: src/views/Edit/Wizard/index.js:628 msgid "Decoder" msgstr "Decodificador" -#: src/views/Edit/Sources/AVFoundation.js:109 -#: src/views/Edit/Sources/AVFoundation.js:143 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:61 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:87 -#: src/views/Playersite.js:440 -#: src/views/Playersite.js:513 -#: src/views/Playersite.js:557 +#: src/views/Edit/Sources/AVFoundation.js:115 +#: src/views/Edit/Sources/AVFoundation.js:149 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:76 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:105 +#: src/views/Playersite.js:451 +#: src/views/Playersite.js:526 +#: src/views/Playersite.js:570 msgid "Default" msgstr "Predefinição" @@ -542,13 +555,13 @@ msgstr "Predefinição" msgid "Delay" msgstr "Atraso" -#: src/views/Edit/Sources/ALSA.js:127 +#: src/views/Edit/Sources/ALSA.js:132 msgid "Delay (ms)" msgstr "Atraso (ms)" -#: src/views/Edit/index.js:561 -#: src/views/Edit/index.js:597 -#: src/views/Playersite.js:461 +#: src/views/Edit/index.js:563 +#: src/views/Edit/index.js:599 +#: src/views/Playersite.js:474 #: src/views/Publication/Edit.js:574 #: src/views/Publication/Edit.js:606 msgid "Delete" @@ -563,18 +576,18 @@ msgstr "A eliminação de um serviço de publicação não pode ser revertida. A msgid "Delivering mode" msgstr "Modo de entrega" -#: src/misc/controls/Metadata.js:88 -#: src/misc/controls/Metadata.js:113 +#: src/misc/controls/Metadata.js:85 +#: src/misc/controls/Metadata.js:110 msgid "Description" msgstr "Descrição" -#: src/views/Playersite.js:350 -#: src/views/Playersite.js:496 +#: src/views/Playersite.js:352 +#: src/views/Playersite.js:509 msgid "Design" msgstr "Projeto" #: src/views/Edit/Sources/Framebuffer.js:87 -#: src/views/Edit/Wizard/index.js:873 +#: src/views/Edit/Wizard/index.js:890 #: src/views/Publication/Services/Framebuffer.js:93 msgid "Device" msgstr "Dispositivo" @@ -585,7 +598,7 @@ msgstr "Dispositivo" msgid "Disconnect" msgstr "Desconectar" -#: src/views/Edit/index.js:578 +#: src/views/Edit/index.js:580 msgid "Disconnect & Continue" msgstr "Desconectar e continuar" @@ -594,12 +607,12 @@ msgstr "Desconectar e continuar" msgid "Disconnecting ..." msgstr "Desconectando ..." -#: src/views/Settings.js:1645 +#: src/views/Settings.js:1650 msgid "Disk" msgstr "Disco" -#: src/views/Settings.js:1679 -#: src/views/Settings.js:1687 +#: src/views/Settings.js:1684 +#: src/views/Settings.js:1692 msgid "Disk cache" msgstr "Cache de disco" @@ -608,11 +621,11 @@ msgstr "Cache de disco" msgid "Disk storage" msgstr "Armazenamento em disco" -#: src/views/Settings.js:2058 +#: src/views/Settings.js:2063 msgid "Do you really want to restart the application now?" msgstr "Você realmente quer reiniciar a aplicação agora?" -#: src/views/Edit/index.js:589 +#: src/views/Edit/index.js:591 msgid "Do you want to delete \"{0}\"?" msgstr "Você quer excluir \"{0}\"?" @@ -620,12 +633,12 @@ msgstr "Você quer excluir \"{0}\"?" msgid "Do you want to delete {title}?" msgstr "Você quer apagar {título}?" -#: src/views/Edit/index.js:570 +#: src/views/Edit/index.js:572 msgid "Do you want to disconnect \"{0}\"?" msgstr "Você quer desconectar \"{0}\"?" -#: src/Header.js:292 -#: src/Header.js:333 +#: src/Header.js:289 +#: src/Header.js:330 msgid "Docs" msgstr "Docs" @@ -645,19 +658,19 @@ msgstr "Documentação" msgid "Dup. frames" msgstr "Molduras Dup" -#: src/views/Publication/Player.js:282 +#: src/views/Publication/Player.js:285 msgid "EDIT: Player" msgstr "EDIT: Jogador" -#: src/views/Playersite.js:344 +#: src/views/Playersite.js:346 msgid "EDIT: Publication Website" msgstr "EDIT: Site de publicação" -#: src/views/Edit/index.js:390 +#: src/views/Edit/index.js:391 msgid "Edit" msgstr "Editar" -#: src/views/Edit/index.js:416 +#: src/views/Edit/index.js:417 msgid "Edit the audio and video sources for the live stream. Add a description, and set your desired content license." msgstr "Edite as fontes de áudio e vídeo para a transmissão ao vivo. Adicione uma descrição e defina sua licença de conteúdo desejada." @@ -665,11 +678,11 @@ msgstr "Edite as fontes de áudio e vídeo para a transmissão ao vivo. Adicione msgid "Edit: {title}" msgstr "Edição: {título}" -#: src/views/Publication/Player.js:316 +#: src/views/Publication/Player.js:319 msgid "Embed" msgstr "Embutir" -#: src/views/Edit/Sources/Network.js:561 +#: src/views/Edit/Sources/Network.js:577 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:55 msgid "Enable RTMP server ..." msgstr "Habilitar servidor RTMP ..." @@ -679,16 +692,16 @@ msgid "Enable a periodic beep every second with this value times the carrier fre msgstr "Habilitar um bip periódico a cada segundo com este valor vezes a freqüência portadora" #: src/views/Publication/Services/Dummy.js:278 -#: src/views/Publication/Services/Facebook.js:147 +#: src/views/Publication/Services/Facebook.js:139 msgid "Enable backup stream" msgstr "Habilitar o fluxo de backup" -#: src/views/Publication/Player.js:424 +#: src/views/Publication/Player.js:427 msgid "Enable nerd statistics" msgstr "Habilitar estatísticas de nerds" #: src/views/Publication/Services/Dummy.js:277 -#: src/views/Publication/Services/Facebook.js:146 +#: src/views/Publication/Services/Facebook.js:138 msgid "Enable primary stream" msgstr "Habilitar o fluxo primário" @@ -696,15 +709,15 @@ msgstr "Habilitar o fluxo primário" msgid "Enable snapshots" msgstr "Habilitar instantâneos" -#: src/views/Settings.js:1428 +#: src/views/Settings.js:1433 msgid "Enabling authorization is strongly advised. Otherwise, anybody can access this instance." msgstr "Aconselha-se vivamente a autorização. Caso contrário, qualquer pessoa pode ter acesso a esta instância." -#: src/views/Settings.js:1588 +#: src/views/Settings.js:1593 msgid "Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs." msgstr "Aconselha-se vivamente que se habilite a auth básica. Caso contrário, qualquer pessoa poderia escrever dados para /memfs." -#: src/views/Edit/Wizard/index.js:617 +#: src/views/Edit/Wizard/index.js:634 msgid "Encoder" msgstr "Codificador" @@ -730,7 +743,7 @@ msgstr "Digite um nome para o novo canal." msgid "Enter password" msgstr "Digite a senha" -#: src/views/Edit/Sources/Network.js:332 +#: src/views/Edit/Sources/Network.js:348 #: src/views/Edit/Wizard/Sources/Network.js:59 msgid "Enter the address of your network source:" msgstr "Digite o endereço de sua fonte de rede:" @@ -743,7 +756,7 @@ msgstr "Digite o nome de usuário" msgid "Entropy coder" msgstr "Codificador de entropia" -#: src/views/Edit/Wizard/index.js:1101 +#: src/views/Edit/Wizard/index.js:1118 #: src/views/Incompatible.js:30 #: src/views/Invalid.js:29 #: src/views/Publication/Process.js:63 @@ -751,45 +764,46 @@ msgstr "Codificador de entropia" msgid "Error" msgstr "Erro" -#: src/misc/TextFieldCopy.js:46 +#: src/misc/CopyButton.js:22 +#: src/misc/TextFieldCopy.js:35 #: src/misc/Textarea.js:48 msgid "Error while copying data to clipboard" msgstr "Erro ao copiar dados para a prancheta" -#: src/views/Main/index.js:327 +#: src/views/Main/index.js:324 #: src/views/Publication/Process.js:64 msgid "Error: {0}" msgstr "Erro: {0}" -#: src/views/Playersite.js:719 +#: src/views/Playersite.js:732 msgid "Expands the area above the channel list (live chat)." msgstr "Expande a área acima da lista de canais (bate-papo ao vivo)." -#: src/views/Playersite.js:739 +#: src/views/Playersite.js:752 msgid "Expands the area under the channel description (comment boxes)." msgstr "Expande a área sob a descrição do canal (caixas de comentários)." -#: src/views/Settings.js:1194 +#: src/views/Settings.js:1199 msgid "Expert mode" msgstr "Modo especialista" -#: src/views/Playersite.js:704 +#: src/views/Playersite.js:717 msgid "Extend channel list" msgstr "Ampliar a lista de canais" -#: src/views/Playersite.js:724 +#: src/views/Playersite.js:737 msgid "Extend content" msgstr "Ampliar o conteúdo" -#: src/views/Playersite.js:744 +#: src/views/Playersite.js:757 msgid "Extend footer" msgstr "Ampliar o rodapé" -#: src/views/Playersite.js:684 +#: src/views/Playersite.js:697 msgid "Extend header" msgstr "Ampliar cabeçalho" -#: src/views/Settings.js:1931 +#: src/views/Settings.js:1936 msgid "FFmpeg" msgstr "FFmpeg" @@ -798,20 +812,16 @@ msgstr "FFmpeg" msgid "FPS" msgstr "FPS" -#: src/views/Edit/index.js:290 -msgid "Failed to correctly cleanup previous process data" -msgstr "Falha na limpeza correta dos dados do processo anterior" - #: src/views/Publication/Add.js:180 msgid "Failed to create publication service ({0})" msgstr "Falha na criação do serviço de publicação ({0})" -#: src/views/Playersite.js:308 +#: src/views/Playersite.js:310 msgid "Failed to create publication website files." msgstr "Falha na criação dos arquivos do site de publicação." -#: src/views/Edit/Profile.js:333 -#: src/views/Edit/Profile.js:462 +#: src/views/Edit/Profile.js:341 +#: src/views/Edit/Profile.js:471 msgid "Failed to probe the source. Please check the <0>probe details." msgstr "Falha na sondagem da fonte. Por favor, verifique os <0> detalhes da sonda." @@ -819,7 +829,7 @@ msgstr "Falha na sondagem da fonte. Por favor, verifique os <0> detalhes da sond msgid "Failed to refresh token: {0}" msgstr "Falha em atualizar a ficha: {0}" -#: src/views/Edit/index.js:303 +#: src/views/Edit/index.js:304 msgid "Failed to save ingest metadata" msgstr "Falha em salvar metadados ingeridos" @@ -827,7 +837,7 @@ msgstr "Falha em salvar metadados ingeridos" msgid "Failed to stop process" msgstr "Falha em interromper o processo" -#: src/views/Playersite.js:301 +#: src/views/Playersite.js:303 msgid "Failed to store player size setting." msgstr "Falha no ajuste do tamanho do jogador." @@ -835,36 +845,36 @@ msgstr "Falha no ajuste do tamanho do jogador." msgid "Failed to store publication service ({0})" msgstr "Falha no serviço de publicação de lojas ({0})" -#: src/views/Edit/index.js:296 +#: src/views/Edit/index.js:297 msgid "Failed to update ingest process ({0})" msgstr "Falha em atualizar o processo de ingestão ({0})" -#: src/views/Edit/index.js:309 +#: src/views/Edit/index.js:310 msgid "Failed to update the player" msgstr "Falha na atualização do jogador" -#: src/views/Edit/Wizard/index.js:361 -#: src/views/Edit/Wizard/index.js:821 +#: src/views/Edit/Wizard/index.js:375 +#: src/views/Edit/Wizard/index.js:838 msgid "Failed to verify the source. Please check the address." msgstr "Falha na verificação da fonte. Por favor, verifique o endereço." -#: src/views/Edit/Profile.js:540 +#: src/views/Edit/Profile.js:549 msgid "Finish" msgstr "Terminar" -#: src/views/Edit/Sources/VirtualVideo.js:170 +#: src/views/Edit/Sources/VirtualVideo.js:182 msgid "Flags" msgstr "Bandeiras" -#: src/views/Playersite.js:759 +#: src/views/Playersite.js:772 msgid "For Javascripts." msgstr "Para Javascripts." -#: src/views/Playersite.js:699 +#: src/views/Playersite.js:712 msgid "For Stylesheets." msgstr "Para Fichas de Estilo." -#: src/views/Edit/Sources/Network.js:423 +#: src/views/Edit/Sources/Network.js:439 msgid "Force input framerate" msgstr "Forçar o frame de entrada" @@ -881,7 +891,7 @@ msgid "Framebuffer" msgstr "Framebuffer" #: src/misc/coders/settings/Video.js:135 -#: src/views/Edit/Sources/Network.js:436 +#: src/views/Edit/Sources/Network.js:452 msgid "Framerate" msgstr "Framerate" @@ -889,21 +899,22 @@ msgstr "Framerate" msgid "Frequency (Hz)" msgstr "Freqüência (Hz)" -#: src/views/Publication/Services/Facebook.js:119 -#: src/views/Publication/Services/Facebook.js:141 +#: src/views/Publication/Services/Core.js:129 +#: src/views/Publication/Services/Facebook.js:115 +#: src/views/Publication/Services/Facebook.js:133 #: src/views/Publication/Services/Instagram.js:88 -#: src/views/Publication/Services/Restream.js:124 -#: src/views/Publication/Services/Twitch.js:137 +#: src/views/Publication/Services/Restream.js:120 +#: src/views/Publication/Services/Twitch.js:133 #: src/views/Publication/Services/Twitter.js:179 #: src/views/Publication/Services/Youtube.js:177 msgid "GET" msgstr "GET" -#: src/views/Edit/Sources/Network.js:455 -#: src/views/Edit/index.js:399 -#: src/views/Edit/index.js:411 -#: src/views/Playersite.js:348 -#: src/views/Playersite.js:361 +#: src/views/Edit/Sources/Network.js:471 +#: src/views/Edit/index.js:400 +#: src/views/Edit/index.js:412 +#: src/views/Playersite.js:350 +#: src/views/Playersite.js:363 #: src/views/Publication/Add.js:372 #: src/views/Publication/Edit.js:386 #: src/views/Publication/Services/DASH.js:211 @@ -918,52 +929,49 @@ msgstr "GET" msgid "General" msgstr "Geral" -#: src/views/Publication/Player.js:407 +#: src/views/Publication/Player.js:410 msgid "Google Analytics ID" msgstr "Google Analytics ID" -#: src/views/Publication/Player.js:417 +#: src/views/Publication/Player.js:420 msgid "Google Analytics Tracker Name" msgstr "Nome do Google Analytics Tracker" -#: src/views/Edit/index.js:469 +#: src/views/Edit/index.js:471 +#: src/views/Main/index.js:369 msgid "HLS" msgstr "HLS" -#: src/views/Main/index.js:367 -msgid "HLS URL" -msgstr "URL DO HLS" - -#: src/views/Settings.js:1505 +#: src/views/Settings.js:1510 msgid "HLS statistic for the In-memory storage" msgstr "Estatísticas HLS para o armazenamento In-memory" -#: src/views/Edit/Sources/Network.js:413 +#: src/views/Edit/Sources/Network.js:429 msgid "HTTP and HTTPS" msgstr "HTTP e HTTPS" -#: src/views/Settings.js:1318 +#: src/views/Settings.js:1323 msgid "HTTP port" msgstr "Porta HTTP" -#: src/views/Settings.js:1347 +#: src/views/Settings.js:1352 msgid "HTTPS (SSL/TLS)" msgstr "HTTPS (SSL/TLS)" -#: src/views/Settings.js:1331 +#: src/views/Settings.js:1336 msgid "HTTPS port" msgstr "Porto HTTPS" -#: src/views/Edit/Sources/V4L.js:145 -#: src/views/Edit/Wizard/Sources/V4L.js:120 +#: src/views/Edit/Sources/V4L.js:151 +#: src/views/Edit/Wizard/Sources/V4L.js:140 msgid "Hardware device" msgstr "Dispositivo de ferragens" -#: src/views/Playersite.js:566 +#: src/views/Playersite.js:579 msgid "Header" msgstr "Cabeçalho" -#: src/views/Playersite.js:522 +#: src/views/Playersite.js:535 msgid "Headline" msgstr "Manchete" @@ -971,7 +979,7 @@ msgstr "Manchete" msgid "Hosted Restreamer interface" msgstr "Interface Restreamer hospedado" -#: src/views/Settings.js:1253 +#: src/views/Settings.js:1258 msgid "Human readable name on the service." msgstr "Nome legível pelo ser humano no serviço." @@ -979,32 +987,32 @@ msgstr "Nome legível pelo ser humano no serviço." msgid "IP address" msgstr "Endereço IP" -#: src/views/Settings.js:2003 +#: src/views/Settings.js:2008 msgid "If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port." msgstr "Se você mudou os portos, pode ser que o Restreamer Core já tenha reiniciado, mas agora ele está disponível em um porto diferente." -#: src/views/Settings.js:1997 +#: src/views/Settings.js:2002 msgid "If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core." msgstr "Se você ativou Let's Encrypt TLS, pode levar algum tempo para adquirir os certificados. Certifique-se de que o Restreamer Core esteja acessível via porta 80 a partir da Internet. Por favor, verifique o log do console do Restreamer Core." -#: src/views/Settings.js:1520 +#: src/views/Settings.js:1525 msgid "Ignore IP ranges" msgstr "Ignorar as faixas de IP" -#: src/views/Playersite.js:611 -#: src/views/Publication/Player.js:363 +#: src/views/Playersite.js:624 +#: src/views/Publication/Player.js:366 msgid "Image URL" msgstr "URL da imagem" -#: src/views/Playersite.js:636 +#: src/views/Playersite.js:649 msgid "Imprint" msgstr "Impresso" -#: src/views/Playersite.js:366 +#: src/views/Playersite.js:368 msgid "In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly." msgstr "Além do jogador, o Restreamer oferece uma página de desembarque completa, que você pode usar para apresentar seu stream ao vivo com facilidade e rapidez." -#: src/views/Settings.js:1572 +#: src/views/Settings.js:1577 msgid "In-memory" msgstr "In-memory" @@ -1022,19 +1030,19 @@ msgstr "Incompatível" msgid "Inherit" msgstr "Inerte" -#: src/views/Playersite.js:694 +#: src/views/Playersite.js:707 msgid "Inject 1" msgstr "Injetar 1" -#: src/views/Playersite.js:714 +#: src/views/Playersite.js:727 msgid "Inject 2" msgstr "Injetar 2" -#: src/views/Playersite.js:734 +#: src/views/Playersite.js:747 msgid "Inject 3" msgstr "Injetar 3" -#: src/views/Playersite.js:754 +#: src/views/Playersite.js:767 msgid "Inject 4" msgstr "Injetar 4" @@ -1050,8 +1058,8 @@ msgstr "Servidor RTMP interno" msgid "Interval (seconds)" msgstr "Intervalo (segundos)" -#: src/Header.js:298 -#: src/Header.js:339 +#: src/Header.js:295 +#: src/Header.js:336 msgid "Issue alert" msgstr "Alerta de emissão" @@ -1063,11 +1071,11 @@ msgstr "Intervalo do quadro-chave (segundos)" msgid "Layout" msgstr "Layout" -#: src/views/Settings.js:1352 +#: src/views/Settings.js:1357 msgid "Let's Encrypt certification" msgstr "Vamos encriptar a certificação" -#: src/views/Settings.js:1360 +#: src/views/Settings.js:1365 msgid "Let's Encrypt requires one or more public domain names and an accessible port 80/TCP." msgstr "Vamos Encriptar requer um ou mais nomes de domínio público e uma porta 80/TCP acessível." @@ -1075,42 +1083,42 @@ msgstr "Vamos Encriptar requer um ou mais nomes de domínio público e uma porta msgid "Level" msgstr "Nível" -#: src/views/Settings.js:1913 +#: src/views/Settings.js:1918 msgid "Level of system protocol." msgstr "Nível de protocolo do sistema." -#: src/views/Edit/Wizard/index.js:1044 -#: src/views/Edit/index.js:402 -#: src/views/Edit/index.js:523 +#: src/views/Edit/Wizard/index.js:1061 +#: src/views/Edit/index.js:403 +#: src/views/Edit/index.js:525 msgid "License" msgstr "Licença" -#: src/views/Edit/Sources/VirtualVideo.js:167 +#: src/views/Edit/Sources/VirtualVideo.js:176 msgid "Life color" msgstr "Cor da vida" -#: src/views/Playersite.js:593 +#: src/views/Playersite.js:606 msgid "Linecolor" msgstr "Linecolor" -#: src/views/Playersite.js:531 -#: src/views/Publication/Player.js:393 +#: src/views/Playersite.js:544 +#: src/views/Publication/Player.js:396 msgid "Link" msgstr "Link" -#: src/views/Playersite.js:540 +#: src/views/Playersite.js:553 msgid "Link, mouseover" msgstr "Link, mouseover" -#: src/views/Settings.js:1528 +#: src/views/Settings.js:1533 msgid "List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions." msgstr "Lista de faixas de IP na notação CIDR, por exemplo, 127.0.0.0.1/32, que as estatísticas não registrarão uma faixa IP por linha. Deixe em branco para registrar todas as sessões." -#: src/views/Settings.js:1746 +#: src/views/Settings.js:1751 msgid "List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types." msgstr "Lista de extensões de arquivo para cache (por exemplo, \".html\"), uma por linha. Deixar vazio para o cache de todos os tipos de arquivo." -#: src/misc/controls/HLS.js:71 +#: src/misc/controls/HLS.js:74 msgid "List size (segments)" msgstr "Tamanho da lista (segmentos)" @@ -1127,27 +1135,27 @@ msgid "Live-Streaming to Twitch Live RTMP Service." msgstr "Live-Streaming para Twitch Live RTMP Service." #: src/views/Publication/Services/Vimeo.js:12 -msgid "Live-Streaming to Vimeos Live RTMP Service" -msgstr "Live-Streaming para Vimeos Live RTMP Service" +msgid "Live-Streaming to Vimeo Live RTMP Service" +msgstr "Live-Streaming para Vimeo Live RTMP Service" #: src/views/Publication/Services/Livespotting.js:94 msgid "Livesource ID" msgstr "Identificação de fonte de vida" -#: src/views/Settings.js:1865 +#: src/views/Settings.js:1870 msgid "Log level" msgstr "Nível de log" #: src/misc/modals/Process.js:90 #: src/views/Settings.js:1147 -#: src/views/Settings.js:1841 +#: src/views/Settings.js:1846 msgid "Logging" msgstr "Logging" #: src/views/Login.js:297 #: src/views/Login.js:391 #: src/views/Login.js:406 -#: src/views/Publication/Services/Akamai.js:123 +#: src/views/Publication/Services/Akamai.js:124 msgid "Login" msgstr "Login" @@ -1163,15 +1171,15 @@ msgstr "O login falhou: Não foi possível carregar detalhes API" msgid "Login failed: {0}" msgstr "O login falhou: {0}" -#: src/views/Settings.js:1420 +#: src/views/Settings.js:1425 msgid "Login/JWT authorization" msgstr "Login/JWT autorização" -#: src/views/Publication/Player.js:318 +#: src/views/Publication/Player.js:321 msgid "Logo" msgstr "Logotipo" -#: src/Header.js:310 +#: src/Header.js:307 msgid "Logout" msgstr "Logout" @@ -1179,12 +1187,12 @@ msgstr "Logout" msgid "MB" msgstr "MB" -#: src/views/Edit/index.js:379 +#: src/views/Edit/index.js:380 msgid "Main Source" msgstr "Fonte principal" -#: src/views/Main/index.js:263 -#: src/views/Playersite.js:386 +#: src/views/Main/index.js:260 +#: src/views/Playersite.js:389 msgid "Main channel" msgstr "Canal principal" @@ -1192,11 +1200,11 @@ msgstr "Canal principal" msgid "Main channel not found" msgstr "Canal principal não encontrado" -#: src/views/Edit/Wizard/index.js:181 +#: src/views/Edit/Wizard/index.js:188 msgid "Main channel saved" msgstr "Canal principal salvo" -#: src/views/Playersite.js:409 +#: src/views/Playersite.js:412 msgid "Main page channel (index.html)." msgstr "Canal da página principal (index.html)." @@ -1209,19 +1217,19 @@ msgstr "Canal da página principal (index.html)." msgid "Maintainer:" msgstr "Mantenedor:" -#: src/views/Settings.js:1705 +#: src/views/Settings.js:1710 msgid "Maximum allowed cache size, 0 for unlimited." msgstr "Tamanho máximo de cache permitido, 0 para ilimitado." -#: src/views/Settings.js:1627 +#: src/views/Settings.js:1632 msgid "Maximum allowed megabytes of RAM for /memfs, 0 for unlimited." msgstr "Máximo permitido de megabytes de RAM para /memfs, 0 para ilimitado." -#: src/views/Settings.js:1671 +#: src/views/Settings.js:1676 msgid "Maximum allowed megabytes to consume from hard disk. 0 for unlimited." msgstr "Consumo máximo permitido de megabytes a partir do disco rígido. 0 por ilimitado." -#: src/views/Settings.js:1389 +#: src/views/Settings.js:1394 msgid "Maximum bandwidth Mbit/s" msgstr "Largura de banda máxima Mbit/s" @@ -1229,34 +1237,34 @@ msgstr "Largura de banda máxima Mbit/s" msgid "Maximum delay in milliseconds." msgstr "Atraso máximo em milissegundos." -#: src/views/Settings.js:1723 +#: src/views/Settings.js:1728 msgid "Maximum file size (Megabytes)" msgstr "Tamanho máximo do arquivo (Megabytes)" -#: src/views/Settings.js:1731 +#: src/views/Settings.js:1736 msgid "Maximum file size to put in cache." msgstr "Tamanho máximo de arquivo para colocar em cache." -#: src/views/Settings.js:1949 +#: src/views/Settings.js:1954 msgid "Maximum log histroy" msgstr "Histórico log máximo" -#: src/views/Settings.js:1918 -#: src/views/Settings.js:1936 +#: src/views/Settings.js:1923 +#: src/views/Settings.js:1941 msgid "Maximum log lines" msgstr "Máximo de linhas de toras" -#: src/views/Settings.js:1619 -#: src/views/Settings.js:1663 -#: src/views/Settings.js:1697 +#: src/views/Settings.js:1624 +#: src/views/Settings.js:1668 +#: src/views/Settings.js:1702 msgid "Maximum size (Megabytes)" msgstr "Tamanho máximo (Megabytes)" -#: src/views/Settings.js:1537 +#: src/views/Settings.js:1542 msgid "Maximum viewer idle time (Seconds)" msgstr "Tempo máximo de ociosidade do espectador (segundos)" -#: src/views/Settings.js:1373 +#: src/views/Settings.js:1378 msgid "Maximum viewers" msgstr "Máximo de espectadores" @@ -1264,12 +1272,12 @@ msgstr "Máximo de espectadores" msgid "Memory" msgstr "Memória" -#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:402 msgid "Meta information" msgstr "Meta informação" -#: src/views/Edit/Wizard/index.js:989 -#: src/views/Edit/index.js:503 +#: src/views/Edit/Wizard/index.js:1006 +#: src/views/Edit/index.js:505 msgid "Metadata" msgstr "Metadados" @@ -1291,44 +1299,44 @@ msgstr "Mais sobre os direitos autorais do YouTube <0>aqui." msgid "More about licenses here" msgstr "Mais sobre licenças aqui" -#: src/views/Settings.js:1222 +#: src/views/Settings.js:1227 msgid "More about the service" msgstr "Mais sobre o serviço" -#: src/views/Publication/Player.js:435 +#: src/views/Publication/Player.js:438 msgid "Mute" msgstr "Mudo" #: src/misc/ChannelList.js:380 -#: src/misc/controls/Metadata.js:79 -#: src/misc/controls/Metadata.js:101 -#: src/views/Playersite.js:476 -#: src/views/Settings.js:1245 +#: src/misc/controls/Metadata.js:76 +#: src/misc/controls/Metadata.js:98 +#: src/views/Playersite.js:489 +#: src/views/Settings.js:1250 msgid "Name" msgstr "Nome" -#: src/views/Playersite.js:481 +#: src/views/Playersite.js:494 msgid "Name for the template. If the name already exists, it will be overwritten." msgstr "Nome para o modelo. Se o nome já existir, ele será sobregravado." #: src/views/Settings.js:1142 -#: src/views/Settings.js:1292 +#: src/views/Settings.js:1297 msgid "Network" msgstr "Rede" -#: src/views/Edit/Sources/Network.js:668 +#: src/views/Edit/Sources/Network.js:684 #: src/views/Edit/Wizard/Sources/Network.js:110 msgid "Network source" msgstr "Fonte da rede" -#: src/views/Edit/Wizard/index.js:399 -#: src/views/Edit/Wizard/index.js:635 -#: src/views/Edit/Wizard/index.js:900 -#: src/views/Edit/Wizard/index.js:1012 +#: src/views/Edit/Wizard/index.js:413 +#: src/views/Edit/Wizard/index.js:652 +#: src/views/Edit/Wizard/index.js:917 +#: src/views/Edit/Wizard/index.js:1029 msgid "Next" msgstr "Próximo" -#: src/views/Edit/Profile.js:405 +#: src/views/Edit/Profile.js:413 msgid "Next: Audio" msgstr "A seguir: Áudio" @@ -1336,12 +1344,12 @@ msgstr "A seguir: Áudio" msgid "Next: Video setup" msgstr "A seguir: Configuração do vídeo" -#: src/views/Edit/Wizard/index.js:1165 +#: src/views/Edit/Wizard/index.js:1182 msgid "No" msgstr "Não" #: src/views/Edit/Sources/NoAudio.js:45 -#: src/views/Edit/Wizard/index.js:884 +#: src/views/Edit/Wizard/index.js:901 msgid "No audio" msgstr "Sem áudio" @@ -1349,7 +1357,12 @@ msgstr "Sem áudio" msgid "No audio stream available" msgstr "Nenhum fluxo de áudio disponível" -#: src/views/Edit/Wizard/index.js:359 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:70 +#: src/views/Edit/Wizard/Sources/V4L.js:99 +msgid "No input device available" +msgstr "Nenhum dispositivo de entrada disponível" + +#: src/views/Edit/Wizard/index.js:373 msgid "No live stream was detected. Please check the software that sends the stream." msgstr "Nenhum fluxo vivo foi detectado. Por favor, verifique o software que envia o fluxo." @@ -1357,12 +1370,16 @@ msgstr "Nenhum fluxo vivo foi detectado. Por favor, verifique o software que env msgid "No source selected" msgstr "Nenhuma fonte selecionada" -#: src/misc/EncodingSelect.js:152 +#: src/views/Edit/SourceSelect.js:174 +msgid "No sources available" +msgstr "Não há fontes disponíveis" + +#: src/misc/EncodingSelect.js:164 msgid "No suitable encoder found." msgstr "Não foi encontrado nenhum codificador adequado." -#: src/views/Main/index.js:289 -#: src/views/Publication/Player.js:291 +#: src/views/Main/index.js:286 +#: src/views/Publication/Player.js:294 msgid "No video" msgstr "Nenhum vídeo" @@ -1370,7 +1387,7 @@ msgstr "Nenhum vídeo" msgid "No video stream available" msgstr "Nenhum fluxo de vídeo disponível" -#: src/views/Settings.js:1238 +#: src/views/Settings.js:1243 msgid "Node ID" msgstr "Identificação do nó" @@ -1378,36 +1395,36 @@ msgstr "Identificação do nó" msgid "Noise" msgstr "Ruído" -#: src/views/Edit/Sources/AVFoundation.js:139 +#: src/views/Edit/Sources/AVFoundation.js:145 #: src/views/Edit/Summary.js:30 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:98 msgid "None" msgstr "Nenhum" -#: src/views/Playersite.js:351 -#: src/views/Playersite.js:631 +#: src/views/Playersite.js:353 +#: src/views/Playersite.js:644 msgid "Notes" msgstr "Notas" -#: src/views/Settings.js:1926 -#: src/views/Settings.js:1944 +#: src/views/Settings.js:1931 +#: src/views/Settings.js:1949 msgid "Number of log lines to keep." msgstr "Número de linhas de registro a manter." -#: src/views/Settings.js:1957 +#: src/views/Settings.js:1962 msgid "Number of logs to keep for each process." msgstr "Número de logs a serem mantidos para cada processo." -#: src/views/Playersite.js:800 -#: src/views/Publication/Player.js:463 +#: src/views/Playersite.js:813 +#: src/views/Publication/Player.js:466 msgid "OK" msgstr "OK" -#: src/views/Settings.js:1492 +#: src/views/Settings.js:1497 msgid "One referrer per line, e.g. http://www.example.com" msgstr "Uma referência por linha, por exemplo http://www.example.com" -#: src/views/Playersite.js:785 +#: src/views/Playersite.js:798 msgid "Open" msgstr "Aberto" @@ -1415,32 +1432,32 @@ msgstr "Aberto" msgid "Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources." msgstr "A passagem (cópia) só deve ser desativada se necessário. Cada codificação requer recursos adicionais de CPU/GPU." -#: src/views/Edit/Sources/Network.js:366 +#: src/views/Edit/Sources/Network.js:382 #: src/views/Edit/Wizard/Sources/Network.js:88 #: src/views/Login.js:282 -#: src/views/Publication/Services/Akamai.js:133 +#: src/views/Publication/Services/Akamai.js:134 #: src/views/Publication/Services/DASH.js:198 #: src/views/Publication/Services/DaCast.js:142 #: src/views/Publication/Services/HLS.js:187 #: src/views/Publication/Services/RTSP.js:156 #: src/views/Publication/Services/Red5.js:157 #: src/views/Publication/Services/WOWZA.js:178 -#: src/views/Settings.js:1448 -#: src/views/Settings.js:1606 +#: src/views/Settings.js:1453 +#: src/views/Settings.js:1611 msgid "Password" msgstr "Senha" -#: src/views/Settings.js:1454 -#: src/views/Settings.js:1614 +#: src/views/Settings.js:1459 +#: src/views/Settings.js:1619 msgid "Password for authorization." msgstr "Senha para autorização." -#: src/views/Edit/Sources/Network.js:371 +#: src/views/Edit/Sources/Network.js:387 #: src/views/Edit/Wizard/Sources/Network.js:90 msgid "Password for the device." msgstr "Senha para o dispositivo." -#: src/views/Settings.js:1550 +#: src/views/Settings.js:1555 msgid "Persist viewer statistics" msgstr "Estatísticas persistentes dos telespectadores" @@ -1456,9 +1473,9 @@ msgstr "Plano: <0>Iniciador" msgid "Platforms" msgstr "Plataformas" -#: src/views/Publication/Player.js:320 +#: src/views/Publication/Player.js:323 #: src/views/Settings.js:1144 -#: src/views/Settings.js:1463 +#: src/views/Settings.js:1468 msgid "Playback" msgstr "Reprodução" @@ -1466,16 +1483,16 @@ msgstr "Reprodução" msgid "Player" msgstr "Jogador" -#: src/views/Publication/Player.js:325 +#: src/views/Publication/Player.js:328 msgid "Player URL" msgstr "URL do jogador" -#: src/views/Publication/Player.js:254 +#: src/views/Publication/Player.js:257 msgid "Player settings saved" msgstr "Configurações do jogador salvas" -#: src/Header.js:270 -#: src/views/Playersite.js:372 +#: src/Header.js:267 +#: src/views/Playersite.js:375 msgid "Playersite" msgstr "Playersite" @@ -1484,15 +1501,15 @@ msgstr "Playersite" msgid "Playlist" msgstr "Lista de reprodução" -#: src/views/Main/index.js:332 +#: src/views/Main/index.js:329 msgid "Please check the <0>process log" msgstr "Por favor, verifique o <0>log de processo" -#: src/views/Publication/Services/Akamai.js:28 +#: src/views/Publication/Services/Akamai.js:29 #: src/views/Publication/Services/Bitmovin.js:23 #: src/views/Publication/Services/Brightcove.js:23 -#: src/views/Publication/Services/CDN77.js:24 -#: src/views/Publication/Services/Core.js:25 +#: src/views/Publication/Services/CDN77.js:23 +#: src/views/Publication/Services/Core.js:26 #: src/views/Publication/Services/DASH.js:35 #: src/views/Publication/Services/DaCast.js:26 #: src/views/Publication/Services/HLS.js:37 @@ -1511,8 +1528,8 @@ msgid "Please contact the operator of the service and check what happens." msgstr "Favor contatar o operador do serviço e verificar o que acontece." #: src/views/Playersite.js:122 -#: src/views/Playersite.js:196 -#: src/views/Publication/Player.js:157 +#: src/views/Playersite.js:197 +#: src/views/Publication/Player.js:159 msgid "Please select a file to upload." msgstr "Por favor, selecione um arquivo para carregar." @@ -1520,21 +1537,21 @@ msgstr "Por favor, selecione um arquivo para carregar." msgid "Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources." msgstr "Favor utilizar \"Passthrough (cópia)\", se possível. A codificação requer recursos adicionais de CPU/GPU." -#: src/views/Edit/Wizard/index.js:418 -#: src/views/Edit/Wizard/index.js:916 +#: src/views/Edit/Wizard/index.js:435 +#: src/views/Edit/Wizard/index.js:933 msgid "Please wait. Probe stream data ..." msgstr "Por favor, aguarde. Dados do fluxo da sonda ..." -#: src/views/Edit/Wizard/index.js:1086 +#: src/views/Edit/Wizard/index.js:1103 msgid "Please wait. Setting up the stream ..." msgstr "Por favor, aguarde. Preparando o fluxo ..." #: src/views/Publication/Services/Bitmovin.js:92 -#: src/views/Settings.js:1798 +#: src/views/Settings.js:1803 msgid "Port" msgstr "Porto" -#: src/views/Publication/Player.js:378 +#: src/views/Publication/Player.js:381 msgid "Position" msgstr "Posição" @@ -1552,20 +1569,20 @@ msgstr "Fluxo primário" msgid "Primary stream key" msgstr "Chave de fluxo primário" -#: src/views/Edit/Sources/ALSA.js:131 -#: src/views/Edit/Sources/AVFoundation.js:192 +#: src/views/Edit/Sources/ALSA.js:136 +#: src/views/Edit/Sources/AVFoundation.js:201 #: src/views/Edit/Sources/Framebuffer.js:110 -#: src/views/Edit/Sources/Network.js:489 -#: src/views/Edit/Sources/Network.js:536 -#: src/views/Edit/Sources/Network.js:583 +#: src/views/Edit/Sources/Network.js:505 +#: src/views/Edit/Sources/Network.js:552 +#: src/views/Edit/Sources/Network.js:599 #: src/views/Edit/Sources/Raspicam.js:113 -#: src/views/Edit/Sources/V4L.js:126 +#: src/views/Edit/Sources/V4L.js:131 #: src/views/Edit/Sources/VirtualAudio.js:169 -#: src/views/Edit/Sources/VirtualVideo.js:176 +#: src/views/Edit/Sources/VirtualVideo.js:188 msgid "Probe" msgstr "Sonda" -#: src/views/Edit/index.js:491 +#: src/views/Edit/index.js:493 #: src/views/Publication/Add.js:433 #: src/views/Publication/Edit.js:441 msgid "Process" @@ -1580,40 +1597,41 @@ msgstr "Controle de processo" msgid "Process debug" msgstr "Processo de depuração" -#: src/views/Main/index.js:407 +#: src/views/Main/index.js:413 #: src/views/Publication/Edit.js:591 msgid "Process debug report" msgstr "Relatório de depuração do processo" -#: src/views/Main/index.js:383 -#: src/views/Main/index.js:399 +#: src/views/Main/index.js:389 +#: src/views/Main/index.js:405 #: src/views/Publication/Edit.js:468 #: src/views/Publication/Edit.js:583 msgid "Process details" msgstr "Detalhes do processo" -#: src/views/Main/index.js:386 +#: src/views/Main/index.js:392 msgid "Process report" msgstr "Relatório de processo" -#: src/views/Edit/index.js:400 -#: src/views/Edit/index.js:461 +#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:463 msgid "Processing & Control" msgstr "Processamento e controle" #: src/misc/coders/Encoders/video/H264NVENC.js:92 +#: src/misc/coders/Encoders/video/H264VAAPI.js:82 #: src/misc/coders/settings/Video.js:142 -#: src/views/Edit/Wizard/index.js:590 +#: src/views/Edit/Wizard/index.js:607 msgid "Profile" msgstr "Perfil" -#: src/views/Edit/Sources/Network.js:504 -#: src/views/Publication/Services/Akamai.js:143 -#: src/views/Publication/Services/Akamai.js:181 +#: src/views/Edit/Sources/Network.js:520 +#: src/views/Publication/Services/Akamai.js:144 +#: src/views/Publication/Services/Akamai.js:182 #: src/views/Publication/Services/Bitmovin.js:86 #: src/views/Publication/Services/Brightcove.js:87 -#: src/views/Publication/Services/CDN77.js:91 -#: src/views/Publication/Services/Core.js:90 +#: src/views/Publication/Services/CDN77.js:90 +#: src/views/Publication/Services/Core.js:91 #: src/views/Publication/Services/DASH.js:186 #: src/views/Publication/Services/DaCast.js:110 #: src/views/Publication/Services/DaCast.js:168 @@ -1634,7 +1652,7 @@ msgstr "Protocolo" msgid "Protocols" msgstr "Protocolos" -#: src/views/Settings.js:1302 +#: src/views/Settings.js:1307 msgid "Public domain/s" msgstr "Domínio público/s" @@ -1643,7 +1661,7 @@ msgstr "Domínio público/s" msgid "Publication service not found" msgstr "Serviço de publicação não encontrado" -#: src/views/Playersite.js:317 +#: src/views/Playersite.js:319 msgid "Publication website settings saved" msgstr "Configurações do site de publicação salvas" @@ -1651,15 +1669,16 @@ msgstr "Configurações do site de publicação salvas" msgid "Publications" msgstr "Publicações" -#: src/views/Edit/Sources/Network.js:641 +#: src/views/Edit/Sources/Network.js:657 msgid "Pull Mode" msgstr "Modo Puxar" -#: src/views/Edit/Sources/Network.js:640 +#: src/views/Edit/Sources/Network.js:656 msgid "Pull or recieve the data:" msgstr "Puxar ou receber os dados:" #: src/misc/Progress.js:90 +#: src/misc/coders/Encoders/video/H264VAAPI.js:137 msgid "Quality" msgstr "Qualidade" @@ -1667,37 +1686,37 @@ msgstr "Qualidade" msgid "RGB test pattern" msgstr "Padrão de teste RGB" -#: src/views/Settings.js:1819 +#: src/views/Settings.js:1824 msgid "RTMP app for publishing." msgstr "Aplicação RTMP para publicação." -#: src/views/Settings.js:1760 +#: src/views/Settings.js:1765 msgid "RTMP server" msgstr "Servidor RTMP" -#: src/views/Edit/Sources/Network.js:556 +#: src/views/Edit/Sources/Network.js:572 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:50 msgid "RTMP server is not enabled" msgstr "O servidor RTMP não está habilitado" -#: src/views/Settings.js:1806 +#: src/views/Settings.js:1811 msgid "RTMP server listen address." msgstr "Endereço de escuta do servidor RTMP." -#: src/views/Settings.js:1832 +#: src/views/Settings.js:1837 msgid "RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'" msgstr "Ficha RTMP para publicação e reprodução. O token é o valor do parâmetro de consulta de URL 'token'" #: src/views/Settings.js:1146 -#: src/views/Settings.js:1755 +#: src/views/Settings.js:1760 msgid "RTMP/S" msgstr "RTMP/S" -#: src/views/Settings.js:1767 +#: src/views/Settings.js:1772 msgid "RTMPS server" msgstr "Servidor RTMPS" -#: src/views/Edit/Sources/Network.js:389 +#: src/views/Edit/Sources/Network.js:405 msgid "RTSP" msgstr "RTSP" @@ -1707,6 +1726,7 @@ msgid "Raspberry Pi camera" msgstr "Câmera Raspberry Pi" #: src/misc/coders/Encoders/video/H264NVENC.js:144 +#: src/misc/coders/Encoders/video/H264VAAPI.js:63 msgid "Rate control" msgstr "Controle de tarifas" @@ -1714,11 +1734,11 @@ msgstr "Controle de tarifas" msgid "Ratio" msgstr "Relação" -#: src/views/Edit/Sources/Network.js:418 +#: src/views/Edit/Sources/Network.js:434 msgid "Read input at native speed" msgstr "Ler a entrada em velocidade nativa" -#: src/views/Edit/Sources/Network.js:642 +#: src/views/Edit/Sources/Network.js:658 msgid "Receive Mode" msgstr "Modo Receber" @@ -1732,13 +1752,13 @@ msgstr "Reconecte" msgid "Reconnect delay (seconds)" msgstr "Retardo de reconexão (segundos)" -#: src/views/Main/index.js:343 +#: src/views/Main/index.js:340 #: src/views/Publication/Process.js:68 #: src/views/Publication/Process.js:81 msgid "Reconnecting in {0}s" msgstr "Reconexão em {0}s" -#: src/views/Settings.js:1994 +#: src/views/Settings.js:1999 msgid "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." msgstr "A reconexão ao Restreamer Core falhou durante os últimos {RETRIES} segundos." @@ -1746,6 +1766,14 @@ msgstr "A reconexão ao Restreamer Core falhou durante os últimos {RETRIES} seg msgid "Reconnecting to Restreamer Core failed." msgstr "A reconexão com o Restreamer Core falhou." +#: src/views/Edit/Sources/ALSA.js:122 +#: src/views/Edit/Sources/AVFoundation.js:181 +#: src/views/Edit/Sources/V4L.js:117 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:135 +#: src/views/Edit/Wizard/Sources/V4L.js:120 +msgid "Refresh" +msgstr "Atualização" + #: src/views/Publication/Services/Restream.js:86 #: src/views/Publication/Services/Twitch.js:78 #: src/views/Publication/Services/Twitter.js:150 @@ -1754,36 +1782,36 @@ msgid "Region" msgstr "Região" #: src/views/Password.js:159 -#: src/views/Settings.js:2014 +#: src/views/Settings.js:2019 msgid "Reload" msgstr "Recarregar" -#: src/views/Settings.js:1632 +#: src/views/Settings.js:1637 msgid "Remove the oldest entries if the /memfs is full" msgstr "Remover as entradas mais antigas se o /memfs estiver cheio" -#: src/views/Settings.js:1779 +#: src/views/Settings.js:1784 msgid "Requires activation" msgstr "Requer ativação" -#: src/views/Settings.js:1201 -#: src/views/Settings.js:2031 -#: src/views/Settings.js:2044 -#: src/views/Settings.js:2053 +#: src/views/Settings.js:1206 +#: src/views/Settings.js:2036 +#: src/views/Settings.js:2049 +#: src/views/Settings.js:2058 msgid "Restart" msgstr "Reinicie" -#: src/views/Settings.js:2022 +#: src/views/Settings.js:2027 msgid "Restart required" msgstr "Reinício necessário" #: src/views/Password.js:136 -#: src/views/Settings.js:1982 +#: src/views/Settings.js:1987 msgid "Restarting" msgstr "Reinicialização" #: src/views/Password.js:141 -#: src/views/Settings.js:1987 +#: src/views/Settings.js:1992 msgid "Restarting Restreamer Core ..." msgstr "Reiniciando o Núcleo de Restreamer ..." @@ -1791,15 +1819,15 @@ msgstr "Reiniciando o Núcleo de Restreamer ..." msgid "Restarting the application failed." msgstr "A reinicialização do pedido falhou." -#: src/views/Settings.js:1229 +#: src/views/Settings.js:1234 msgid "Restreamer Service" msgstr "Serviço de Restreamer" -#: src/views/Main/index.js:242 +#: src/views/Main/index.js:239 msgid "Retrieving stream data ..." msgstr "Recuperando dados do fluxo ..." -#: src/views/Edit/Wizard/index.js:1111 +#: src/views/Edit/Wizard/index.js:1128 #: src/views/Invalid.js:43 #: src/views/Settings.js:1116 msgid "Retry" @@ -1813,13 +1841,13 @@ msgstr "Regra" msgid "Sampling" msgstr "Amostragem" -#: src/views/Edit/Wizard/index.js:1070 -#: src/views/Edit/index.js:558 -#: src/views/Playersite.js:775 +#: src/views/Edit/Wizard/index.js:1087 +#: src/views/Edit/index.js:560 +#: src/views/Playersite.js:788 #: src/views/Publication/Add.js:534 #: src/views/Publication/Edit.js:571 -#: src/views/Publication/Player.js:449 -#: src/views/Settings.js:1972 +#: src/views/Publication/Player.js:452 +#: src/views/Settings.js:1977 msgid "Save" msgstr "Salvar" @@ -1827,7 +1855,7 @@ msgstr "Salvar" msgid "Scale" msgstr "Escala" -#: src/views/Settings.js:1718 +#: src/views/Settings.js:1723 msgid "Seconds to keep files in cache." msgstr "Segundos para manter os arquivos em cache." @@ -1843,24 +1871,24 @@ msgstr "Segundos até o término de um processo parado." msgid "Seconds until the snapshot/thumbnail of the video source is updated." msgstr "Segundos até que o instantâneo/imagem da fonte de vídeo seja atualizado." -#: src/views/Settings.js:1468 +#: src/views/Settings.js:1473 msgid "Security" msgstr "Segurança" -#: src/views/Publication/Services/Core.js:127 +#: src/views/Publication/Services/Core.js:122 #: src/views/Publication/Services/Livespotting.js:103 msgid "Security token" msgstr "Ficha de segurança" -#: src/views/Publication/Player.js:339 +#: src/views/Publication/Player.js:342 msgid "Seekbar color" msgstr "Cor da barra de busca" -#: src/misc/controls/HLS.js:59 +#: src/misc/controls/HLS.js:62 msgid "Segment length (seconds)" msgstr "Comprimento do segmento (segundos)" -#: src/misc/controls/HLS.js:64 +#: src/misc/controls/HLS.js:67 msgid "Segment will be cut on the following keyframe after this time has passed. 2 is recommended." msgstr "O segmento será cortado no seguinte quadro-chave após este tempo ter passado. 2 é recomendado." @@ -1869,19 +1897,19 @@ msgstr "O segmento será cortado no seguinte quadro-chave após este tempo ter p msgid "Segmentation" msgstr "Segmentação" -#: src/views/Edit/Sources/ALSA.js:114 -#: src/views/Edit/Sources/AVFoundation.js:166 +#: src/views/Edit/Sources/ALSA.js:108 +#: src/views/Edit/Sources/AVFoundation.js:172 #: src/views/Edit/Sources/Framebuffer.js:99 #: src/views/Edit/Sources/Raspicam.js:96 -#: src/views/Edit/Sources/V4L.js:109 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:101 +#: src/views/Edit/Sources/V4L.js:103 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:120 #: src/views/Edit/Wizard/Sources/Raspicam.js:95 -#: src/views/Edit/Wizard/Sources/V4L.js:98 +#: src/views/Edit/Wizard/Sources/V4L.js:114 msgid "Select a device:" msgstr "Selecione um dispositivo:" #: src/views/Edit/Sources/VirtualAudio.js:84 -msgid "Select audio Source:" +msgid "Select audio source:" msgstr "Selecione a fonte de áudio:" #: src/views/Edit/Sources/VirtualVideo.js:114 @@ -1892,32 +1920,32 @@ msgstr "Selecione a fonte ..." msgid "Select video source:" msgstr "Selecione a fonte de vídeo:" -#: src/views/Edit/Wizard/index.js:261 +#: src/views/Edit/Wizard/index.js:268 msgid "Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer)." msgstr "Selecione se você puxa o fluxo de uma <0> fonte de rede (como uma câmera de rede) ou o <1> servidor RTMP interno (por exemplo, fluxos OBS para o Restreamer)." -#: src/misc/EncodingSelect.js:184 +#: src/misc/EncodingSelect.js:196 msgid "Select your encoding setting:" msgstr "Selecione sua configuração de codificação:" -#: src/views/Playersite.js:575 +#: src/views/Playersite.js:588 msgid "Selected" msgstr "Selecionado" -#: src/views/Playersite.js:392 +#: src/views/Playersite.js:395 msgid "Selected channel" msgstr "Canal selecionado" -#: src/views/Playersite.js:438 +#: src/views/Playersite.js:449 msgid "Selection" msgstr "Seleção" -#: src/views/Settings.js:1185 +#: src/views/Settings.js:1190 msgid "Send anonymous metrics (helps us for future development)" msgstr "Enviar métricas anônimas (nos ajuda para o desenvolvimento futuro)" -#: src/views/Edit/Sources/Network.js:526 -#: src/views/Edit/Sources/Network.js:573 +#: src/views/Edit/Sources/Network.js:542 +#: src/views/Edit/Sources/Network.js:589 #: src/views/Edit/Wizard/Sources/InternalHLS.js:48 #: src/views/Edit/Wizard/Sources/InternalRTMP.js:68 msgid "Send stream to this address:" @@ -1931,10 +1959,10 @@ msgstr "Enviar vídeo para Framebuffer" msgid "Server" msgstr "Servidor" -#: src/Header.js:260 +#: src/Header.js:257 #: src/views/Login.js:246 #: src/views/Settings.js:1140 -#: src/views/Settings.js:1215 +#: src/views/Settings.js:1220 msgid "Service" msgstr "Serviço" @@ -1943,7 +1971,7 @@ msgstr "Serviço" msgid "Service name" msgstr "Nome do serviço" -#: src/views/Settings.js:1266 +#: src/views/Settings.js:1271 msgid "Service token for monitoring." msgstr "Ficha de serviço para monitoramento." @@ -1951,15 +1979,15 @@ msgstr "Ficha de serviço para monitoramento." msgid "Sessions" msgstr "Sessões" -#: src/views/Settings.js:1397 +#: src/views/Settings.js:1402 msgid "Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Define um limite de largura de banda em Mbit por segundo para a transferência de dados HLS de saída. Todos os serviços, tais como RTMP e processos de saída, são incluídos no cálculo. Se a largura de banda for excedida, os visualizadores de HLS recebem o código de status HTTP 509 (Limite de Largura de Banda Excedido). 0 é ilimitado." -#: src/views/Settings.js:1381 +#: src/views/Settings.js:1386 msgid "Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." msgstr "Define um limite de visualização para as sessões de HLS. Se o limite for excedido, os espectadores de HLS recebem o código de status HTTP 509 (Limite de Largura de Banda Excedido). 0 é ilimitado." -#: src/views/Settings.js:1220 +#: src/views/Settings.js:1225 msgid "Setting for connection to the service." msgstr "Configuração para conexão com o serviço." @@ -1971,11 +1999,11 @@ msgstr "Configurações" msgid "Settings (expert mode)" msgstr "Configurações (modo especialista)" -#: src/views/Settings.js:1648 +#: src/views/Settings.js:1653 msgid "Settings for /data path. The access is protected by" msgstr "Configurações para /dados de caminho. O acesso é protegido por" -#: src/views/Settings.js:1575 +#: src/views/Settings.js:1580 msgid "Settings for /memfs path." msgstr "Configurações para /memfs caminho." @@ -1983,7 +2011,11 @@ msgstr "Configurações para /memfs caminho." msgid "Settings saved. All changes will be applied after restarting the application." msgstr "Configurações salvas. Todas as mudanças serão aplicadas após reiniciar a aplicação." -#: src/views/Playersite.js:420 +#: src/views/Playersite.js:417 +msgid "Share button" +msgstr "Botão compartilhar" + +#: src/views/Playersite.js:431 msgid "Shows a reference to the project." msgstr "Mostra uma referência ao projeto." @@ -1995,7 +2027,7 @@ msgstr "Cadastre-se (gratuito)" msgid "Silence" msgstr "Silêncio" -#: src/views/Edit/Wizard/index.js:881 +#: src/views/Edit/Wizard/index.js:898 msgid "Silence Audio" msgstr "Áudio do silêncio" @@ -2003,7 +2035,7 @@ msgstr "Áudio do silêncio" msgid "Sine" msgstr "Sine" -#: src/views/Playersite.js:378 +#: src/views/Playersite.js:381 msgid "Sitename" msgstr "Nome do Sitename" @@ -2011,7 +2043,8 @@ msgstr "Nome do Sitename" msgid "Size" msgstr "Tamanho" -#: src/views/Edit/index.js:480 +#: src/views/Edit/index.js:482 +#: src/views/Main/index.js:372 msgid "Snapshot" msgstr "Snapshot" @@ -2019,7 +2052,7 @@ msgstr "Snapshot" msgid "Social-login (OAuth2, 2FA)" msgstr "Login social (OAuth2, 2FA)" -#: src/views/Edit/Sources/Network.js:402 +#: src/views/Edit/Sources/Network.js:418 msgid "Socket timeout (microseconds)" msgstr "Tempo limite da tomada (microssegundos)" @@ -2040,33 +2073,33 @@ msgstr "Velocidade" msgid "Stale timeout (seconds)" msgstr "Tempo esgotado (segundos)" -#: src/views/Publication/Player.js:319 -#: src/views/Settings.js:1500 +#: src/views/Publication/Player.js:322 +#: src/views/Settings.js:1505 msgid "Statistics" msgstr "Estatísticas" #: src/views/Settings.js:1145 -#: src/views/Settings.js:1567 +#: src/views/Settings.js:1572 msgid "Storage" msgstr "Armazenamento" -#: src/views/Settings.js:1558 +#: src/views/Settings.js:1563 msgid "Stores the viewer statistics to the disk." msgstr "Armazena as estatísticas do telespectador no disco." #: src/views/Edit/StreamSelect.js:30 #: src/views/Edit/StreamSelect.js:36 #: src/views/Edit/StreamSelect.js:81 -#: src/views/Edit/Wizard/index.js:861 +#: src/views/Edit/Wizard/index.js:878 msgid "Stream" msgstr "Corrente" -#: src/views/Publication/Services/Akamai.js:155 -#: src/views/Publication/Services/CDN77.js:103 +#: src/views/Publication/Services/Akamai.js:156 +#: src/views/Publication/Services/CDN77.js:102 msgid "Stream URL" msgstr "URL do fluxo" -#: src/views/Publication/Services/CDN77.js:114 +#: src/views/Publication/Services/CDN77.js:113 #: src/views/Publication/Services/DaCast.js:153 #: src/views/Publication/Services/Dummy.js:274 #: src/views/Publication/Services/Instagram.js:84 @@ -2079,41 +2112,41 @@ msgid "Stream key" msgstr "Chave do fluxo" #: src/views/Publication/Services/Brightcove.js:101 -#: src/views/Publication/Services/Core.js:118 +#: src/views/Publication/Services/Core.js:113 #: src/views/Publication/Services/Red5.js:136 #: src/views/Publication/Services/WOWZA.js:158 msgid "Stream name" msgstr "Nome do riacho" -#: src/views/Publication/Services/Akamai.js:166 +#: src/views/Publication/Services/Akamai.js:167 msgid "Stream names" msgstr "Nomes dos fluxos" -#: src/views/Playersite.js:414 +#: src/views/Playersite.js:425 msgid "Support datarhei Restreamer" msgstr "Suporte datarhei Restreamer" -#: src/views/Edit/Sources/Network.js:345 +#: src/views/Edit/Sources/Network.js:361 #: src/views/Edit/Wizard/Sources/Network.js:72 msgid "Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more." msgstr "Suporta HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT e muito mais." #: src/Footer.js:184 -#: src/Header.js:278 -#: src/views/Settings.js:1846 +#: src/Header.js:275 +#: src/views/Settings.js:1851 msgid "System" msgstr "Sistema" -#: src/views/Playersite.js:349 -#: src/views/Playersite.js:429 +#: src/views/Playersite.js:351 +#: src/views/Playersite.js:440 msgid "Template" msgstr "Modelo" -#: src/views/Playersite.js:451 +#: src/views/Playersite.js:462 msgid "Template to be used for creating the publication website. The delete button removes the selection from the system." msgstr "Modelo a ser utilizado para a criação do site de publicação. O botão apagar remove a seleção do sistema." -#: src/views/Playersite.js:653 +#: src/views/Playersite.js:666 msgid "Terms" msgstr "Termos" @@ -2125,7 +2158,7 @@ msgstr "Padrão de teste" msgid "Test pattern (extended)" msgstr "Padrão de teste (estendido)" -#: src/views/Playersite.js:506 +#: src/views/Playersite.js:519 msgid "Text colors" msgstr "Cores do texto" @@ -2133,7 +2166,7 @@ msgstr "Cores do texto" msgid "The amplitude (0.0 - 1.0) of the generated audio stream" msgstr "A amplitude (0,0 - 1,0) do fluxo de áudio gerado" -#: src/views/Settings.js:1205 +#: src/views/Settings.js:1210 msgid "The application is using an older version of the settings." msgstr "A aplicação está usando uma versão mais antiga das configurações." @@ -2145,20 +2178,20 @@ msgstr "A taxa de bits do fluxo de áudio." msgid "The carrier frequency" msgstr "A freqüência portadora" -#: src/views/Edit/index.js:351 +#: src/views/Edit/index.js:352 msgid "The channel \"{0}\" could not be deleted" msgstr "O canal \"{0}\" não pôde ser excluído" -#: src/views/Edit/index.js:360 +#: src/views/Edit/index.js:361 msgid "The channel \"{0}\" has been deleted" msgstr "O canal \"{0}\" foi excluído" -#: src/views/Edit/index.js:602 +#: src/views/Edit/index.js:604 msgid "The deletion of this channel can not be recovered. All publications of this channel will be removed." msgstr "A eliminação deste canal não pode ser recuperada. Todas as publicações deste canal serão removidas." -#: src/views/Edit/Wizard/index.js:161 -#: src/views/Edit/index.js:283 +#: src/views/Edit/Wizard/index.js:170 +#: src/views/Edit/index.js:290 msgid "The input profile is not complete. Please define a video and audio source." msgstr "O perfil de entrada não está completo. Por favor, defina uma fonte de vídeo e áudio." @@ -2166,7 +2199,7 @@ msgstr "O perfil de entrada não está completo. Por favor, defina uma fonte de msgid "The layout of the audio stream." msgstr "O layout do fluxo de áudio." -#: src/misc/controls/HLS.js:76 +#: src/misc/controls/HLS.js:79 msgid "The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended." msgstr "O número máximo de segmentos da playlist. 0 conterá todos os segmentos. 6 é recomendado." @@ -2178,7 +2211,7 @@ msgstr "A cor do ruído" msgid "The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission." msgstr "A pessoa que associou uma obra a esta escritura dedicou a obra ao domínio público, renunciando a todos os seus direitos à obra em todo o mundo sob a lei de direitos autorais, incluindo todos os direitos conexos e vizinhos, na medida do permitido por lei. Você pode copiar, modificar, distribuir e executar a obra, mesmo para fins comerciais, tudo sem pedir permissão." -#: src/views/Settings.js:1310 +#: src/views/Settings.js:1315 msgid "The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma." msgstr "O nome de domínio acessível ao público do host em que este Restreamer está funcionando. Separe vários nomes de domínio por uma vírgula." @@ -2202,68 +2235,58 @@ msgstr "O serviço de publicação foi criado" msgid "The sample rate of the audio stream." msgstr "A taxa de amostragem do fluxo de áudio." -#: src/views/Playersite.js:151 -#: src/views/Playersite.js:225 -#: src/views/Publication/Player.js:186 +#: src/views/Playersite.js:152 +#: src/views/Playersite.js:227 +#: src/views/Publication/Player.js:189 msgid "The selected file is too big ({0} bytes). Only {1} bytes are allowed." msgstr "O arquivo selecionado é muito grande ({0} bytes). Somente {1} bytes são permitidos." -#: src/views/Playersite.js:140 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {imageAcceptString}" -msgstr "O tipo de arquivo selecionado ({0}) é agora permitido. Os tipos de arquivo permitidos são {imageAcceptString}" - -#: src/views/Publication/Player.js:175 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {logoAcceptString}" -msgstr "O tipo de arquivo selecionado ({0}) é agora permitido. Os tipos de arquivo permitidos são {logoAcceptString}" - -#: src/views/Playersite.js:214 -msgid "The selected file type ({0}) is now allowed. Allowed file types are {templateAcceptString}" -msgstr "O tipo de arquivo selecionado ({0}) é agora permitido. Os tipos de arquivo permitidos são {templateAcceptString}" +#: src/views/Playersite.js:141 +#: src/views/Playersite.js:216 +#: src/views/Publication/Player.js:178 +msgid "The selected file type ({0}) is not allowed. Allowed file types are {types}" +msgstr "O tipo de arquivo selecionado ({0}) não é permitido. Os tipos de arquivo permitidos são {types}." #: src/views/Publication/Edit.js:230 msgid "The settings for \"{0}\" have been saved" msgstr "As configurações para \"{0}\" foram salvas" -#: src/views/Edit/Wizard/index.js:829 +#: src/views/Edit/Wizard/index.js:846 msgid "The source doesn't provide any audio streams." msgstr "A fonte não fornece nenhum fluxo de áudio." -#: src/views/Edit/Profile.js:478 +#: src/views/Edit/Profile.js:487 msgid "The source doesn't provide any audio streams. Please check the <0>probe details." msgstr "A fonte não fornece nenhum fluxo de áudio. Por favor, verifique os detalhes da <0>probe." -#: src/views/Edit/Wizard/index.js:837 +#: src/views/Edit/Wizard/index.js:854 msgid "The source doesn't provide any compatible audio streams." msgstr "A fonte não fornece nenhum fluxo de áudio compatível." -#: src/views/Edit/Wizard/index.js:378 +#: src/views/Edit/Wizard/index.js:392 msgid "The source doesn't provide any compatible video streams. Please check the <0>requirements." msgstr "A fonte não fornece nenhuma transmissão de vídeo compatível. Por favor, verifique as <0>requisitos." -#: src/views/Edit/Profile.js:349 +#: src/views/Edit/Profile.js:357 msgid "The source doesn't provide any video streams. Please check the <0>probe details." msgstr "A fonte não fornece nenhuma transmissão de vídeo. Por favor, verifique os detalhes da <0>probe." -#: src/views/Edit/Wizard/index.js:370 +#: src/views/Edit/Wizard/index.js:384 msgid "The source doesn't provide any video streams. Please check the device." msgstr "A fonte não fornece nenhuma transmissão de vídeo. Por favor, verifique o dispositivo." -#: src/views/Edit/Wizard/index.js:848 +#: src/views/Edit/Wizard/index.js:865 msgid "The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel." msgstr "A fonte de vídeo não fornece nenhum fluxo de áudio compatível. <0>Silêncio de áudio é recomendado. Serviços como, por exemplo, YouTube, Facebook & Co. requerem um canal de áudio." -#: src/views/Edit/Wizard/index.js:586 +#: src/views/Edit/Wizard/index.js:603 msgid "The video source is compatible. Select the desired resolution:" msgstr "A fonte de vídeo é compatível. Selecione a resolução desejada:" -#: src/views/Settings.js:1177 +#: src/views/Settings.js:1182 msgid "There are updates available. Here you get more information." msgstr "Há atualizações disponíveis. Aqui você obtém mais informações." -#: src/views/Playersite.js:238 -msgid "There war an error during upload: {0}" -msgstr "Há um erro durante o upload: {0}" - #: src/views/Settings.js:911 msgid "There was a problem storing the settings. Settings not saved." msgstr "Havia um problema no armazenamento das configurações. As configurações não foram salvas." @@ -2272,12 +2295,13 @@ msgstr "Havia um problema no armazenamento das configurações. As configuraçõ msgid "There was an error connecting to Restreamer Core at {0}." msgstr "Houve um erro de conexão com o Restreamer Core em {0}." -#: src/views/Playersite.js:164 -#: src/views/Publication/Player.js:199 +#: src/views/Playersite.js:165 +#: src/views/Playersite.js:240 +#: src/views/Publication/Player.js:202 msgid "There was an error during upload: {0}" msgstr "Houve um erro durante o upload: {0}" -#: src/views/Edit/Wizard/index.js:1106 +#: src/views/Edit/Wizard/index.js:1123 msgid "There was an error setting up the stream." msgstr "Houve um erro ao configurar o fluxo." @@ -2325,7 +2349,7 @@ msgstr "Esta licença permite aos reutilizadores distribuir, remixar, adaptar e msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." msgstr "Esta licença permite aos reutilizadores distribuir, remixar, adaptar e construir sobre o material em qualquer meio ou formato, desde que a atribuição seja dada ao criador. A licença permite o uso comercial. Se você remixar, adaptar, ou construir sobre o material, você deve licenciar o material modificado sob termos idênticos." -#: src/views/Edit/index.js:583 +#: src/views/Edit/index.js:585 msgid "This source cannot be edited while it is in use. To continue, you have to disconnect the source." msgstr "Esta fonte não pode ser editada enquanto estiver em uso. Para continuar, você tem que desconectar a fonte." @@ -2341,12 +2365,12 @@ msgstr "Esta versão da IU não suporta o Núcleo conectado ({0}). A interface d msgid "This version of the UI is compatible." msgstr "Esta versão da IU é compatível." -#: src/views/Settings.js:1545 +#: src/views/Settings.js:1550 msgid "Time until an inactive viewer connection is treated as closed." msgstr "Tempo até que uma conexão inativa do visor seja tratada como fechada." -#: src/views/Settings.js:1258 -#: src/views/Settings.js:1824 +#: src/views/Settings.js:1263 +#: src/views/Settings.js:1829 msgid "Token" msgstr "Token" @@ -2391,7 +2415,7 @@ msgid "Transmit the main source to an RTSP Server. More details about the settin msgstr "Transmitir a fonte principal para um servidor RTSP. Mais detalhes sobre as configurações podem ser encontrados <0>aqui." #: src/views/Publication/Services/Red5.js:17 -msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." +msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." msgstr "Transmitir a fonte principal para um Servidor Red5/Pro. Mais detalhes sobre as configurações podem ser encontrados <0>aqui." #: src/views/Publication/Services/SRT.js:25 @@ -2406,7 +2430,7 @@ msgstr "Transmitir a fonte principal para um servidor UDP. Mais detalhes sobre a msgid "Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here." msgstr "Transmitir a fonte principal para um servidor WOWZA. Mais detalhes sobre as configurações podem ser encontrados <0>aqui." -#: src/views/Publication/Services/Core.js:17 +#: src/views/Publication/Services/Core.js:18 msgid "Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here." msgstr "Transmitir a fonte principal a um datarhei Core Ressource. Mais detalhes sobre as configurações podem ser encontrados <0>aqui." @@ -2414,7 +2438,7 @@ msgstr "Transmitir a fonte principal a um datarhei Core Ressource. Mais detalhes msgid "Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here." msgstr "Transmitir a fonte principal a um livepotting.com Ressource. Mais detalhes sobre as configurações podem ser encontrados <0>aqui." -#: src/views/Publication/Services/Akamai.js:16 +#: src/views/Publication/Services/Akamai.js:17 msgid "Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here." msgstr "Transmita a fonte principal para a Akamai (MSL) Media Services Live. Mais detalhes sobre as configurações do codificador MSL podem ser encontrados em <0>here." @@ -2439,7 +2463,7 @@ msgstr "Transmite seu fluxo de vídeo com a chave necessária, que foi gerada no msgid "Tune" msgstr "Tune" -#: src/views/Edit/Sources/Network.js:393 +#: src/views/Edit/Sources/Network.js:409 #: src/views/Edit/Wizard/Sources/Network.js:77 msgid "UDP transport" msgstr "Transporte UDP" @@ -2448,7 +2472,7 @@ msgstr "Transporte UDP" msgid "Unable to load the config." msgstr "Incapaz de carregar a configuração." -#: src/views/Settings.js:1240 +#: src/views/Settings.js:1245 msgid "Unique ident on the service." msgstr "Identidade única no serviço." @@ -2456,22 +2480,22 @@ msgstr "Identidade única no serviço." msgid "Unknown" msgstr "Desconhecido" -#: src/views/Playersite.js:584 +#: src/views/Playersite.js:597 msgid "Unselected" msgstr "Não selecionado" -#: src/views/Playersite.js:469 -#: src/views/Playersite.js:486 -#: src/views/Playersite.js:621 -#: src/views/Publication/Player.js:370 +#: src/views/Playersite.js:482 +#: src/views/Playersite.js:499 +#: src/views/Playersite.js:634 +#: src/views/Publication/Player.js:373 msgid "Upload" msgstr "Upload" -#: src/views/Playersite.js:279 +#: src/views/Playersite.js:281 msgid "Uploading the file failed" msgstr "O upload do arquivo falhou" -#: src/views/Publication/Player.js:229 +#: src/views/Publication/Player.js:232 msgid "Uploading the logo failed" msgstr "O carregamento do logotipo falhou" @@ -2485,15 +2509,15 @@ msgstr "Horário de funcionamento" msgid "Use Auth0 for your running Restreamer Core. More <0>details." msgstr "Use o Auth0 para seu Restreamer Core em funcionamento. Mais <0>detalhes." -#: src/views/Edit/index.js:425 +#: src/views/Edit/index.js:426 msgid "Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode." msgstr "Use o assistente (<0/>) para uma configuração rápida e fácil, ou edite (<1/>) as fontes diretamente no modo personalizado." -#: src/views/Edit/Wizard/index.js:1051 +#: src/views/Edit/Wizard/index.js:1068 msgid "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Use seus direitos autorais e escolha a licença de imagem correta. Seja gratuita para todos ou altamente restrita. Discuta brevemente o que outros estão autorizados a fazer com sua imagem." -#: src/views/Edit/index.js:528 +#: src/views/Edit/index.js:530 msgid "Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." msgstr "Use seus direitos autorais e escolha a licença de imagem correta. Seja gratuita para todos ou altamente restrita. Discuta brevemente o que outros estão autorizados a fazer com sua imagem." @@ -2501,7 +2525,7 @@ msgstr "Use seus direitos autorais e escolha a licença de imagem correta. Seja msgid "User registration" msgstr "Registro de usuário" -#: src/views/Edit/Sources/Network.js:354 +#: src/views/Edit/Sources/Network.js:370 #: src/views/Edit/Wizard/Sources/Network.js:81 #: src/views/Login.js:272 #: src/views/Publication/Services/DASH.js:195 @@ -2510,17 +2534,17 @@ msgstr "Registro de usuário" #: src/views/Publication/Services/RTSP.js:153 #: src/views/Publication/Services/Red5.js:146 #: src/views/Publication/Services/WOWZA.js:168 -#: src/views/Settings.js:1435 -#: src/views/Settings.js:1593 +#: src/views/Settings.js:1440 +#: src/views/Settings.js:1598 msgid "Username" msgstr "Nome de usuário" -#: src/views/Settings.js:1441 -#: src/views/Settings.js:1601 +#: src/views/Settings.js:1446 +#: src/views/Settings.js:1606 msgid "Username for authorization." msgstr "Nome de usuário para autorização." -#: src/views/Edit/Sources/Network.js:359 +#: src/views/Edit/Sources/Network.js:375 #: src/views/Edit/Wizard/Sources/Network.js:83 msgid "Username for the device." msgstr "Nome de usuário para o dispositivo." @@ -2533,24 +2557,24 @@ msgstr "ID DA VPU" msgid "Video" msgstr "Vídeo" -#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:126 #: src/views/Edit/Sources/Raspicam.js:89 -#: src/views/Edit/Sources/V4L.js:96 -#: src/views/Edit/Wizard/Sources/AVFoundation.js:66 +#: src/views/Edit/Sources/V4L.js:109 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 #: src/views/Edit/Wizard/Sources/Raspicam.js:86 -#: src/views/Edit/Wizard/Sources/V4L.js:89 +#: src/views/Edit/Wizard/Sources/V4L.js:105 msgid "Video device" msgstr "Dispositivo de vídeo" -#: src/views/Edit/Profile.js:313 -#: src/views/Edit/ProfileSummary.js:65 +#: src/views/Edit/Profile.js:320 +#: src/views/Edit/ProfileSummary.js:66 #: src/views/Publication/Edit.js:517 msgid "Video settings" msgstr "Configurações de vídeo" -#: src/views/Edit/Wizard/index.js:257 -#: src/views/Edit/Wizard/index.js:341 -#: src/views/Edit/Wizard/index.js:579 +#: src/views/Edit/Wizard/index.js:264 +#: src/views/Edit/Wizard/index.js:354 +#: src/views/Edit/Wizard/index.js:596 msgid "Video setup" msgstr "Configuração do vídeo" @@ -2566,7 +2590,7 @@ msgid "Viewer" msgstr "Visualizador" #: src/views/Edit/Sources/VirtualAudio.js:187 -#: src/views/Edit/Sources/VirtualVideo.js:194 +#: src/views/Edit/Sources/VirtualVideo.js:206 msgid "Virtual source" msgstr "Fonte virtual" @@ -2574,7 +2598,7 @@ msgstr "Fonte virtual" msgid "Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs." msgstr "Bem-vindo à Restreamer v2, a solução para a publicação rápida e fácil de vídeos. Grátis para uso privado e comercial. Mais ajuda no <0>docs." -#: src/views/Settings.js:1580 +#: src/views/Settings.js:1585 msgid "Write protection" msgstr "Proteção de escrita" @@ -2582,19 +2606,19 @@ msgstr "Proteção de escrita" msgid "YUV test pattern" msgstr "Padrão de teste YUV" -#: src/views/Edit/Wizard/index.js:1160 +#: src/views/Edit/Wizard/index.js:1177 msgid "Yes" msgstr "Sim" -#: src/views/Edit/Wizard/index.js:1142 +#: src/views/Edit/Wizard/index.js:1159 msgid "You can't abort the wizard because at least one input must be defined." msgstr "Você não pode abortar o assistente porque pelo menos uma entrada deve ser definida." -#: src/views/Settings.js:2036 +#: src/views/Settings.js:2041 msgid "You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?" msgstr "Você mudou a configuração. Para que as mudanças tenham efeito, você tem que reiniciar a aplicação. Você quer reiniciar agora?" -#: src/views/Main/index.js:350 +#: src/views/Main/index.js:347 #: src/views/Publication/Process.js:73 msgid "You have to reconnect manually" msgstr "Você tem que reconectar manualmente" @@ -2603,11 +2627,11 @@ msgstr "Você tem que reconectar manualmente" msgid "You have unsaved changes. Please save them before you can control the service again." msgstr "Você tem mudanças não salvas. Por favor, salve-as antes de poder controlar o serviço novamente." -#: src/views/Edit/Wizard/index.js:599 +#: src/views/Edit/Wizard/index.js:616 msgid "Your stream needs to be encoded, but there's no suitable encoder available." msgstr "Seu fluxo precisa ser codificado, mas não há um codificador adequado disponível." -#: src/views/Edit/Wizard/index.js:606 +#: src/views/Edit/Wizard/index.js:623 msgid "Your stream needs to be encoded. Choose the desired encoder:" msgstr "Seu fluxo precisa ser codificado. Escolha o codificador desejado:" @@ -2619,7 +2643,7 @@ msgstr "azul" msgid "brown" msgstr "marrom" -#: src/views/Publication/Player.js:328 +#: src/views/Publication/Player.js:331 msgid "iframe code" msgstr "código iframe" diff --git a/src/locales/ru/messages.js b/src/locales/ru/messages.js new file mode 100644 index 0000000..0f85f5f --- /dev/null +++ b/src/locales/ru/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:{"<0>Compatibility list":"<0>Список совместимости","<0>Show probe details":"<0>Показать подробности","ALSA":"ALSA","API endpoint not found. Settings not saved.":"Конечная точка API не найдена. Настройки не сохранены.","AVFoundation":"AVFoundation","Abort":"Отменить","About":"О","Add":"Добавить","Add Publication":"Добавить публикацию","Add external widgets and styles to the publication site. You can find some examples on the help page.":"Добавьте внешние виджеты и стили на сайт публикации. Вы можете найти несколько примеров на странице помощи.","Add new channel":"Добавить новый канал","Add: {0}":["Добавить: ",["0"]],"Address":"Адрес","Address for the background image.":"Адрес для фонового изображения.","Address to listen on for HTTP requests.":"Адрес для прослушивания HTTP-запросов.","Address to listen on for HTTPS requests.":"Адрес для прослушивания HTTPS-запросов.","Adjust publication site colors and background as you like.":"Настройте цвета и фон сайта публикации по своему усмотрению.","Advanced monitoring":"Расширенный мониторинг","Advanced settings":"Расширенные настройки","Advanced setup":"Advanced Setup","Alerting by email":"Оповещение по электронной почте","All":"Все","All important system settings.":"Все важные системные настройки.","Allow all referrer":"Разрешить всех рефералов","Allow counting how many viewers the stream has.":"Разрешить подсчет количества зрителей у трансляции.","Amplitude":"Амплитуда","An environment variable sets this value.":"Переменная среды задает это значение.","App":"Приложение","Application":"Приложение","Are you sure you want to abort the wizard?":"Вы уверены, что хотите прервать работу мастера настройки?","Audio":"Аудио","Audio Device":"Аудио-устройство","Audio device":"Аудио-устройство","Audio from device":"Звук с устройства","Audio settings":"Настройки звука","Audio setup":"Настройка звука","Auth0":"Auth0","Auth0 Tenant":"Клиент Auth0","Auth0 is currently not available because this interface is loaded from an insecure origin.":"Auth0 в настоящее время недоступен, так как этот интерфейс загружается из небезопасного источника.","Author":"Автор","Authorization":"Авторизация","Automatic cleanup of all media data":"Автоматическая очистка всех медиаданных","Autoplay":"Авто-плей","Available":"Доступный","Back":"Назад","Background colors":"Цвета фона","Background image":"Фоновая картинка","Backup URL":"Резервный URL-адрес","Backup server":"Резервный сервер","Backup stream":"Резервный поток","Backup stream key":"Резервный ключ потока","Bandwidth":"Пропускная способность","Bandwidth control":"Контроль пропускной способности","Banner":"Баннер","Basic":"Базовый","Beep factor":"Звуковой фактор","Bitrate":"Битрейт","Briefly describe what the audience will see during the live stream.":"Кратко опишите, что зрители увидят во время прямой трансляции.","Button color":"Цвет кнопки","Cache for files on /data.":"Кэш для файлов в /data.","Cache time (Seconds)":"Время кэширования (сек)","Cache types":"Типы кеша","Capture clicks":"Захват кликов","Capture cursor":"Захват курсора","Channel \"{0}\" saved":["Канал \"",["0"],"\" сохранен"],"Channels":"Каналы","Check for updates":"Проверять наличие обновлений","Check the requirements":"Проверьте требования","Choose a video stream":"Выберите видеопоток","Choose an audio stream":"Выберите аудиопоток","Choose an input device ...":"Выберите устройство ввода...","Choose codec ...":"Выберите кодек...","Choose tenant ...":"Выбрать клиента...","Chunk":"Чанк","Close":"Закрыть","Code injection":"Внедрение кода","Codec":"Кодек","Color":"Цвет","Config":"Конфигурация","Confirm password":"Подтвердить пароль","Connect":"Подключить","Connected device":"Подключенное устройство","Connected since <0/>":"Подключено с <0/>","Connecting ...":"Подключение...","Connecting to Restreamer Core ...":"Подключение к ядру Restreamer...","Connecting to Restreamer Core failed probably because of mixed content.":"Не удалось подключиться к ядру Restreamer, вероятно, из-за смешанного контента.","Content":"Контент","Content URL":"Content URL","Cores":"Ядра","Create user":"Создать пользователя","Creative Commons":"Creative Commons","Custom ...":"Пользовательский...","Custom JSON config for datarhei Core.":"Пользовательская конфигурация JSON для ядра datarhei.","Custom audio device":"Пользовательское аудиоустройство","Custom audio index":"Пользовательский звуковой индекс","Custom bitrate (kbit/s)":"Пользовательский битрейт (кбит/с)","Custom code injection":"Внедрение пользовательского кода","Custom delay":"Пользовательская задержка","Custom device":"Пользовательское устройство","Custom format":"Пользовательский формат","Custom framerate":"Пользовательская частота кадров","Custom keyframe interval":"Пользовательский интервал ключевых кадров","Custom layout":"Пользовательский макет","Custom sampling (Hz)":"Пользовательская выборка (Гц)","Custom scale":"Пользовательский масштаб","Custom size":"Пользовательский размер","Custom video device":"Пользовательское видеоустройство","Custom video index":"Пользовательский индекс видео","Data copied to clipboard":"Данные скопированы в буфер обмена","Death color":"Цвет смерти","Decoder":"Декодер","Default":"По умолчанию","Delay":"Задержка","Delay (ms)":"Задержка (мс)","Delete":"Удалить","Deleting a publication service cannot be reversed. The publication stops immediately.":"Удаление службы публикации нельзя отменить. Публикация сразу прекращается.","Delivering mode":"Режим доставки","Description":"Описание","Design":"Дизайн","Device":"Устройство","Disconnect":"Отключить","Disconnect & Continue":"Отключить и продолжить","Disconnecting ...":"Отключение...","Disk":"Диск","Disk cache":"Кэш диска","Disk storage":"Дисковое хранилище","Do you really want to restart the application now?":"Вы действительно хотите перезапустить приложение сейчас?","Do you want to delete \"{0}\"?":["Вы хотите удалить \"",["0"],"\"?"],"Do you want to delete {title}?":["Вы хотите удалить ",["title"],"?"],"Do you want to disconnect \"{0}\"?":["Вы хотите отключить \"",["0"],"\"?"],"Docs":"Документы","Documentation":"Документация","Dup. frames":"Дуп. кадры","EDIT: Player":"РЕДАКТИРОВАТЬ: Плеер","EDIT: Publication Website":"РЕДАКТИРОВАТЬ: Сайт публикации","Edit":"Редактировать","Edit the audio and video sources for the live stream. Add a description, and set your desired content license.":"Отредактируйте аудио и видеоисточники для прямой трансляции. Добавьте описание и установите желаемую лицензию на содержимое.","Edit: {title}":["Изменить: ",["title"]],"Embed":"Встроить","Enable RTMP server ...":"Включить RTMP-сервер...","Enable a periodic beep every second with this value times the carrier frequency":"Включить периодический звуковой сигнал каждую секунду с этим значением, умноженным на несущую частоту","Enable backup stream":"Включить резервный поток","Enable nerd statistics":"Включить статистику ботаников","Enable primary stream":"Включить основной поток","Enable snapshots":"Включить снимки","Enabling authorization is strongly advised. Otherwise, anybody can access this instance.":"Настоятельно рекомендуется включить авторизацию. В противном случае любой может получить доступ к этому экземпляру.","Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs.":"Настоятельно рекомендуется включить базовую аутентификацию. В противном случае любой может записать данные в /memfs.","Encoder":"Кодер","Encoding":"Кодирование","Encryption":"Шифрование","Enter a name for the new channel.":"Введите имя для нового канала.","Enter password":"Введите пароль","Enter the address of your network source:":"Введите адрес вашего сетевого источника:","Enter username":"Введите имя пользователя","Entropy coder":"Энтропийный кодер","Error":"Ошибка","Error while copying data to clipboard":"Ошибка при копировании данных в буфер обмена","Error: {0}":["Ошибка: ",["0"]],"Expands the area above the channel list (live chat).":"Расширяет область над списком каналов (живой чат).","Expands the area under the channel description (comment boxes).":"Расширяет область под описанием канала (окна комментариев).","Expert mode":"Режим эксперта","Extend channel list":"Расширить список каналов","Extend content":"Расширить содержимое","Extend footer":"Расширить нижний колонтитул","Extend header":"Расширить заголовок","FFmpeg":"FFmpeg","FPS":"FPS","Failed to create publication service ({0})":["Не удалось создать службу публикации (",["0"],")"],"Failed to create publication website files.":"Не удалось создать файлы веб-сайта публикации.","Failed to probe the source. Please check the <0>probe details.":"Не удалось проверить источник. Пожалуйста, проверьте <0>подробности.","Failed to refresh token: {0}":["Не удалось обновить токен: ",["0"]],"Failed to save ingest metadata":"Не удалось сохранить импортированные метаданные","Failed to stop process":"Не удалось остановить процесс","Failed to store player size setting.":"Не удалось сохранить настройку размера проигрывателя.","Failed to store publication service ({0})":["Не удалось сохранить службу публикации (",["0"],")"],"Failed to update ingest process ({0})":["Не удалось обновить процесс загрузки (",["0"],")"],"Failed to update the player":"Не удалось обновить плеер","Failed to verify the source. Please check the address.":"Не удалось проверить источник. Пожалуйста, проверьте адрес.","Finish":"Закончить","Flags":"Флаги","For Javascripts.":"Для Javascripts.","For Stylesheets.":"Для таблиц стилей.","Force input framerate":"Принудительная частота кадров на входе","Format":"Формат","Frame drops":"Потеря кадров","Framebuffer":"Кадровый буфер","Framerate":"Частота кадров","Frequency (Hz)":"Частота (Гц)","GET":"GET","General":"Общие","Google Analytics ID":"Идентификатор Google Аналитики","Google Analytics Tracker Name":"Название трекера Google Аналитики","HLS":"HLS","HLS statistic for the In-memory storage":"Статистика HLS для хранилища в памяти","HTTP and HTTPS":"HTTP и HTTPS","HTTP port":"HTTP-порт","HTTPS (SSL/TLS)":"HTTPS (SSL/TLS)","HTTPS port":"HTTPS-порт","Hardware device":"Аппаратное устройство","Header":"Заголовок","Headline":"Заголовок","Hosted Restreamer interface":"Размещенный интерфейс Restreamer","Human readable name on the service.":"Человекочитаемое имя на сервисе.","IP address":"IP адрес","If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port.":"Если вы изменили порты, возможно, ядро Restreamer уже перезапустилось, но теперь он доступен на другом порту.","If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core.":"Если вы включили Let's Encrypt TLS, получение сертификатов может занять некоторое время. Убедитесь, что ядро Restreamer доступно через порт 80 из Интернета. Пожалуйста, проверьте журнал консоли ядра Restreamer.","Ignore IP ranges":"Игнорировать диапазоны IP-адресов","Image URL":"URL изображения","Imprint":"Выходные данные","In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly.":"В дополнение к плееру Restreamer предлагает полноценную целевую страницу, которую вы можете использовать для простого и быстрого представления своей прямой трансляции.","In-memory":"В памяти","In-memory storage":"Хранилище в памяти","Incompatible":"Несовместимо","Inherit":"Наследовать","Inject 1":"Встраивание 1","Inject 2":"Встраивание 2","Inject 3":"Встраивание 3","Inject 4":"Встраивание 4","Internal HLS server":"Внутренний HLS-сервер","Internal RTMP server":"Внутренний RTMP-сервер","Interval (seconds)":"Интервал (секунды)","Issue alert":"Оповещение о проблеме","Keyframe interval (seconds)":"Интервал между ключевыми кадрами (секунды)","Layout":"Макет","Let's Encrypt certification":"Сертификат Let's Encrypt","Let's Encrypt requires one or more public domain names and an accessible port 80/TCP.":"Для работы Let's Encrypt требуется одно или несколько общедоступных доменных имен и доступный порт 80/TCP.","Level":"Уровень","Level of system protocol.":"Уровень системного протокола.","License":"Лицензия","Life color":"Цвет жизни","Linecolor":"Цвет линии","Link":"Ссылка","Link, mouseover":"Ссылка, наведение курсора","List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions.":"Список диапазонов IP адресов в нотации CIDR, напр., 127.0.0.1/32, которые не будут записываться статистикой — по одному диапазону IP адресов на строку. Оставьте пустым для записи всех сеансов..","List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types.":"Список расширений файлов для кэширования (напр.. \".html\"), по одному в строке. Оставьте пустым, чтобы кэшировать все типы файлов.","List size (segments)":"Размер списка (сегменты)","Live-Streaming to Facebook Live RTMP service":"Прямая трансляция на сервис Facebook Live RTMP","Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck.":"Прямая трансляция на сервис Instagram Live RTMP. Для ключа потока требуется такая служба, как <0>Yellow Duck.","Live-Streaming to Twitch Live RTMP Service.":"Прямая трансляция на сервис Twitch Live RTMP.","Live-Streaming to Vimeo Live RTMP Service":"Прямая трансляция на RTMP-сервис Vimeo Live","Livesource ID":"Livesource ID","Log level":"Уровень журнала","Logging":"Логирование","Login":"Авторизоваться","Login failed: Couldn't load API details":"Ошибка входа: не удалось загрузить сведения об API","Login failed: {0}":["Ошибка входа: ",["0"]],"Login/JWT authorization":"Вход/JWT-авторизация","Logo":"Логотип","Logout":"Выйти","MB":"MB","Main Source":"Главный источник","Main channel":"Основной канал","Main channel not found":"Основной канал не найден","Main channel saved":"Основной канал сохранен","Main page channel (index.html).":"Канал главной страницы (index.html).","Maintainer:":"Сопровождающий:","Maximum allowed cache size, 0 for unlimited.":"Максимально допустимый размер кеша, 0 для неограниченного.","Maximum allowed megabytes of RAM for /memfs, 0 for unlimited.":"Максимально допустимо мегабайт ОЗУ для /memfs, 0 для неограниченного.","Maximum allowed megabytes to consume from hard disk. 0 for unlimited.":"Максимально разрешенное количество мегабайт для использования с жесткого диска. 0 без ограничений.","Maximum bandwidth Mbit/s":"Максимальная пропускная способность Мбит/с","Maximum delay in milliseconds.":"Максимальная задержка в миллисекундах.","Maximum file size (Megabytes)":"Максимальный размер файла (Мегабайты)","Maximum file size to put in cache.":"Максимальный размер файла для кэширования.","Maximum log histroy":"Максимальная история журнала","Maximum log lines":"Максимальное количество строк журнала","Maximum size (Megabytes)":"Максимальный размер (Мегабайты)","Maximum viewer idle time (Seconds)":"Максимальное время простоя зрителя (в секундах)","Maximum viewers":"Максимальное количество зрителей","Memory":"Память","Meta information":"Мета информация","Metadata":"Метаданные","Mold":"Плесень","More about Twitter's copyright <0>here.":"Подробнее об авторских правах Twitter <0>здесь.","More about YouTube's copyright <0>here.":"Подробнее об авторских правах YouTube <0>здесь.","More about licenses here":"Подробнее о лицензиях здесь","More about the service":"Подробнее о сервисе","Mute":"Без звука","Name":"Имя","Name for the template. If the name already exists, it will be overwritten.":"Имя для шаблона. Если имя уже существует, оно будет перезаписано.","Network":"Сеть","Network source":"Сетевой источник","Next":"Далее","Next: Audio":"Далее: Аудио","Next: Video setup":"Далее: Настройка видео","No":"Нет","No audio":"Нет звука","No audio stream available":"Аудиопоток недоступен","No input device available":"Устройство ввода недоступно","No live stream was detected. Please check the software that sends the stream.":"Прямая трансляция не обнаружена. Пожалуйста, проверьте программное обеспечение, которое отправляет поток.","No source selected":"Источник не выбран","No sources available":"Нет доступных источников","No suitable encoder found.":"Подходящий энкодер не найден.","No video":"Нет видео","No video stream available":"Видеопоток недоступен","Node ID":"Node ID","Noise":"Шум","None":"Никто","Notes":"Заметки","Number of log lines to keep.":"Количество строк журнала для сохранения.","Number of logs to keep for each process.":"Количество журналов для каждого процесса.","OK":"OK","One referrer per line, e.g. http://www.example.com":"Один реферер на строку, напр.. http://www.example.com","Open":"Открыть","Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources.":"Сквозную \"Passthrough (copy)\" следует отключать только в случае необходимости. Каждое кодирование требует дополнительных ресурсов CPU/GPU.","Password":"Пароль","Password for authorization.":"Пароль для авторизации.","Password for the device.":"Пароль для устройства.","Persist viewer statistics":"Сохранять статистику просмотров","Pixel format":"Пиксельный формат","Plan: <0>Starter":"План: <0>Начальный","Platforms":"Платформы","Playback":"Воспроизведение","Player":"Плеер","Player URL":"URL-адрес плеера","Player settings saved":"Настройки плеера сохранены","Playersite":"Сайт плеера","Playlist":"Плейлист","Please check the <0>process log":"Пожалуйста, проверьте <0>журнал процесса","Please contact the operator of the service and check what happens.":"Пожалуйста, свяжитесь с оператором сервиса и проверьте, что происходит.","Please select a file to upload.":"Пожалуйста, выберите файл для загрузки.","Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources.":"Пожалуйста, используйте \"Passthrough (copy)\", если это возможно. Кодирование требует дополнительных ресурсов CPU/GPU.","Please wait. Probe stream data ...":"Пожалуйста подождите. Данные о потоке...","Please wait. Setting up the stream ...":"Пожалуйста подождите. Настройка потока...","Port":"Порт","Position":"Позиция","Preset":"Пресет","Primary stream":"Основной поток","Primary stream key":"Основной ключ потока","Probe":"Зонд","Process":"Процесс","Process control":"Контроль процесса","Process debug":"Отладка процесса","Process debug report":"Отчет об отладке процесса","Process details":"Детали процесса","Process report":"Отчет о процессе","Processing & Control":"Обработка и контроль","Profile":"Профиль","Protocol":"Протокол","Protocols":"Протоколы","Public domain/s":"Публичный домен/ы","Publication service not found":"Служба публикации не найдены","Publication website settings saved":"Настройки сайта публикации сохранены","Publications":"Публикации","Pull Mode":"Режим вытягивания","Pull or recieve the data:":"Вытяните или получите данные:","Quality":"Качество","RGB test pattern":"Тестовый шаблон RGB","RTMP app for publishing.":"Приложение RTMP для публикации.","RTMP server":"RTMP-сервер","RTMP server is not enabled":"RTMP-сервер не включен","RTMP server listen address.":"Адрес прослушивания RTMP-сервера.","RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'":"Токен RTMP для публикации и воспроизведения. Токен – это значение параметра запроса URL-адреса token.","RTMP/S":"RTMP/S","RTMPS server":"RTMPS-сервер","RTSP":"RTSP","Raspberry Pi camera":"Камера Raspberry Pi","Rate control":"Контроль скорости","Ratio":"Соотношение","Read input at native speed":"Чтение ввода на исходной скорости","Receive Mode":"Режим приема","Reconnect":"Повторное подключение","Reconnect delay (seconds)":"Задержка повторного подключения (в секундах)","Reconnecting in {0}s":["Повторное подключение через ",["0"],"с"],"Reconnecting to Restreamer Core failed for the last {RETRIES} seconds.":["Не удалось повторно подключиться к ядру Restreamer в течение последних ",["RETRIES"]," секунд."],"Reconnecting to Restreamer Core failed.":"Повторное подключение к ядру Restreamer не удалось.","Refresh":"Обновление","Region":"Регион","Reload":"Перезагрузка","Remove the oldest entries if the /memfs is full":"Удалите самые старые записи, если /memfs заполнен","Requires activation":"Требуется активация","Restart":"Перезапустить","Restart required":"Требуется перезагрузка","Restarting":"Перезапуск","Restarting Restreamer Core ...":"Перезапуск ядра Restreamer...","Restarting the application failed.":"Не удалось перезапустить приложение.","Restreamer Service":"Сервис Restreamer","Retrieving stream data ...":"Получение данных потока...","Retry":"Повторить попытку","Rule":"Правило","Sampling":"Выборка","Save":"Сохранить","Scale":"Масштаб","Seconds to keep files in cache.":"Секунд для хранения файлов в кеше.","Seconds until a process is restarted.":"Секунд до перезапуска процесса.","Seconds until a staled process is terminated.":"Секунд до завершения зависшего процесса.","Seconds until the snapshot/thumbnail of the video source is updated.":"Секунд до обновления моментального снимка/миниатюры источника видео.","Security":"Безопасность","Security token":"Токен безопасности","Seekbar color":"Цвет панели поиска","Segment length (seconds)":"Длина сегмента (секунды)","Segment will be cut on the following keyframe after this time has passed. 2 is recommended.":"Сегмент будет обрезан на следующем ключевом кадре по истечении этого времени. 2 рекомендуется.","Segmentation":"Сегментация","Select a device:":"Выберите устройство:","Select audio source:":"Выберите источник звука:","Select source ...":"Выберите источник...","Select video source:":"Выберите источник видео:","Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer).":"Выберите, извлекаете ли вы поток из <0>сетевого источника (например, сетевой камеры) или <1>внутреннего RTMP-сервера (например, потоки OBS на Restreamer)...","Select your encoding setting:":"Выберите настройку кодировки:","Selected":"Выбрано","Selected channel":"Выбранный канал","Selection":"Выбор","Send anonymous metrics (helps us for future development)":"Отправляйте анонимные метрики (помогает нам в будущем развитии)","Send stream to this address:":"Отправить поток на этот адрес:","Send video to Framebuffer":"Отправить видео в фреймбуфер","Server":"Сервер","Service":"Обслуживание","Service name":"Имя службы","Service token for monitoring.":"Токен сервиса для мониторинга.","Sessions":"Сессии","Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Устанавливает ограничение пропускной способности в Мбит/с для исходящей передачи данных HLS. Все услуги, такие как RTMP и исходящие процессы, включены в расчет. Если пропускная способность превышена, средства просмотра HLS получают код состояния HTTP 509 (превышен предел пропускной способности). 0 неограничен.","Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited.":"Устанавливает лимит зрителей для сеансов HLS. Если ограничение превышено, средства просмотра HLS получают код состояния HTTP 509 (превышен предел пропускной способности). 0 неограничен.","Setting for connection to the service.":"Настройка подключения к сервису.","Settings":"Настройки","Settings (expert mode)":"Настройки (режим эксперта)","Settings for /data path. The access is protected by":"Настройки пути /data. Доступ защищен","Settings for /memfs path.":"Настройки для пути /memfs.","Settings saved. All changes will be applied after restarting the application.":"Настройки сохранены. Все изменения вступят в силу после перезапуска приложения.","Share button":"Кнопка поделиться","Shows a reference to the project.":"Показывает ссылку на проект.","Sign up (free)":"Регистрация (бесплатно)","Silence":"Тишина","Silence Audio":"Тишина Аудио","Sine":"Синус","Sitename":"Название сайта","Size":"Размер","Snapshot":"Снимок","Social-login (OAuth2, 2FA)":"Регистрация (OAuth2, 2FA)","Socket timeout (microseconds)":"Время ожидания сокета (микросекунды)","Software":"Программного обеспечения","Source":"Источник","Speed":"Скорость","Stale timeout (seconds)":"Время ожидания ожидания (секунды)","Statistics":"Статистика","Storage":"Хранилище","Stores the viewer statistics to the disk.":"Сохраняет статистику просмотра на диск.","Stream":"Поток","Stream URL":"URL-адрес потока","Stream key":"Ключ потока","Stream name":"Название потока","Stream names":"Имена потоков","Support datarhei Restreamer":"Поддержка datarhei Restreamer","Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more.":"Поддерживает HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT и другие.","System":"Система","Template":"Шаблон","Template to be used for creating the publication website. The delete button removes the selection from the system.":"Шаблон, который будет использоваться для создания веб-сайта публикации. Кнопка удаления удаляет выделение из системы.","Terms":"Условия","Test pattern":"Тестовый шаблон","Test pattern (extended)":"Тестовый шаблон (расширенный)","Text colors":"Цвета текста","The amplitude (0.0 - 1.0) of the generated audio stream":"Амплитуда (0.0 - 1.0) генерируемого аудиопотока","The application is using an older version of the settings.":"Приложение использует более старую версию настроек.","The bitrate of the audio stream.":"Битрейт аудиопотока.","The carrier frequency":"Несущая частота","The channel \"{0}\" could not be deleted":["Канал \"",["0"],"\" не может быть удален"],"The channel \"{0}\" has been deleted":["Канал \"",["0"],"\" удален"],"The deletion of this channel can not be recovered. All publications of this channel will be removed.":"Удаление этого канала не может быть восстановлено. Все публикации этого канала будут удалены.","The input profile is not complete. Please define a video and audio source.":"Входной профиль не завершен. Укажите источник видео и аудио.","The layout of the audio stream.":"Схема аудиопотока.","The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended.":"Максимальное количество сегментов плейлиста. 0 будет содержать все сегменты. 6 рекомендуется.","The noise color":"Цвет шума","The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.":"Лицо, связавшее произведение с этим документом, сделало произведение общественным достоянием, отказавшись от всех своих прав на произведение во всем мире в соответствии с законом об авторском праве, включая все смежные и смежные права, в той мере, в какой это разрешено законом. Вы можете копировать, изменять, распространять и выполнять работу даже в коммерческих целях, не спрашивая разрешения.","The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma.":"Общедоступное доменное имя хоста, на котором работает Restreamer. Разделяйте несколько доменных имен запятой.","The publication service \"{0}\" could not be deleted":["Службу публикации \"",["0"],"\" не удалось удалить"],"The publication service \"{0}\" has been created":["Служба публикации \"",["0"],"\" создана"],"The publication service \"{0}\" has been deleted":["Служба публикации \"",["0"],"\" удалена"],"The publication service has been created":"Создан сервис публикации","The sample rate of the audio stream.":"Частота дискретизации аудиопотока.","The selected file is too big ({0} bytes). Only {1} bytes are allowed.":["Выбранный файл слишком велик (",["0"]," байт). Допускается только ",["1"]," байт."],"The selected file type ({0}) is not allowed. Allowed file types are {types}":["Выбранный тип файла (",["0"],") не разрешен. Разрешенными типами файлов являются ",["types"]],"The settings for \"{0}\" have been saved":["Настройки для \"",["0"],"\" сохранены"],"The source doesn't provide any audio streams.":"Источник не предоставляет никаких аудиопотоков.","The source doesn't provide any audio streams. Please check the <0>probe details.":"Источник не предоставляет никаких аудиопотоков. Пожалуйста, проверьте <0>подробнее.","The source doesn't provide any compatible audio streams.":"Источник не предоставляет совместимых аудиопотоков.","The source doesn't provide any compatible video streams. Please check the <0>requirements.":"Источник не предоставляет совместимых видеопотоков. Ознакомьтесь с <0>требованиями.","The source doesn't provide any video streams. Please check the <0>probe details.":"Источник не предоставляет никаких видеопотоков. Пожалуйста, проверьте <0>подробнее.","The source doesn't provide any video streams. Please check the device.":"Источник не предоставляет никаких видеопотоков. Пожалуйста, проверьте устройство.","The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel.":"Источник видео не обеспечивает совместимый аудиопоток. Рекомендуется <0>отключить звук. Сервисы YouTube, Facebook и другие компании требуют наличия аудиоканала....","The video source is compatible. Select the desired resolution:":"Источник видео совместим. Выберите нужное разрешение:","There are updates available. Here you get more information.":"Доступны обновления. Здесь вы получите больше информации.","There was a problem storing the settings. Settings not saved.":"Не удалось сохранить настройки. Настройки не сохранены.","There was an error connecting to Restreamer Core at {0}.":["Произошла ошибка при подключении к ядру Restreamer на ",["0"],"."],"There was an error during upload: {0}":["При загрузке произошла ошибка: ",["0"]],"There was an error setting up the stream.":"Не удалось настроить поток.","There were some errors in the settings. Settings not saved.":"Были некоторые ошибки в настройках. Настройки не сохранены.","There's no login method available.":"Метод входа недоступен.","This is a dummy service that explains to you the concepts of service.":"Это фиктивный сервис, который объясняет вам концепции сервиса.","This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart..":"Это не обязательно ошибка. Однако перезапуск ядра Restreamer может занять немного больше времени..","This is to mention the copyright regulations for the target of this service.":"Это должно упомянуть положения об авторском праве для цели этой службы.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use.":"Эта лицензия позволяет повторным пользователям копировать и распространять материал на любом носителе или в любом формате только в неадаптированной форме и только при условии указания авторства. Лицензия разрешает коммерческое использование.","This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator.":"Эта лицензия позволяет повторным пользователям копировать и распространять материал на любом носителе или в любом формате только в неадаптированной форме, только в некоммерческих целях и только при условии указания авторства.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator.":"Эта лицензия позволяет повторным пользователям распространять, микшировать, адаптировать и использовать материал на любом носителе или в любом формате только в некоммерческих целях и только при условии указания авторства.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Эта лицензия позволяет повторным пользователям распространять, микшировать, адаптировать и использовать материал на любом носителе или в любом формате только в некоммерческих целях и только при условии указания авторства. Если вы микшируете, адаптируете или развиваете материал, вы должны лицензировать измененный материал на тех же условиях.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use.":"Эта лицензия позволяет повторным пользователям распространять, микшировать, адаптировать и использовать материал на любом носителе или в любом формате при условии указания авторства. Лицензия разрешает коммерческое использование.","This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.":"Эта лицензия позволяет повторным пользователям распространять, микшировать, адаптировать и использовать материал на любом носителе или в любом формате при условии указания авторства. Лицензия разрешает коммерческое использование. Если вы микшируете, адаптируете или развиваете материал, вы должны лицензировать измененный материал на тех же условиях.","This source cannot be edited while it is in use. To continue, you have to disconnect the source.":"Этот источник нельзя редактировать, пока он используется. Чтобы продолжить, вы должны отключить источник.","This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary.":["Эта версия пользовательского интерфейса не поддерживает доступный двоичный файл FFmpeg (",["0"],"). Пользовательский интерфейс требует ",["1"],". Пожалуйста, используйте поддерживаемый двоичный файл FFmpeg."],"This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI.":["Эта версия пользовательского интерфейса не поддерживает подключенное ядро (",["0"],"). Пользовательский интерфейс требует ",["1"],". Пожалуйста, используйте совместимую версию пользовательского интерфейса."],"This version of the UI is compatible.":"Эта версия пользовательского интерфейса совместима.","Time until an inactive viewer connection is treated as closed.":"Время до того, как неактивное соединение со зрителем будет считаться закрытым.","Token":"Токен","Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here.":"Передача моментальных снимков основного источника на сервер HTTP/S. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here.":"Передайте аудиоканал основного источника на сервер Icecast. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here.":"Передайте основной источник как HTTP-Live-Streaming (HLS) на сервер HTTP/S. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here.":"Передайте основной источник как MPEG-DASH на сервер HTTP/S. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here.":"Передайте основной источник в Brightcove Live Service. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here.":"Передайте основной источник в службу CDN77 RTMP. Подробнее о настройке <0>здесь.","Transmit the main source to an DaCast RTMP Service. More about the setup <0>here.":"Передайте основной источник в службу DaCast RTMP. Подробнее о настройке <0>здесь.","Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here.":"Передать основной источник в службу MPEG-TS. Подробнее о настройках можно узнать здесь <0>здесь.","Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here.":"Передайте основной источник на сервер RTMP(e|s|t|te|ts). Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to an RTSP Server. More details about the settings can be found <0>here.":"Передайте основной источник на сервер RTSP. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here.":"Передача основного источника на сервер Red5/Pro Server. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to an SRT Server. More details about the settings can be found <0>here.":"Передайте основной источник на сервер SRT. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to an UDP Server. More details about the settings can be found <0>here.":"Передайте основной источник на сервер UDP. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here.":"Передайте основной источник на сервер WOWZA. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here.":"Передайте основной источник на основной ресурс datarhei. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here.":"Передайте основной источник на ресурс livespotting.com. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here.":"Передайте основной источник в Akamai (MSL) Media Services Live. Более подробную информацию о настройках MSL Encoder можно найти <0>здесь.","Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here.":"Передайте основной источник в облачный сервис кодирования Bitmovin, мощный инструмент для прямой трансляции. Более подробную информацию о настройках можно найти <0>здесь.","Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here.":"Передайте основной источник в службу Restream RTMP. Более подробную информацию о настройках можно найти <0>здесь.","Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy.":"Передает ваше видео в виде RTMP-потока с необходимым ключом, сгенерированным в YouTube Studio. Дополнительную информацию о настройке прямых трансляций можно найти в <0>Академии для авторов YouTube.","Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer.":"Передает ваш видеопоток с нужным ключом, сгенерированным в Twitter Producer. Дополнительную информацию о настройке прямой трансляции можно найти на странице <0>Producer в Твиттере.","Tune":"Мелодия","UDP transport":"Транспорт UDP","Unable to load the config.":"Не удалось загрузить конфиг.","Unique ident on the service.":"Уникальный идентификатор на сервисе.","Unknown":"Неизвестный","Unselected":"Не выбрано","Upload":"Загрузить","Uploading the file failed":"Загрузка файла не удалась","Uploading the logo failed":"Не удалось загрузить логотип","Uptime":"Время безотказной работы","Use Auth0 for your running Restreamer Core. More <0>details.":"Используйте Auth0 для работающего ядра Restreamer. Больше <0>подробностей.","Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode.":"Воспользуйтесь мастером (<0/>) для быстрой и простой настройки или отредактируйте (<1/>) источники непосредственно в пользовательском режиме.","Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Используйте свои авторские права и выберите правильную лицензию на изображение. Независимо от того, бесплатно для всех или сильно ограничено. Кратко обсудите, что другим разрешено делать с вашим изображением.","Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image.":"Используйте свои авторские права и выберите правильную лицензию на изображение. Независимо от того, бесплатно для всех или сильно ограничено. Кратко обсудите, что другим разрешено делать с вашим изображением.","User registration":"Регистрация пользователя","Username":"Имя пользователя","Username for authorization.":"Имя пользователя для авторизации.","Username for the device.":"Имя пользователя для устройства.","VPU ID":"VPU ID","Video":"Видео","Video device":"Видеоустройство","Video settings":"Настройки видео","Video setup":"Настройка видео","Video source":"Источник видео","Viewer":"Зрителей","Virtual source":"Виртуальный источник","Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs.":"Добро пожаловать в Restreamer v2, решение для быстрой и простой публикации видео. Бесплатно для частного и коммерческого использования. Дополнительная помощь в <0>документах.","Write protection":"Защита от записи","YUV test pattern":"Тестовый образец YUV","Yes":"Да","You can't abort the wizard because at least one input must be defined.":"Вы не можете прервать работу мастера, так как должен быть настроен хотя бы один источник.","You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?":"Вы изменили конфигурацию. Чтобы изменения вступили в силу, необходимо перезапустить приложение. Вы хотите перезапустить сейчас?","You have to reconnect manually":"Вы должны повторно подключиться вручную","You have unsaved changes. Please save them before you can control the service again.":"У вас есть несохраненные изменения. Пожалуйста, сохраните их, прежде чем вы сможете снова управлять сервисом.","Your stream needs to be encoded, but there's no suitable encoder available.":"Ваш поток необходимо закодировать, но подходящего кодировщика нет.","Your stream needs to be encoded. Choose the desired encoder:":"Ваш поток должен быть закодирован. Выберите нужный энкодер:","blue":"синий","brown":"коричневый","iframe code":"код iframe","kbit/s":"кбит/с","pink":"розовый","velvet":"вельветовый","violet":"фиолетовый","white":"белый"}}; \ No newline at end of file diff --git a/src/locales/ru/messages.po b/src/locales/ru/messages.po new file mode 100644 index 0000000..342d11f --- /dev/null +++ b/src/locales/ru/messages.po @@ -0,0 +1,2670 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: POEditor.com\n" +"Project-Id-Version: Restreamer\n" +"Language: ru\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: src/misc/EncodingSelect.js:224 +msgid "<0>Compatibility list" +msgstr "<0>Список совместимости" + +#: src/views/Edit/Profile.js:380 +#: src/views/Edit/Profile.js:510 +msgid "<0>Show probe details" +msgstr "<0>Показать подробности" + +#: src/views/Edit/Sources/ALSA.js:156 +msgid "ALSA" +msgstr "ALSA" + +#: src/views/Settings.js:907 +msgid "API endpoint not found. Settings not saved." +msgstr "Конечная точка API не найдена. Настройки не сохранены." + +#: src/views/Edit/Sources/AVFoundation.js:221 +msgid "AVFoundation" +msgstr "AVFoundation" + +#: src/misc/ChannelList.js:356 +#: src/views/Edit/Profile.js:410 +#: src/views/Edit/Wizard/index.js:1153 +#: src/views/Edit/index.js:549 +#: src/views/Edit/index.js:575 +#: src/views/Edit/index.js:594 +#: src/views/Publication/Add.js:362 +#: src/views/Publication/Edit.js:601 +#: src/views/Settings.js:1972 +#: src/views/Settings.js:2031 +#: src/views/Settings.js:2053 +msgid "Abort" +msgstr "Отменить" + +#: src/Header.js:283 +#: src/Header.js:324 +msgid "About" +msgstr "О" + +#: src/misc/ChannelList.js:369 +msgid "Add" +msgstr "Добавить" + +#: src/views/Publication/Add.js:321 +msgid "Add Publication" +msgstr "Добавить публикацию" + +#: src/views/Playersite.js:692 +msgid "Add external widgets and styles to the publication site. You can find some examples on the help page." +msgstr "Добавьте внешние виджеты и стили на сайт публикации. Вы можете найти несколько примеров на странице помощи." + +#: src/misc/ChannelList.js:353 +msgid "Add new channel" +msgstr "Добавить новый канал" + +#: src/views/Publication/Add.js:324 +msgid "Add: {0}" +msgstr "Добавить: {0}" + +#: src/views/Edit/Sources/Network.js:355 +#: src/views/Edit/Wizard/Sources/Network.js:66 +#: src/views/Publication/Services/Brightcove.js:95 +#: src/views/Publication/Services/Core.js:100 +#: src/views/Publication/Services/DASH.js:192 +#: src/views/Publication/Services/HLS.js:181 +#: src/views/Publication/Services/Icecast.js:160 +#: src/views/Publication/Services/Image2.js:126 +#: src/views/Publication/Services/MPEGTS.js:160 +#: src/views/Publication/Services/RTMP.js:132 +#: src/views/Publication/Services/RTSP.js:150 +#: src/views/Publication/Services/Red5.js:115 +#: src/views/Publication/Services/SRT.js:161 +#: src/views/Publication/Services/UDP.js:127 +#: src/views/Publication/Services/WOWZA.js:132 +#: src/views/Settings.js:1302 +msgid "Address" +msgstr "Адрес" + +#: src/views/Playersite.js:629 +msgid "Address for the background image." +msgstr "Адрес для фонового изображения." + +#: src/views/Settings.js:1331 +msgid "Address to listen on for HTTP requests." +msgstr "Адрес для прослушивания HTTP-запросов." + +#: src/views/Settings.js:1344 +msgid "Address to listen on for HTTPS requests." +msgstr "Адрес для прослушивания HTTPS-запросов." + +#: src/views/Playersite.js:514 +msgid "Adjust publication site colors and background as you like." +msgstr "Настройте цвета и фон сайта публикации по своему усмотрению." + +#: src/views/Login.js:322 +msgid "Advanced monitoring" +msgstr "Расширенный мониторинг" + +#: src/views/Edit/Sources/Network.js:396 +#: src/views/Publication/Services/DASH.js:204 +#: src/views/Publication/Services/HLS.js:193 +#: src/views/Publication/Services/Icecast.js:170 +#: src/views/Publication/Services/Image2.js:132 +#: src/views/Publication/Services/MPEGTS.js:166 +#: src/views/Publication/Services/RTMP.js:138 +#: src/views/Publication/Services/RTSP.js:162 +#: src/views/Publication/Services/SRT.js:170 +#: src/views/Publication/Services/UDP.js:133 +msgid "Advanced settings" +msgstr "Расширенные настройки" + +#: src/views/Edit/Wizard/index.js:287 +msgid "Advanced setup" +msgstr "Advanced Setup" + +#: src/views/Login.js:325 +msgid "Alerting by email" +msgstr "Оповещение по электронной почте" + +#: src/views/Publication/Add.js:344 +msgid "All" +msgstr "Все" + +#: src/views/Settings.js:1163 +msgid "All important system settings." +msgstr "Все важные системные настройки." + +#: src/views/Settings.js:1478 +msgid "Allow all referrer" +msgstr "Разрешить всех рефералов" + +#: src/views/Settings.js:1518 +msgid "Allow counting how many viewers the stream has." +msgstr "Разрешить подсчет количества зрителей у трансляции." + +#: src/views/Edit/Sources/VirtualAudio.js:126 +msgid "Amplitude" +msgstr "Амплитуда" + +#: src/misc/Env.js:41 +msgid "An environment variable sets this value." +msgstr "Переменная среды задает это значение." + +#: src/views/Publication/Services/Core.js:107 +#: src/views/Settings.js:1816 +msgid "App" +msgstr "Приложение" + +#: src/Footer.js:218 +#: src/views/Publication/Services/Red5.js:126 +#: src/views/Publication/Services/WOWZA.js:148 +msgid "Application" +msgstr "Приложение" + +#: src/views/Edit/Wizard/index.js:1172 +msgid "Are you sure you want to abort the wizard?" +msgstr "Вы уверены, что хотите прервать работу мастера настройки?" + +#: src/views/Publication/Add.js:492 +msgid "Audio" +msgstr "Аудио" + +#: src/views/Edit/Wizard/Sources/AVFoundation.js:111 +msgid "Audio Device" +msgstr "Аудио-устройство" + +#: src/views/Edit/Sources/ALSA.js:114 +#: src/views/Edit/Sources/AVFoundation.js:159 +msgid "Audio device" +msgstr "Аудио-устройство" + +#: src/views/Edit/Wizard/index.js:875 +#: src/views/Edit/Wizard/index.js:887 +msgid "Audio from device" +msgstr "Звук с устройства" + +#: src/views/Edit/Profile.js:425 +#: src/views/Edit/ProfileSummary.js:90 +#: src/views/Publication/Edit.js:533 +msgid "Audio settings" +msgstr "Настройки звука" + +#: src/views/Edit/Wizard/index.js:828 +msgid "Audio setup" +msgstr "Настройка звука" + +#: src/views/Login.js:236 +msgid "Auth0" +msgstr "Auth0" + +#: src/views/Login.js:365 +msgid "Auth0 Tenant" +msgstr "Клиент Auth0" + +#: src/views/Login.js:356 +msgid "Auth0 is currently not available because this interface is loaded from an insecure origin." +msgstr "Auth0 в настоящее время недоступен, так как этот интерфейс загружается из небезопасного источника." + +#: src/misc/controls/Metadata.js:71 +msgid "Author" +msgstr "Автор" + +#: src/views/Settings.js:1143 +#: src/views/Settings.js:1415 +msgid "Authorization" +msgstr "Авторизация" + +#: src/misc/controls/HLS.js:83 +msgid "Automatic cleanup of all media data" +msgstr "Автоматическая очистка всех медиаданных" + +#: src/views/Publication/Player.js:437 +msgid "Autoplay" +msgstr "Авто-плей" + +#: src/views/Playersite.js:445 +msgid "Available" +msgstr "Доступный" + +#: src/views/Edit/Profile.js:541 +#: src/views/Edit/Wizard/index.js:408 +#: src/views/Edit/Wizard/index.js:647 +#: src/views/Edit/Wizard/index.js:912 +#: src/views/Edit/Wizard/index.js:1024 +#: src/views/Edit/Wizard/index.js:1082 +#: src/views/Edit/Wizard/index.js:1164 +#: src/views/Publication/Add.js:528 +msgid "Back" +msgstr "Назад" + +#: src/views/Playersite.js:563 +msgid "Background colors" +msgstr "Цвета фона" + +#: src/views/Playersite.js:616 +msgid "Background image" +msgstr "Фоновая картинка" + +#: src/views/Publication/Services/Akamai.js:196 +msgid "Backup URL" +msgstr "Резервный URL-адрес" + +#: src/views/Publication/Services/DaCast.js:182 +msgid "Backup server" +msgstr "Резервный сервер" + +#: src/views/Publication/Services/Youtube.js:182 +msgid "Backup stream" +msgstr "Резервный поток" + +#: src/views/Publication/Services/Facebook.js:124 +msgid "Backup stream key" +msgstr "Резервный ключ потока" + +#: src/Footer.js:256 +#: src/Footer.js:269 +msgid "Bandwidth" +msgstr "Пропускная способность" + +#: src/views/Settings.js:1373 +msgid "Bandwidth control" +msgstr "Контроль пропускной способности" + +#: src/misc/modals/Process.js:81 +msgid "Banner" +msgstr "Баннер" + +#: src/views/Login.js:241 +#: src/views/Settings.js:1420 +msgid "Basic" +msgstr "Базовый" + +#: src/views/Edit/Sources/VirtualAudio.js:157 +msgid "Beep factor" +msgstr "Звуковой фактор" + +#: src/misc/coders/settings/Audio.js:50 +#: src/misc/coders/settings/Video.js:51 +msgid "Bitrate" +msgstr "Битрейт" + +#: src/views/Edit/Wizard/index.js:1013 +#: src/views/Edit/index.js:510 +msgid "Briefly describe what the audience will see during the live stream." +msgstr "Кратко опишите, что зрители увидят во время прямой трансляции." + +#: src/views/Publication/Player.js:352 +msgid "Button color" +msgstr "Цвет кнопки" + +#: src/views/Settings.js:1687 +msgid "Cache for files on /data." +msgstr "Кэш для файлов в /data." + +#: src/views/Settings.js:1715 +msgid "Cache time (Seconds)" +msgstr "Время кэширования (сек)" + +#: src/views/Settings.js:1743 +msgid "Cache types" +msgstr "Типы кеша" + +#: src/views/Edit/Sources/AVFoundation.js:197 +msgid "Capture clicks" +msgstr "Захват кликов" + +#: src/views/Edit/Sources/AVFoundation.js:194 +msgid "Capture cursor" +msgstr "Захват курсора" + +#: src/views/Edit/index.js:327 +msgid "Channel \"{0}\" saved" +msgstr "Канал \"{0}\" сохранен" + +#: src/views/Edit/Sources/ALSA.js:129 +msgid "Channels" +msgstr "Каналы" + +#: src/views/Settings.js:1172 +msgid "Check for updates" +msgstr "Проверять наличие обновлений" + +#: src/views/Publication/Add.js:272 +msgid "Check the requirements" +msgstr "Проверьте требования" + +#: src/views/Edit/StreamSelect.js:53 +msgid "Choose a video stream" +msgstr "Выберите видеопоток" + +#: src/views/Edit/StreamSelect.js:68 +msgid "Choose an audio stream" +msgstr "Выберите аудиопоток" + +#: src/views/Edit/Sources/ALSA.js:96 +#: src/views/Edit/Sources/Framebuffer.js:80 +#: src/views/Edit/Sources/Raspicam.js:84 +#: src/views/Edit/Sources/V4L.js:90 +msgid "Choose an input device ..." +msgstr "Выберите устройство ввода..." + +#: src/misc/EncodingSelect.js:202 +msgid "Choose codec ..." +msgstr "Выберите кодек..." + +#: src/views/Login.js:367 +msgid "Choose tenant ..." +msgstr "Выбрать клиента..." + +#: src/views/Publication/Services/DASH.js:309 +#: src/views/Publication/Services/HLS.js:249 +msgid "Chunk" +msgstr "Чанк" + +#: src/misc/ModalContent.js:77 +#: src/views/Playersite.js:782 +#: src/views/Publication/Add.js:525 +#: src/views/Publication/Edit.js:565 +#: src/views/Publication/Player.js:447 +msgid "Close" +msgstr "Закрыть" + +#: src/views/Playersite.js:354 +msgid "Code injection" +msgstr "Внедрение кода" + +#: src/misc/EncodingSelect.js:200 +msgid "Codec" +msgstr "Кодек" + +#: src/views/Edit/Sources/VirtualAudio.js:110 +#: src/views/Publication/Player.js:320 +msgid "Color" +msgstr "Цвет" + +#: src/views/Settings.js:1282 +msgid "Config" +msgstr "Конфигурация" + +#: src/views/Password.js:117 +msgid "Confirm password" +msgstr "Подтвердить пароль" + +#: src/misc/ActionButton.js:38 +msgid "Connect" +msgstr "Подключить" + +#: src/views/Edit/Wizard/Sources/AVFoundation.js:157 +msgid "Connected device" +msgstr "Подключенное устройство" + +#: src/views/Publication/Process.js:54 +msgid "Connected since <0/>" +msgstr "Подключено с <0/>" + +#: src/misc/ActionButton.js:12 +#: src/views/Main/index.js:305 +#: src/views/Publication/Process.js:40 +msgid "Connecting ..." +msgstr "Подключение..." + +#: src/views/Initializing.js:21 +msgid "Connecting to Restreamer Core ..." +msgstr "Подключение к ядру Restreamer..." + +#: src/views/Invalid.js:36 +msgid "Connecting to Restreamer Core failed probably because of mixed content." +msgstr "Не удалось подключиться к ядру Restreamer, вероятно, из-за смешанного контента." + +#: src/misc/controls/Metadata.js:70 +#: src/views/Playersite.js:659 +#: src/views/Playersite.js:676 +msgid "Content" +msgstr "Контент" + +#: src/views/Main/index.js:365 +msgid "Content URL" +msgstr "" + +#: src/Footer.js:193 +msgid "Cores" +msgstr "Ядра" + +#: src/views/Password.js:127 +msgid "Create user" +msgstr "Создать пользователя" + +#: src/misc/controls/License/index.js:112 +msgid "Creative Commons" +msgstr "Creative Commons" + +#: src/misc/coders/Encoders/audio/Opus.js:59 +#: src/misc/coders/settings/Audio.js:25 +#: src/misc/coders/settings/Audio.js:71 +#: src/misc/coders/settings/Audio.js:122 +#: src/misc/coders/settings/Video.js:31 +#: src/misc/coders/settings/Video.js:70 +#: src/misc/coders/settings/Video.js:115 +#: src/misc/coders/settings/Video.js:181 +#: src/misc/coders/settings/Video.js:220 +#: src/views/Edit/Sources/ALSA.js:101 +#: src/views/Edit/Sources/AVFoundation.js:120 +#: src/views/Edit/Sources/AVFoundation.js:153 +#: src/views/Edit/Sources/V4L.js:96 +msgid "Custom ..." +msgstr "Пользовательский..." + +#: src/views/Settings.js:1288 +msgid "Custom JSON config for datarhei Core." +msgstr "Пользовательская конфигурация JSON для ядра datarhei." + +#: src/views/Edit/Sources/ALSA.js:115 +msgid "Custom audio device" +msgstr "Пользовательское аудиоустройство" + +#: src/views/Edit/Sources/AVFoundation.js:160 +msgid "Custom audio index" +msgstr "Пользовательский звуковой индекс" + +#: src/misc/coders/settings/Audio.js:51 +#: src/misc/coders/settings/Video.js:52 +msgid "Custom bitrate (kbit/s)" +msgstr "Пользовательский битрейт (кбит/с)" + +#: src/views/Playersite.js:687 +msgid "Custom code injection" +msgstr "Внедрение пользовательского кода" + +#: src/misc/coders/Encoders/audio/Opus.js:85 +msgid "Custom delay" +msgstr "Пользовательская задержка" + +#: src/views/Edit/Sources/Framebuffer.js:88 +msgid "Custom device" +msgstr "Пользовательское устройство" + +#: src/misc/coders/settings/Video.js:241 +msgid "Custom format" +msgstr "Пользовательский формат" + +#: src/misc/coders/settings/Video.js:136 +msgid "Custom framerate" +msgstr "Пользовательская частота кадров" + +#: src/misc/coders/settings/Video.js:91 +msgid "Custom keyframe interval" +msgstr "Пользовательский интервал ключевых кадров" + +#: src/misc/coders/settings/Audio.js:98 +msgid "Custom layout" +msgstr "Пользовательский макет" + +#: src/misc/coders/settings/Audio.js:149 +msgid "Custom sampling (Hz)" +msgstr "Пользовательская выборка (Гц)" + +#: src/views/Edit/Sources/VirtualVideo.js:149 +msgid "Custom scale" +msgstr "Пользовательский масштаб" + +#: src/misc/coders/settings/Video.js:202 +msgid "Custom size" +msgstr "Пользовательский размер" + +#: src/views/Edit/Sources/V4L.js:110 +msgid "Custom video device" +msgstr "Пользовательское видеоустройство" + +#: src/views/Edit/Sources/AVFoundation.js:127 +msgid "Custom video index" +msgstr "Пользовательский индекс видео" + +#: src/misc/CopyButton.js:20 +#: src/misc/TextFieldCopy.js:33 +#: src/misc/Textarea.js:46 +msgid "Data copied to clipboard" +msgstr "Данные скопированы в буфер обмена" + +#: src/views/Edit/Sources/VirtualVideo.js:167 +msgid "Death color" +msgstr "Цвет смерти" + +#: src/misc/EncodingSelect.js:210 +#: src/views/Edit/Wizard/index.js:628 +msgid "Decoder" +msgstr "Декодер" + +#: src/views/Edit/Sources/AVFoundation.js:115 +#: src/views/Edit/Sources/AVFoundation.js:149 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:76 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:105 +#: src/views/Playersite.js:451 +#: src/views/Playersite.js:526 +#: src/views/Playersite.js:570 +msgid "Default" +msgstr "По умолчанию" + +#: src/misc/coders/Encoders/audio/Opus.js:84 +msgid "Delay" +msgstr "Задержка" + +#: src/views/Edit/Sources/ALSA.js:132 +msgid "Delay (ms)" +msgstr "Задержка (мс)" + +#: src/views/Edit/index.js:563 +#: src/views/Edit/index.js:599 +#: src/views/Playersite.js:474 +#: src/views/Publication/Edit.js:574 +#: src/views/Publication/Edit.js:606 +msgid "Delete" +msgstr "Удалить" + +#: src/views/Publication/Edit.js:611 +msgid "Deleting a publication service cannot be reversed. The publication stops immediately." +msgstr "Удаление службы публикации нельзя отменить. Публикация сразу прекращается." + +#: src/views/Publication/Services/Twitter.js:141 +#: src/views/Publication/Services/Youtube.js:167 +msgid "Delivering mode" +msgstr "Режим доставки" + +#: src/misc/controls/Metadata.js:85 +#: src/misc/controls/Metadata.js:110 +msgid "Description" +msgstr "Описание" + +#: src/views/Playersite.js:352 +#: src/views/Playersite.js:509 +msgid "Design" +msgstr "Дизайн" + +#: src/views/Edit/Sources/Framebuffer.js:87 +#: src/views/Edit/Wizard/index.js:890 +#: src/views/Publication/Services/Framebuffer.js:93 +msgid "Device" +msgstr "Устройство" + +#: src/misc/ActionButton.js:24 +#: src/misc/ActionButton.js:45 +#: src/misc/ActionButton.js:59 +msgid "Disconnect" +msgstr "Отключить" + +#: src/views/Edit/index.js:580 +msgid "Disconnect & Continue" +msgstr "Отключить и продолжить" + +#: src/misc/ActionButton.js:18 +#: src/views/Publication/Process.js:47 +msgid "Disconnecting ..." +msgstr "Отключение..." + +#: src/views/Settings.js:1650 +msgid "Disk" +msgstr "Диск" + +#: src/views/Settings.js:1684 +#: src/views/Settings.js:1692 +msgid "Disk cache" +msgstr "Кэш диска" + +#: src/Footer.js:315 +#: src/Footer.js:328 +msgid "Disk storage" +msgstr "Дисковое хранилище" + +#: src/views/Settings.js:2063 +msgid "Do you really want to restart the application now?" +msgstr "Вы действительно хотите перезапустить приложение сейчас?" + +#: src/views/Edit/index.js:591 +msgid "Do you want to delete \"{0}\"?" +msgstr "Вы хотите удалить \"{0}\"?" + +#: src/views/Publication/Edit.js:598 +msgid "Do you want to delete {title}?" +msgstr "Вы хотите удалить {title}?" + +#: src/views/Edit/index.js:572 +msgid "Do you want to disconnect \"{0}\"?" +msgstr "Вы хотите отключить \"{0}\"?" + +#: src/Header.js:289 +#: src/Header.js:330 +msgid "Docs" +msgstr "Документы" + +#: src/views/Publication/Services/DASH.js:501 +#: src/views/Publication/Services/HLS.js:496 +#: src/views/Publication/Services/Icecast.js:238 +#: src/views/Publication/Services/Image2.js:171 +#: src/views/Publication/Services/MPEGTS.js:355 +#: src/views/Publication/Services/RTMP.js:250 +#: src/views/Publication/Services/RTSP.js:235 +#: src/views/Publication/Services/SRT.js:428 +#: src/views/Publication/Services/UDP.js:241 +msgid "Documentation" +msgstr "Документация" + +#: src/misc/Progress.js:127 +msgid "Dup. frames" +msgstr "Дуп. кадры" + +#: src/views/Publication/Player.js:285 +msgid "EDIT: Player" +msgstr "РЕДАКТИРОВАТЬ: Плеер" + +#: src/views/Playersite.js:346 +msgid "EDIT: Publication Website" +msgstr "РЕДАКТИРОВАТЬ: Сайт публикации" + +#: src/views/Edit/index.js:391 +msgid "Edit" +msgstr "Редактировать" + +#: src/views/Edit/index.js:417 +msgid "Edit the audio and video sources for the live stream. Add a description, and set your desired content license." +msgstr "Отредактируйте аудио и видеоисточники для прямой трансляции. Добавьте описание и установите желаемую лицензию на содержимое." + +#: src/views/Publication/Edit.js:377 +msgid "Edit: {title}" +msgstr "Изменить: {title}" + +#: src/views/Publication/Player.js:319 +msgid "Embed" +msgstr "Встроить" + +#: src/views/Edit/Sources/Network.js:577 +#: src/views/Edit/Wizard/Sources/InternalRTMP.js:55 +msgid "Enable RTMP server ..." +msgstr "Включить RTMP-сервер..." + +#: src/views/Edit/Sources/VirtualAudio.js:162 +msgid "Enable a periodic beep every second with this value times the carrier frequency" +msgstr "Включить периодический звуковой сигнал каждую секунду с этим значением, умноженным на несущую частоту" + +#: src/views/Publication/Services/Dummy.js:278 +#: src/views/Publication/Services/Facebook.js:139 +msgid "Enable backup stream" +msgstr "Включить резервный поток" + +#: src/views/Publication/Player.js:427 +msgid "Enable nerd statistics" +msgstr "Включить статистику ботаников" + +#: src/views/Publication/Services/Dummy.js:277 +#: src/views/Publication/Services/Facebook.js:138 +msgid "Enable primary stream" +msgstr "Включить основной поток" + +#: src/misc/controls/Snapshot.js:44 +msgid "Enable snapshots" +msgstr "Включить снимки" + +#: src/views/Settings.js:1433 +msgid "Enabling authorization is strongly advised. Otherwise, anybody can access this instance." +msgstr "Настоятельно рекомендуется включить авторизацию. В противном случае любой может получить доступ к этому экземпляру." + +#: src/views/Settings.js:1593 +msgid "Enabling basic auth is strongly advised. Otherwise, anybody could write data to /memfs." +msgstr "Настоятельно рекомендуется включить базовую аутентификацию. В противном случае любой может записать данные в /memfs." + +#: src/views/Edit/Wizard/index.js:634 +msgid "Encoder" +msgstr "Кодер" + +#: src/views/Edit/Summary.js:66 +#: src/views/Publication/Add.js:374 +#: src/views/Publication/Add.js:466 +#: src/views/Publication/Edit.js:388 +#: src/views/Publication/Edit.js:505 +msgid "Encoding" +msgstr "Кодирование" + +#: src/views/Publication/Services/HLS.js:445 +#: src/views/Publication/Services/RTMP.js:222 +#: src/views/Publication/Services/SRT.js:372 +msgid "Encryption" +msgstr "Шифрование" + +#: src/misc/ChannelList.js:376 +msgid "Enter a name for the new channel." +msgstr "Введите имя для нового канала." + +#: src/views/Password.js:107 +msgid "Enter password" +msgstr "Введите пароль" + +#: src/views/Edit/Sources/Network.js:348 +#: src/views/Edit/Wizard/Sources/Network.js:59 +msgid "Enter the address of your network source:" +msgstr "Введите адрес вашего сетевого источника:" + +#: src/views/Password.js:97 +msgid "Enter username" +msgstr "Введите имя пользователя" + +#: src/misc/coders/Encoders/video/H264VideoToolbox.js:61 +msgid "Entropy coder" +msgstr "Энтропийный кодер" + +#: src/views/Edit/Wizard/index.js:1118 +#: src/views/Incompatible.js:30 +#: src/views/Invalid.js:29 +#: src/views/Publication/Process.js:63 +#: src/views/Settings.js:1109 +msgid "Error" +msgstr "Ошибка" + +#: src/misc/CopyButton.js:22 +#: src/misc/TextFieldCopy.js:35 +#: src/misc/Textarea.js:48 +msgid "Error while copying data to clipboard" +msgstr "Ошибка при копировании данных в буфер обмена" + +#: src/views/Main/index.js:324 +#: src/views/Publication/Process.js:64 +msgid "Error: {0}" +msgstr "Ошибка: {0}" + +#: src/views/Playersite.js:732 +msgid "Expands the area above the channel list (live chat)." +msgstr "Расширяет область над списком каналов (живой чат)." + +#: src/views/Playersite.js:752 +msgid "Expands the area under the channel description (comment boxes)." +msgstr "Расширяет область под описанием канала (окна комментариев)." + +#: src/views/Settings.js:1199 +msgid "Expert mode" +msgstr "Режим эксперта" + +#: src/views/Playersite.js:717 +msgid "Extend channel list" +msgstr "Расширить список каналов" + +#: src/views/Playersite.js:737 +msgid "Extend content" +msgstr "Расширить содержимое" + +#: src/views/Playersite.js:757 +msgid "Extend footer" +msgstr "Расширить нижний колонтитул" + +#: src/views/Playersite.js:697 +msgid "Extend header" +msgstr "Расширить заголовок" + +#: src/views/Settings.js:1936 +msgid "FFmpeg" +msgstr "FFmpeg" + +#: src/misc/Progress.js:64 +#: src/views/Main/Progress.js:79 +msgid "FPS" +msgstr "FPS" + +#: src/views/Publication/Add.js:180 +msgid "Failed to create publication service ({0})" +msgstr "Не удалось создать службу публикации ({0})" + +#: src/views/Playersite.js:310 +msgid "Failed to create publication website files." +msgstr "Не удалось создать файлы веб-сайта публикации." + +#: src/views/Edit/Profile.js:341 +#: src/views/Edit/Profile.js:471 +msgid "Failed to probe the source. Please check the <0>probe details." +msgstr "Не удалось проверить источник. Пожалуйста, проверьте <0>подробности." + +#: src/utils/restreamer.js:434 +msgid "Failed to refresh token: {0}" +msgstr "Не удалось обновить токен: {0}" + +#: src/views/Edit/index.js:304 +msgid "Failed to save ingest metadata" +msgstr "Не удалось сохранить импортированные метаданные" + +#: src/views/Edit/index.js:179 +msgid "Failed to stop process" +msgstr "Не удалось остановить процесс" + +#: src/views/Playersite.js:303 +msgid "Failed to store player size setting." +msgstr "Не удалось сохранить настройку размера проигрывателя." + +#: src/views/Publication/Edit.js:222 +msgid "Failed to store publication service ({0})" +msgstr "Не удалось сохранить службу публикации ({0})" + +#: src/views/Edit/index.js:297 +msgid "Failed to update ingest process ({0})" +msgstr "Не удалось обновить процесс загрузки ({0})" + +#: src/views/Edit/index.js:310 +msgid "Failed to update the player" +msgstr "Не удалось обновить плеер" + +#: src/views/Edit/Wizard/index.js:375 +#: src/views/Edit/Wizard/index.js:838 +msgid "Failed to verify the source. Please check the address." +msgstr "Не удалось проверить источник. Пожалуйста, проверьте адрес." + +#: src/views/Edit/Profile.js:549 +msgid "Finish" +msgstr "Закончить" + +#: src/views/Edit/Sources/VirtualVideo.js:182 +msgid "Flags" +msgstr "Флаги" + +#: src/views/Playersite.js:772 +msgid "For Javascripts." +msgstr "Для Javascripts." + +#: src/views/Playersite.js:712 +msgid "For Stylesheets." +msgstr "Для таблиц стилей." + +#: src/views/Edit/Sources/Network.js:439 +msgid "Force input framerate" +msgstr "Принудительная частота кадров на входе" + +#: src/misc/coders/settings/Video.js:240 +msgid "Format" +msgstr "Формат" + +#: src/misc/Progress.js:114 +msgid "Frame drops" +msgstr "Потеря кадров" + +#: src/views/Edit/Sources/Framebuffer.js:129 +msgid "Framebuffer" +msgstr "Кадровый буфер" + +#: src/misc/coders/settings/Video.js:135 +#: src/views/Edit/Sources/Network.js:452 +msgid "Framerate" +msgstr "Частота кадров" + +#: src/views/Edit/Sources/VirtualAudio.js:145 +msgid "Frequency (Hz)" +msgstr "Частота (Гц)" + +#: src/views/Publication/Services/Core.js:129 +#: src/views/Publication/Services/Facebook.js:115 +#: src/views/Publication/Services/Facebook.js:133 +#: src/views/Publication/Services/Instagram.js:88 +#: src/views/Publication/Services/Restream.js:120 +#: src/views/Publication/Services/Twitch.js:133 +#: src/views/Publication/Services/Twitter.js:179 +#: src/views/Publication/Services/Youtube.js:177 +msgid "GET" +msgstr "GET" + +#: src/views/Edit/Sources/Network.js:471 +#: src/views/Edit/index.js:400 +#: src/views/Edit/index.js:412 +#: src/views/Playersite.js:350 +#: src/views/Playersite.js:363 +#: src/views/Publication/Add.js:372 +#: src/views/Publication/Edit.js:386 +#: src/views/Publication/Services/DASH.js:211 +#: src/views/Publication/Services/HLS.js:200 +#: src/views/Publication/Services/Icecast.js:177 +#: src/views/Publication/Services/Image2.js:139 +#: src/views/Publication/Services/RTMP.js:145 +#: src/views/Publication/Services/RTSP.js:169 +#: src/views/Publication/Services/SRT.js:177 +#: src/views/Settings.js:1138 +#: src/views/Settings.js:1158 +msgid "General" +msgstr "Общие" + +#: src/views/Publication/Player.js:410 +msgid "Google Analytics ID" +msgstr "Идентификатор Google Аналитики" + +#: src/views/Publication/Player.js:420 +msgid "Google Analytics Tracker Name" +msgstr "Название трекера Google Аналитики" + +#: src/views/Edit/index.js:471 +#: src/views/Main/index.js:369 +msgid "HLS" +msgstr "HLS" + +#: src/views/Settings.js:1510 +msgid "HLS statistic for the In-memory storage" +msgstr "Статистика HLS для хранилища в памяти" + +#: src/views/Edit/Sources/Network.js:429 +msgid "HTTP and HTTPS" +msgstr "HTTP и HTTPS" + +#: src/views/Settings.js:1323 +msgid "HTTP port" +msgstr "HTTP-порт" + +#: src/views/Settings.js:1352 +msgid "HTTPS (SSL/TLS)" +msgstr "HTTPS (SSL/TLS)" + +#: src/views/Settings.js:1336 +msgid "HTTPS port" +msgstr "HTTPS-порт" + +#: src/views/Edit/Sources/V4L.js:151 +#: src/views/Edit/Wizard/Sources/V4L.js:140 +msgid "Hardware device" +msgstr "Аппаратное устройство" + +#: src/views/Playersite.js:579 +msgid "Header" +msgstr "Заголовок" + +#: src/views/Playersite.js:535 +msgid "Headline" +msgstr "Заголовок" + +#: src/views/Login.js:319 +msgid "Hosted Restreamer interface" +msgstr "Размещенный интерфейс Restreamer" + +#: src/views/Settings.js:1258 +msgid "Human readable name on the service." +msgstr "Человекочитаемое имя на сервисе." + +#: src/views/Publication/Services/Bitmovin.js:89 +msgid "IP address" +msgstr "IP адрес" + +#: src/views/Settings.js:2008 +msgid "If you changed the ports, it might be that Restreamer Core restarted already, but it is now available on a different port." +msgstr "Если вы изменили порты, возможно, ядро Restreamer уже перезапустилось, но теперь он доступен на другом порту." + +#: src/views/Settings.js:2002 +msgid "If you enabled Let's Encrypt TLS it might take some time to acquire the certificates. Make sure that Restreamer Core is reachable via port 80 from the internet. Please check the console log of Restreamer Core." +msgstr "Если вы включили Let's Encrypt TLS, получение сертификатов может занять некоторое время. Убедитесь, что ядро Restreamer доступно через порт 80 из Интернета. Пожалуйста, проверьте журнал консоли ядра Restreamer." + +#: src/views/Settings.js:1525 +msgid "Ignore IP ranges" +msgstr "Игнорировать диапазоны IP-адресов" + +#: src/views/Playersite.js:624 +#: src/views/Publication/Player.js:366 +msgid "Image URL" +msgstr "URL изображения" + +#: src/views/Playersite.js:649 +msgid "Imprint" +msgstr "Выходные данные" + +#: src/views/Playersite.js:368 +msgid "In addition to the player, the Restreamer offers a complete landingpage, which you can use to present your live stream easily and quickly." +msgstr "В дополнение к плееру Restreamer предлагает полноценную целевую страницу, которую вы можете использовать для простого и быстрого представления своей прямой трансляции." + +#: src/views/Settings.js:1577 +msgid "In-memory" +msgstr "В памяти" + +#: src/Footer.js:285 +#: src/Footer.js:298 +msgid "In-memory storage" +msgstr "Хранилище в памяти" + +#: src/views/Publication/Add.js:269 +msgid "Incompatible" +msgstr "Несовместимо" + +#: src/misc/coders/settings/Audio.js:67 +#: src/misc/coders/settings/Audio.js:118 +msgid "Inherit" +msgstr "Наследовать" + +#: src/views/Playersite.js:707 +msgid "Inject 1" +msgstr "Встраивание 1" + +#: src/views/Playersite.js:727 +msgid "Inject 2" +msgstr "Встраивание 2" + +#: src/views/Playersite.js:747 +msgid "Inject 3" +msgstr "Встраивание 3" + +#: src/views/Playersite.js:767 +msgid "Inject 4" +msgstr "Встраивание 4" + +#: src/views/Edit/Wizard/Sources/InternalHLS.js:75 +msgid "Internal HLS server" +msgstr "Внутренний HLS-сервер" + +#: src/views/Edit/Wizard/Sources/InternalRTMP.js:95 +msgid "Internal RTMP server" +msgstr "Внутренний RTMP-сервер" + +#: src/misc/controls/Snapshot.js:50 +msgid "Interval (seconds)" +msgstr "Интервал (секунды)" + +#: src/Header.js:295 +#: src/Header.js:336 +msgid "Issue alert" +msgstr "Оповещение о проблеме" + +#: src/misc/coders/settings/Video.js:90 +msgid "Keyframe interval (seconds)" +msgstr "Интервал между ключевыми кадрами (секунды)" + +#: src/misc/coders/settings/Audio.js:97 +msgid "Layout" +msgstr "Макет" + +#: src/views/Settings.js:1357 +msgid "Let's Encrypt certification" +msgstr "Сертификат Let's Encrypt" + +#: src/views/Settings.js:1365 +msgid "Let's Encrypt requires one or more public domain names and an accessible port 80/TCP." +msgstr "Для работы Let's Encrypt требуется одно или несколько общедоступных доменных имен и доступный порт 80/TCP." + +#: src/misc/coders/Encoders/video/H264NVENC.js:109 +msgid "Level" +msgstr "Уровень" + +#: src/views/Settings.js:1918 +msgid "Level of system protocol." +msgstr "Уровень системного протокола." + +#: src/views/Edit/Wizard/index.js:1061 +#: src/views/Edit/index.js:403 +#: src/views/Edit/index.js:525 +msgid "License" +msgstr "Лицензия" + +#: src/views/Edit/Sources/VirtualVideo.js:176 +msgid "Life color" +msgstr "Цвет жизни" + +#: src/views/Playersite.js:606 +msgid "Linecolor" +msgstr "Цвет линии" + +#: src/views/Playersite.js:544 +#: src/views/Publication/Player.js:396 +msgid "Link" +msgstr "Ссылка" + +#: src/views/Playersite.js:553 +msgid "Link, mouseover" +msgstr "Ссылка, наведение курсора" + +#: src/views/Settings.js:1533 +msgid "List of IP ranges in CIDR notation, e.g., 127.0.0.1/32, that the statistics will not record—one IP range per line. Leave empty to record all sessions." +msgstr "Список диапазонов IP адресов в нотации CIDR, напр., 127.0.0.1/32, которые не будут записываться статистикой — по одному диапазону IP адресов на строку. Оставьте пустым для записи всех сеансов.." + +#: src/views/Settings.js:1751 +msgid "List of file extensions to cache (e.g. \".html\"), one per line. Leave empty to cache all file types." +msgstr "Список расширений файлов для кэширования (напр.. \".html\"), по одному в строке. Оставьте пустым, чтобы кэшировать все типы файлов." + +#: src/misc/controls/HLS.js:74 +msgid "List size (segments)" +msgstr "Размер списка (сегменты)" + +#: src/views/Publication/Services/Facebook.js:16 +msgid "Live-Streaming to Facebook Live RTMP service" +msgstr "Прямая трансляция на сервис Facebook Live RTMP" + +#: src/views/Publication/Services/Instagram.js:17 +msgid "Live-Streaming to Instagram Live RTMP Service. The stream key requires a service such as <0>Yellow Duck." +msgstr "Прямая трансляция на сервис Instagram Live RTMP. Для ключа потока требуется такая служба, как <0>Yellow Duck." + +#: src/views/Publication/Services/Twitch.js:17 +msgid "Live-Streaming to Twitch Live RTMP Service." +msgstr "Прямая трансляция на сервис Twitch Live RTMP." + +#: src/views/Publication/Services/Vimeo.js:12 +msgid "Live-Streaming to Vimeo Live RTMP Service" +msgstr "Прямая трансляция на RTMP-сервис Vimeo Live" + +#: src/views/Publication/Services/Livespotting.js:94 +msgid "Livesource ID" +msgstr "Livesource ID" + +#: src/views/Settings.js:1870 +msgid "Log level" +msgstr "Уровень журнала" + +#: src/misc/modals/Process.js:90 +#: src/views/Settings.js:1147 +#: src/views/Settings.js:1846 +msgid "Logging" +msgstr "Логирование" + +#: src/views/Login.js:297 +#: src/views/Login.js:391 +#: src/views/Login.js:406 +#: src/views/Publication/Services/Akamai.js:124 +msgid "Login" +msgstr "Авторизоваться" + +#: src/utils/restreamer.js:263 +#: src/utils/restreamer.js:268 +#: src/utils/restreamer.js:297 +#: src/utils/restreamer.js:302 +msgid "Login failed: Couldn't load API details" +msgstr "Ошибка входа: не удалось загрузить сведения об API" + +#: src/utils/restreamer.js:254 +#: src/utils/restreamer.js:288 +msgid "Login failed: {0}" +msgstr "Ошибка входа: {0}" + +#: src/views/Settings.js:1425 +msgid "Login/JWT authorization" +msgstr "Вход/JWT-авторизация" + +#: src/views/Publication/Player.js:321 +msgid "Logo" +msgstr "Логотип" + +#: src/Header.js:307 +msgid "Logout" +msgstr "Выйти" + +#: src/Footer.js:208 +msgid "MB" +msgstr "MB" + +#: src/views/Edit/index.js:380 +msgid "Main Source" +msgstr "Главный источник" + +#: src/views/Main/index.js:260 +#: src/views/Playersite.js:389 +msgid "Main channel" +msgstr "Основной канал" + +#: src/views/Publication/Player.js:102 +msgid "Main channel not found" +msgstr "Основной канал не найден" + +#: src/views/Edit/Wizard/index.js:188 +msgid "Main channel saved" +msgstr "Основной канал сохранен" + +#: src/views/Playersite.js:412 +msgid "Main page channel (index.html)." +msgstr "Канал главной страницы (index.html)." + +#: src/views/Publication/Add.js:411 +#: src/views/Publication/Add.js:444 +#: src/views/Publication/Add.js:511 +#: src/views/Publication/Edit.js:419 +#: src/views/Publication/Edit.js:483 +#: src/views/Publication/Edit.js:552 +msgid "Maintainer:" +msgstr "Сопровождающий:" + +#: src/views/Settings.js:1710 +msgid "Maximum allowed cache size, 0 for unlimited." +msgstr "Максимально допустимый размер кеша, 0 для неограниченного." + +#: src/views/Settings.js:1632 +msgid "Maximum allowed megabytes of RAM for /memfs, 0 for unlimited." +msgstr "Максимально допустимо мегабайт ОЗУ для /memfs, 0 для неограниченного." + +#: src/views/Settings.js:1676 +msgid "Maximum allowed megabytes to consume from hard disk. 0 for unlimited." +msgstr "Максимально разрешенное количество мегабайт для использования с жесткого диска. 0 без ограничений." + +#: src/views/Settings.js:1394 +msgid "Maximum bandwidth Mbit/s" +msgstr "Максимальная пропускная способность Мбит/с" + +#: src/misc/coders/Encoders/audio/Opus.js:74 +msgid "Maximum delay in milliseconds." +msgstr "Максимальная задержка в миллисекундах." + +#: src/views/Settings.js:1728 +msgid "Maximum file size (Megabytes)" +msgstr "Максимальный размер файла (Мегабайты)" + +#: src/views/Settings.js:1736 +msgid "Maximum file size to put in cache." +msgstr "Максимальный размер файла для кэширования." + +#: src/views/Settings.js:1954 +msgid "Maximum log histroy" +msgstr "Максимальная история журнала" + +#: src/views/Settings.js:1923 +#: src/views/Settings.js:1941 +msgid "Maximum log lines" +msgstr "Максимальное количество строк журнала" + +#: src/views/Settings.js:1624 +#: src/views/Settings.js:1668 +#: src/views/Settings.js:1702 +msgid "Maximum size (Megabytes)" +msgstr "Максимальный размер (Мегабайты)" + +#: src/views/Settings.js:1542 +msgid "Maximum viewer idle time (Seconds)" +msgstr "Максимальное время простоя зрителя (в секундах)" + +#: src/views/Settings.js:1378 +msgid "Maximum viewers" +msgstr "Максимальное количество зрителей" + +#: src/Footer.js:202 +msgid "Memory" +msgstr "Память" + +#: src/views/Edit/index.js:402 +msgid "Meta information" +msgstr "Мета информация" + +#: src/views/Edit/Wizard/index.js:1006 +#: src/views/Edit/index.js:505 +msgid "Metadata" +msgstr "Метаданные" + +#: src/views/Edit/Sources/VirtualVideo.js:158 +msgid "Mold" +msgstr "Плесень" + +#: src/views/Publication/Services/Twitter.js:30 +msgid "More about Twitter's copyright <0>here." +msgstr "Подробнее об авторских правах Twitter <0>здесь." + +#: src/views/Publication/Services/Youtube.js:31 +msgid "More about YouTube's copyright <0>here." +msgstr "Подробнее об авторских правах YouTube <0>здесь." + +#: src/views/Publication/Services/Facebook.js:17 +#: src/views/Publication/Services/Twitch.js:18 +#: src/views/Publication/Services/Vimeo.js:14 +msgid "More about licenses here" +msgstr "Подробнее о лицензиях здесь" + +#: src/views/Settings.js:1227 +msgid "More about the service" +msgstr "Подробнее о сервисе" + +#: src/views/Publication/Player.js:438 +msgid "Mute" +msgstr "Без звука" + +#: src/misc/ChannelList.js:380 +#: src/misc/controls/Metadata.js:76 +#: src/misc/controls/Metadata.js:98 +#: src/views/Playersite.js:489 +#: src/views/Settings.js:1250 +msgid "Name" +msgstr "Имя" + +#: src/views/Playersite.js:494 +msgid "Name for the template. If the name already exists, it will be overwritten." +msgstr "Имя для шаблона. Если имя уже существует, оно будет перезаписано." + +#: src/views/Settings.js:1142 +#: src/views/Settings.js:1297 +msgid "Network" +msgstr "Сеть" + +#: src/views/Edit/Sources/Network.js:684 +#: src/views/Edit/Wizard/Sources/Network.js:110 +msgid "Network source" +msgstr "Сетевой источник" + +#: src/views/Edit/Wizard/index.js:413 +#: src/views/Edit/Wizard/index.js:652 +#: src/views/Edit/Wizard/index.js:917 +#: src/views/Edit/Wizard/index.js:1029 +msgid "Next" +msgstr "Далее" + +#: src/views/Edit/Profile.js:413 +msgid "Next: Audio" +msgstr "Далее: Аудио" + +#: src/views/Welcome.js:39 +msgid "Next: Video setup" +msgstr "Далее: Настройка видео" + +#: src/views/Edit/Wizard/index.js:1182 +msgid "No" +msgstr "Нет" + +#: src/views/Edit/Sources/NoAudio.js:45 +#: src/views/Edit/Wizard/index.js:901 +msgid "No audio" +msgstr "Нет звука" + +#: src/views/Edit/StreamSelect.js:62 +msgid "No audio stream available" +msgstr "Аудиопоток недоступен" + +#: src/views/Edit/Wizard/Sources/AVFoundation.js:70 +#: src/views/Edit/Wizard/Sources/V4L.js:99 +msgid "No input device available" +msgstr "Устройство ввода недоступно" + +#: src/views/Edit/Wizard/index.js:373 +msgid "No live stream was detected. Please check the software that sends the stream." +msgstr "Прямая трансляция не обнаружена. Пожалуйста, проверьте программное обеспечение, которое отправляет поток." + +#: src/views/Edit/Summary.js:28 +msgid "No source selected" +msgstr "Источник не выбран" + +#: src/views/Edit/SourceSelect.js:174 +msgid "No sources available" +msgstr "Нет доступных источников" + +#: src/misc/EncodingSelect.js:164 +msgid "No suitable encoder found." +msgstr "Подходящий энкодер не найден." + +#: src/views/Main/index.js:286 +#: src/views/Publication/Player.js:294 +msgid "No video" +msgstr "Нет видео" + +#: src/views/Edit/StreamSelect.js:47 +msgid "No video stream available" +msgstr "Видеопоток недоступен" + +#: src/views/Settings.js:1243 +msgid "Node ID" +msgstr "Node ID" + +#: src/views/Edit/Sources/VirtualAudio.js:90 +msgid "Noise" +msgstr "Шум" + +#: src/views/Edit/Sources/AVFoundation.js:145 +#: src/views/Edit/Summary.js:30 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:98 +msgid "None" +msgstr "Никто" + +#: src/views/Playersite.js:353 +#: src/views/Playersite.js:644 +msgid "Notes" +msgstr "Заметки" + +#: src/views/Settings.js:1931 +#: src/views/Settings.js:1949 +msgid "Number of log lines to keep." +msgstr "Количество строк журнала для сохранения." + +#: src/views/Settings.js:1962 +msgid "Number of logs to keep for each process." +msgstr "Количество журналов для каждого процесса." + +#: src/views/Playersite.js:813 +#: src/views/Publication/Player.js:466 +msgid "OK" +msgstr "OK" + +#: src/views/Settings.js:1497 +msgid "One referrer per line, e.g. http://www.example.com" +msgstr "Один реферер на строку, напр.. http://www.example.com" + +#: src/views/Playersite.js:798 +msgid "Open" +msgstr "Открыть" + +#: src/views/Publication/Edit.js:510 +msgid "Passthrough (copy) should only be disabled if necessary. Each encoding requires additional CPU/GPU resources." +msgstr "Сквозную \"Passthrough (copy)\" следует отключать только в случае необходимости. Каждое кодирование требует дополнительных ресурсов CPU/GPU." + +#: src/views/Edit/Sources/Network.js:382 +#: src/views/Edit/Wizard/Sources/Network.js:88 +#: src/views/Login.js:282 +#: src/views/Publication/Services/Akamai.js:134 +#: src/views/Publication/Services/DASH.js:198 +#: src/views/Publication/Services/DaCast.js:142 +#: src/views/Publication/Services/HLS.js:187 +#: src/views/Publication/Services/RTSP.js:156 +#: src/views/Publication/Services/Red5.js:157 +#: src/views/Publication/Services/WOWZA.js:178 +#: src/views/Settings.js:1453 +#: src/views/Settings.js:1611 +msgid "Password" +msgstr "Пароль" + +#: src/views/Settings.js:1459 +#: src/views/Settings.js:1619 +msgid "Password for authorization." +msgstr "Пароль для авторизации." + +#: src/views/Edit/Sources/Network.js:387 +#: src/views/Edit/Wizard/Sources/Network.js:90 +msgid "Password for the device." +msgstr "Пароль для устройства." + +#: src/views/Settings.js:1555 +msgid "Persist viewer statistics" +msgstr "Сохранять статистику просмотров" + +#: src/views/Publication/Services/Framebuffer.js:102 +msgid "Pixel format" +msgstr "Пиксельный формат" + +#: src/views/Login.js:311 +msgid "Plan: <0>Starter" +msgstr "План: <0>Начальный" + +#: src/views/Publication/Add.js:347 +msgid "Platforms" +msgstr "Платформы" + +#: src/views/Publication/Player.js:323 +#: src/views/Settings.js:1144 +#: src/views/Settings.js:1468 +msgid "Playback" +msgstr "Воспроизведение" + +#: src/views/Main/Egress.js:95 +msgid "Player" +msgstr "Плеер" + +#: src/views/Publication/Player.js:328 +msgid "Player URL" +msgstr "URL-адрес плеера" + +#: src/views/Publication/Player.js:257 +msgid "Player settings saved" +msgstr "Настройки плеера сохранены" + +#: src/Header.js:267 +#: src/views/Playersite.js:375 +msgid "Playersite" +msgstr "Сайт плеера" + +#: src/views/Publication/Services/DASH.js:348 +#: src/views/Publication/Services/HLS.js:288 +msgid "Playlist" +msgstr "Плейлист" + +#: src/views/Main/index.js:329 +msgid "Please check the <0>process log" +msgstr "Пожалуйста, проверьте <0>журнал процесса" + +#: src/views/Publication/Services/Akamai.js:29 +#: src/views/Publication/Services/Bitmovin.js:23 +#: src/views/Publication/Services/Brightcove.js:23 +#: src/views/Publication/Services/CDN77.js:23 +#: src/views/Publication/Services/Core.js:26 +#: src/views/Publication/Services/DASH.js:35 +#: src/views/Publication/Services/DaCast.js:26 +#: src/views/Publication/Services/HLS.js:37 +#: src/views/Publication/Services/Icecast.js:29 +#: src/views/Publication/Services/Image2.js:33 +#: src/views/Publication/Services/Livespotting.js:23 +#: src/views/Publication/Services/MPEGTS.js:35 +#: src/views/Publication/Services/RTMP.js:32 +#: src/views/Publication/Services/RTSP.js:36 +#: src/views/Publication/Services/Red5.js:25 +#: src/views/Publication/Services/Restream.js:26 +#: src/views/Publication/Services/SRT.js:33 +#: src/views/Publication/Services/UDP.js:31 +#: src/views/Publication/Services/WOWZA.js:28 +msgid "Please contact the operator of the service and check what happens." +msgstr "Пожалуйста, свяжитесь с оператором сервиса и проверьте, что происходит." + +#: src/views/Playersite.js:122 +#: src/views/Playersite.js:197 +#: src/views/Publication/Player.js:159 +msgid "Please select a file to upload." +msgstr "Пожалуйста, выберите файл для загрузки." + +#: src/views/Publication/Add.js:471 +msgid "Please use \"Passthrough (copy)\" if possible. Encoding requires additional CPU/GPU resources." +msgstr "Пожалуйста, используйте \"Passthrough (copy)\", если это возможно. Кодирование требует дополнительных ресурсов CPU/GPU." + +#: src/views/Edit/Wizard/index.js:435 +#: src/views/Edit/Wizard/index.js:933 +msgid "Please wait. Probe stream data ..." +msgstr "Пожалуйста подождите. Данные о потоке..." + +#: src/views/Edit/Wizard/index.js:1103 +msgid "Please wait. Setting up the stream ..." +msgstr "Пожалуйста подождите. Настройка потока..." + +#: src/views/Publication/Services/Bitmovin.js:92 +#: src/views/Settings.js:1803 +msgid "Port" +msgstr "Порт" + +#: src/views/Publication/Player.js:381 +msgid "Position" +msgstr "Позиция" + +#: src/misc/coders/Encoders/video/H264NVENC.js:67 +#: src/misc/coders/Encoders/video/X264.js:62 +#: src/misc/coders/Encoders/video/X265.js:62 +msgid "Preset" +msgstr "Пресет" + +#: src/views/Publication/Services/Youtube.js:181 +msgid "Primary stream" +msgstr "Основной поток" + +#: src/views/Publication/Services/Facebook.js:106 +msgid "Primary stream key" +msgstr "Основной ключ потока" + +#: src/views/Edit/Sources/ALSA.js:136 +#: src/views/Edit/Sources/AVFoundation.js:201 +#: src/views/Edit/Sources/Framebuffer.js:110 +#: src/views/Edit/Sources/Network.js:505 +#: src/views/Edit/Sources/Network.js:552 +#: src/views/Edit/Sources/Network.js:599 +#: src/views/Edit/Sources/Raspicam.js:113 +#: src/views/Edit/Sources/V4L.js:131 +#: src/views/Edit/Sources/VirtualAudio.js:169 +#: src/views/Edit/Sources/VirtualVideo.js:188 +msgid "Probe" +msgstr "Зонд" + +#: src/views/Edit/index.js:493 +#: src/views/Publication/Add.js:433 +#: src/views/Publication/Edit.js:441 +msgid "Process" +msgstr "Процесс" + +#: src/views/Publication/Add.js:373 +#: src/views/Publication/Edit.js:387 +msgid "Process control" +msgstr "Контроль процесса" + +#: src/views/Publication/Edit.js:471 +msgid "Process debug" +msgstr "Отладка процесса" + +#: src/views/Main/index.js:413 +#: src/views/Publication/Edit.js:591 +msgid "Process debug report" +msgstr "Отчет об отладке процесса" + +#: src/views/Main/index.js:389 +#: src/views/Main/index.js:405 +#: src/views/Publication/Edit.js:468 +#: src/views/Publication/Edit.js:583 +msgid "Process details" +msgstr "Детали процесса" + +#: src/views/Main/index.js:392 +msgid "Process report" +msgstr "Отчет о процессе" + +#: src/views/Edit/index.js:401 +#: src/views/Edit/index.js:463 +msgid "Processing & Control" +msgstr "Обработка и контроль" + +#: src/misc/coders/Encoders/video/H264NVENC.js:92 +#: src/misc/coders/Encoders/video/H264VAAPI.js:82 +#: src/misc/coders/settings/Video.js:142 +#: src/views/Edit/Wizard/index.js:607 +msgid "Profile" +msgstr "Профиль" + +#: src/views/Edit/Sources/Network.js:520 +#: src/views/Publication/Services/Akamai.js:144 +#: src/views/Publication/Services/Akamai.js:182 +#: src/views/Publication/Services/Bitmovin.js:86 +#: src/views/Publication/Services/Brightcove.js:87 +#: src/views/Publication/Services/CDN77.js:90 +#: src/views/Publication/Services/Core.js:91 +#: src/views/Publication/Services/DASH.js:186 +#: src/views/Publication/Services/DaCast.js:110 +#: src/views/Publication/Services/DaCast.js:168 +#: src/views/Publication/Services/HLS.js:175 +#: src/views/Publication/Services/Icecast.js:154 +#: src/views/Publication/Services/Image2.js:120 +#: src/views/Publication/Services/MPEGTS.js:154 +#: src/views/Publication/Services/RTMP.js:122 +#: src/views/Publication/Services/RTSP.js:144 +#: src/views/Publication/Services/Red5.js:105 +#: src/views/Publication/Services/SRT.js:158 +#: src/views/Publication/Services/UDP.js:124 +#: src/views/Publication/Services/WOWZA.js:122 +msgid "Protocol" +msgstr "Протокол" + +#: src/views/Publication/Add.js:353 +msgid "Protocols" +msgstr "Протоколы" + +#: src/views/Settings.js:1307 +msgid "Public domain/s" +msgstr "Публичный домен/ы" + +#: src/views/Publication/Edit.js:113 +#: src/views/Publication/Edit.js:123 +msgid "Publication service not found" +msgstr "Служба публикации не найдены" + +#: src/views/Playersite.js:319 +msgid "Publication website settings saved" +msgstr "Настройки сайта публикации сохранены" + +#: src/views/Main/Publication.js:163 +msgid "Publications" +msgstr "Публикации" + +#: src/views/Edit/Sources/Network.js:657 +msgid "Pull Mode" +msgstr "Режим вытягивания" + +#: src/views/Edit/Sources/Network.js:656 +msgid "Pull or recieve the data:" +msgstr "Вытяните или получите данные:" + +#: src/misc/Progress.js:90 +#: src/misc/coders/Encoders/video/H264VAAPI.js:137 +msgid "Quality" +msgstr "Качество" + +#: src/views/Edit/Sources/VirtualVideo.js:118 +msgid "RGB test pattern" +msgstr "Тестовый шаблон RGB" + +#: src/views/Settings.js:1824 +msgid "RTMP app for publishing." +msgstr "Приложение RTMP для публикации." + +#: src/views/Settings.js:1765 +msgid "RTMP server" +msgstr "RTMP-сервер" + +#: src/views/Edit/Sources/Network.js:572 +#: src/views/Edit/Wizard/Sources/InternalRTMP.js:50 +msgid "RTMP server is not enabled" +msgstr "RTMP-сервер не включен" + +#: src/views/Settings.js:1811 +msgid "RTMP server listen address." +msgstr "Адрес прослушивания RTMP-сервера." + +#: src/views/Settings.js:1837 +msgid "RTMP token for publishing and playing. The token is the value of the URL query parameter 'token.'" +msgstr "Токен RTMP для публикации и воспроизведения. Токен – это значение параметра запроса URL-адреса token." + +#: src/views/Settings.js:1146 +#: src/views/Settings.js:1760 +msgid "RTMP/S" +msgstr "RTMP/S" + +#: src/views/Settings.js:1772 +msgid "RTMPS server" +msgstr "RTMPS-сервер" + +#: src/views/Edit/Sources/Network.js:405 +msgid "RTSP" +msgstr "RTSP" + +#: src/views/Edit/Sources/Raspicam.js:132 +#: src/views/Edit/Wizard/Sources/Raspicam.js:117 +msgid "Raspberry Pi camera" +msgstr "Камера Raspberry Pi" + +#: src/misc/coders/Encoders/video/H264NVENC.js:144 +#: src/misc/coders/Encoders/video/H264VAAPI.js:63 +msgid "Rate control" +msgstr "Контроль скорости" + +#: src/views/Edit/Sources/VirtualVideo.js:161 +msgid "Ratio" +msgstr "Соотношение" + +#: src/views/Edit/Sources/Network.js:434 +msgid "Read input at native speed" +msgstr "Чтение ввода на исходной скорости" + +#: src/views/Edit/Sources/Network.js:658 +msgid "Receive Mode" +msgstr "Режим приема" + +#: src/misc/ActionButton.js:32 +#: src/misc/ActionButton.js:53 +#: src/misc/controls/Process.js:46 +msgid "Reconnect" +msgstr "Повторное подключение" + +#: src/misc/controls/Process.js:53 +msgid "Reconnect delay (seconds)" +msgstr "Задержка повторного подключения (в секундах)" + +#: src/views/Main/index.js:340 +#: src/views/Publication/Process.js:68 +#: src/views/Publication/Process.js:81 +msgid "Reconnecting in {0}s" +msgstr "Повторное подключение через {0}с" + +#: src/views/Settings.js:1999 +msgid "Reconnecting to Restreamer Core failed for the last {RETRIES} seconds." +msgstr "Не удалось повторно подключиться к ядру Restreamer в течение последних {RETRIES} секунд." + +#: src/views/Password.js:148 +msgid "Reconnecting to Restreamer Core failed." +msgstr "Повторное подключение к ядру Restreamer не удалось." + +#: src/views/Edit/Sources/ALSA.js:122 +#: src/views/Edit/Sources/AVFoundation.js:181 +#: src/views/Edit/Sources/V4L.js:117 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:135 +#: src/views/Edit/Wizard/Sources/V4L.js:120 +msgid "Refresh" +msgstr "Обновление" + +#: src/views/Publication/Services/Restream.js:86 +#: src/views/Publication/Services/Twitch.js:78 +#: src/views/Publication/Services/Twitter.js:150 +#: src/views/Publication/Services/Twitter.js:166 +msgid "Region" +msgstr "Регион" + +#: src/views/Password.js:159 +#: src/views/Settings.js:2019 +msgid "Reload" +msgstr "Перезагрузка" + +#: src/views/Settings.js:1637 +msgid "Remove the oldest entries if the /memfs is full" +msgstr "Удалите самые старые записи, если /memfs заполнен" + +#: src/views/Settings.js:1784 +msgid "Requires activation" +msgstr "Требуется активация" + +#: src/views/Settings.js:1206 +#: src/views/Settings.js:2036 +#: src/views/Settings.js:2049 +#: src/views/Settings.js:2058 +msgid "Restart" +msgstr "Перезапустить" + +#: src/views/Settings.js:2027 +msgid "Restart required" +msgstr "Требуется перезагрузка" + +#: src/views/Password.js:136 +#: src/views/Settings.js:1987 +msgid "Restarting" +msgstr "Перезапуск" + +#: src/views/Password.js:141 +#: src/views/Settings.js:1992 +msgid "Restarting Restreamer Core ..." +msgstr "Перезапуск ядра Restreamer..." + +#: src/views/Settings.js:1015 +msgid "Restarting the application failed." +msgstr "Не удалось перезапустить приложение." + +#: src/views/Settings.js:1234 +msgid "Restreamer Service" +msgstr "Сервис Restreamer" + +#: src/views/Main/index.js:239 +msgid "Retrieving stream data ..." +msgstr "Получение данных потока..." + +#: src/views/Edit/Wizard/index.js:1128 +#: src/views/Invalid.js:43 +#: src/views/Settings.js:1116 +msgid "Retry" +msgstr "Повторить попытку" + +#: src/views/Edit/Sources/VirtualVideo.js:155 +msgid "Rule" +msgstr "Правило" + +#: src/misc/coders/settings/Audio.js:148 +msgid "Sampling" +msgstr "Выборка" + +#: src/views/Edit/Wizard/index.js:1087 +#: src/views/Edit/index.js:560 +#: src/views/Playersite.js:788 +#: src/views/Publication/Add.js:534 +#: src/views/Publication/Edit.js:571 +#: src/views/Publication/Player.js:452 +#: src/views/Settings.js:1977 +msgid "Save" +msgstr "Сохранить" + +#: src/views/Edit/Sources/VirtualVideo.js:148 +msgid "Scale" +msgstr "Масштаб" + +#: src/views/Settings.js:1723 +msgid "Seconds to keep files in cache." +msgstr "Секунд для хранения файлов в кеше." + +#: src/misc/controls/Process.js:59 +msgid "Seconds until a process is restarted." +msgstr "Секунд до перезапуска процесса." + +#: src/misc/controls/Process.js:72 +msgid "Seconds until a staled process is terminated." +msgstr "Секунд до завершения зависшего процесса." + +#: src/misc/controls/Snapshot.js:56 +msgid "Seconds until the snapshot/thumbnail of the video source is updated." +msgstr "Секунд до обновления моментального снимка/миниатюры источника видео." + +#: src/views/Settings.js:1473 +msgid "Security" +msgstr "Безопасность" + +#: src/views/Publication/Services/Core.js:122 +#: src/views/Publication/Services/Livespotting.js:103 +msgid "Security token" +msgstr "Токен безопасности" + +#: src/views/Publication/Player.js:342 +msgid "Seekbar color" +msgstr "Цвет панели поиска" + +#: src/misc/controls/HLS.js:62 +msgid "Segment length (seconds)" +msgstr "Длина сегмента (секунды)" + +#: src/misc/controls/HLS.js:67 +msgid "Segment will be cut on the following keyframe after this time has passed. 2 is recommended." +msgstr "Сегмент будет обрезан на следующем ключевом кадре по истечении этого времени. 2 рекомендуется." + +#: src/views/Publication/Services/DASH.js:429 +#: src/views/Publication/Services/HLS.js:358 +msgid "Segmentation" +msgstr "Сегментация" + +#: src/views/Edit/Sources/ALSA.js:108 +#: src/views/Edit/Sources/AVFoundation.js:172 +#: src/views/Edit/Sources/Framebuffer.js:99 +#: src/views/Edit/Sources/Raspicam.js:96 +#: src/views/Edit/Sources/V4L.js:103 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:120 +#: src/views/Edit/Wizard/Sources/Raspicam.js:95 +#: src/views/Edit/Wizard/Sources/V4L.js:114 +msgid "Select a device:" +msgstr "Выберите устройство:" + +#: src/views/Edit/Sources/VirtualAudio.js:84 +msgid "Select audio source:" +msgstr "Выберите источник звука:" + +#: src/views/Edit/Sources/VirtualVideo.js:114 +msgid "Select source ..." +msgstr "Выберите источник..." + +#: src/views/Edit/Sources/VirtualVideo.js:108 +msgid "Select video source:" +msgstr "Выберите источник видео:" + +#: src/views/Edit/Wizard/index.js:268 +msgid "Select whether you pull the stream from a <0>network source (such as a network camera) or the <1>internal RTMP server (e.g., OBS streams to the Restreamer)." +msgstr "Выберите, извлекаете ли вы поток из <0>сетевого источника (например, сетевой камеры) или <1>внутреннего RTMP-сервера (например, потоки OBS на Restreamer)..." + +#: src/misc/EncodingSelect.js:196 +msgid "Select your encoding setting:" +msgstr "Выберите настройку кодировки:" + +#: src/views/Playersite.js:588 +msgid "Selected" +msgstr "Выбрано" + +#: src/views/Playersite.js:395 +msgid "Selected channel" +msgstr "Выбранный канал" + +#: src/views/Playersite.js:449 +msgid "Selection" +msgstr "Выбор" + +#: src/views/Settings.js:1190 +msgid "Send anonymous metrics (helps us for future development)" +msgstr "Отправляйте анонимные метрики (помогает нам в будущем развитии)" + +#: src/views/Edit/Sources/Network.js:542 +#: src/views/Edit/Sources/Network.js:589 +#: src/views/Edit/Wizard/Sources/InternalHLS.js:48 +#: src/views/Edit/Wizard/Sources/InternalRTMP.js:68 +msgid "Send stream to this address:" +msgstr "Отправить поток на этот адрес:" + +#: src/views/Publication/Services/Framebuffer.js:16 +msgid "Send video to Framebuffer" +msgstr "Отправить видео в фреймбуфер" + +#: src/views/Publication/Services/DaCast.js:120 +msgid "Server" +msgstr "Сервер" + +#: src/Header.js:257 +#: src/views/Login.js:246 +#: src/views/Settings.js:1140 +#: src/views/Settings.js:1220 +msgid "Service" +msgstr "Обслуживание" + +#: src/views/Publication/Add.js:392 +#: src/views/Publication/Edit.js:406 +msgid "Service name" +msgstr "Имя службы" + +#: src/views/Settings.js:1271 +msgid "Service token for monitoring." +msgstr "Токен сервиса для мониторинга." + +#: src/Footer.js:240 +msgid "Sessions" +msgstr "Сессии" + +#: src/views/Settings.js:1402 +msgid "Sets a bandwidth limit in Mbit per second for outgoing HLS data transfer. All services, such as RTMP and outgoing processes, are included in the calculation. If the bandwidth is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." +msgstr "Устанавливает ограничение пропускной способности в Мбит/с для исходящей передачи данных HLS. Все услуги, такие как RTMP и исходящие процессы, включены в расчет. Если пропускная способность превышена, средства просмотра HLS получают код состояния HTTP 509 (превышен предел пропускной способности). 0 неограничен." + +#: src/views/Settings.js:1386 +msgid "Sets a viewer limit for HLS sessions. If the limit is exceeded, HLS viewers receive the HTTP status code 509 (Bandwidth Limit Exceeded). 0 is unlimited." +msgstr "Устанавливает лимит зрителей для сеансов HLS. Если ограничение превышено, средства просмотра HLS получают код состояния HTTP 509 (превышен предел пропускной способности). 0 неограничен." + +#: src/views/Settings.js:1225 +msgid "Setting for connection to the service." +msgstr "Настройка подключения к сервису." + +#: src/views/Settings.js:1126 +msgid "Settings" +msgstr "Настройки" + +#: src/views/Settings.js:1128 +msgid "Settings (expert mode)" +msgstr "Настройки (режим эксперта)" + +#: src/views/Settings.js:1653 +msgid "Settings for /data path. The access is protected by" +msgstr "Настройки пути /data. Доступ защищен" + +#: src/views/Settings.js:1580 +msgid "Settings for /memfs path." +msgstr "Настройки для пути /memfs." + +#: src/views/Settings.js:958 +msgid "Settings saved. All changes will be applied after restarting the application." +msgstr "Настройки сохранены. Все изменения вступят в силу после перезапуска приложения." + +#: src/views/Playersite.js:417 +msgid "Share button" +msgstr "Кнопка поделиться" + +#: src/views/Playersite.js:431 +msgid "Shows a reference to the project." +msgstr "Показывает ссылку на проект." + +#: src/views/Login.js:332 +msgid "Sign up (free)" +msgstr "Регистрация (бесплатно)" + +#: src/views/Edit/Sources/VirtualAudio.js:89 +msgid "Silence" +msgstr "Тишина" + +#: src/views/Edit/Wizard/index.js:898 +msgid "Silence Audio" +msgstr "Тишина Аудио" + +#: src/views/Edit/Sources/VirtualAudio.js:91 +msgid "Sine" +msgstr "Синус" + +#: src/views/Playersite.js:381 +msgid "Sitename" +msgstr "Название сайта" + +#: src/misc/coders/settings/Video.js:201 +msgid "Size" +msgstr "Размер" + +#: src/views/Edit/index.js:482 +#: src/views/Main/index.js:372 +msgid "Snapshot" +msgstr "Снимок" + +#: src/views/Login.js:316 +msgid "Social-login (OAuth2, 2FA)" +msgstr "Регистрация (OAuth2, 2FA)" + +#: src/views/Edit/Sources/Network.js:418 +msgid "Socket timeout (microseconds)" +msgstr "Время ожидания сокета (микросекунды)" + +#: src/views/Publication/Add.js:350 +msgid "Software" +msgstr "Программного обеспечения" + +#: src/views/Edit/Sources/VirtualAudio.js:88 +#: src/views/Edit/Sources/VirtualVideo.js:112 +msgid "Source" +msgstr "Источник" + +#: src/misc/Progress.js:103 +msgid "Speed" +msgstr "Скорость" + +#: src/misc/controls/Process.js:67 +msgid "Stale timeout (seconds)" +msgstr "Время ожидания ожидания (секунды)" + +#: src/views/Publication/Player.js:322 +#: src/views/Settings.js:1505 +msgid "Statistics" +msgstr "Статистика" + +#: src/views/Settings.js:1145 +#: src/views/Settings.js:1572 +msgid "Storage" +msgstr "Хранилище" + +#: src/views/Settings.js:1563 +msgid "Stores the viewer statistics to the disk." +msgstr "Сохраняет статистику просмотра на диск." + +#: src/views/Edit/StreamSelect.js:30 +#: src/views/Edit/StreamSelect.js:36 +#: src/views/Edit/StreamSelect.js:81 +#: src/views/Edit/Wizard/index.js:878 +msgid "Stream" +msgstr "Поток" + +#: src/views/Publication/Services/Akamai.js:156 +#: src/views/Publication/Services/CDN77.js:102 +msgid "Stream URL" +msgstr "URL-адрес потока" + +#: src/views/Publication/Services/CDN77.js:113 +#: src/views/Publication/Services/DaCast.js:153 +#: src/views/Publication/Services/Dummy.js:274 +#: src/views/Publication/Services/Instagram.js:84 +#: src/views/Publication/Services/Restream.js:116 +#: src/views/Publication/Services/Twitch.js:129 +#: src/views/Publication/Services/Twitter.js:175 +#: src/views/Publication/Services/Vimeo.js:73 +#: src/views/Publication/Services/Youtube.js:173 +msgid "Stream key" +msgstr "Ключ потока" + +#: src/views/Publication/Services/Brightcove.js:101 +#: src/views/Publication/Services/Core.js:113 +#: src/views/Publication/Services/Red5.js:136 +#: src/views/Publication/Services/WOWZA.js:158 +msgid "Stream name" +msgstr "Название потока" + +#: src/views/Publication/Services/Akamai.js:167 +msgid "Stream names" +msgstr "Имена потоков" + +#: src/views/Playersite.js:425 +msgid "Support datarhei Restreamer" +msgstr "Поддержка datarhei Restreamer" + +#: src/views/Edit/Sources/Network.js:361 +#: src/views/Edit/Wizard/Sources/Network.js:72 +msgid "Supports HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT and more." +msgstr "Поддерживает HTTP (HLS, DASH), RTP, RTSP, RTMP, SRT и другие." + +#: src/Footer.js:184 +#: src/Header.js:275 +#: src/views/Settings.js:1851 +msgid "System" +msgstr "Система" + +#: src/views/Playersite.js:351 +#: src/views/Playersite.js:440 +msgid "Template" +msgstr "Шаблон" + +#: src/views/Playersite.js:462 +msgid "Template to be used for creating the publication website. The delete button removes the selection from the system." +msgstr "Шаблон, который будет использоваться для создания веб-сайта публикации. Кнопка удаления удаляет выделение из системы." + +#: src/views/Playersite.js:666 +msgid "Terms" +msgstr "Условия" + +#: src/views/Edit/Sources/VirtualVideo.js:116 +msgid "Test pattern" +msgstr "Тестовый шаблон" + +#: src/views/Edit/Sources/VirtualVideo.js:117 +msgid "Test pattern (extended)" +msgstr "Тестовый шаблон (расширенный)" + +#: src/views/Playersite.js:519 +msgid "Text colors" +msgstr "Цвета текста" + +#: src/views/Edit/Sources/VirtualAudio.js:131 +msgid "The amplitude (0.0 - 1.0) of the generated audio stream" +msgstr "Амплитуда (0.0 - 1.0) генерируемого аудиопотока" + +#: src/views/Settings.js:1210 +msgid "The application is using an older version of the settings." +msgstr "Приложение использует более старую версию настроек." + +#: src/misc/coders/settings/Audio.js:40 +msgid "The bitrate of the audio stream." +msgstr "Битрейт аудиопотока." + +#: src/views/Edit/Sources/VirtualAudio.js:150 +msgid "The carrier frequency" +msgstr "Несущая частота" + +#: src/views/Edit/index.js:352 +msgid "The channel \"{0}\" could not be deleted" +msgstr "Канал \"{0}\" не может быть удален" + +#: src/views/Edit/index.js:361 +msgid "The channel \"{0}\" has been deleted" +msgstr "Канал \"{0}\" удален" + +#: src/views/Edit/index.js:604 +msgid "The deletion of this channel can not be recovered. All publications of this channel will be removed." +msgstr "Удаление этого канала не может быть восстановлено. Все публикации этого канала будут удалены." + +#: src/views/Edit/Wizard/index.js:170 +#: src/views/Edit/index.js:290 +msgid "The input profile is not complete. Please define a video and audio source." +msgstr "Входной профиль не завершен. Укажите источник видео и аудио." + +#: src/misc/coders/settings/Audio.js:86 +msgid "The layout of the audio stream." +msgstr "Схема аудиопотока." + +#: src/misc/controls/HLS.js:79 +msgid "The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended." +msgstr "Максимальное количество сегментов плейлиста. 0 будет содержать все сегменты. 6 рекомендуется." + +#: src/views/Edit/Sources/VirtualAudio.js:119 +msgid "The noise color" +msgstr "Цвет шума" + +#: src/misc/controls/License/index.js:60 +msgid "The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission." +msgstr "Лицо, связавшее произведение с этим документом, сделало произведение общественным достоянием, отказавшись от всех своих прав на произведение во всем мире в соответствии с законом об авторском праве, включая все смежные и смежные права, в той мере, в какой это разрешено законом. Вы можете копировать, изменять, распространять и выполнять работу даже в коммерческих целях, не спрашивая разрешения." + +#: src/views/Settings.js:1315 +msgid "The public reachable domain name of the host this Restreamer is running on. Separate multiple domain names by a comma." +msgstr "Общедоступное доменное имя хоста, на котором работает Restreamer. Разделяйте несколько доменных имен запятой." + +#: src/views/Publication/Edit.js:270 +msgid "The publication service \"{0}\" could not be deleted" +msgstr "Службу публикации \"{0}\" не удалось удалить" + +#: src/views/Publication/Add.js:188 +msgid "The publication service \"{0}\" has been created" +msgstr "Служба публикации \"{0}\" создана" + +#: src/views/Publication/Edit.js:276 +msgid "The publication service \"{0}\" has been deleted" +msgstr "Служба публикации \"{0}\" удалена" + +#: src/views/Publication/Add.js:186 +msgid "The publication service has been created" +msgstr "Создан сервис публикации" + +#: src/misc/coders/settings/Audio.js:137 +msgid "The sample rate of the audio stream." +msgstr "Частота дискретизации аудиопотока." + +#: src/views/Playersite.js:152 +#: src/views/Playersite.js:227 +#: src/views/Publication/Player.js:189 +msgid "The selected file is too big ({0} bytes). Only {1} bytes are allowed." +msgstr "Выбранный файл слишком велик ({0} байт). Допускается только {1} байт." + +#: src/views/Playersite.js:141 +#: src/views/Playersite.js:216 +#: src/views/Publication/Player.js:178 +msgid "The selected file type ({0}) is not allowed. Allowed file types are {types}" +msgstr "Выбранный тип файла ({0}) не разрешен. Разрешенными типами файлов являются {types}" + +#: src/views/Publication/Edit.js:230 +msgid "The settings for \"{0}\" have been saved" +msgstr "Настройки для \"{0}\" сохранены" + +#: src/views/Edit/Wizard/index.js:846 +msgid "The source doesn't provide any audio streams." +msgstr "Источник не предоставляет никаких аудиопотоков." + +#: src/views/Edit/Profile.js:487 +msgid "The source doesn't provide any audio streams. Please check the <0>probe details." +msgstr "Источник не предоставляет никаких аудиопотоков. Пожалуйста, проверьте <0>подробнее." + +#: src/views/Edit/Wizard/index.js:854 +msgid "The source doesn't provide any compatible audio streams." +msgstr "Источник не предоставляет совместимых аудиопотоков." + +#: src/views/Edit/Wizard/index.js:392 +msgid "The source doesn't provide any compatible video streams. Please check the <0>requirements." +msgstr "Источник не предоставляет совместимых видеопотоков. Ознакомьтесь с <0>требованиями." + +#: src/views/Edit/Profile.js:357 +msgid "The source doesn't provide any video streams. Please check the <0>probe details." +msgstr "Источник не предоставляет никаких видеопотоков. Пожалуйста, проверьте <0>подробнее." + +#: src/views/Edit/Wizard/index.js:384 +msgid "The source doesn't provide any video streams. Please check the device." +msgstr "Источник не предоставляет никаких видеопотоков. Пожалуйста, проверьте устройство." + +#: src/views/Edit/Wizard/index.js:865 +msgid "The video source doesn't provide any compatible audio stream. <0>Silence audio is recommended. Services e.g. YouTube, Facebook & Co. require an audio channel." +msgstr "Источник видео не обеспечивает совместимый аудиопоток. Рекомендуется <0>отключить звук. Сервисы YouTube, Facebook и другие компании требуют наличия аудиоканала...." + +#: src/views/Edit/Wizard/index.js:603 +msgid "The video source is compatible. Select the desired resolution:" +msgstr "Источник видео совместим. Выберите нужное разрешение:" + +#: src/views/Settings.js:1182 +msgid "There are updates available. Here you get more information." +msgstr "Доступны обновления. Здесь вы получите больше информации." + +#: src/views/Settings.js:911 +msgid "There was a problem storing the settings. Settings not saved." +msgstr "Не удалось сохранить настройки. Настройки не сохранены." + +#: src/views/Invalid.js:32 +msgid "There was an error connecting to Restreamer Core at {0}." +msgstr "Произошла ошибка при подключении к ядру Restreamer на {0}." + +#: src/views/Playersite.js:165 +#: src/views/Playersite.js:240 +#: src/views/Publication/Player.js:202 +msgid "There was an error during upload: {0}" +msgstr "При загрузке произошла ошибка: {0}" + +#: src/views/Edit/Wizard/index.js:1123 +msgid "There was an error setting up the stream." +msgstr "Не удалось настроить поток." + +#: src/views/Settings.js:909 +msgid "There were some errors in the settings. Settings not saved." +msgstr "Были некоторые ошибки в настройках. Настройки не сохранены." + +#: src/views/Login.js:257 +msgid "There's no login method available." +msgstr "Метод входа недоступен." + +#: src/views/Publication/Services/Dummy.js:26 +msgid "This is a dummy service that explains to you the concepts of service." +msgstr "Это фиктивный сервис, который объясняет вам концепции сервиса." + +#: src/views/Password.js:151 +msgid "This is not necessarily an error. However, it may take a bit longer for Restreamer Core to restart.." +msgstr "Это не обязательно ошибка. Однако перезапуск ядра Restreamer может занять немного больше времени.." + +#: src/views/Publication/Services/Dummy.js:31 +msgid "This is to mention the copyright regulations for the target of this service." +msgstr "Это должно упомянуть положения об авторском праве для цели этой службы." + +#: src/misc/controls/License/index.js:95 +msgid "This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, and only so long as attribution is given to the creator. The license allows for commercial use." +msgstr "Эта лицензия позволяет повторным пользователям копировать и распространять материал на любом носителе или в любом формате только в неадаптированной форме и только при условии указания авторства. Лицензия разрешает коммерческое использование." + +#: src/misc/controls/License/index.js:102 +msgid "This license allows reusers to copy and distribute the material in any medium or format in unadapted form only, for noncommercial purposes only, and only so long as attribution is given to the creator." +msgstr "Эта лицензия позволяет повторным пользователям копировать и распространять материал на любом носителе или в любом формате только в неадаптированной форме, только в некоммерческих целях и только при условии указания авторства." + +#: src/misc/controls/License/index.js:81 +msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator." +msgstr "Эта лицензия позволяет повторным пользователям распространять, микшировать, адаптировать и использовать материал на любом носителе или в любом формате только в некоммерческих целях и только при условии указания авторства." + +#: src/misc/controls/License/index.js:88 +msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creator. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." +msgstr "Эта лицензия позволяет повторным пользователям распространять, микшировать, адаптировать и использовать материал на любом носителе или в любом формате только в некоммерческих целях и только при условии указания авторства. Если вы микшируете, адаптируете или развиваете материал, вы должны лицензировать измененный материал на тех же условиях." + +#: src/misc/controls/License/index.js:67 +msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use." +msgstr "Эта лицензия позволяет повторным пользователям распространять, микшировать, адаптировать и использовать материал на любом носителе или в любом формате при условии указания авторства. Лицензия разрешает коммерческое использование." + +#: src/misc/controls/License/index.js:74 +msgid "This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms." +msgstr "Эта лицензия позволяет повторным пользователям распространять, микшировать, адаптировать и использовать материал на любом носителе или в любом формате при условии указания авторства. Лицензия разрешает коммерческое использование. Если вы микшируете, адаптируете или развиваете материал, вы должны лицензировать измененный материал на тех же условиях." + +#: src/views/Edit/index.js:585 +msgid "This source cannot be edited while it is in use. To continue, you have to disconnect the source." +msgstr "Этот источник нельзя редактировать, пока он используется. Чтобы продолжить, вы должны отключить источник." + +#: src/views/Incompatible.js:21 +msgid "This version of the UI doesn't support the available FFmpeg binary ({0}). The UI requires {1}. Please use a supported FFmpeg binary." +msgstr "Эта версия пользовательского интерфейса не поддерживает доступный двоичный файл FFmpeg ({0}). Пользовательский интерфейс требует {1}. Пожалуйста, используйте поддерживаемый двоичный файл FFmpeg." + +#: src/views/Incompatible.js:14 +msgid "This version of the UI doesn't support the connected Core ({0}). The UI requires {1}. Please use a compatible version of the UI." +msgstr "Эта версия пользовательского интерфейса не поддерживает подключенное ядро ({0}). Пользовательский интерфейс требует {1}. Пожалуйста, используйте совместимую версию пользовательского интерфейса." + +#: src/views/Incompatible.js:10 +msgid "This version of the UI is compatible." +msgstr "Эта версия пользовательского интерфейса совместима." + +#: src/views/Settings.js:1550 +msgid "Time until an inactive viewer connection is treated as closed." +msgstr "Время до того, как неактивное соединение со зрителем будет считаться закрытым." + +#: src/views/Settings.js:1263 +#: src/views/Settings.js:1829 +msgid "Token" +msgstr "Токен" + +#: src/views/Publication/Services/Image2.js:25 +msgid "Transmit snapshots of the main source to an HTTP/S Server. More details about the settings can be found <0>here." +msgstr "Передача моментальных снимков основного источника на сервер HTTP/S. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/Icecast.js:21 +msgid "Transmit the audio channel of the main source to an Icecast Server. More details about the settings can be found <0>here." +msgstr "Передайте аудиоканал основного источника на сервер Icecast. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/HLS.js:29 +msgid "Transmit the main source as HTTP-Live-Streaming (HLS) to an HTTP/S Server. More details about the settings can be found <0>here." +msgstr "Передайте основной источник как HTTP-Live-Streaming (HLS) на сервер HTTP/S. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/DASH.js:27 +msgid "Transmit the main source as MPEG-DASH to an HTTP/S Server. More details about the settings can be found <0>here." +msgstr "Передайте основной источник как MPEG-DASH на сервер HTTP/S. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/Brightcove.js:15 +msgid "Transmit the main source to a Brightcove Live Service. More details about the settings can be found <0>here." +msgstr "Передайте основной источник в Brightcove Live Service. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/CDN77.js:15 +msgid "Transmit the main source to an CDN77 RTMP Service. More about the setup <0>here." +msgstr "Передайте основной источник в службу CDN77 RTMP. Подробнее о настройке <0>здесь." + +#: src/views/Publication/Services/DaCast.js:18 +msgid "Transmit the main source to an DaCast RTMP Service. More about the setup <0>here." +msgstr "Передайте основной источник в службу DaCast RTMP. Подробнее о настройке <0>здесь." + +#: src/views/Publication/Services/MPEGTS.js:27 +msgid "Transmit the main source to an MPEG-TS Service. More details about the settings can be found here <0>here." +msgstr "Передать основной источник в службу MPEG-TS. Подробнее о настройках можно узнать здесь <0>здесь." + +#: src/views/Publication/Services/RTMP.js:24 +msgid "Transmit the main source to an RTMP(e|s|t|te|ts) Server. More details about the settings can be found <0>here." +msgstr "Передайте основной источник на сервер RTMP(e|s|t|te|ts). Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/RTSP.js:28 +msgid "Transmit the main source to an RTSP Server. More details about the settings can be found <0>here." +msgstr "Передайте основной источник на сервер RTSP. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/Red5.js:17 +msgid "Transmit the main source to an Red5/Pro Server. More details about the settings can be found <0>here." +msgstr "Передача основного источника на сервер Red5/Pro Server. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/SRT.js:25 +msgid "Transmit the main source to an SRT Server. More details about the settings can be found <0>here." +msgstr "Передайте основной источник на сервер SRT. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/UDP.js:23 +msgid "Transmit the main source to an UDP Server. More details about the settings can be found <0>here." +msgstr "Передайте основной источник на сервер UDP. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/WOWZA.js:20 +msgid "Transmit the main source to an WOWZA Server. More details about the settings can be found <0>here." +msgstr "Передайте основной источник на сервер WOWZA. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/Core.js:18 +msgid "Transmit the main source to an datarhei Core Ressource. More details about the settings can be found <0>here." +msgstr "Передайте основной источник на основной ресурс datarhei. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/Livespotting.js:15 +msgid "Transmit the main source to an livespotting.com Ressource. More details about the settings can be found <0>here." +msgstr "Передайте основной источник на ресурс livespotting.com. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/Akamai.js:17 +msgid "Transmit the main source to the Akamai (MSL) Media Services Live. More details about the MSL Encoder settings can be found on <0>here." +msgstr "Передайте основной источник в Akamai (MSL) Media Services Live. Более подробную информацию о настройках MSL Encoder можно найти <0>здесь." + +#: src/views/Publication/Services/Bitmovin.js:15 +msgid "Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds <0>here." +msgstr "Передайте основной источник в облачный сервис кодирования Bitmovin, мощный инструмент для прямой трансляции. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/Restream.js:18 +msgid "Transmit the main source to the Restream RTMP Service. More details about the settings can be found <0>here." +msgstr "Передайте основной источник в службу Restream RTMP. Более подробную информацию о настройках можно найти <0>здесь." + +#: src/views/Publication/Services/Youtube.js:21 +msgid "Transmits your video as an RTMP stream with the required key generated in YouTube Studio. You can find more information on setting up a live stream at YouTube's <0>Creator Academy." +msgstr "Передает ваше видео в виде RTMP-потока с необходимым ключом, сгенерированным в YouTube Studio. Дополнительную информацию о настройке прямых трансляций можно найти в <0>Академии для авторов YouTube." + +#: src/views/Publication/Services/Twitter.js:20 +msgid "Transmits your video stream with the required key, which was generated in Twitter Producer. You can find more information on seting up a live stream at Twitter's <0>Producer." +msgstr "Передает ваш видеопоток с нужным ключом, сгенерированным в Twitter Producer. Дополнительную информацию о настройке прямой трансляции можно найти на странице <0>Producer в Твиттере." + +#: src/misc/coders/Encoders/video/X264.js:83 +#: src/misc/coders/Encoders/video/X265.js:83 +msgid "Tune" +msgstr "Мелодия" + +#: src/views/Edit/Sources/Network.js:409 +#: src/views/Edit/Wizard/Sources/Network.js:77 +msgid "UDP transport" +msgstr "Транспорт UDP" + +#: src/views/Settings.js:1111 +msgid "Unable to load the config." +msgstr "Не удалось загрузить конфиг." + +#: src/views/Settings.js:1245 +msgid "Unique ident on the service." +msgstr "Уникальный идентификатор на сервисе." + +#: src/views/Main/Egress.js:91 +msgid "Unknown" +msgstr "Неизвестный" + +#: src/views/Playersite.js:597 +msgid "Unselected" +msgstr "Не выбрано" + +#: src/views/Playersite.js:482 +#: src/views/Playersite.js:499 +#: src/views/Playersite.js:634 +#: src/views/Publication/Player.js:373 +msgid "Upload" +msgstr "Загрузить" + +#: src/views/Playersite.js:281 +msgid "Uploading the file failed" +msgstr "Загрузка файла не удалась" + +#: src/views/Publication/Player.js:232 +msgid "Uploading the logo failed" +msgstr "Не удалось загрузить логотип" + +#: src/Footer.js:165 +#: src/misc/Progress.js:51 +#: src/views/Main/Progress.js:59 +msgid "Uptime" +msgstr "Время безотказной работы" + +#: src/views/Login.js:343 +msgid "Use Auth0 for your running Restreamer Core. More <0>details." +msgstr "Используйте Auth0 для работающего ядра Restreamer. Больше <0>подробностей." + +#: src/views/Edit/index.js:426 +msgid "Use the wizard (<0/>) for a quick and easy setup, or edit (<1/>) the sources directly in custom mode." +msgstr "Воспользуйтесь мастером (<0/>) для быстрой и простой настройки или отредактируйте (<1/>) источники непосредственно в пользовательском режиме." + +#: src/views/Edit/Wizard/index.js:1068 +msgid "Use your copyright and choose the correct image license. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." +msgstr "Используйте свои авторские права и выберите правильную лицензию на изображение. Независимо от того, бесплатно для всех или сильно ограничено. Кратко обсудите, что другим разрешено делать с вашим изображением." + +#: src/views/Edit/index.js:530 +msgid "Use your copyright and choose the right image licence. Whether free for all or highly restricted. Briefly discuss what others are allowed to do with your image." +msgstr "Используйте свои авторские права и выберите правильную лицензию на изображение. Независимо от того, бесплатно для всех или сильно ограничено. Кратко обсудите, что другим разрешено делать с вашим изображением." + +#: src/views/Password.js:86 +msgid "User registration" +msgstr "Регистрация пользователя" + +#: src/views/Edit/Sources/Network.js:370 +#: src/views/Edit/Wizard/Sources/Network.js:81 +#: src/views/Login.js:272 +#: src/views/Publication/Services/DASH.js:195 +#: src/views/Publication/Services/DaCast.js:131 +#: src/views/Publication/Services/HLS.js:184 +#: src/views/Publication/Services/RTSP.js:153 +#: src/views/Publication/Services/Red5.js:146 +#: src/views/Publication/Services/WOWZA.js:168 +#: src/views/Settings.js:1440 +#: src/views/Settings.js:1598 +msgid "Username" +msgstr "Имя пользователя" + +#: src/views/Settings.js:1446 +#: src/views/Settings.js:1606 +msgid "Username for authorization." +msgstr "Имя пользователя для авторизации." + +#: src/views/Edit/Sources/Network.js:375 +#: src/views/Edit/Wizard/Sources/Network.js:83 +msgid "Username for the device." +msgstr "Имя пользователя для устройства." + +#: src/views/Publication/Services/Livespotting.js:88 +msgid "VPU ID" +msgstr "VPU ID" + +#: src/views/Publication/Add.js:476 +msgid "Video" +msgstr "Видео" + +#: src/views/Edit/Sources/AVFoundation.js:126 +#: src/views/Edit/Sources/Raspicam.js:89 +#: src/views/Edit/Sources/V4L.js:109 +#: src/views/Edit/Wizard/Sources/AVFoundation.js:82 +#: src/views/Edit/Wizard/Sources/Raspicam.js:86 +#: src/views/Edit/Wizard/Sources/V4L.js:105 +msgid "Video device" +msgstr "Видеоустройство" + +#: src/views/Edit/Profile.js:320 +#: src/views/Edit/ProfileSummary.js:66 +#: src/views/Publication/Edit.js:517 +msgid "Video settings" +msgstr "Настройки видео" + +#: src/views/Edit/Wizard/index.js:264 +#: src/views/Edit/Wizard/index.js:354 +#: src/views/Edit/Wizard/index.js:596 +msgid "Video setup" +msgstr "Настройка видео" + +#: src/views/Edit/Sources/VideoAudio.js:45 +msgid "Video source" +msgstr "Источник видео" + +#: src/Footer.js:227 +#: src/Footer.js:232 +#: src/Footer.js:245 +#: src/views/Main/Publication.js:173 +msgid "Viewer" +msgstr "Зрителей" + +#: src/views/Edit/Sources/VirtualAudio.js:187 +#: src/views/Edit/Sources/VirtualVideo.js:206 +msgid "Virtual source" +msgstr "Виртуальный источник" + +#: src/views/Welcome.js:27 +msgid "Welcome to Restreamer v2, the solution for fast and easy video publishing. Free for private and commercial use. Further help in the <0>docs." +msgstr "Добро пожаловать в Restreamer v2, решение для быстрой и простой публикации видео. Бесплатно для частного и коммерческого использования. Дополнительная помощь в <0>документах." + +#: src/views/Settings.js:1585 +msgid "Write protection" +msgstr "Защита от записи" + +#: src/views/Edit/Sources/VirtualVideo.js:119 +msgid "YUV test pattern" +msgstr "Тестовый образец YUV" + +#: src/views/Edit/Wizard/index.js:1177 +msgid "Yes" +msgstr "Да" + +#: src/views/Edit/Wizard/index.js:1159 +msgid "You can't abort the wizard because at least one input must be defined." +msgstr "Вы не можете прервать работу мастера, так как должен быть настроен хотя бы один источник." + +#: src/views/Settings.js:2041 +msgid "You have changed the configuration. In order for the changes to take effect, you have to restart the application. Do you want to restart now?" +msgstr "Вы изменили конфигурацию. Чтобы изменения вступили в силу, необходимо перезапустить приложение. Вы хотите перезапустить сейчас?" + +#: src/views/Main/index.js:347 +#: src/views/Publication/Process.js:73 +msgid "You have to reconnect manually" +msgstr "Вы должны повторно подключиться вручную" + +#: src/views/Publication/Edit.js:456 +msgid "You have unsaved changes. Please save them before you can control the service again." +msgstr "У вас есть несохраненные изменения. Пожалуйста, сохраните их, прежде чем вы сможете снова управлять сервисом." + +#: src/views/Edit/Wizard/index.js:616 +msgid "Your stream needs to be encoded, but there's no suitable encoder available." +msgstr "Ваш поток необходимо закодировать, но подходящего кодировщика нет." + +#: src/views/Edit/Wizard/index.js:623 +msgid "Your stream needs to be encoded. Choose the desired encoder:" +msgstr "Ваш поток должен быть закодирован. Выберите нужный энкодер:" + +#: src/views/Edit/Sources/VirtualAudio.js:114 +msgid "blue" +msgstr "синий" + +#: src/views/Edit/Sources/VirtualAudio.js:113 +msgid "brown" +msgstr "коричневый" + +#: src/views/Publication/Player.js:331 +msgid "iframe code" +msgstr "код iframe" + +#: src/misc/Progress.js:77 +#: src/views/Main/Progress.js:69 +#: src/views/Main/Publication.js:184 +msgid "kbit/s" +msgstr "кбит/с" + +#: src/views/Edit/Sources/VirtualAudio.js:112 +msgid "pink" +msgstr "розовый" + +#: src/views/Edit/Sources/VirtualAudio.js:116 +msgid "velvet" +msgstr "вельветовый" + +#: src/views/Edit/Sources/VirtualAudio.js:115 +msgid "violet" +msgstr "фиолетовый" + +#: src/views/Edit/Sources/VirtualAudio.js:111 +msgid "white" +msgstr "белый" diff --git a/src/misc/BoxText.js b/src/misc/BoxText.js index 95731a2..0dd98e8 100644 --- a/src/misc/BoxText.js +++ b/src/misc/BoxText.js @@ -50,7 +50,9 @@ export default function Component(props) { justifyContent="center" alignItems="center" spacing={1} - className={props.color === 'dark' ? classes.dark : props.color === 'success' ? classes.success : props.color === 'danger' ? classes.danger : classes.light} + className={ + props.color === 'dark' ? classes.dark : props.color === 'success' ? classes.success : props.color === 'danger' ? classes.danger : classes.light + } {...props} > {props.children} @@ -59,5 +61,5 @@ export default function Component(props) { } Component.defaultProps = { - color: 'light' + color: 'light', }; diff --git a/src/misc/ChannelList.js b/src/misc/ChannelList.js index cb23337..7f65b2b 100644 --- a/src/misc/ChannelList.js +++ b/src/misc/ChannelList.js @@ -55,7 +55,7 @@ const useStyles = makeStyles((theme) => ({ marginRight: '-1.5em!important', paddingBottom: '1em', }, - imageTitel: { + imageTitle: { textAlign: 'initial', padding: '.5em 0em 0em .1em', }, @@ -169,7 +169,7 @@ function ChannelButton(props) { - + {props.title} diff --git a/src/misc/CopyButton.js b/src/misc/CopyButton.js new file mode 100644 index 0000000..6ea468c --- /dev/null +++ b/src/misc/CopyButton.js @@ -0,0 +1,35 @@ +import React, { useContext } from 'react'; + +import { useLingui } from '@lingui/react'; +import { t } from '@lingui/macro'; +import Button from '@mui/material/Button'; +import FileCopyIcon from '@mui/icons-material/FileCopy'; + +import CopyToClipboard from '../utils/clipboard'; +import NotifyContext from '../contexts/Notify'; + +export default function CopyButton(props) { + const notify = useContext(NotifyContext); + const { i18n } = useLingui(); + const { children, value, ...other } = props; + + const handleCopy = async () => { + const success = await CopyToClipboard(value); + + if (success === true) { + notify.Dispatch('success', 'clipboard', i18n._(t`Data copied to clipboard`)); + } else { + notify.Dispatch('error', 'clipboard', i18n._(t`Error while copying data to clipboard`)); + } + }; + + return ( + + ); +} + +CopyButton.defaultProps = { + value: '', +}; diff --git a/src/misc/EncodingSelect.js b/src/misc/EncodingSelect.js index 08c3d4f..e15be0c 100644 --- a/src/misc/EncodingSelect.js +++ b/src/misc/EncodingSelect.js @@ -5,10 +5,12 @@ import { Trans, t } from '@lingui/macro'; import Grid from '@mui/material/Grid'; import MenuItem from '@mui/material/MenuItem'; import Typography from '@mui/material/Typography'; +import Link from '@mui/material/Link'; import * as Encoders from './coders/Encoders'; import * as Decoders from './coders/Decoders'; import Select from './Select'; +import H from '../utils/help'; export default function EncodingSelect(props) { const { i18n } = useLingui(); @@ -75,6 +77,11 @@ export default function EncodingSelect(props) { props.onChange(encoder, profile.decoder, automatic); }; + const handleEncoderHelp = (topic) => (event) => { + event.preventDefault(); + H('encoder-' + topic); + }; + let stream = null; if (profile.stream >= 0) { @@ -106,12 +113,17 @@ export default function EncodingSelect(props) { } let encoderSettings = null; + let encoderSettingsHelp = null; let coder = encoderRegistry.Get(profile.encoder.coder); if (coder !== null && props.availableEncoders.includes(coder.coder)) { const Settings = coder.component; encoderSettings = ; + + if (props.type === 'video' && !['copy', 'none', 'rawvideo'].includes(coder.coder)) { + encoderSettingsHelp = handleEncoderHelp(coder.coder); + } } let encoderList = []; @@ -207,6 +219,15 @@ export default function EncodingSelect(props) { {encoderSettings} + {encoderSettingsHelp !== null && ( + + + + Compatibility list + + + + )} ); } diff --git a/src/misc/FormInlineButton.js b/src/misc/FormInlineButton.js index 4b53ef2..82df21e 100644 --- a/src/misc/FormInlineButton.js +++ b/src/misc/FormInlineButton.js @@ -14,14 +14,7 @@ export default function Component(props) { const classes = useStyles(); return ( - ); diff --git a/src/misc/LanguageSelect.js b/src/misc/LanguageSelect.js index f842e68..2b839d2 100644 --- a/src/misc/LanguageSelect.js +++ b/src/misc/LanguageSelect.js @@ -48,6 +48,7 @@ export default function LanguageSelect(props) { Italiano Português Español + Русский ); } diff --git a/src/misc/ModalContent.js b/src/misc/ModalContent.js index ac0782c..abc0986 100644 --- a/src/misc/ModalContent.js +++ b/src/misc/ModalContent.js @@ -18,7 +18,7 @@ const useStyles = makeStyles((theme) => ({ float: 'right', marginLeft: '.5em', paddingTop: '.25em', - marginRight: '-.7em', + marginRight: '-.7em', }, }, modalFooter: { @@ -53,19 +53,9 @@ const Component = React.forwardRef((props, ref) => { - + {props.title} - + {typeof props.onHelp === 'function' && ( diff --git a/src/misc/Paper.js b/src/misc/Paper.js index edba03c..1c7e641 100644 --- a/src/misc/Paper.js +++ b/src/misc/Paper.js @@ -25,14 +25,14 @@ const Component = React.forwardRef((props, ref) => { elevation = 0; return ( - + {props.children} - ); + ); }); export default Component; diff --git a/src/misc/PaperContent.js b/src/misc/PaperContent.js index 7afd73c..b072ad5 100644 --- a/src/misc/PaperContent.js +++ b/src/misc/PaperContent.js @@ -4,12 +4,12 @@ import Grid from '@mui/material/Grid'; const Component = function (props) { return ( - + {props.children} - ); + ); }; export default Component; diff --git a/src/misc/PaperHeader.js b/src/misc/PaperHeader.js index 0d6bd5c..1c7bb61 100644 --- a/src/misc/PaperHeader.js +++ b/src/misc/PaperHeader.js @@ -57,7 +57,7 @@ Component.defaultProps = { spacing: 0, padding: null, title: '', - variant: 'pagetitel', + variant: 'pagetitle', onAbort: null, onHelp: null, onEdit: null, diff --git a/src/misc/PaperThumb.js b/src/misc/PaperThumb.js index b3b05d2..c199b65 100644 --- a/src/misc/PaperThumb.js +++ b/src/misc/PaperThumb.js @@ -13,11 +13,11 @@ const useStyles = makeStyles((theme) => ({ export default function Component(props) { const classes = useStyles(); - return ; + return ; } Component.defaultProps = { image: '', title: '', - height: '0px' + height: '0px', }; diff --git a/src/misc/Password.js b/src/misc/Password.js index 8c1606e..daf254f 100644 --- a/src/misc/Password.js +++ b/src/misc/Password.js @@ -54,9 +54,7 @@ export default function Password(props) { label={props.label} autoComplete={props.autoComplete} /> - {props.helperText && ( - {props.helperText} - )} + {props.helperText && {props.helperText}} ); } diff --git a/src/misc/Player/video-js-skin-internal.css b/src/misc/Player/video-js-skin-internal.css index 9fb9499..d353fe2 100644 --- a/src/misc/Player/video-js-skin-internal.css +++ b/src/misc/Player/video-js-skin-internal.css @@ -1,25 +1,25 @@ .vjs-internal { - --video-js--primary: #EAEA05; + --video-js--primary: #eaea05; } /* play-button */ .vjs-internal .vjs-big-play-button { - width: 70px; - height: 70px; - background: none; - line-height: 180px; - font-size: 180px; - border: none; - top: 50%; - left: 50%; - margin-top: -90px; - color: rgba(255,255,255,.65); + width: 70px; + height: 70px; + background: none; + line-height: 180px; + font-size: 180px; + border: none; + top: 50%; + left: 50%; + margin-top: -90px; + color: rgba(255, 255, 255, 0.65); } .vjs-internal:hover .vjs-big-play-button, .vjs-internal.vjs-big-play-button:focus { - background-color: transparent; - color: rgba(255,255,255,1); + background-color: transparent; + color: rgba(255, 255, 255, 1); } /* controlbar */ @@ -27,67 +27,78 @@ .vjs-internal .vjs-control-bar { top: calc(50% - 45px); height: 100px; - width: 50px; + width: 50px; background-color: rgb(77, 77, 77); border-top-right-radius: 4px; border-bottom-right-radius: 4px; } -.vjs-internal .vjs-button>.vjs-icon-placeholder:before { - line-height: 50px +.vjs-internal .vjs-button > .vjs-icon-placeholder:before { + line-height: 50px; } /* progressbar */ .vjs-internal .vjs-play-progress:before { - display: none + display: none; } .vjs-internal .vjs-progress-control { - display: none; + display: none; } /* buttons */ -.vjs-internal .vjs-playing, .vjs-internal .vjs-paused { +.vjs-internal .vjs-playing, +.vjs-internal .vjs-paused { width: 50px; - height: 50px; + height: 50px; border-radius: 4px; - background-color: rgb(77, 77, 77); + background-color: rgb(77, 77, 77); } .vjs-internal .vjs-volume-panel { width: 50px; - height: 50px; - border-radius: 4px; - padding-left: 4px; - background-color: rgb(77, 77, 77); + height: 50px; + border-radius: 4px; + padding-left: 4px; + background-color: rgb(77, 77, 77); margin: 50px 0px 0px -50px; } .vjs-internal .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal { - padding-top: 1em; - transition: visibility 1s,opacity 1s,height 1s 1s,width 1s,right 1s 1s,top 1s 1s; + padding-top: 1em; + transition: visibility 1s, opacity 1s, height 1s 1s, width 1s, right 1s 1s, + top 1s 1s; } -.vjs-internal .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control, .vjs-internal .vjs-volume-panel.vjs-hover .vjs-volume-control, .vjs-internal .vjs-volume-panel .vjs-volume-control.vjs-slider-active, .vjs-internal .vjs-volume-panel .vjs-volume-control:active, .vjs-internal .vjs-volume-panel:active .vjs-volume-control, .vjs-internal .vjs-volume-panel:focus .vjs-volume-control { - visibility: visible; - opacity: 1; - position: relative; - transition: visibility .1s,opacity .1s,height .1s,width .1s,right 0s,top 0s; +.vjs-internal + .vjs-volume-panel.vjs-hover + .vjs-mute-control + ~ .vjs-volume-control, +.vjs-internal .vjs-volume-panel.vjs-hover .vjs-volume-control, +.vjs-internal .vjs-volume-panel .vjs-volume-control.vjs-slider-active, +.vjs-internal .vjs-volume-panel .vjs-volume-control:active, +.vjs-internal .vjs-volume-panel:active .vjs-volume-control, +.vjs-internal .vjs-volume-panel:focus .vjs-volume-control { + visibility: visible; + opacity: 1; + position: relative; + transition: visibility 0.1s, opacity 0.1s, height 0.1s, width 0.1s, right 0s, + top 0s; } .vjs-internal .vjs-slider-horizontal .vjs-volume-level:before { top: -0.4em; - right: -0.5em; + right: -0.5em; } .vjs-internal .vjs-remaining-time { - display: none; + display: none; } .vjs-internal .vjs-live-display { - display: none; + display: none; } .vjs-internal .vjs-picture-in-picture-control { diff --git a/src/misc/Player/video-js-skin-internal.min.css b/src/misc/Player/video-js-skin-internal.min.css index 529f15f..f260729 100644 --- a/src/misc/Player/video-js-skin-internal.min.css +++ b/src/misc/Player/video-js-skin-internal.min.css @@ -1 +1,98 @@ -.vjs-internal{--video-js--primary:#EAEA05}.vjs-internal .vjs-big-play-button{width:70px;height:70px;background:0 0;line-height:180px;font-size:180px;border:none;top:50%;left:50%;margin-top:-90px;color:rgba(255,255,255,.65)}.vjs-internal.vjs-big-play-button:focus,.vjs-internal:hover .vjs-big-play-button{background-color:transparent;color:rgba(255,255,255,1)}.vjs-internal .vjs-control-bar{top:calc(50% - 45px);height:100px;width:50px;background-color:#4d4d4d;border-top-right-radius:4px;border-bottom-right-radius:4px}.vjs-internal .vjs-button>.vjs-icon-placeholder:before{line-height:50px}.vjs-internal .vjs-play-progress:before{display:none}.vjs-internal .vjs-progress-control{display:none}.vjs-internal .vjs-paused,.vjs-internal .vjs-playing{width:50px;height:50px;border-radius:4px;background-color:#4d4d4d}.vjs-internal .vjs-volume-panel{width:50px;height:50px;border-radius:4px;padding-left:4px;background-color:#4d4d4d;margin:50px 0 0 -50px}.vjs-internal .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{padding-top:1em;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,right 1s 1s,top 1s 1s}.vjs-internal .vjs-volume-panel .vjs-volume-control.vjs-slider-active,.vjs-internal .vjs-volume-panel .vjs-volume-control:active,.vjs-internal .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,.vjs-internal .vjs-volume-panel.vjs-hover .vjs-volume-control,.vjs-internal .vjs-volume-panel:active .vjs-volume-control,.vjs-internal .vjs-volume-panel:focus .vjs-volume-control{visibility:visible;opacity:1;position:relative;transition:visibility .1s,opacity .1s,height .1s,width .1s,right 0s,top 0s}.vjs-internal .vjs-slider-horizontal .vjs-volume-level:before{top:-.4em;right:-.5em}.vjs-internal .vjs-remaining-time{display:none}.vjs-internal .vjs-live-display{display:none}.vjs-internal .vjs-picture-in-picture-control{display:none}.vjs-internal .vjs-fullscreen-control{display:none}.vjs-internal .vjs-seek-to-live-control{display:none}.vjs-internal .vjs-subs-caps-button{display:none}.vjs-internal .vjs-custom-control-spacer{display:block;width:100%} \ No newline at end of file +.vjs-internal { + --video-js--primary: #eaea05; +} +.vjs-internal .vjs-big-play-button { + width: 70px; + height: 70px; + background: 0 0; + line-height: 180px; + font-size: 180px; + border: none; + top: 50%; + left: 50%; + margin-top: -90px; + color: rgba(255, 255, 255, 0.65); +} +.vjs-internal.vjs-big-play-button:focus, +.vjs-internal:hover .vjs-big-play-button { + background-color: transparent; + color: rgba(255, 255, 255, 1); +} +.vjs-internal .vjs-control-bar { + top: calc(50% - 45px); + height: 100px; + width: 50px; + background-color: #4d4d4d; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.vjs-internal .vjs-button > .vjs-icon-placeholder:before { + line-height: 50px; +} +.vjs-internal .vjs-play-progress:before { + display: none; +} +.vjs-internal .vjs-progress-control { + display: none; +} +.vjs-internal .vjs-paused, +.vjs-internal .vjs-playing { + width: 50px; + height: 50px; + border-radius: 4px; + background-color: #4d4d4d; +} +.vjs-internal .vjs-volume-panel { + width: 50px; + height: 50px; + border-radius: 4px; + padding-left: 4px; + background-color: #4d4d4d; + margin: 50px 0 0 -50px; +} +.vjs-internal .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal { + padding-top: 1em; + transition: visibility 1s, opacity 1s, height 1s 1s, width 1s, right 1s 1s, + top 1s 1s; +} +.vjs-internal .vjs-volume-panel .vjs-volume-control.vjs-slider-active, +.vjs-internal .vjs-volume-panel .vjs-volume-control:active, +.vjs-internal + .vjs-volume-panel.vjs-hover + .vjs-mute-control + ~ .vjs-volume-control, +.vjs-internal .vjs-volume-panel.vjs-hover .vjs-volume-control, +.vjs-internal .vjs-volume-panel:active .vjs-volume-control, +.vjs-internal .vjs-volume-panel:focus .vjs-volume-control { + visibility: visible; + opacity: 1; + position: relative; + transition: visibility 0.1s, opacity 0.1s, height 0.1s, width 0.1s, right 0s, + top 0s; +} +.vjs-internal .vjs-slider-horizontal .vjs-volume-level:before { + top: -0.4em; + right: -0.5em; +} +.vjs-internal .vjs-remaining-time { + display: none; +} +.vjs-internal .vjs-live-display { + display: none; +} +.vjs-internal .vjs-picture-in-picture-control { + display: none; +} +.vjs-internal .vjs-fullscreen-control { + display: none; +} +.vjs-internal .vjs-seek-to-live-control { + display: none; +} +.vjs-internal .vjs-subs-caps-button { + display: none; +} +.vjs-internal .vjs-custom-control-spacer { + display: block; + width: 100%; +} diff --git a/src/misc/Player/video-js-skin-public.css b/src/misc/Player/video-js-skin-public.css index 1be5200..29282cd 100644 --- a/src/misc/Player/video-js-skin-public.css +++ b/src/misc/Player/video-js-skin-public.css @@ -1,111 +1,111 @@ .vjs-public { - --video-js--primary: #EAEA05; + --video-js--primary: #eaea05; } /* play btn */ .vjs-public .vjs-big-play-button { - width: 70px; - height: 70px; - background: none; - line-height: 180px; - font-size: 180px; - border: none; - top: 50%; - left: 50%; - margin-top: -90px; - margin-left: -90px; - color: rgba(255,255,255,.65); - } + width: 70px; + height: 70px; + background: none; + line-height: 180px; + font-size: 180px; + border: none; + top: 50%; + left: 50%; + margin-top: -90px; + margin-left: -90px; + color: rgba(255, 255, 255, 0.65); +} - .vjs-public:hover .vjs-big-play-button, - .vjs-public.vjs-big-play-button:focus { - background-color: transparent; - color: rgba(255,255,255,1); - } +.vjs-public:hover .vjs-big-play-button, +.vjs-public.vjs-big-play-button:focus { + background-color: transparent; + color: rgba(255, 255, 255, 1); +} /* controlbar */ .vjs-public .vjs-control-bar { - height: 70px; - padding-top: 20px; - background: none; - background-image: linear-gradient(0deg, rgba(0,0,0,.85), transparent) + height: 70px; + padding-top: 20px; + background: none; + background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.85), transparent); } .vjs-public .vjs-time-tooltip { z-index: 0; } -.vjs-public .vjs-button>.vjs-icon-placeholder:before { - line-height: 50px +.vjs-public .vjs-button > .vjs-icon-placeholder:before { + line-height: 50px; } /* progressbar */ .vjs-public .vjs-play-progress:before { - display: none + display: none; } .vjs-public .vjs-progress-control { - position: absolute; - top: 0; - right: 0; - left: 15px; - width: calc(100% - 30px); - height: 20px + position: absolute; + top: 0; + right: 0; + left: 15px; + width: calc(100% - 30px); + height: 20px; } .vjs-public .vjs-progress-control .vjs-progress-holder { - position: absolute; - top: 20px; - right: 0; - left: 0; - width: 100%; - margin: 0 + position: absolute; + top: 20px; + right: 0; + left: 0; + width: 100%; + margin: 0; } .vjs-public .vjs-play-progress { - background-color: var(--video-js--primary); + background-color: var(--video-js--primary); } .vjs-public .vjs-slider { - background: rgba(255,255,255,.25); + background: rgba(255, 255, 255, 0.25); } .vjs-public .vjs-load-progress { - background: rgba(255,255,255,.25); + background: rgba(255, 255, 255, 0.25); } .vjs-public .vjs-load-progress div { - background: rgba(255,255,255,.25); + background: rgba(255, 255, 255, 0.25); } .vjs-public .vjs-remaining-time { - order: 0; - line-height: 50px; - flex: 3; - text-align: left; + order: 0; + line-height: 50px; + flex: 3; + text-align: left; } .vjs-public .vjs-live-control { - line-height: 50px; + line-height: 50px; } /* volume-panel */ .vjs-public .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal { - padding-top: 1em; + padding-top: 1em; } .vjs-public .vjs-control .vjs-volume-panel { - width: 4.5em; + width: 4.5em; } /* live display */ .vjs-public .vjs-live-display { - margin-left: 1.8em; + margin-left: 1.8em; } /* disable caps */ @@ -128,43 +128,42 @@ } .vjs-public .vjs-overlay-no-background { - max-width: 28%!important; - max-height: 28%!important; + max-width: 28% !important; + max-height: 28% !important; } .vjs-public .vjs-overlay-top-left { - top: 20px!important; - left: 30px!important; + top: 20px !important; + left: 30px !important; } .vjs-public .vjs-overlay-top-right { - top: 20px!important; - right: 30px!important; + top: 20px !important; + right: 30px !important; } .vjs-public .vjs-overlay-bottom-left { - bottom: 20px!important; - left: 30px!important; + bottom: 20px !important; + left: 30px !important; } .vjs-public .vjs-overlay-bottom-right { - bottom: 20px!important; - right: 30px!important; + bottom: 20px !important; + right: 30px !important; } /* context menu */ .vjs-public .vjs-license .vjs-menu .vjs-menu-content { - background: rgba(0,0,0,.8); + background: rgba(0, 0, 0, 0.8); } .vjs-public .vjs-license-top-level-header { - background: unset!important; - border-bottom: 1px solid rgba(255,255,255,.25); + background: unset !important; + border-bottom: 1px solid rgba(255, 255, 255, 0.25); min-width: 100px; } .vjs-public .vjs-lock-open { - z-index: 1000; + z-index: 1000; } - diff --git a/src/misc/Player/video-js-skin-public.min.css b/src/misc/Player/video-js-skin-public.min.css index f3e5c08..4ebf0c2 100644 --- a/src/misc/Player/video-js-skin-public.min.css +++ b/src/misc/Player/video-js-skin-public.min.css @@ -1 +1,123 @@ -.vjs-public{--video-js--primary:#EAEA05}.vjs-public .vjs-big-play-button{width:70px;height:70px;background:0 0;line-height:180px;font-size:180px;border:none;top:50%;left:50%;margin-top:-90px;margin-left:-90px;color:rgba(255,255,255,.65)}.vjs-public.vjs-big-play-button:focus,.vjs-public:hover .vjs-big-play-button{background-color:transparent;color:rgba(255,255,255,1)}.vjs-public .vjs-control-bar{height:70px;padding-top:20px;background:0 0;background-image:linear-gradient(0deg,rgba(0,0,0,.85),transparent)}.vjs-public .vjs-time-tooltip{z-index:0}.vjs-public .vjs-button>.vjs-icon-placeholder:before{line-height:50px}.vjs-public .vjs-play-progress:before{display:none}.vjs-public .vjs-progress-control{position:absolute;top:0;right:0;left:15px;width:calc(100% - 30px);height:20px}.vjs-public .vjs-progress-control .vjs-progress-holder{position:absolute;top:20px;right:0;left:0;width:100%;margin:0}.vjs-public .vjs-play-progress{background-color:var(--video-js--primary)}.vjs-public .vjs-slider{background:rgba(255,255,255,.25)}.vjs-public .vjs-load-progress{background:rgba(255,255,255,.25)}.vjs-public .vjs-load-progress div{background:rgba(255,255,255,.25)}.vjs-public .vjs-remaining-time{order:0;line-height:50px;flex:3;text-align:left}.vjs-public .vjs-live-control{line-height:50px}.vjs-public .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{padding-top:1em}.vjs-public .vjs-control .vjs-volume-panel{width:4.5em}.vjs-public .vjs-live-display{margin-left:1.8em}.vjs-internal .vjs-subs-caps-button{display:none}.vjs-public .vjs-custom-control-spacer{display:block;width:100%}.vjs-public .vjs-overlay>a>img{width:100%}.vjs-public .vjs-overlay-no-background{max-width:28%!important;max-height:28%!important}.vjs-public .vjs-overlay-top-left{top:20px!important;left:30px!important}.vjs-public .vjs-overlay-top-right{top:20px!important;right:30px!important}.vjs-public .vjs-overlay-bottom-left{bottom:20px!important;left:30px!important}.vjs-public .vjs-overlay-bottom-right{bottom:20px!important;right:30px!important}.vjs-public .vjs-license .vjs-menu .vjs-menu-content{background:rgba(0,0,0,.8)}.vjs-public .vjs-license-top-level-header{background:unset!important;border-bottom:1px solid rgba(255,255,255,.25);min-width:100px}.vjs-public .vjs-lock-open{z-index:1000} \ No newline at end of file +.vjs-public { + --video-js--primary: #eaea05; +} +.vjs-public .vjs-big-play-button { + width: 70px; + height: 70px; + background: 0 0; + line-height: 180px; + font-size: 180px; + border: none; + top: 50%; + left: 50%; + margin-top: -90px; + margin-left: -90px; + color: rgba(255, 255, 255, 0.65); +} +.vjs-public.vjs-big-play-button:focus, +.vjs-public:hover .vjs-big-play-button { + background-color: transparent; + color: rgba(255, 255, 255, 1); +} +.vjs-public .vjs-control-bar { + height: 70px; + padding-top: 20px; + background: 0 0; + background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.85), transparent); +} +.vjs-public .vjs-time-tooltip { + z-index: 0; +} +.vjs-public .vjs-button > .vjs-icon-placeholder:before { + line-height: 50px; +} +.vjs-public .vjs-play-progress:before { + display: none; +} +.vjs-public .vjs-progress-control { + position: absolute; + top: 0; + right: 0; + left: 15px; + width: calc(100% - 30px); + height: 20px; +} +.vjs-public .vjs-progress-control .vjs-progress-holder { + position: absolute; + top: 20px; + right: 0; + left: 0; + width: 100%; + margin: 0; +} +.vjs-public .vjs-play-progress { + background-color: var(--video-js--primary); +} +.vjs-public .vjs-slider { + background: rgba(255, 255, 255, 0.25); +} +.vjs-public .vjs-load-progress { + background: rgba(255, 255, 255, 0.25); +} +.vjs-public .vjs-load-progress div { + background: rgba(255, 255, 255, 0.25); +} +.vjs-public .vjs-remaining-time { + order: 0; + line-height: 50px; + flex: 3; + text-align: left; +} +.vjs-public .vjs-live-control { + line-height: 50px; +} +.vjs-public .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal { + padding-top: 1em; +} +.vjs-public .vjs-control .vjs-volume-panel { + width: 4.5em; +} +.vjs-public .vjs-live-display { + margin-left: 1.8em; +} +.vjs-internal .vjs-subs-caps-button { + display: none; +} +.vjs-public .vjs-custom-control-spacer { + display: block; + width: 100%; +} +.vjs-public .vjs-overlay > a > img { + width: 100%; +} +.vjs-public .vjs-overlay-no-background { + max-width: 28% !important; + max-height: 28% !important; +} +.vjs-public .vjs-overlay-top-left { + top: 20px !important; + left: 30px !important; +} +.vjs-public .vjs-overlay-top-right { + top: 20px !important; + right: 30px !important; +} +.vjs-public .vjs-overlay-bottom-left { + bottom: 20px !important; + left: 30px !important; +} +.vjs-public .vjs-overlay-bottom-right { + bottom: 20px !important; + right: 30px !important; +} +.vjs-public .vjs-license .vjs-menu .vjs-menu-content { + background: rgba(0, 0, 0, 0.8); +} +.vjs-public .vjs-license-top-level-header { + background: unset !important; + border-bottom: 1px solid rgba(255, 255, 255, 0.25); + min-width: 100px; +} +.vjs-public .vjs-lock-open { + z-index: 1000; +} diff --git a/src/misc/TabPanel.js b/src/misc/TabPanel.js index bac74b9..98ddead 100644 --- a/src/misc/TabPanel.js +++ b/src/misc/TabPanel.js @@ -4,14 +4,14 @@ import makeStyles from '@mui/styles/makeStyles'; import Box from '@mui/material/Box'; import PropTypes from 'prop-types'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ root: { padding: 0, }, '& .MuiBox-root': { padding: 0, - }, - })); + }, +})); export default function TabPanel(props) { const classes = useStyles(); @@ -19,7 +19,11 @@ export default function TabPanel(props) { return ( ); } diff --git a/src/misc/TextField.js b/src/misc/TextField.js index 8cc2d3f..efd2300 100644 --- a/src/misc/TextField.js +++ b/src/misc/TextField.js @@ -34,9 +34,7 @@ export default function Component(props) { rows={props.rows} type={props.type} /> - {props.helperText && ( - {props.helperText} - )} + {props.helperText && {props.helperText}} ); } diff --git a/src/misc/TextFieldCopy.js b/src/misc/TextFieldCopy.js index a5e37a5..0ab3646 100644 --- a/src/misc/TextFieldCopy.js +++ b/src/misc/TextFieldCopy.js @@ -10,6 +10,8 @@ import InputLabel from '@mui/material/InputLabel'; import NotifyContext from '../contexts/Notify'; import OutlinedInput from '@mui/material/OutlinedInput'; +import CopyToClipboard from '../utils/clipboard'; + const useStyles = makeStyles((theme) => ({ root: { '& .MuiOutlinedInput-notchedOutline': { @@ -23,22 +25,9 @@ export default function Component(props) { const { i18n } = useLingui(); const notify = useContext(NotifyContext); - const textAreaRef = React.createRef(); const handleCopy = async () => { - let success = false; - - if (!navigator.clipboard) { - textAreaRef.current.select(); - - try { - success = document.execCommand('copy'); - } catch (err) {} - - textAreaRef.current.setSelectionRange(0, 0); - } else { - success = await writeText(navigator.clipboard.writeText(props.value)); - } + const success = await CopyToClipboard(props.value); if (success === true) { notify.Dispatch('success', 'clipboard', i18n._(t`Data copied to clipboard`)); @@ -47,21 +36,11 @@ export default function Component(props) { } }; - const writeText = (promise) => { - return promise - .then(() => true) - .catch((err) => { - console.warn(err); - return false; - }); - }; - return ( {props.label} - - + + {allowCopy && ( diff --git a/src/misc/coders/Encoders/index.js b/src/misc/coders/Encoders/index.js index 37a089e..37dda51 100644 --- a/src/misc/coders/Encoders/index.js +++ b/src/misc/coders/Encoders/index.js @@ -13,6 +13,8 @@ import * as X265 from './video/X265'; import * as H264VideoToolbox from './video/H264VideoToolbox'; import * as H264NVENC from './video/H264NVENC'; import * as H264OMX from './video/H264OMX'; +import * as H264V4L2M2M from './video/H264V4L2M2M'; +import * as H264VAAPI from './video/H264VAAPI'; import * as VideoCopy from './video/Copy'; import * as VideoNone from './video/None'; import * as VideoRaw from './video/Raw'; @@ -123,6 +125,8 @@ videoRegistry.Register(X265); videoRegistry.Register(H264VideoToolbox); videoRegistry.Register(H264NVENC); videoRegistry.Register(H264OMX); +videoRegistry.Register(H264V4L2M2M); +videoRegistry.Register(H264VAAPI); videoRegistry.Register(VP9); videoRegistry.Register(VideoRaw); diff --git a/src/misc/coders/Encoders/video/H264V4L2M2M.js b/src/misc/coders/Encoders/video/H264V4L2M2M.js new file mode 100644 index 0000000..3868367 --- /dev/null +++ b/src/misc/coders/Encoders/video/H264V4L2M2M.js @@ -0,0 +1,163 @@ +import React from 'react'; + +import Grid from '@mui/material/Grid'; + +import Video from '../../settings/Video'; + +function init(initialState) { + const state = { + bitrate: '4096', + fps: '25', + gop: '2', + profile: 'auto', + ...initialState, + }; + + return state; +} + +// https://forums.raspberrypi.com/viewtopic.php?t=294161 +// ffmpeg -y -nostdin -f v4l2 -threads auto -input_format yuyv422 -fflags +genpts -flags +global_header \ +// -i /dev/video0 -s 1280x720 -r 25 \ +// -vcodec h264_v4l2m2m \ +// -num_output_buffers 32 -num_capture_buffers 16 \ +// -keyint_min 25 -force_key_frames "expr:gte(t,n_forced*1)" \ +// -g 50 -b:v 6M -pix_fmt nv12 \ +// -f mp4 -f segment -segment_format_options movflags=+faststart -segment_time 1 -reset_timestamps 1 -segment_time 1 -segment_time_delta 1 -segment_format mp4 -muxdelay 0 -muxpreload 0 /home/pi/Videos/%d-output.mp4 + +/** +v4l2-ctl --list-ctrls-menu -d 11 + +Codec Controls + + video_bitrate_mode 0x009909ce (menu) : min=0 max=1 default=0 value=0 (Variable Bitrate) flags=update + 0: Variable Bitrate + 1: Constant Bitrate + video_bitrate 0x009909cf (int) : min=25000 max=25000000 step=25000 default=10000000 value=10000000 + sequence_header_mode 0x009909d8 (menu) : min=0 max=1 default=1 value=1 (Joined With 1st Frame) + 0: Separate Buffer + 1: Joined With 1st Frame + repeat_sequence_header 0x009909e2 (bool) : default=0 value=0 + force_key_frame 0x009909e5 (button) : value=0 flags=write-only, execute-on-write + h264_minimum_qp_value 0x00990a61 (int) : min=0 max=51 step=1 default=20 value=20 + h264_maximum_qp_value 0x00990a62 (int) : min=0 max=51 step=1 default=51 value=51 + h264_i_frame_period 0x00990a66 (int) : min=0 max=2147483647 step=1 default=60 value=60 + h264_level 0x00990a67 (menu) : min=0 max=13 default=11 value=11 (4) + 0: 1 + 1: 1b + 2: 1.1 + 3: 1.2 + 4: 1.3 + 5: 2 + 6: 2.1 + 7: 2.2 + 8: 3 + 9: 3.1 + 10: 3.2 + 11: 4 + 12: 4.1 + 13: 4.2 + h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4 (High) + 0: Baseline + 1: Constrained Baseline + 2: Main + 4: High + */ + +function createMapping(settings) { + const mapping = [ + '-codec:v', + 'h264_v4l2m2m', + '-b:v', + `${settings.bitrate}k`, + '-maxrate', + `${settings.bitrate}k`, + '-bufsize', + `${settings.bitrate}k`, + '-r', + `${settings.fps}`, + '-pix_fmt', + 'yuv420p', + '-vsync', + '1', + ]; + + if (settings.gop !== 'auto') { + mapping.push('-g', `${Math.round(parseInt(settings.fps) * parseInt(settings.gop)).toFixed(0)}`); + } + + if (settings.profile !== 'auto') { + mapping.push('-profile:v', `${settings.profile}`); + } + + return mapping; +} + +function Coder(props) { + const settings = init(props.settings); + + const handleChange = (newSettings) => { + let automatic = false; + if (!newSettings) { + newSettings = settings; + automatic = true; + } + + props.onChange(newSettings, createMapping(newSettings), automatic); + }; + + const update = (what) => (event) => { + const newSettings = { + ...settings, + [what]: event.target.value, + }; + + handleChange(newSettings); + }; + + React.useEffect(() => { + handleChange(null); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + + + + + + + + + + + + ); +} + +Coder.defaultProps = { + stream: {}, + settings: {}, + onChange: function (settings, mapping) {}, +}; + +const coder = 'h264_v4l2m2m'; +const name = 'H.264 (V4L2 Memory to Memory)'; +const codec = 'h264'; +const type = 'video'; +const hwaccel = true; + +function summarize(settings) { + return `${name}, ${settings.bitrate} kbit/s, ${settings.fps} FPS, Profile: ${settings.profile}`; +} + +function defaults() { + const settings = init({}); + + return { + settings: settings, + mapping: createMapping(settings), + }; +} + +export { coder, name, codec, type, hwaccel, summarize, defaults, Coder as component }; diff --git a/src/misc/coders/Encoders/video/H264VAAPI.js b/src/misc/coders/Encoders/video/H264VAAPI.js new file mode 100644 index 0000000..e40c1cd --- /dev/null +++ b/src/misc/coders/Encoders/video/H264VAAPI.js @@ -0,0 +1,171 @@ +import React from 'react'; + +import Grid from '@mui/material/Grid'; +import MenuItem from '@mui/material/MenuItem'; +import TextField from '@mui/material/TextField'; + +import { Trans } from '@lingui/macro'; + +import Select from '../../../Select'; +import Video from '../../settings/Video'; + +function init(initialState) { + const state = { + bitrate: '4096', + fps: '25', + gop: '2', + profile: '77', + rc_mode: '1', + quality: '-1', + ...initialState, + }; + + return state; +} + +function createMapping(settings) { + const mapping = [ + '-vaapi_device', + '/dev/dri/renderD128', + '-vf', + 'format=nv12,hwupload', + '-codec:v', + 'h264_vaapi', + '-profile:v', + `${settings.profile}`, + '-quality', + `${settings.quality}`, + '-level', + `${settings.level}`, + '-b:v', + `${settings.bitrate}k`, + '-maxrate', + `${settings.bitrate}k`, + '-bufsize', + `${settings.bitrate}k`, + '-r', + `${settings.fps}`, + '-g', + `${settings.gop}`, + '-vsync', + '1', + ]; + + if (settings.gop !== 'auto') { + mapping.push('-g', `${Math.round(parseInt(settings.fps) * parseInt(settings.gop)).toFixed(0)}`); + } + + return mapping; +} + +function RateControl(props) { + return ( + + ); +} + +RateControl.defaultProps = { + value: '', + onChange: function (event) {}, +}; + +function Profile(props) { + return ( + + ); +} + +Profile.defaultProps = { + value: '', + onChange: function (event) {}, +}; + +function Coder(props) { + const settings = init(props.settings); + + const handleChange = (newSettings) => { + let automatic = false; + if (!newSettings) { + newSettings = settings; + automatic = true; + } + + props.onChange(newSettings, createMapping(newSettings), automatic); + }; + + const update = (what) => (event) => { + const newSettings = { + ...settings, + [what]: event.target.value, + }; + + handleChange(newSettings); + }; + + React.useEffect(() => { + handleChange(null); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + + + + + + + + + + + + + + + Quality} type="number" value={settings.quality} onChange={update('quality')} /> + + + + + + ); +} + +Coder.defaultProps = { + stream: {}, + settings: {}, + onChange: function (settings, mapping) {}, +}; + +const coder = 'h264_vaapi'; +const name = 'H.264 (Intel VAAPI)'; +const codec = 'h264'; +const type = 'video'; +const hwaccel = true; + +function summarize(settings) { + return `${name}, ${settings.bitrate} kbit/s, ${settings.fps} FPS, Profile: ${settings.profile}`; +} + +function defaults() { + const settings = init({}); + + return { + settings: settings, + mapping: createMapping(settings), + }; +} + +export { coder, name, codec, type, hwaccel, summarize, defaults, Coder as component }; diff --git a/src/misc/controls/HLS.js b/src/misc/controls/HLS.js index a6aae37..6658cb8 100644 --- a/src/misc/controls/HLS.js +++ b/src/misc/controls/HLS.js @@ -5,11 +5,14 @@ import Grid from '@mui/material/Grid'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; +import Checkbox from '../Checkbox'; + function init(settings) { const initSettings = { lhls: false, segmentDuration: 2, listSize: 6, + cleanup: true, ...settings, }; @@ -28,7 +31,7 @@ export default function Control(props) { const handleChange = (what) => (event) => { const value = event.target.value; - if (what === 'lhls') { + if (['lhls', 'cleanup'].includes(what)) { settings[what] = !settings[what]; } else { settings[what] = value; @@ -76,6 +79,9 @@ export default function Control(props) { The maximum number of playlist segments. 0 will contain all the segments. 6 is recommended. + + Automatic cleanup of all media data} checked={settings.cleanup} onChange={handleChange('cleanup')} /> + ); } diff --git a/src/misc/controls/Metadata.js b/src/misc/controls/Metadata.js index e2e76c6..6813a65 100644 --- a/src/misc/controls/Metadata.js +++ b/src/misc/controls/Metadata.js @@ -66,10 +66,7 @@ export default function Control(props) { return ( - + Content} value="content" /> Author} value="author" /> diff --git a/src/misc/controls/Process.js b/src/misc/controls/Process.js index 6d9516d..1d37aad 100644 --- a/src/misc/controls/Process.js +++ b/src/misc/controls/Process.js @@ -31,7 +31,7 @@ export default function Control(props) { const handleChange = (what) => (event) => { const value = event.target.value; - if (['autostart', 'reconnect'].includes(what)) { + if (['autostart', 'reconnect', 'cleanup'].includes(what)) { settings[what] = !settings[what]; } else { settings[what] = value; diff --git a/src/misc/controls/Snapshot.js b/src/misc/controls/Snapshot.js index 70b44b5..5f52d4c 100644 --- a/src/misc/controls/Snapshot.js +++ b/src/misc/controls/Snapshot.js @@ -43,7 +43,7 @@ export default function Control(props) { Enable snapshots} checked={settings.enable} onChange={handleChange('enable')} /> - + - +