2014-08-29 202 views
17

我不是視頻編輯方面的專家,但我想了解Whatsapp視頻處理的邏輯。壓縮視頻像whatsapp

第一個我注意到,無論文件是什麼,Whatsapp將上傳視頻的限制設置爲16MB,之後whatsapp將視頻裁剪爲不超過限制。這是一個慣例還是個人選擇?

其次,當視頻正在使用它的默認情況下未壓縮的相機記錄下來,所以WhatsApp的壓縮它使用FFMPEG我想,它不花時間。 (嘗試了1分鐘的1920x1080視頻,尺寸爲125MB,立即變成640x360,尺寸爲5MB,上傳自動開始)..他們怎麼做到這一點?以及爲什麼選擇640x360,對於2個異步任務,壓縮+上傳在我看來非常快。

當我運行壓縮命令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它大約需要1分鐘,視頻正在旋轉! :D

終於,當我們從Youtube上下載一個視頻時,它已經被壓縮了(我猜),而且whatsapp甚至不會嘗試壓縮它。所以我認爲它會自動檢測視頻是否被壓縮。我們如何檢測到這一點?

謝謝。

+1

「當視頻正在使用它的默認情況下未壓縮的相機記錄」 - 歡迎您告訴'MediaRecorder'使用MPEG4作爲輸出格式。 – CommonsWare 2014-08-29 15:34:48

+1

@CommonsWare:謝謝。我可以在哪裏使用它?我正在處理'MediaStore.ACTION_VIDEO_CAPTURE'默認的意圖,並傳遞一個文件將錄製視頻。是否可以在'Extras'中傳遞'MPEG4'? – Copernic 2014-08-29 15:49:59

+1

「是否有可能將MPEG4通過Extras?」 - 你可以把任何你想要的額外。沒有要求任何'ACTION_VIDEO_CAPTURE'的實現者都注意任何額外的,特別是那些不屬於'ACTION_IMAGE_CAPTURE'文檔的部分。如何錄製視頻的選擇取決於視頻錄製應用程序的開發人員,也許是用戶,但不是您。如果您想要對錄音進行一定程度的控制,請自行錄製。 – CommonsWare 2014-08-29 16:09:40

回答

9

以下是對您的問題的可能答案:

任務。 1:它是個人選擇。 whatsapp團隊正在試圖爲他們的應用用戶提供最佳的用戶體驗(UX),這就是爲什麼他們已經爲視頻文件保留了16MB的限制。想象一下,上傳大約125MB的文件需要多長時間。因此,該應用程序壓縮文件,以加快上傳和無縫體驗。

任務。 2:我想你已經自己回答了這個問題 - 異步編程。您提供的大視頻文件根據其爲應用程序編寫的算法被編碼爲壓縮格式。作爲Devs,我們都知道算法,我們都知道有些事情可以加快執行速度。我想他們使用異步編程實現了他們自己的算法,可以加快這個過程。你提到的ffmpeg庫我猜是用C語言編寫的,我認爲它不支持異步調用(不太確定)。在此之後,上傳接管。

任務。 3 &最後:編解碼器是標準。如果您將視頻文件編碼爲MPEG4格式,那麼即使使用其他程序嘗試再次將其重新編碼爲MPEG4格式,只要兩個程序使用相同的編碼標準,您將得到相同的結果,即它們沒有實現特定的算法爲他們的節目(這需要多年的工作)。所以,當你的WhatsApp試圖對文件進行編碼時,它會得到相同的結果。

希望我已經能夠回答你的問題。

MichVeline

+1

乾草感謝偉大的信息,但我只是想知道我是如何壓縮視頻 – 2016-05-25 13:13:45