地 址:聯係地址聯係地址聯係地址
电 话:020-123456789
网址:www.6ql2.cn
邮 箱:[email protected]
Easy-Tech#021#在本篇文章中 ,转转换我們將學習如何使用FFmpeg把視頻從AVI格式轉換為MP4格式(在重新/不重新編碼AVI文件的转转换情況下)作為紅利,我們還將學習FFmpeg在Ubuntu、转转换Mac和Win
Easy-Tech#021#在本篇文章中,转转换我們將學習如何使用FFmpeg把視頻從AVI格式轉換為MP4格式(在重新/不重新編碼AVI文件的转转换情況下)作為紅利,我們還將學習FFmpeg在Ubuntu、转转换Mac和Windows上的转转换安裝 ,並使用FFmpeg將AVI無損轉換為MP4 。转转换
視頻愛好者在網上最常問的转转换問題就是:“如何將AVI轉換為MP4 ?”盡管問題似乎很唬人 ,但使用FFmpeg將AVI轉換為MP4卻非常簡單明了很多人也許不知道,转转换FFmpeg是转转换世界上最重要 、最流行的转转换視頻處理和壓縮庫之一 。
很多最高效的转转换商業編碼器都有采用FFmpeg,還有一些項目,转转换比如Handbrake 、转转换VLC播放器等軟件都獲得了FFmpeg的支持在本文中,讓我們一起來學習格式轉換處理,並對Codecs 、Formats有一個基本的了解,然後再來看下格式轉換過程中是否需要重新編碼視頻 。
廢話少說,上命令好 ,如果你現在很著急將AV1轉換為MP4,那麽隻要運行下麵這行FFmpeg命令,這個方法對大部分用例都有效ffmpeg -i input_filename.avi -c:v copy -c:a copy -y output_filename.mp4 。
在該命令行中 ,你提供了:AVI視頻作為輸入明確輸出MP4的文件名讓FFmpeg直接將視頻和音頻(命令為 :-c:v copy -c:a copy)從AVI容器格式複製到MP4容器格式注意: 我假設你手上已經有了想要轉換格式的AVI文件 。
如果沒有,你可以通過在網上搜索“avi video samples”獲取 ,或者在這裏下載(這是我在FFmpeg係列文章中將用到的) :https://file-examples-com.github.io/uploads/2018/04/file_example_AVI_1280_1_5MG.avi 。
什麽是Codecs和Formats ?你需要知道的最重要的事就是Formats和Codecs之間的區別簡單來說,編解碼器(Codecs) 獲取原始音頻和視頻後進行壓縮 ,壓縮到一個合理的空間大小這種壓縮是在考慮音頻和視頻質量的前提下完成的。
更多關於視頻壓縮的介紹,請閱讀:視頻編碼完全指南音頻和視頻壓縮過程的輸出被打包進一個被稱為 容器(Formats) 的格式中 ,而打開容器以及讀取音頻和視頻的方式也有明確的規則和指南容器有不同的格式,如 MP4 、AVI 、WebM、MKV等。
當FFmpeg轉換格式時發生了什麽?當你將AVI文件交給FFmpeg並告訴它生成一個不帶任何參數的MP4文件,它將解複用輸入文件,提取原始視頻進行重新編碼 ,然後將它放入MP4容器格式中,最後返還給你輸出文件。
這裏需要注意的關鍵點是 :除非你告知FFmpeg不要重新編碼,否則它將重新編碼內容 無論如何一定要記住這一點!重新編碼是默認設置這也是在文章開頭我們指示FFmpeg隻複製音頻和視頻的原因現在讓我們嚐試使用FFmpeg通過重新編碼將AVI文件轉換為MP4 。
在此之前,我們先來檢查一下AVI文件,研究一下其中的參數如何?要研究參數 ,我們可以使用ffprobe ,它是FFmpeg工程中的一個工具,對於分析視頻文件來說非常有用請運行下麵的命令 :ffprobe -i file_example_AVI_1280_1_5MG.avi。
然後你得到:Input #0, avi, from file_example_AVI_1280_1_5MG.avi: Metadata: encoder : Lavf57.19.100 Duration: 00:00:30.61, start: 0.000000, bitrate: 387 kb/s Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 234 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 139 kb/s
上麵的代碼清楚地顯示了兩個媒體流——視頻 #0:0 和音頻 #0:1視頻分辨率是1280x720 、30fps,視頻編碼方式為High Profile的H.264/AVC,其碼率為234 kbps音頻使用aac ,其碼率為139 kbps ,采樣率為48 KHz。
現在,讓我們使用FFmpeg將AVI視頻轉換為MP4,但是我們要使用VP9而非H.264/AVC下麵是實現轉換的命令行 :ffmpeg -i file_example_AVI_1280_1_5MG.avi -c:a copy -c:v vp9 -b:v 100K outputVP9.mp4。
這裏,你用FFmpeg :使用-c:a copy 參數原樣複製音頻(不重新編碼音頻)使用VP9編碼,碼率設置為100kbps(-c:v vp9 -b:v 100K )輸出名為outputVP9.mp4的MP4文件 。
下麵的代碼就是運行上述命令時控製台的輸出 :Input #0, avi, from file_example_AVI_1280_1_5MG.avi: Metadata: encoder : Lavf57.19.100 Duration: 00:00:30.61, start: 0.000000, bitrate: 387 kb/s Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 234 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 139 kb/s Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> vp9 (libvpx-vp9)) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help [libvpx-vp9 @ 0x7f8fcb00f600] v1.8.2 Output #0, mp4, to outputVP9.mp4: Metadata: encoder : Lavf58.45.100 Stream #0:0: Video: vp9 (libvpx-vp9) (vp09 / 0x39307076), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 100 kb/s, 30 fps, 15360 tbn, 30 tbc Metadata: encoder : Lavc58.91.100 libvpx-vp9 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 139 kb/s frame= 903 fps=1.2 q=0.0 Lsize= 959kB time=00:00:30.54 bitrate= 257.2kbits/s dup=2 drop=0 speed=0.0414x video:421kB audio:521kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.800530%
如果你認真讀取控製台輸出,你就能發現FFmpeg使用了libvpx-vp9重新編碼了視頻流,碼率是100kbps像以往一樣 ,你可以通過ffprobe確認之前FFmpeg成功地輸出了MP4 ,並且使用的視頻編碼是VP9 。
ffprobe -i outputVP9.mp4控製台輸出可以確認 :使用VP9編碼 ,碼率為114 kbps(接近100kbps)Input #0, mov,mp4,m4a,3gp,3g2,mj2, from outputVP9.mp4: Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 encoder : Lavf58.45.100 Duration: 00:00:30.57, start: 0.000000, bitrate: 257 kb/s Stream #0:0(und): Video: vp9 (Profile 0) (vp09 / 0x39307076), yuv420p(tv, progressive), 1280x720, 114 kb/s, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 15360 tbn, 15360 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 137 kb/s (default) Metadata: handler_name : SoundHandler。
major-brand是isom ,它告訴我們該文件符合ISO/IEC基礎媒體格式(ISO/IEC 14496-12 – MPEG-4 Part 12),即MP4轉換過程中重新編碼是好是壞?這要看你是想直接複製視頻並隻改變容器格式(從AVI轉換為MP4)還是確實想要重新編碼視頻並更改視頻質量、大小等 。
如果我不重新編碼(從AVI到MP4的無損轉換)會發生什麽?這種情況下 ,你要做的非常簡單!直接運行下麵的命令行就可以了ffmpeg -i input_filename.avi -c:v copy -c:a copy -y output_filename.mp4。
你向FFmpeg 傳遞的信息如下:AVI視頻是輸入文件確定輸出的MP4的文件名告知FFmpeg直接將視頻和音頻(命令為:-c:v copy -c:a copy )從AVI容器格式轉到MP4容器格式順便說下 ,上麵的操作在我的Mac上隻花了0.3秒 。
這是因為FFmpeg隻是複製AVI文件中的視頻和音頻,並未重新編碼,並將它們放入MP4容器因為視頻並沒有重新編碼,所以你可以認為這種從AVI到MP4的轉換是無損轉換然而 ,如果我是你 ,我會在距離我三米之內的視頻壓縮工程師麵前謹慎使用無損視頻壓縮這個詞 。
要是你這麽做了,請一定給他買杯咖啡或者阿司匹林壓壓驚 就到這裏了,現在你已經了解了如何使用FFmpeg將AVI轉換為MP4很容易 ,對不對 ?紅利:FFmpeg安裝指南1、如何在Windows上安裝FFmpeg?。
如果你不是程序員 ,且無法使用編碼工具,那麽在Windows上編譯和安裝FFmpeg對你來說將是一個複雜的過程無論如何,你都可以前往_OTTVerse’s FFmpeg builds_ (https://ottverse.com/ffmpeg-builds/)下載已編譯的.exeFFmpeg文件使用 。
我建議你下載靜態版本(除非你正計劃使用FFmpeg開發軟件並需要共享庫)2、如何在MacOS安裝FFmpeg?在Mac上 ,你可以使用brew指令安裝FFmpeg ,brew是Mac係統中一個非常好用的包管理器 。
下麵是在Mac上安裝FFmpeg的命令行(在Cataline v 10.15.5上測試和使用):brew install ffmpeg3 、如何在Ubuntu上安裝FFmpeg ?在Ubuntu上,你可以通過多種方式安裝 FFmpeg :使用apt包管理器或從源代碼編譯。
如果你想要通過apt快速安裝FFmpeg ,可以使用下麵的命令行:sudo apt install ffmpeg如果你想從源代碼編譯FFmpeg ,可以使用 FFmpeg 官方安裝指南中提到的步驟:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu;
或者你也可以參考我寫的這篇文章:https://ottverse.com/vmaf-ffmpeg-ubuntu-compilation-installation-usage-guide/ ,我已經描述了FFmpeg安裝過程(包括缺少步驟)。
致謝 :本文已獲得作者Krishna Rao Vijayanagar授權翻譯和發布,特此感謝原文鏈接 :https://ottverse.com/ffmpeg-convert-avi-to-mp4-lossless/ 。
免責聲明:本站所有信息均搜集自互聯網,並不代表本站觀點,本站不對其真實合法性負責。如有信息侵犯了您的權益 ,請告知,本站將立刻處理。聯係QQ :1640731186