一、音視頻封裝過(guò)程
音視頻 文件 從 采樣 -> 處理 -> 得到原始數(shù)據(jù)幀隊(duì)列 -> 音視頻編碼 -> 音視頻包隊(duì)列 -> 格式封裝 的過(guò)程如下 :
封裝格式 參考 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過(guò)程 “ 和 “ 解封裝 - 解碼 - 播放 過(guò)程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝播放流程 ) 博客 ;
二、保持編碼格式轉(zhuǎn)封裝
1、設(shè)置音視頻編解碼器參數(shù)
在 ffmpeg 命令中 ,
- 使用
-vcodec
參數(shù) 設(shè)置 視頻編解碼器 , 使用-acodec
參數(shù) 設(shè)置 音頻編解碼器 , - 使用
-codec
參數(shù) 設(shè)置 音視頻編解碼器 ,
使用 -codec
參數(shù) 相當(dāng)于 同時(shí)設(shè)置 -vcodec
參數(shù) 和 -acodec
參數(shù) ;
為 -codec
參數(shù) , -vcodec
參數(shù) , -acodec
參數(shù) , 設(shè)置 copy
參數(shù)值 , 該參數(shù)告訴 ffmpeg 保持 原始數(shù)據(jù)流 的 編碼格式不變 , 直接將 數(shù)據(jù)流 復(fù)制到新的容器中 ;
2、設(shè)置音視頻編解碼器參數(shù) - 使用 vcodec / acodec 參數(shù)
執(zhí)行
ffmpeg -i input.mp4 -vcodec copy -acodec copy output.ts
命令 , 將輸入文件 保持 音頻 和 視頻 的 封裝格式 不變 , 輸出到 ts 封裝容器中 , 也就是將 mp4 封裝格式 轉(zhuǎn)為 ts 封裝格式 , ts 是高清格式 是 " Transport Stream " 的縮寫(xiě) , 全稱 MPEG2-TS , 是一種 傳輸流封裝格式 , 主要應(yīng)用于數(shù)字廣播系統(tǒng) ;
執(zhí)行
ffplay output.ts
命令 , 播放上述 output.ts 輸出文件 ;
3、設(shè)置音視頻編解碼器參數(shù) - 使用 codec 參數(shù)
執(zhí)行
ffmpeg -i input.mp4 -codec copy output.ts
命令 , 也可以將 input.mp4 轉(zhuǎn)封裝為 output.ts , 使用 -codec
參數(shù) , 可以同時(shí)設(shè)置 音頻編解碼器 和 視頻 編解碼器 ;
然后執(zhí)行
ffplay output.ts
命令 , 播放該 輸出文件 ;
三、改變編碼格式轉(zhuǎn)封裝 - 重新進(jìn)行編碼
1、設(shè)置音視頻編解碼器參數(shù) - 使用 vcodec / acodec 參數(shù)
執(zhí)行
ffmpeg -i input.mp4 -vcodec libx265 -acodec libmp3lame output.mkv
命令 , 將 視頻 使用 libx265 編解碼器 重新進(jìn)行 編碼 , 將 音頻 使用 libmp3lame 編解碼器 重新進(jìn)行 編碼 , 最終將 重新編碼的 音視頻數(shù)據(jù) 存儲(chǔ)到 output.mkv 輸出文件中 ;
由于重新進(jìn)行了編碼 , 該命令執(zhí)行時(shí)間比較長(zhǎng) ;
2、使用 ffprobe 查看視頻封裝信息
執(zhí)行
ffprobe output.mkv
命令 , 可以查看 output.mkv 視頻的封裝信息 , 其中列舉了 視頻流 和 音頻流 的編碼信息等 ;
3、查詢可用的音視頻編解碼器
ffmpeg 中提供了大量的 音視頻編解碼器 , 可以使用如下命令查詢 可用的 編解碼器 ;
執(zhí)行
ffmpeg -codecs
命令 , 可以查詢出 ffmpeg 的可用的 編解碼器 ;
每個(gè)編解碼器 前面都有 編解碼器 的 類(lèi)型 , 下面的注釋中就是 編解碼器 類(lèi)型解析 ;
Codecs:
D..... = Decoding supported 支持解碼
.E.... = Encoding supported 支持編碼
..V... = Video codec 視頻編解碼器
..A... = Audio codec 音頻編解碼器
..S... = Subtitle codec 字幕編解碼器
...I.. = Intra frame-only codec 內(nèi)部幀編碼器 , 每幀都獨(dú)立編碼 , 不需要參考其它幀 ;
....L. = Lossy compression 有損壓縮
.....S = Lossless compression 無(wú)損壓縮
四、改變 封裝格式 的 視頻 幀率 / 碼率 / 分辨率
1、修改視頻幀率
執(zhí)行
ffmpeg -i input.mp4 -r 15 output.mp4
命令 , 將 輸入文件 input.mp4 的 視頻流數(shù)據(jù) 重新編碼 , 幀率改為 15 fps , 輸出到 output.mp4 輸出文件中 ;
注意 : 改變 幀率 的操作 需要 重新進(jìn)行編碼 , 不能使用 -codec copy
參數(shù) , 否則幀率設(shè)置無(wú)效 ;
執(zhí)行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 詳細(xì)信息 , 其 視頻流信息 顯示該視頻流幀率是 15 fps ;
2、修改視頻碼率
執(zhí)行
ffmpeg -i input.mp4 -b 400k output.mp4
命令 , 將 輸入文件 input.mp4 的 視頻流數(shù)據(jù) 重新編碼 , 碼率修改為 400kbps , 輸出到 output.mp4 輸出文件中 ;
除了使用 -b 400k
參數(shù)外 , 還可以使用 -b:v 400k
參數(shù) 設(shè)置 碼率 ;
執(zhí)行
ffprobe output.mp4
命令 , 查看 outp.mp4 文件的 視頻流信息 , 其碼率為 405 kb/s ;
3、修改視頻分辨率
執(zhí)行
ffmpeg -i input.mp4 -s 200x200 output.mp4
命令 , 將 輸入文件 input.mp4 的 視頻分辨率修改為 200 x 200 像素 , 輸出到 output.mp4 輸出文件中 ;
執(zhí)行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 視頻流信息 , 其分辨率為 200 x 200 像素 ;
五、改變 封裝格式 的 音頻 碼率 / 采樣率
1、修改音頻碼率
執(zhí)行
ffmpeg -i input.mp4 -b:a 192k output.mp4
命令 , 將 輸入文件 input.mp4 的 音頻流數(shù)據(jù) 重新編碼 , 碼率改為 192 kbps , 輸出到 output.mp4 輸出文件中 ;
-
-b:a 192k
參數(shù)是 設(shè)置 音頻數(shù)據(jù)流 碼率為 192kbps ; -
-b:v 192k
參數(shù)是 設(shè)置 視頻數(shù)據(jù)流 碼率為 192kbps ;
執(zhí)行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 詳細(xì)信息 , 其 音頻流信息 顯示該音頻的碼率為 192 kb/s ;
2、修改音頻采樣率
執(zhí)行
ffmpeg -i input.mp4 -ar 44100 output.mp4
命令 , 將 輸入文件 input.mp4 的 音頻流數(shù)據(jù) 重新編碼 , 采樣率改為 44100 hz , 輸出到 output.mp4 輸出文件中 ;
執(zhí)行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 詳細(xì)信息 , 其 音頻流信息 顯示該音頻的 采樣率為 44100 Hz ;文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-854027.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-854027.html
到了這里,關(guān)于【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!