Recoding

В петък вечерта майка ми ме изненада с интересна задачка – качила си жената MP3 ringtone с бебешки смях, но телефона й (Siemens C65) не може да го възпроизведе (баси, колко по-лесно е да се използва термина “play-не”).

Понеже казуса беше интересен ето нещо като mini-HOWTO, придружено с елементи на reverse engineering. Пиша нещата точно както станаха, включително и грешките:

1. Прехърляне на файла на моят телефон (SonyEricsson K700i), понеже C65 не поддържа Bluetooth.

2. Прехвърляне на файла от K700i в PC-то

3. Прекодиране на MP3 във WAV:

$ mpg321 -w child.wav

Груба грешка – 600k са много за ringtone

4. Прекодиране с resample:

$ sox child.mp3 -r 6000 child.wav

Тука малко по-малко стават – към 181k

5. Копиране на файла от PC към моят телефон и установяване, че SonyEricsson K700i не може да play-ва WAV-файлове, поне не Microsoft PCM-кодирани такива

6. Копиране на файла от К700i на C65 и установяване, че и C65 не може да play-ва Microsoft PCM-кодирани файлове :)

7. Сетих се, че може да има ограничение на sample rate и по т. 1 и 2 взех произволен WAV-файл от фирмените на C65 и го прехвърлих на PC-то.

8. Вече с нейният файл:

$ aplay siemens.wav
aplay: test_wavefile:731: can't play not PCM-coded WAVE-files

Стана ми интересно с какво е кодиран, щом не е Microsoft PCM

$ file siemens.wav
siemens.wav: RIFF (little-endian) data, WAVE audio, IMA ADPCM,
mono 16000 Hz

9. Ровене из документацията за прекодиране с IMA ADPCM :-)

man sox

10. Вече с готовия набор опции – прекодиране с resample:

$ sox child.mp3 -r 16000 -i child.wav
stinger@hydra$ aplay child.wav
aplay: test_wavefile:731: can't play not PCM-coded WAVE-files
$ file child.wav
child.wav: RIFF (little-endian) data, WAVE audio, IMA ADPCM,
mono 16000 Hz

11. Копиране на файла на K700i и от него на C65, и готово

Цялото упражнение ми отне около 20-тина минутки, но научих нещо ново, а и важното е, че тя беше доста доволна


Маркери: , ,

За тази статия



Категории

Подобни статии

  • Няма подобни статии