import * as Url from '../utils/url.js';
/**
* 마임타입
*
* @see https://www.iana.org/assignments/media-types/media-types.xhtml
* @typedef Mimetypes~종류
* @enum
*/
내보내기 const MimetypesKind = {
opus: '비디오/ogg',
ogv: '비디오/ogg',
mp4: '비디오/mp4',
mov: '비디오/mp4',
m4v: '비디오/mp4',
mkv: '비디오/x-마트로스카',
m4a: '오디오/mp4',
mp3: '오디오/mpeg',
aac: '오디오/aac',
caf: '오디오/x-caf',
flac: '오디오/flac',
oga: '오디오/ogg',
wav: '오디오/wav',
m3u8: '응용 프로그램/x-mpegURL',
mpd: '응용 프로그램/대시+xml',
jpg: '이미지/jpeg',
jpeg: '이미지/jpeg',
gif: '이미지/gif',
png: '이미지/png',
svg: '이미지/svg+xml',
webp: '이미지/웹'
};
/**
* 가능한 경우 주어진 src URL의 mimetype을 가져옵니다.
*
* @param {문자열} 소스
* src에 대한 URL
*
* @return {문자열}
* 알려진 경우 mimetype을 반환하고 그렇지 않으면 빈 문자열을 반환합니다.
*/
내보내기 const getMimetype = function(src = '') {
const ext = Url.getFileExtension(src);
const mimetype = MimetypesKind[ext.toLowerCase()];
반환 mimetype || '';
};
/**
* 가능한 경우 주어진 소스 문자열의 MIME 유형을 찾으십시오. 플레이어를 사용합니다
* 소스 캐시.
*
* @param {플레이어} 플레이어
* 플레이어 개체
*
* @param {문자열} 소스
* 소스 문자열
*
* @return {문자열}
* 찾은 유형
*/
내보내기 const findMimetype = (플레이어, src) => {
if (!src) {
반품 '';
}
// 1. `source` 캐시에서 유형을 확인합니다.
if (player.cache_.source.src === src && player.cache_.source.type) {
return player.cache_.source.type;
}
// 2. `currentSources` 캐시에 이 소스가 있는지 확인합니다.
const matchingSources = player.cache_.sources.filter((s) => s.src === src);
if (matchingSources.length) {
return matchingSources[0].type;
}
// 3. 소스 요소에서 src url을 찾고 거기에 있는 유형을 사용합니다.
const sources = player.$$('source');
에 대한 (하자 i = 0; i < 출처.길이; i++) {
const s = 소스[i];
만약 (s.type && s.src && s.src === src) {
반환 s.type;
}
}
// 4. 마지막으로 src url 확장자를 기반으로 하는 mime 유형 목록으로 폴백합니다.
return getMimetype(src);
};