爲何要有這個需求?咱們知道,單純的轉format ,不轉codec ,其實僅僅是io 操做,這個操做是很快的,可是一旦須要decodec & encodec ,這個操做是很是耗時,耗cpu的,由於這個地方有解壓縮和壓縮的操做。若是批量任務須要轉碼,並且是同時轉碼成不一樣的格式,這裏,咱們但願能一次decodec 屢次encodec 就好,至關於節省了decodec 的時間。bash
思路有了,其實作起來,整個過程就簡單多了,首先分離音視頻流;而後轉碼視頻成yuv ,轉碼音頻;最後將音視頻按模板進行合成。code
下面實際文件舉例: orm
1,解碼視頻 ffmpeg -i input.flv out.yuv 2,分離音頻 ffmpeg -i input.flv -acodec copy out.aac 3.1, 轉碼視頻併合成音頻流 碼率500k ffmpeg -s 1280x720 -i out.yuv -i out.aac -vcodec h264 -b 500k out.flv 3.2, 轉碼視頻併合成音頻流 碼率1000k ffmpeg -s 1280x720 -i out.yuv -i out.aac -vcodec h264 -b 1000k out.flv
多模板轉碼,主要是在步驟3上,3能夠重複使用,最後刪去中間的yuv 文件便可。而後轉碼得提早知道yuv 的分辨率,可使用ffprobe ,否則轉碼會失敗。視頻