2014-08-29 15 views
17

Nie jestem ekspertem w edycji wideo, ale chcę zrozumieć logikę przetwarzania wideo Whatsapp.Kompresuj wideo jak WhatsApp

Pierwszy wszystkim zauważyłem, że cokolwiek plik jest Whatsapp ustawia limit do 16 MB przesłanych filmów, po którym WhatsApp upraw wideo, aby nie przekroczyć limitu. czy to konwencja, czy to osobisty wybór?

drugie, gdy film jest nagrany za pomocą kamery nie jest domyślnie kompresowane, więc WhatsApp ściska go za pomocą FFMPEG jak sądzę, i to nie bierze czas. (wypróbowane dla wideo o wielkości 1min 1920x1080 o rozmiarze 125MB, natychmiast staje się 640x360 z 5MB, a ładowanie rozpoczyna się automatycznie). Jak mogą to zrobić? i dlaczego wybór 640x360, Wydaje mi się bardzo szybko dla 2 asynchronicznych zadań: Kompresja + Upload.

Po uruchomieniu komendy kompresji ffmpeg -y -i in.mp4 -codec:v libx264 -crf 23 -preset medium -codec:a libfdk_aac -vbr 4 -vf scale=-1:640,format=yuv420p out.mp4 trwa to ok. 1 minuty, a wideo jest obracane !! : D

Wreszcie, kiedy pobieramy film z serwisu Youtube, jest on już skompresowany (tak sądzę) i WhatsApp nawet nie próbuje go skompresować. Myślę więc, że automatycznie wykrywa, że ​​film jest skompresowany. Jak możemy to wykryć?

Dziękuję.

+1

„Gdy film jest nagrany za pomocą kamery nie jest domyślnie kompresowane” - zapraszamy powiedzieć 'MediaRecorder' używać MPEG4 jako format wyjściowy. – CommonsWare

+1

@CommonsWare: Dziękuję. Gdzie mogę go użyć? Pracuję z domyślnym intencją 'MediaStore.ACTION_VIDEO_CAPTURE' i przekazuję plik, w którym wideo będzie nagrywane. czy można przekazać 'MPEG4' w' Extras'? – Copernic

+1

"Czy można przekazać plik MPEG4 w dodatkach?" - możesz umieścić, co chcesz w dodatkach.Nie ma wymogu, aby jakikolwiek implementator "ACTION_VIDEO_CAPTURE" zwracał uwagę na wszelkie dodatki, szczególnie te, które nie są częścią dokumentacji "ACTION_IMAGE_CAPTURE". Wybór sposobu nagrywania wideo zależy od twórców aplikacji do nagrywania filmów, a może od użytkownika, ale od Ciebie. Jeśli chcesz uzyskać taki poziom kontroli nad nagraniem, nagraj go sam. – CommonsWare

Odpowiedz

9

Oto możliwe odpowiedzi na pytania:

Quest. 1: To osobisty wybór. Zespół WhatsApp stara się zaoferować użytkownikom najlepszą aplikację (UX), dzięki czemu utrzymali limit 16 MB na plik wideo. Wyobraź sobie, ile czasu zajmie przesłanie pliku o wartości około 125 MB. W związku z tym aplikacja kompresuje plik w celu szybszego przesyłania i bezproblemowego korzystania.

Quest. 2: Myślę, że już sam odpowiedziałeś na to pytanie - Programowanie asynchroniczne. Duży plik wideo, który go podajesz, zostaje zakodowany w skompresowanym formacie zgodnie z algorytmem napisanym dla aplikacji. Jako Devs., Wszyscy wiemy o algorytmach i wszyscy wiemy, że są rzeczy, które możesz zrobić, aby przyspieszyć wykonanie. Sądzę, że zaimplementowali swój własny algorytm za pomocą programowania asynchronicznego, które przyspiesza proces. Biblioteka ffmpeg, o której wspomniałeś, domyślam się, że została zakodowana w C, co moim zdaniem nie obsługuje połączenia asynchronicznego (nie jest to jednak pewne). Po tym przesyłanie przejmuje.

Quest. 3 & Wreszcie: kodeki są standardami. Jeśli kodujesz plik wideo do MPEG4, a następnie spróbuj ponownie go zakodować do MPEG4, nawet używając innego programu, uzyskasz taki sam wynik, o ile oba programy używają tych samych standardów kodowania, tj. Nie implementują określonego algorytmu dla ich programów (wymaga to lat pracy). Kiedy więc WhatsApp próbuje zakodować plik, daje ten sam rezultat.

Mam nadzieję, że udało mi się odpowiedzieć na Twoje pytania.

MichVeline

+1

Hay, dziękuję za świetne informacje, ale chcę tylko wiedzieć, w jaki sposób kompresuję wideo –