Tworzę na własne potrzeby pewną aplikację HTML5/JavaScript nagrywającą dźwięk z mikrofonu na bazie tej:
https://webaudiodemos.appspot.com/AudioRecorder/index.html
Zgrałem oryginalną aplikację, w plikach HTML i JS jedynie pozmieniałem ścieżki do plików, żeby aplikacja uruchamiała się bez internetu.
Przetestowałem w Firefox z pliku oraz z serwera na Raspberry Pi i działa bez problemu, tylko trzeba potwierdzać dostęp do mikrofonu. Na Raspberry Pi jest uruchomiony serwer HTTP za pomocą programu nginx i wszystkie testy (oryginalny adres, plik lokalny i adres na RPi) były na tym samym komputerze. Czyli na Firefox nie ma żadnego problemu bez względu na miejsce, z którego uruchomiłem.
Z Chrome już jest problem:
Test z oryginalnego adresu: Działa poprawnie
Test z pliku na dysku: Można potwierdzić dostęp do mikrofonu, ale już nie działa (nie wiem, czy czegoś nie dograłem, bo w Firefox działa poprawnie, objaw jest taki, że nie wyświetla dźwięku)
Test po przeniesieniu na Raspberry Pi (obojętnie, czy po adresie zewnętrznym czy wewnętrznym) jest komunikat "error getting audio" jak przy odmowie dostępu do mikrofonu, tyle, że przeglądarka nawet nie zapytała się o dostęp. Doszedłem do ustawień, na co Chrome ma pozwalać przy tym adresie i dostęp do mikrofonu i kilku innych zasobów jest wyłączony bez możliwości włączenia.
Przetestowałem na telefonie z Androidem (podłączony po WiFi do sieci domowej):
Test z oryginalnego adresu: Działa poprawnie, tylko przy pierwszym uruchomieniu było pytanie o dostęp do mikrofonu i potwierdziłem, potem działa poprawnie
Test z Raspberry Pi: Komunikat "error getting audio", brak pytania o pozwolenie na korzystanie z mikrofonu.
W jaki sposób można zmusić do poprawnego działania tej aplikacji w przeglądarce Chrome i na telefonie z Androidem, żeby pozwolić jej na korzystanie z mikrofonu? Zakładam, że ja znam aplikację, wiem, co robi z dźwiękiem z mikrofonu i jestem pewien, że udostępnienie mikrofonu nie przyniesie żadnej szkody.
Załączam wersję, którą testowałem na Raspberry Pi w Chromie i na telefonie.
W ustawieniach Chrome na komputerze jest "Chroń siebie i swoje urządzenie przed niebezpiecznymi witrynami", domyślnie było włączone, ale wyłączenie nie rozwiązuje problemu.