mirror of
				https://github.com/TeamPiped/Piped.git
				synced 2024-08-14 23:57:27 +00:00 
			
		
		
		
	Merge pull request #3224 from TeamPiped/xmljs-remove
Remove xml-js for fast-xml-parser
This commit is contained in:
		
						commit
						af2fca4dab
					
				
					 4 changed files with 73 additions and 186 deletions
				
			
		| 
						 | 
				
			
			@ -15,19 +15,17 @@
 | 
			
		|||
        "@fortawesome/free-brands-svg-icons": "6.5.1",
 | 
			
		||||
        "@fortawesome/free-solid-svg-icons": "6.5.1",
 | 
			
		||||
        "@fortawesome/vue-fontawesome": "3.0.5",
 | 
			
		||||
        "buffer": "6.0.3",
 | 
			
		||||
        "dompurify": "3.0.6",
 | 
			
		||||
        "fast-xml-parser": "4.3.2",
 | 
			
		||||
        "hotkeys-js": "3.12.2",
 | 
			
		||||
        "javascript-time-ago": "2.5.9",
 | 
			
		||||
        "linkify-html": "4.1.3",
 | 
			
		||||
        "linkifyjs": "4.1.3",
 | 
			
		||||
        "qrcode": "^1.5.3",
 | 
			
		||||
        "shaka-player": "4.7.1",
 | 
			
		||||
        "stream-browserify": "3.0.0",
 | 
			
		||||
        "vue": "3.3.10",
 | 
			
		||||
        "vue-i18n": "9.8.0",
 | 
			
		||||
        "vue-router": "4.2.5",
 | 
			
		||||
        "xml-js": "1.6.11"
 | 
			
		||||
        "vue-router": "4.2.5"
 | 
			
		||||
    },
 | 
			
		||||
    "devDependencies": {
 | 
			
		||||
        "@iconify-json/fa6-brands": "1.1.17",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										74
									
								
								pnpm-lock.yaml
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										74
									
								
								pnpm-lock.yaml
									
										
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -17,12 +17,12 @@ dependencies:
 | 
			
		|||
  '@fortawesome/vue-fontawesome':
 | 
			
		||||
    specifier: 3.0.5
 | 
			
		||||
    version: 3.0.5(@fortawesome/fontawesome-svg-core@6.5.1)(vue@3.3.10)
 | 
			
		||||
  buffer:
 | 
			
		||||
    specifier: 6.0.3
 | 
			
		||||
    version: 6.0.3
 | 
			
		||||
  dompurify:
 | 
			
		||||
    specifier: 3.0.6
 | 
			
		||||
    version: 3.0.6
 | 
			
		||||
  fast-xml-parser:
 | 
			
		||||
    specifier: 4.3.2
 | 
			
		||||
    version: 4.3.2
 | 
			
		||||
  hotkeys-js:
 | 
			
		||||
    specifier: 3.12.2
 | 
			
		||||
    version: 3.12.2
 | 
			
		||||
| 
						 | 
				
			
			@ -41,9 +41,6 @@ dependencies:
 | 
			
		|||
  shaka-player:
 | 
			
		||||
    specifier: 4.7.1
 | 
			
		||||
    version: 4.7.1
 | 
			
		||||
  stream-browserify:
 | 
			
		||||
    specifier: 3.0.0
 | 
			
		||||
    version: 3.0.0
 | 
			
		||||
  vue:
 | 
			
		||||
    specifier: 3.3.10
 | 
			
		||||
    version: 3.3.10(typescript@5.3.2)
 | 
			
		||||
| 
						 | 
				
			
			@ -53,9 +50,6 @@ dependencies:
 | 
			
		|||
  vue-router:
 | 
			
		||||
    specifier: 4.2.5
 | 
			
		||||
    version: 4.2.5(vue@3.3.10)
 | 
			
		||||
  xml-js:
 | 
			
		||||
    specifier: 1.6.11
 | 
			
		||||
    version: 1.6.11
 | 
			
		||||
 | 
			
		||||
devDependencies:
 | 
			
		||||
  '@iconify-json/fa6-brands':
 | 
			
		||||
| 
						 | 
				
			
			@ -2623,10 +2617,6 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /base64-js@1.5.1:
 | 
			
		||||
    resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /big-integer@1.6.52:
 | 
			
		||||
    resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
 | 
			
		||||
    engines: {node: '>=0.6'}
 | 
			
		||||
| 
						 | 
				
			
			@ -2683,13 +2673,6 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /buffer@6.0.3:
 | 
			
		||||
    resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      base64-js: 1.5.1
 | 
			
		||||
      ieee754: 1.2.1
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /builtin-modules@3.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
 | 
			
		||||
    engines: {node: '>=6'}
 | 
			
		||||
| 
						 | 
				
			
			@ -3318,6 +3301,13 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /fast-xml-parser@4.3.2:
 | 
			
		||||
    resolution: {integrity: sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      strnum: 1.0.5
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /fastq@1.15.0:
 | 
			
		||||
    resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
| 
						 | 
				
			
			@ -3594,10 +3584,6 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /ieee754@1.2.1:
 | 
			
		||||
    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /ignore@5.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
 | 
			
		||||
    engines: {node: '>= 4'}
 | 
			
		||||
| 
						 | 
				
			
			@ -3625,6 +3611,7 @@ packages:
 | 
			
		|||
 | 
			
		||||
  /inherits@2.0.4:
 | 
			
		||||
    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /internal-slot@1.0.6:
 | 
			
		||||
    resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
 | 
			
		||||
| 
						 | 
				
			
			@ -4460,15 +4447,6 @@ packages:
 | 
			
		|||
      safe-buffer: 5.2.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /readable-stream@3.6.2:
 | 
			
		||||
    resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
 | 
			
		||||
    engines: {node: '>= 6'}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      inherits: 2.0.4
 | 
			
		||||
      string_decoder: 1.3.0
 | 
			
		||||
      util-deprecate: 1.0.2
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /readdirp@3.6.0:
 | 
			
		||||
    resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
 | 
			
		||||
    engines: {node: '>=8.10.0'}
 | 
			
		||||
| 
						 | 
				
			
			@ -4635,6 +4613,7 @@ packages:
 | 
			
		|||
 | 
			
		||||
  /safe-buffer@5.2.1:
 | 
			
		||||
    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /safe-regex-test@1.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
 | 
			
		||||
| 
						 | 
				
			
			@ -4644,10 +4623,6 @@ packages:
 | 
			
		|||
      is-regex: 1.1.4
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /sax@1.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /semver@6.3.1:
 | 
			
		||||
    resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
| 
						 | 
				
			
			@ -4763,13 +4738,6 @@ packages:
 | 
			
		|||
    deprecated: Please use @jridgewell/sourcemap-codec instead
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /stream-browserify@3.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      inherits: 2.0.4
 | 
			
		||||
      readable-stream: 3.6.2
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /string-width@4.2.3:
 | 
			
		||||
    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
| 
						 | 
				
			
			@ -4818,12 +4786,6 @@ packages:
 | 
			
		|||
      es-abstract: 1.22.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /string_decoder@1.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      safe-buffer: 5.2.1
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /stringify-object@3.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
 | 
			
		||||
    engines: {node: '>=4'}
 | 
			
		||||
| 
						 | 
				
			
			@ -4859,6 +4821,10 @@ packages:
 | 
			
		|||
    engines: {node: '>=8'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /strnum@1.0.5:
 | 
			
		||||
    resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /supports-color@5.5.0:
 | 
			
		||||
    resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
 | 
			
		||||
    engines: {node: '>=4'}
 | 
			
		||||
| 
						 | 
				
			
			@ -5158,6 +5124,7 @@ packages:
 | 
			
		|||
 | 
			
		||||
  /util-deprecate@1.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vite-plugin-eslint@1.8.1(eslint@8.55.0)(vite@5.0.5):
 | 
			
		||||
    resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==}
 | 
			
		||||
| 
						 | 
				
			
			@ -5493,13 +5460,6 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /xml-js@1.6.11:
 | 
			
		||||
    resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      sax: 1.3.0
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /xml-name-validator@4.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,42 +1,33 @@
 | 
			
		|||
// Based of https://github.com/GilgusMaximus/yt-dash-manifest-generator/blob/master/src/DashGenerator.js
 | 
			
		||||
 | 
			
		||||
import { Buffer } from "buffer";
 | 
			
		||||
window.Buffer = Buffer;
 | 
			
		||||
import { json2xml } from "xml-js";
 | 
			
		||||
import { XMLBuilder } from "fast-xml-parser";
 | 
			
		||||
 | 
			
		||||
export function generate_dash_file_from_formats(VideoFormats, VideoLength) {
 | 
			
		||||
    const generatedJSON = generate_xmljs_json_from_data(VideoFormats, VideoLength);
 | 
			
		||||
    return json2xml(generatedJSON);
 | 
			
		||||
    const builder = new XMLBuilder({
 | 
			
		||||
        ignoreAttributes: false,
 | 
			
		||||
        allowBooleanAttributes: true,
 | 
			
		||||
        suppressBooleanAttributes: false,
 | 
			
		||||
        attributeNamePrefix: "_",
 | 
			
		||||
    });
 | 
			
		||||
    return builder.build(generatedJSON);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function generate_xmljs_json_from_data(VideoFormatArray, VideoLength) {
 | 
			
		||||
    const convertJSON = {
 | 
			
		||||
        declaration: {
 | 
			
		||||
            attributes: {
 | 
			
		||||
                version: "1.0",
 | 
			
		||||
                encoding: "utf-8",
 | 
			
		||||
        "?xml": {
 | 
			
		||||
            _version: "1.0",
 | 
			
		||||
            _encoding: "utf-8",
 | 
			
		||||
            MPD: {
 | 
			
		||||
                _xmlns: "urn:mpeg:dash:schema:mpd:2011",
 | 
			
		||||
                _profiles: "urn:mpeg:dash:profile:full:2011",
 | 
			
		||||
                _minBufferTime: "PT1.5S",
 | 
			
		||||
                _type: "static",
 | 
			
		||||
                _mediaPresentationDuration: `PT${VideoLength}S`,
 | 
			
		||||
                Period: {
 | 
			
		||||
                    AdaptationSet: generate_adaptation_set(VideoFormatArray),
 | 
			
		||||
                },
 | 
			
		||||
            },
 | 
			
		||||
        elements: [
 | 
			
		||||
            {
 | 
			
		||||
                type: "element",
 | 
			
		||||
                name: "MPD",
 | 
			
		||||
                attributes: {
 | 
			
		||||
                    xmlns: "urn:mpeg:dash:schema:mpd:2011",
 | 
			
		||||
                    profiles: "urn:mpeg:dash:profile:full:2011",
 | 
			
		||||
                    minBufferTime: "PT1.5S",
 | 
			
		||||
                    type: "static",
 | 
			
		||||
                    mediaPresentationDuration: `PT${VideoLength}S`,
 | 
			
		||||
        },
 | 
			
		||||
                elements: [
 | 
			
		||||
                    {
 | 
			
		||||
                        type: "element",
 | 
			
		||||
                        name: "Period",
 | 
			
		||||
                        elements: generate_adaptation_set(VideoFormatArray),
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
            },
 | 
			
		||||
        ],
 | 
			
		||||
    };
 | 
			
		||||
    return convertJSON;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -76,34 +67,27 @@ function generate_adaptation_set(VideoFormatArray) {
 | 
			
		|||
 | 
			
		||||
    mimeAudioObjs.forEach(mimeAudioObj => {
 | 
			
		||||
        const adapSet = {
 | 
			
		||||
            type: "element",
 | 
			
		||||
            name: "AdaptationSet",
 | 
			
		||||
            attributes: {
 | 
			
		||||
                id: mimeAudioObj.audioTrackId,
 | 
			
		||||
                lang: mimeAudioObj.audioTrackId?.substr(0, 2),
 | 
			
		||||
                mimeType: mimeAudioObj.mimeType,
 | 
			
		||||
                startWithSAP: "1",
 | 
			
		||||
                subsegmentAlignment: "true",
 | 
			
		||||
            },
 | 
			
		||||
            elements: [],
 | 
			
		||||
            _id: mimeAudioObj.audioTrackId,
 | 
			
		||||
            _lang: mimeAudioObj.audioTrackId?.substr(0, 2),
 | 
			
		||||
            _mimeType: mimeAudioObj.mimeType,
 | 
			
		||||
            _startWithSAP: "1",
 | 
			
		||||
            _subsegmentAlignment: "true",
 | 
			
		||||
            Representation: [],
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        let isVideoFormat = false;
 | 
			
		||||
 | 
			
		||||
        if (mimeAudioObj.mimeType.includes("video")) {
 | 
			
		||||
            isVideoFormat = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isVideoFormat) {
 | 
			
		||||
            adapSet.attributes.scanType = "progressive";
 | 
			
		||||
            adapSet["_scanType"] = "progressive";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (var i = 0; i < mimeAudioObj.videoFormats.length; i++) {
 | 
			
		||||
            const videoFormat = mimeAudioObj.videoFormats[i];
 | 
			
		||||
            if (isVideoFormat) {
 | 
			
		||||
                adapSet.elements.push(generate_representation_video(videoFormat));
 | 
			
		||||
                adapSet.Representation.push(generate_representation_video(videoFormat));
 | 
			
		||||
            } else {
 | 
			
		||||
                adapSet.elements.push(generate_representation_audio(videoFormat));
 | 
			
		||||
                adapSet.Representation.push(generate_representation_audio(videoFormat));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -114,94 +98,40 @@ function generate_adaptation_set(VideoFormatArray) {
 | 
			
		|||
 | 
			
		||||
function generate_representation_audio(Format) {
 | 
			
		||||
    const representation = {
 | 
			
		||||
        type: "element",
 | 
			
		||||
        name: "Representation",
 | 
			
		||||
        attributes: {
 | 
			
		||||
            id: Format.itag,
 | 
			
		||||
            codecs: Format.codec,
 | 
			
		||||
            bandwidth: Format.bitrate,
 | 
			
		||||
        _id: Format.itag,
 | 
			
		||||
        _codecs: Format.codec,
 | 
			
		||||
        _bandwidth: Format.bitrate,
 | 
			
		||||
        AudioChannelConfiguration: {
 | 
			
		||||
            _schemeIdUri: "urn:mpeg:dash:23003:3:audio_channel_configuration:2011",
 | 
			
		||||
            _value: "2",
 | 
			
		||||
        },
 | 
			
		||||
        elements: [
 | 
			
		||||
            {
 | 
			
		||||
                type: "element",
 | 
			
		||||
                name: "AudioChannelConfiguration",
 | 
			
		||||
                attributes: {
 | 
			
		||||
                    schemeIdUri: "urn:mpeg:dash:23003:3:audio_channel_configuration:2011",
 | 
			
		||||
                    value: "2",
 | 
			
		||||
        BaseURL: Format.url,
 | 
			
		||||
        SegmentBase: {
 | 
			
		||||
            _indexRange: `${Format.indexStart}-${Format.indexEnd}`,
 | 
			
		||||
            Initialization: {
 | 
			
		||||
                _range: `${Format.initStart}-${Format.initEnd}`,
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
            {
 | 
			
		||||
                type: "element",
 | 
			
		||||
                name: "BaseURL",
 | 
			
		||||
                elements: [
 | 
			
		||||
                    {
 | 
			
		||||
                        type: "text",
 | 
			
		||||
                        text: Format.url,
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                type: "element",
 | 
			
		||||
                name: "SegmentBase",
 | 
			
		||||
                attributes: {
 | 
			
		||||
                    indexRange: `${Format.indexStart}-${Format.indexEnd}`,
 | 
			
		||||
                },
 | 
			
		||||
                elements: [
 | 
			
		||||
                    {
 | 
			
		||||
                        type: "element",
 | 
			
		||||
                        name: "Initialization",
 | 
			
		||||
                        attributes: {
 | 
			
		||||
                            range: `${Format.initStart}-${Format.initEnd}`,
 | 
			
		||||
                        },
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
            },
 | 
			
		||||
        ],
 | 
			
		||||
    };
 | 
			
		||||
    return representation;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function generate_representation_video(Format) {
 | 
			
		||||
    const representation = {
 | 
			
		||||
        type: "element",
 | 
			
		||||
        name: "Representation",
 | 
			
		||||
        attributes: {
 | 
			
		||||
            id: Format.itag,
 | 
			
		||||
            codecs: Format.codec,
 | 
			
		||||
            bandwidth: Format.bitrate,
 | 
			
		||||
            width: Format.width,
 | 
			
		||||
            height: Format.height,
 | 
			
		||||
            maxPlayoutRate: "1",
 | 
			
		||||
            frameRate: Format.fps,
 | 
			
		||||
        },
 | 
			
		||||
        elements: [
 | 
			
		||||
            {
 | 
			
		||||
                type: "element",
 | 
			
		||||
                name: "BaseURL",
 | 
			
		||||
                elements: [
 | 
			
		||||
                    {
 | 
			
		||||
                        type: "text",
 | 
			
		||||
                        text: Format.url,
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                type: "element",
 | 
			
		||||
                name: "SegmentBase",
 | 
			
		||||
                attributes: {
 | 
			
		||||
                    indexRange: `${Format.indexStart}-${Format.indexEnd}`,
 | 
			
		||||
                },
 | 
			
		||||
                elements: [
 | 
			
		||||
                    {
 | 
			
		||||
                        type: "element",
 | 
			
		||||
                        name: "Initialization",
 | 
			
		||||
                        attributes: {
 | 
			
		||||
                            range: `${Format.initStart}-${Format.initEnd}`,
 | 
			
		||||
        _id: Format.itag,
 | 
			
		||||
        _codecs: Format.codec,
 | 
			
		||||
        _bandwidth: Format.bitrate,
 | 
			
		||||
        _width: Format.width,
 | 
			
		||||
        _height: Format.height,
 | 
			
		||||
        _maxPlayoutRate: "1",
 | 
			
		||||
        _frameRate: Format.fps,
 | 
			
		||||
        BaseURL: Format.url,
 | 
			
		||||
        SegmentBase: {
 | 
			
		||||
            _indexRange: `${Format.indexStart}-${Format.indexEnd}`,
 | 
			
		||||
            Initialization: {
 | 
			
		||||
                _range: `${Format.initStart}-${Format.initEnd}`,
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
                ],
 | 
			
		||||
            },
 | 
			
		||||
        ],
 | 
			
		||||
    };
 | 
			
		||||
    return representation;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,7 +68,6 @@ export default defineConfig({
 | 
			
		|||
    resolve: {
 | 
			
		||||
        alias: {
 | 
			
		||||
            "@": path.resolve(__dirname, "./src"),
 | 
			
		||||
            stream: "stream-browserify",
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
    build: {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue