Пользователь Хабрахабра k06a (Антон Буков) на Stackoverflow предложил универсальный способ, который должен работать на всех платформах. Он предлагает использовать активное шумоподавление, то есть инвертировать звук и запустить инвертированную копию непосредственно перед оригинальной. Мы получаем абсолютно беззвучную фотосъёмку!
K06a объясняет на примере iOS.
1. Записываем системный звук затвора с помощью программы iOSSystemSoundsLibrary.
2. Извлекаем файл photoShutter.caf из папки Documents, можно использовать DiskAid for Mac.
3. Открываем photoShutter.caf в звуковом редакторе (Audacity) и применяем инвесрсию.
4. Сохраняем получившийся звук в iOS и запускаем непосредственно перед captureStillImageAsynchronouslyFromConnection.
static SystemSoundID soundID = 0;
if (soundID == 0) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"photoShutter2" ofType:@"caf"];
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);
}
AudioServicesPlaySystemSound(soundID);
[self.stillImageOutput captureStillImageAsynchronouslyFromConnection:
...
Антон уверяет, что работает отлично.
Если что, то уже инвертированный photoShutter2.caf можно взять здесь (зеркало).
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий