Chcę android.media.MediaRecorder. aby nagrać dźwięk nie do pliku, ale do tej samej zmiennej, na przykład char [] lub byte [] lub jakiejś innej struktury bufora datta. Chcę wysłać go do zdalnego serwera przez Wi-Fi, czy Android.media.MediaRecorder może zapewnić tę funkcjonalność?Nagrywanie dźwięku nie do pliku na Androidzie
7
A
Odpowiedz
14
Co można tutaj zrobić, to użyć klasy ParcelFileDescriptor.
//make a pipe containing a read and a write parcelfd
ParcelFileDescriptor[] fdPair = ParcelFileDescriptor.createPipe();
//get a handle to your read and write fd objects.
ParcelFileDescriptor readFD = fdPair[0];
ParcelFileDescriptor writeFD = fdPair[1];
//next set your mediaRecorder instance to output to the write side of this pipe.
mediaRecorder.setOutputFile(writeFD.getFileDescriptor());
//next create an input stream to read from the read side of the pipe.
FileInputStream reader = new FileInputStream(readFD.getFileDescriptor());
//now to fill up a buffer with data, we just do a simple read
byte[] buffer = new byte[4096];//or w/e buffer size you want
//fill up your buffer with data from the stream
reader.read(buffer);// may want to do this in a separate thread
a teraz masz bufor pełne dane audio
alternatywnie, może chcesz zapisywać dane bezpośrednio do gniazdka z nagrywarki. można to również osiągnąć za pomocą klasy ParcelFileDescriptor.
//create a socket connection to another device
Socket socket = new Socket("123.123.123.123",65535);//or w/e socket address you are using
//wrap the socket with a parcel so you can get at its underlying File descriptor
ParcelFileDescriptor socketWrapper = ParcelFileDescriptor.fromSocket(socket);
//set your mediaRecorder instance to write to this file descriptor
mediaRecorder.setOutputFile(socketWrapper.getFileDescriptor());
teraz za każdym razem z urządzenia nagrywającego ma dane do zapisu zostanie ona automatycznie zapisać go nad gniazda
Powiązane problemy
- 1. Nie nagrywanie dźwięku w AVCaptureSession
- 2. Nagrywanie dźwięku iOS
- 3. Nagrywanie dźwięku w przeglądarce
- 4. Nagrywanie wideo z systemem Android bez dźwięku
- 5. Nagrywanie dźwięku w Xamarin.forms
- 6. HTML Nagrywanie dźwięku do momentu ciszy?
- 7. Nagrywanie dźwięku jako WAV na iPhone
- 8. Nagrywanie dźwięku wyjściowego w python
- 9. Nagrywanie dźwięku w Google Glass
- 10. Jednoczesne nagrywanie i odtwarzanie dźwięku
- 11. Nagrywanie dźwięku za pomocą OpenAL
- 12. PlayN - brak dźwięku na Androidzie
- 13. HTML5 Nagrywanie dźwięku z niską kbps
- 14. Nagrywanie dźwięku z programu Windows Media Foundation
- 15. Robi pętli dźwięku na Androidzie
- 16. Nagrywanie dźwięku i odtwarzanie zmodulowanego dźwięku w systemie Android?
- 17. Wykrywanie i nagrywanie dźwięku w języku Python
- 18. AVAudioRecorder/AVAudioPlayer - dołącz nagrywanie do pliku
- 19. Nagrywanie dźwięku za pomocą mikrofonu HTML5?
- 20. Android - Nagrywanie dźwięku odtwarzanego z urządzenia na gniazdo słuchawkowe
- 21. Aplikacja na iPhone'a: nagrywanie dźwięku w formacie mp3
- 22. Nagrywanie dźwięku i odtwarzanie iPoda w tym samym czasie?
- 23. Nagrywanie dźwięku z określonego programu w systemie Windows
- 24. Nagrywanie dźwięku za pomocą wtyczki cordova media skutkuje pustym plikiem
- 25. Nagrywanie dźwięku w stylu OSX Audio w innych aplikacjach (kakao)
- 26. Nagrywanie dźwięku za pomocą ALSA z linii IN
- 27. Nagrywanie dźwięku z wielu mikrofonów jednocześnie z getUserMedia()
- 28. Przepełnienie wejścia IOError: Nagrywanie dźwięku z interfejsem Tkintera
- 29. Tworzenie i zapisywanie pliku xml do pliku na Androidzie
- 30. Czy opóźnienie OSC/Midi (brak dźwięku) jest możliwe na Androidzie?
To jest możliwe. MediaRecorder zapisuje do FileDescriptor niekoniecznie do pliku. Pamiętaj, że to nie jest "streaming"! Będziesz musiał ponownie napisać do pliku na serwerze. To może pomóc: http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system – Fildor
faktycznie możesz stworzyć deskryptor pliku, który po prostu napisze do wewnętrznego bufora zamiast do pliku, nie zapominaj również, że gniazda mają także deskryptor pliku, do którego piszesz, aby pisać do gniazda. nie ma również potrzeby pisania strony serwera plików, o ile coś nasłuchuje na poprawnym adresie gniazda, aby odebrać te pakiety i przetworzyć je odpowiednio. –