Używam AVCaptureSession do nagrywania wideo z dźwiękiem. Wszystko wydaje się działać poprawnie dla krótkich filmów, ale z jakiegoś powodu, jeśli nagrywam film dłuższy niż około 12 sekund, dźwięk nie działa.Dźwięk AVCaptureSession nie działa dla długich filmów wideo
Odpowiedz
Znalazłem rozwiązanie jako an answer to a completely different question. Jest to właściwość movieFragmentInterval
w pliku AVCaptureMovieFileOutput.
Dokumentacja dla tej nieruchomości wyjaśnia czym te fragmenty są:
filmu QuickTime składa się z próbek mediów i stół próbki identyfikowanie ich lokalizacji w pliku. Plik filmu bez przykładowej tabeli jest nieczytelny.
W przetworzonym pliku przykładowa tabela zazwyczaj pojawia się na początku pliku. Może również pojawić się na końcu pliku, w tym przypadku nagłówek zawiera wskaźnik do tabeli próbek na końcu . Kiedy nagrywany jest nowy plik filmu, nie można zapisać tabeli próbek, ponieważ rozmiar pliku nie jest jeszcze znany. Zamiast tego tabela musi zostać zapisana po zakończeniu nagrywania. Jeśli nie zostanie wykonana żadna inna czynność, oznacza to, że jeśli nagranie nie zakończy się pomyślnie (na przykład w przypadku awarii), dane pliku nie będą się nadawać (ponieważ nie ma tabeli próbek). Okresowo wstawiając "fragmenty filmu" do pliku filmu, tabelę próbek można stopniowo zwiększać. Oznacza to, że jeśli plik nie jest w całości zapisany jako , plik filmowy nadal nadaje się do użytku (do momentu, w którym został napisany ostatni fragment ).
mówi również:
Wartość domyślna to 10 sekund. Ustaw wartość kCMTimeInvalid, aby wyłączyć zapisywanie fragmentów filmu (zwykle niezalecane).
Z jakiegoś powodu moje nagranie jest pomijane za każdym razem, gdy zostanie napisany fragment. Właśnie dodałem linię movieFileOutput.movieFragmentInterval = kCMTimeInvalid;
(gdzie movieFileOutput
jest AVCaptureMovieFileOutput, którą dodałem do AVCaptureSession), aby wyłączyć pisanie fragmentów, a dźwięk teraz działa.
Aktualizacja videoFileOutput.movieFragmentInterval = kCMTimeInvalid
rozwiązała to dla mnie.
Jednak, po wywołaniu movieFragmentInterval
, ustawiłem startRecordingToOutputFileURL
. Bolesna godzina później uświadomiłem sobie mój błąd. Dla początkujących, takich jak ja, odnotuj tę oczywistą sekwencję.
videoFileOutput.movieFragmentInterval = kCMTimeInvalid
videoFileOutput.startRecordingToOutputFileURL(filePath, recordingDelegate: recordingDelegate)
Wystąpił również ten problem. Zasadniczo wyłączenie pisania fragmentów filmu będzie działało, ale w rzeczywistości nie wyjaśnia problemu. Najprawdopodobniej nagrywasz do pliku wyjściowego przy użyciu rozszerzenia pliku, które nie obsługuje tej funkcji, na przykład mp4
. Jeśli prześlesz plik wyjściowy o rozszerzeniu mov
, nie powinieneś mieć problemów z pisaniem fragmentów filmu, a plik wyjściowy będzie miał dźwięk.
- 1. AVCaptureSession anuluje dźwięk w tle
- 2. Nie można odtwarzać niektórych filmów wideo
- 3. Android VideoView nie odtwarza sekwencyjnych filmów wideo
- 4. Dźwięk w tle dla aplikacji wideo na iOS
- 5. Nie nagrywanie dźwięku w AVCaptureSession
- 6. Html Odtwarzacz wideo odtwarza dźwięk, ale nie wideo
- 7. używanie qsort do sortowania tablic długich długich int nie działa dla dużych nosów
- 8. AVCaptureSession Record Video With Audio
- 9. Dynamiczna i szczelna lista filmów wideo
- 10. Audio spowoduje zakończenie sesji AVCaptureSession
- 11. Chromecast nie odtwarza wielu filmów HTML5
- 12. dźwięk nie jest odtwarzany po zapisie wideo z AVCaptureMovieFileOutput
- 13. Jak poprawnie zwolnić AVCaptureSession
- 14. AVCaptureSession i AVCaptureMovieFileOutput timestamp
- 15. Używanie AVCaptureSession i AVAudioPlayer razem
- 16. AVCaptureSession z wieloma wyjściami?
- 17. Wdrażanie muru kątowego do filmów wideo zamiast obrazów
- 18. AvFoundation - Jak podłączyć AVCaptureSession i AVAssetWriter?
- 19. Wideo Vimeo nie działa z tagiem HTML5
- 20. AVCaptureSession i AVAudioSession nagrywanie wideo podczas odtwarzania muzyki w tle działa tylko raz
- 21. Strumieniowanie/wyszukiwanie filmów HTML5
- 22. Interfejs API odtwarzacza YouTube dla Androida INTERNAL_ERROR dla wielu filmów wideo
- 23. Jaki jest najlepszy sposób wyświetlania filmów wideo na stronie internetowej?
- 24. AVCaptureSession addInput powodujący usterkę w tle audio
- 25. iOS: setAllowsEditing tylko dla wideo
- 26. Idiom dla rozpakowywania długich krotek
- 27. Automatyczne odtwarzanie filmów wideo w trybie wideo w trybie Android w wersji
- 28. Poszukuję dobrej jakości filmów wideo wyjaśniających wzorce projektowe.
- 29. odtwarzanie filmów w UITableViewCell
- 30. PyAudio nie działa dźwięk i przerwy na ubuntu