2014-08-29 20 views
17

Non sono un esperto di video editing, ma quello che voglio capire la logica dell'elaborazione video di Whatsapp.Comprimi video come Whatsapp

Prima di tutto ho notato che tutto ciò che il file è, Whatsapp imposta il limite di 16 MB video caricati, dopo di che WhatsApp ritaglia il video di non superare il limite. è una convenzione o è una scelta personale?

In secondo luogo, quando un video viene registrato con la fotocamera non è compresso per impostazione predefinita, in modo whatsapp lo comprime usando FFMPEG credo, e ci vuole pochissimo tempo. (provato per un video di 1min 1920x1080 con 125 MB di dimensione, diventa 640x360 con 5 MB di dimensione in pochissimo tempo e il caricamento inizia automaticamente) .. come possono fare questo? e perché la scelta di 640x360, mi sembra molto veloce per 2 attività asincrone: Compressione + Upload.

Quando eseguo il comando di compressione 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 ci vogliono circa 1 minuto e il video viene ruotato !! : D

Infine, quando si scarica un video da Youtube è già compresso (credo) e WhatsApp non ha nemmeno tentare di comprimerlo. Quindi penso che rileva automaticamente che il video è compresso. Come possiamo rilevare questo?

Grazie.

+1

"Quando un video è registrato utilizzando la fotocamera non è compresso di default" - siete invitati a dire 'MediaRecorder' di utilizzare MPEG4 come formato di output. – CommonsWare

+1

@CommonsWare: Grazie. Dove potrei usarlo? Sto lavorando con l'intento predefinito 'MediaStore.ACTION_VIDEO_CAPTURE' e passo un file in cui il video verrà registrato. è possibile passare 'MPEG4' in' Extra'? – Copernic

+1

"è possibile passare MPEG4 in Extra?" - puoi mettere tutto ciò che vuoi in extra.Non è necessario che nessun implementatore di "ACTION_VIDEO_CAPTURE" presti attenzione a eventuali extra, in particolare a quelli che non fanno parte della documentazione di "ACTION_IMAGE_CAPTURE". La scelta di come registrare il video spetta agli sviluppatori dell'applicazione di registrazione video e forse all'utente, ma non a te. Se vuoi quel grado di controllo sulla registrazione, registralo da solo. – CommonsWare

risposta

9

Ecco le possibili risposte alle tue domande:

Quest. 1: è una scelta personale. Il team di whatsapp sta tentando di offrire la migliore esperienza utente (UX) che potrebbero offrire agli utenti della propria app, motivo per cui hanno mantenuto un limite di 16 MB per i file video. Immagina quanto tempo ci vorrà per caricare un file di circa 125 MB. Quindi, l'app comprime il file per un caricamento più rapido e un'esperienza senza interruzioni.

Quest. 2: Immagino che tu abbia già risposto a questa domanda da solo - programmazione asincrona. Il grande file video che lo alimenta, viene codificato in un formato compresso secondo l'algoritmo che hanno scritto per l'app. Come Devs., Tutti conosciamo gli algoritmi e sappiamo tutti che ci sono cose che puoi fare per accelerare l'esecuzione. Immagino che abbiano implementato il loro algoritmo proprio utilizzando la programmazione asincrona che accelera il processo. La libreria ffmpeg che hai citato credo fosse codificata in C, che penso non supporti la chiamata asincrona (non è così sicuro però). Dopo questo, il caricamento riprende.

Quest. 3 & Infine: i codec sono standard. Se si codifica un file video in MPEG4, quindi si tenta di ricodificarlo nuovamente in MPEG4 anche utilizzando un altro programma, si otterrà lo stesso risultato per quanto entrambi i programmi utilizzano gli stessi standard di codifica, ovvero non hanno implementato un algoritmo specifico per i loro programmi (ci vogliono anni di lavoro). Quindi, quando il tuo Whatsapp tenta di codificare il file, dà lo stesso risultato.

Spero di essere stato in grado di rispondere alle vostre domande.

MichVeline

+1

fieno ringraziamento per la grande informazione, ma voglio solo sapere come i comprimere un video –