Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2015, 10:26
Аспирант
Отправить личное сообщение для ВэйДлин Посмотреть профиль Найти все сообщения от ВэйДлин
 
Регистрация: 07.04.2010
Сообщений: 72

Запись звука с помощью lamejs.js
Есть такая библиотека https://github.com/zhuker/lamejs

Следуя примерам из репозитория я переписал код example.html (и почему он там был не полным?)

В итоге выходит, что в mp3Data не совсем то, что нужно, а при преобразовании в Uint8Array вообще остаются только нули
liblame = new lamejs();
var mp3Data = [];

function encodeMono(channels, sampleRate, samples) {
	mp3enc = new liblame.Mp3Encoder(channels, sampleRate, 128);
	var remaining = samples.length;
	var maxSamples = 1152;
	for (var i = 0; remaining >= maxSamples; i += maxSamples) {
		var mono = samples.subarray(i, i + maxSamples);
		var mp3buf = mp3enc.encodeBuffer(mono);
		if (mp3buf.length > 0) {
			mp3Data.push(mp3buf);
		}
		remaining -= maxSamples;
	}

	var mp3buf = mp3enc.flush(); //finish writing mp3
	if (mp3buf.length > 0) {
		mp3Data.push(mp3buf);
	}
	
	
	// ====== Тестируем ==============================
	console.log("mp3Data ", mp3Data);
	console.log("new Uint8Array(mp3Data) ", new Uint8Array(mp3Data));
	var mp3Blob = new Blob([Uint8Array(mp3Data)], { // Не уверен, что правильно преобразовываю в blob
		type : 'audio/mp3'
	});
	console.log("mp3Blob ", mp3Blob);
	// ===============================================

	console.log('done encoding');
}

var wavFile = "testdata/Left44100.wav";

var request = new XMLHttpRequest();
request.open("GET", wavFile, true);
request.responseType = "arraybuffer";

// Our asynchronous callback
request.onload = function () {
	audioData = request.response;
	wav = liblame.WavHeader.readHeader(new DataView(audioData));
	samples = new Uint16Array(audioData, wav.dataOffset, wav.dataLen / 2);
	encodeMono(wav.channels, wav.sampleRate, samples);
};
request.send();
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2015, 17:45
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

блин, кто способен 16 тысч строк кода писать (я про библиотеку) ?
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2015, 00:13
Аспирант
Отправить личное сообщение для ВэйДлин Посмотреть профиль Найти все сообщения от ВэйДлин
 
Регистрация: 07.04.2010
Сообщений: 72

Тут все-таки адаптация, судя по словам автора
Да и у libmp3lame.js вообще 78 тысяч строк, так что бывает и по жестче
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка встроенной поддержки типа с помощью библиотеки Modernizr viy.li Библиотеки/Тулкиты/Фреймворки 3 15.06.2013 15:48
VK - разместить запись на стену lol4eg Общие вопросы Javascript 8 23.02.2013 14:52
Получить значение ячейки с помощью onclik Space-06 Events/DOM/Window 4 10.01.2012 09:39
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24
Снятие затемнения с экрана при получении ответа от php срипта с помощью setInterval roma86 jQuery 0 16.08.2009 12:39