Udało mi się nagrać wideo za pomocą mediaRecorder
klasa na Androida.
Jednak muszę teraz nagrywać, dopóki nie powiem, żeby przestał, ale nagrywaj tylko maks. X sekund.
Na przykład, jeśli zacząłem nagrywać w czasie = 0(sekundy) i ustawiłem go na nagrywanie maksymalnie 10 sekund, jeśli zatrzymam nagrywanie na czas = 20 (sekund), nagrany film będzie miał okres 10..20 sekund.
Jedyną rzeczą podobną do tego, co znalazłem, jest setMaxDuration, ale to automatycznie zatrzymuje się po ustawieniu określonego czasu, więc w moim przypadku nagrywa tylko pierwsze 10 sekund.
Odpowiedzi:
3 dla odpowiedzi № 1ABY NAGRYWAĆ MEDIA, ABY NAGRYWAĆ X DRUGI U, PO PROSTU PODAJ TEN KOD W SWÓJ KOD NAGRYWANIA WIDEO
Intent captureVideoIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
captureVideoIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10);
captureVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(captureVideoIntent, VIDEO_CAPTURED);
0 dla odpowiedzi nr 2
Nie znam żadnego sposobu na osiągnięcie tego, czego potrzebujesz za pomocą samych zestawów SDK. Możesz nagrać wideo, a następnie po ustaleniu go skrócić wideo do ostatnich 10 sekund.
Nie użyłem tego, ale ten facet sugeruje w tym swoją bibliotekę odpowiedź
0 dla odpowiedzi № 3
Prawidłowym słowem kluczowym do wyszukiwania jest „okrągły bufor”. Zobaczysz kilka metod, które nie są trywialne. Niektórzy korzystają z rozwiązań NDK.
Mój pomysł to: Wiesz, że X sekund chcesz nagrać. Niż zapis do pliku X_1, po czym kończy nagrywanie. Automatycznie uruchom i nagraj plik X_2 aż do końca. Kiedy się skończy, zapisz do pliku X_3 ORAZ usuń plik X_2, aby zaoszczędzić miejsce.
Zatem maksymalna długość pamięci i wideo może wynosić X * 2. Minimalna może być X.
Aby skorzystać z zapisu cyklicznego, myślę, że należy go zdekodować do ramek, zapisać, zakodować, zużywa się dużą moc przetwarzania, czego rezultatem jest drenaż ciasta i ogrzewanie urządzenia!