Активне шумозаглушення звуку затвора в камері мобільного пристрою

    Камери мобільних пристроїв Android / iOS / etc. при фотозйомці видають характерний звук спрацьовування затвора. У деяких країнах це потрібно законодавчо. Але що робити, якщо нашій програмі потрібно все-таки беззвучно зняти фотографію, нехай навіть непомітно для користувача? Такий спосіб є.
 
 
 
Користувач Хабрахабра 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
можна взяти тут (дзеркало ).
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.