日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

FFMPEG转码常用命令研究

發(fā)布時間:2023/11/27 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FFMPEG转码常用命令研究 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ffmpeg簡介

官網(wǎng)鏈接是http://www.ffmpeg.org/上有說明,它是音視頻的分離,轉(zhuǎn)換,解碼的完全解決方案。?
其中最重要的就是libavcodec庫。它被mplayer或者xine使用作為解碼器。還有,國內(nèi)比較流行的播放器影音風(fēng)暴或MyMPC的后端ffdshow也是使用ffmpeg的解碼庫的。
ffmpeg包括一組軟件,ffmpeg用于對媒體文件進(jìn)行處理,ffserver是一個http的流媒體服務(wù)器,ffplay是一個基于SDL的簡單播放器。兩個庫文件libavcodec和libavformat。

ffmpeg作為媒體文件處理軟件,基本用法如下:?
ffmpeg [global_options] {[input_file_options] -i ‘input_file’} ... {[output_file_options] ‘output_file’} ...
輸入輸出文件通常就是待處理的多媒體文件了。可以是純粹的音頻文件,純粹的視頻文件,或者混合的。?
大部分常見的格式都能夠“通殺”。象常見的各種mpeg,AVI封裝的DIVX和Xvid等等

對ffmpeg命令選項(xiàng)的了解,先從下面的命令開始
ffmpeg -h
ffmpeg -h long
ffmpeg -h full
man ffmpeg需要安裝ffmpeg的手冊頁條目

各選項(xiàng)參數(shù)的解釋,詳情參見

http://www.ffmpeg.org/ffmpeg.html


列出幾個主要的選項(xiàng)?
-vcodec 視頻流編碼方式?
-b 視頻流碼率(默認(rèn)只有200k,一般都需要手動設(shè)置,具體的數(shù)值視codec選擇而定)?
-r 視頻流幀數(shù)(一般說來PAL制式通常用25,NTSC制式通常用29)?
-s 視頻解析度(分辨率,也要視codec和你的需要而定。通常改變某個視頻流的解析度是很耗費(fèi)CPU的事情。另:具體寫法使用“數(shù)字x數(shù)字”的形式。中間是小寫字母“x”,這個用過mplayer的應(yīng)該都知道)?
-t 處理持續(xù)時間。?
-acodec 音頻流編碼方式?
-ab 音頻流碼率(默認(rèn)是同源文件碼率,也需要視codec而定)?
-ar 音頻流采樣率(大多數(shù)情況下使用44100和48000,分別對應(yīng)PAL制式和NTSC制式,根據(jù)需要選擇)

還有些可能需要用到的選項(xiàng)如?
-vn和-an分別是屏蔽視頻流和屏蔽音頻流,分別對源文件處理一次即可得到分離的音頻和視頻?
-author -title分別是設(shè)置媒體文件的作者和title?
-f選項(xiàng)是強(qiáng)制使用某種格式?
-target type是使用預(yù)置的格式轉(zhuǎn)換(可以轉(zhuǎn)成dvd,vcd或svcd)

除此之外還有些更高級的選項(xiàng),如設(shè)定vbr,或設(shè)定high quality,或者設(shè)定vbr的buff和max/min碼率,象一般我們自用的dvd抓軌啦,DV轉(zhuǎn)vcd或dvd啦,網(wǎng)上下載的電影轉(zhuǎn)成vcd或dvd都不一定需要用到它們。?
具體的使用方法在man里面有介紹。簡單明了。

-bsf比特流過濾器設(shè)置
首先使用ffmpeg -bsfs來查看所有的比特流過濾器,使用下面的命令
ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
來匹配要復(fù)制的視頻流,也是就是說,是有條件復(fù)制視頻流,必須匹配上才復(fù)制

-c選項(xiàng)是-codec的縮寫
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
意思是encodes all video streams with libx264 and copies all audio streams.

-map選項(xiàng)解讀
指定一個或多個輸入流作為輸出文件的源。每個輸入流由input_file_id[:stream_specifier]表示,這兩個索引都從0開始計數(shù),-stream_specifier
表示一個負(fù)map,參見下面的例子
ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
選擇a.mov中的第三個流,和b.mov中的第7個流,把它們復(fù)制到輸出文件中
ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
選擇所有的視頻流和第3個音頻流,把它們復(fù)制到輸出文件中
ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
除了第2個音頻流以外,復(fù)制其他的流到輸出文件中
ffmpeg -i INPUT -map 0 output
復(fù)制第一個文件中的所有流到輸出文件中

關(guān)于ffmpeg hls更詳細(xì)的官方文檔,參見
http://www.ffmpeg.org/ffmpeg-all.html
在頁面中搜索“hls”即可
下面是該官方網(wǎng)頁給出的一個例子
Segment the input file, and create an M3U8 live playlist (can be used as live HLS source):
?
ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
-segment_list_flags +live -segment_time 10 out%03d.mkv

下面是我收集的hls版本,并不好用。
ffmpeg -i inputfile.avi -c:v libx264 -c:a libvo_aacenc -hls_time 10 -hls_list_size 0 outputfile.m3u8
ffmpeg -i inputfile.avi -c copy -bsf:v h264_mp4toannexb -map 0 -hls_time 10 -hls_list_size 0 outputfile.m3u8
注意:我測試后,發(fā)現(xiàn)hls版本的命令生成的ts片段非常差,幾乎不能觀看。

目前的ffmpeg版本是支持hls的,直接使用下面的命令也會同時生成ts片段和m3u8文件,每個ts片段是默認(rèn)2s,這反過來也說明ffmpeg是支持hls的
ffmpeg -i in.nut out.m3u8

對于hls切片來說,下面的命令使我測試過很好用的,特收藏如下

ffmpeg -i 1.mp4 -f segment -segment_time 10 -segment_format mpegts -segment_list list_file.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 output_file-%d.ts

這條命令的限制是:要求生成ts分片的輸入視頻是視頻是h.264編碼,音頻是aac編碼的視頻文件,從優(yōu)酷網(wǎng)上下載的視頻片段都是符合這個條件的。

獲取ffmpeg最新源碼方法
git clone git://source.ffmpeg.org/ffmpeg ?ffmpeg
更新本地源碼
git pull (--rebase)
git的使用方法詳見

http://www.ffmpeg.org/git-howto.html

總結(jié)

以上是生活随笔為你收集整理的FFMPEG转码常用命令研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。