2016-08-07 17 views
7

Mam działającą aplikację, która przesyła wideo do Chromecasta (używając nannoHttpd) i wszystko działa poprawnie. Teraz mój problem polega na tym, że filmy nagrane przy użyciu nowych urządzeń są zbyt duże, by można je było przesyłać strumieniowo, dlatego chcę ponownie kodować wideo do mniejszej szybkości transmisji bitów.Transkoduj wideo, aby zmniejszyć przepływność i strumień.

Próbowałem ffmpeg, ale wyniki nie są zadowalające i zwiększy rozmiar apk o 14 MB.

Teraz próbuję api MediaCodec. Jest szybszy niż ffmpeg, ale pobiera plik wejściowy i zapisuje go do pliku wyjściowego i chcę ponownie kodować dane bajtów, które mają być obsługiwane przez nannohttpd.

Teraz przychodzi mi na myśl rozwiązanie, to transkodowanie wideo i przesyłanie strumieniowe pliku wyjściowego, ale ma dwie wady;

  1. Co zrobić, jeśli plik jest za duży i użytkownik nie widzi całego wideo? Znaczna część procesora, zasoby baterii są marnowane.
  2. Co zrobić, jeśli użytkownik szybko przesyła długi film do czasu, który nie został ponownie zakodowany?
+0

Dla jasności: mówimy o przesyłaniu strumieniowych plików wideo, które już zostały nagrane, niczym w porównaniu z pozyskiwaniem w czasie rzeczywistym i przesyłaniem strumieniowym w prawo? –

+0

@ J.Jacobs-VP tak, prawda – ingsaurabh

Odpowiedz

1

1 MediaCodec wystarczy jedno kodowanie dekoduj! a otrzymasz surowe bajty nowych zakodowanych danych. Tak więc programista może wybrać zrzucenie go do kontenera (plik .mp4) za pomocą multipleksera. Więc nie ma potrzeby, aby przepisać wszystko z powrotem do pliku.

2 Szukaj odpowiedniej porcji danych i zrestartuj MediaCodec.

+0

Znam to, o czym pisałem w moim pytaniu, ale jak to zrobić, będzie pomocny kod, np. Jak szukać – ingsaurabh

Powiązane problemy