0
Google 드라이브에 MP3 파일이 있습니다. 내가 Google 응용 프로그램 스크립트를 사용하여 MP3 파일의 duraton을 얻을 수있는 방법이 있습니까?응용 프로그램 스크립트에서 M3 파일의 읽기 지속 시간
Google 드라이브에 MP3 파일이 있습니다. 내가 Google 응용 프로그램 스크립트를 사용하여 MP3 파일의 duraton을 얻을 수있는 방법이 있습니까?응용 프로그램 스크립트에서 M3 파일의 읽기 지속 시간
This 페이지는 바이트 값을보고 mp3 파일에서 해당 정보를 추출하는 방법을 보여줍니다. 그래서 간단한 예제를 작성하고 테스트했습니다. 지금까지 시도한 모든 mp3 파일에서 제대로 작동하는 것 같지만 항상 작동한다는 보장은 없습니다. getPlayTime 함수는 재생 시간을 초 단위로 반환합니다.
function getPlayTime(file) {
var bitratesV1 = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320],
bitratesV2 = [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];
var bytes = file.getBlob().getBytes();
for(var pos = 0;pos < bytes.length; pos++) {
if(bytes[pos] === -1 && pos < bytes.length - 3 && (bytes[pos+1]&0xF0) === 0xF0) {
var isMpegVersion2 = (bytes[pos+1]&8) !== 8,
isLayer3 = (bytes[pos+1]&6) === 2,
bitRate = ((bytes[pos+2]&0xF0) >>> 4)&0xF;
if(!isLayer3) continue;
if(isMpegVersion2) bitRate = bitratesV2[bitRate];
else bitRate = bitratesV1[bitRate];
var playTime = bytes.length*8/(1000 * bitRate);
return playTime;
}
}
}
function test() {
var file = DriveApp.getFilesByName("music.mp3").next();
var playTime = getPlayTime(file);
Logger.log(playTime);
}
편집 : 여기
function getRunTime(file) {
var playTime = 0, numFrames = 0;
var bitratesV1 = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320],
bitratesV2 = [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];
var bytes = file.getBlob().getBytes();
for(var pos = 0;pos < bytes.length; pos++) {
if(bytes[pos] === -1 && pos < bytes.length - 3 && (bytes[pos+1]&0xF0) === 0xF0) {
var isMpegVersion2 = (bytes[pos+1]&8) !== 8,
isLayer3 = (bytes[pos+1]&6) === 2,
bitRate = ((bytes[pos+2]&0xF0) >>> 4)&0xF;
if(!isLayer3) continue;
if(isMpegVersion2) bitRate = bitratesV2[bitRate];
else bitRate = bitratesV1[bitRate];
var pt = bytes.length*8/(1000 * bitRate);
if(!isNaN(pt) && isFinite(pt)) {
playTime += pt;
numFrames++;
}
}
}
return playTime/numFrames;
}
이에 대한 정말 감사 희망보다 정확한뿐만 아니라 훨씬 느린 버전입니다. 나는 들어가는 노력을 봅니다. 그러나 불행히도 기간은 정확하지 않습니다, 그것은 매우 근사합니다. 24 초의 오디오를 업로드했으며 17 초가 걸렸습니다. 하나는 24 분이고 19 분이라고합니다. 왜 그런가? 포맷 때문인가요? –
mp3 파일에서 cbr 인코딩 대신 vbr을 사용하거나 파일에 포함 된 이미지가 크면 부정확 한 결과가 발생합니다. 이를 개선하려면 훨씬 더 많은 노력이 필요합니다. 정확한 기간이 필요하십니까? 그리고 앱 스크립트로 그 기간을 결정해야합니까? – SpiderPig
좀 더 정확하게하려고했지만 새 버전은 훨씬 느립니다. – SpiderPig