ffmpeg使用說(shuō)明書(shū)

在做音視頻的項(xiàng)目當(dāng)中,常常遇到音視頻不同步,編碼和解碼的出錯(cuò)的等等問(wèn)題,這時(shí)候就需要將對(duì)應(yīng)出問(wèn)題的視頻數(shù)據(jù)給dump下來(lái)進(jìn)行分析塌忽,使用ffmpeg的各種工具能夠更好的分析對(duì)應(yīng)的音視頻的文件。

ffmpeg

ffmpeg工具功能非常強(qiáng)大失驶,主要用于音視頻轉(zhuǎn)碼土居。
使用規(guī)則是:

ffmpeg [global_options] {[input_file_options] -i input_url} ...  {[output_file_options] output_url} ...

1.流說(shuō)明符

stream_index
表示流的編號(hào),是從0開(kāi)始的突勇,一般使用的時(shí)候都是配合streamType進(jìn)行使用的装盯。
示例
比如-codec:a :1 ac3,表示指定第二路音頻流使用ac3進(jìn)行編碼,不指定stream_index的話甲馋,就表示所有的流埂奈,-b:a 128k,表示指定所有的音頻流都用128k的碼率定躏,-codec copy 或者-codec:copy則表示將只是將流復(fù)制账磺,并沒(méi)有重新編碼

stream_type

1.png

p:program_id[:stream_index] or p:program_id[:stream_type[:stream_index]] or p:program_id??key[:value]"
第一種情況,匹配指定的stream_index流痊远;
第二種情況垮抗,匹配指定的stream_type和指定的stream_index的流;
第三種情況碧聪,匹配指定metadata的流

m:key[:value]
跟指定了metadata的key和value的流進(jìn)行匹配冒版,value沒(méi)有給出的話,匹配有對(duì)應(yīng)的key的流逞姿。

u
跟可用配置的流進(jìn)行匹配辞嗡。

2.通用選項(xiàng)

這些選項(xiàng)都在ff*的工具都通用

-L
顯示證書(shū)

-h,-?,-help,–help [arg]
幫助說(shuō)明
arg的取值

arg取值 說(shuō)明


2.png

-version
顯示版本

-formats、-demuxers滞造、-muxers续室、-devices、-codecs谒养、-decoders挺狰、-encoders、-bsfs买窟、-protocols丰泊、-filters、-pix_fmts始绍、-sample_fmts趁耗、-layouts-colors、-sources device[,opt1=val1[,opt2=val2]…]疆虚、-sinks device[,opt1=val1[,opt2=val2]…]
上面參數(shù)都顯示類(lèi)的,都是顯示可用的參數(shù),bsfs是bitstream fitlers

-loglevel [flags+]loglevel | -v [flags+]loglevel

loglevel有如下的值

3.png

-report
將所有的日志給dump下來(lái)径簿,文件名字規(guī)則為program-YYYYMMDD-HHMMSS.log

-hide_bander
壓制打印的banner

-cpuflags flags

3.主要的選項(xiàng)

-f fmt (input/output)
指定輸入輸出的格式

-i url (input)
輸入的文件格式

-y (global)
不在詢問(wèn)的重寫(xiě)輸出文件

-n (global)
不重寫(xiě)輸出文件

-stream_loop number(input)
設(shè)置輸入的流是否需要循環(huán)罢屈,Loop 0表示不loop,loop -l表示無(wú)限loop

-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
指定轉(zhuǎn)碼的編碼器

ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT

-map 0表示對(duì)所有的視頻流都生效篇亭,-c:v 表示指定視頻流的編碼器缠捌,-c:a 表示對(duì)音頻流的只是復(fù)制而已桥爽。

ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT

-t duration (input/output)
表示限制讀取的數(shù)據(jù)的時(shí)間長(zhǎng)度

-to position (input/output)
表示停止讀取源文件的位置

-fs limit_size (output)
顯示輸出文件的大小

-ss position (input/output)
指定輸入或者輸出文件的起始位置

-sseof position (input)
指定輸入文件的結(jié)束位置

-itsoffset offset (input)
設(shè)置輸入文件的時(shí)間偏移

-timestamp date (output)
設(shè)置錄制的時(shí)間戳

-metadata[:metadata_specifier] key=value (output,per-metadata)
添加輸入文件的metadata信息

ffmpeg -i in.avi -metadata title="my title" out.flv

ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT

-disposition[:stream_specifier] value (output,per-stream)
設(shè)置流的配置
下面有流的配置
default
dub
original
comment
lyrics
karaoke
forced
hearing_impaired
visual_impaired
clean_effects
attached_pic
captions
descriptions
dependent
metadata

示例
設(shè)置第二路音頻流為默認(rèn)的流

ffmpeg -i in.mkv -c copy -disposition:a:1 default out.mkv

-program [title=title:][program_num=program_num:]st=stream[:st=stream…] (output)
創(chuàng)建指定的項(xiàng)目

-target type (output)
設(shè)置輸出的文件類(lèi)型
vcd, svcd, dvd, dv, dv50等等類(lèi)型丢郊,有可能要使用這些格式前綴pal-, ntsc- or film-
示例

ffmpeg -i myfile.avi -target pal-vcd /tmp/vcd.mpg

-dn (output)
不轉(zhuǎn)碼data數(shù)據(jù)

-dframes number (output)
設(shè)置data數(shù)據(jù)的幀率

-frames[:stream_specifier] framecount (output,per-stream)
設(shè)置達(dá)到某個(gè)幀數(shù),然后停止轉(zhuǎn)碼

-q[:stream_specifier] q (output,per-stream)
-qscale[:stream_specifier] q (output,per-stream)
用來(lái)解決高質(zhì)量的轉(zhuǎn)碼

-filter[:stream_specifier] filtergraph (output,per-stream)
使用指定的濾鏡效果,filtergraph是過(guò)濾器圖

-filter_script[:stream_specifier] filename (output,per-stream)
和上面的參數(shù)一致

-filter_threads nb_threads (global)
定義處理filter的線程數(shù)

-pre[:stream_specifier] preset_name (output,per-stream)
設(shè)置流的預(yù)先配置

-stats (global)
打印轉(zhuǎn)碼的狀態(tài)日志

-progress url (global)
將處理進(jìn)度打印到文件當(dāng)中

-stdin
開(kāi)啟標(biāo)準(zhǔn)輸入輸出

-debug_ts (global) 或者-fdebug ts
打印轉(zhuǎn)碼時(shí)間戳衙猪,用來(lái)測(cè)試或者debug的

-attach filename (output)
添加一個(gè)附屬的文件到輸出文件中

   ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2     mimetype=application/x-truetype-font out.mkv

-dump_attachment[:stream_specifier] filename (input,per-stream)
將附屬文件給dump下來(lái)

ffmpeg -dump_attachment:t:0 out.ttf -i INPUT

3.視頻的選項(xiàng)

-vframes number (output)
設(shè)置輸出文件的幀數(shù)

-r[:stream_specifier] fps (input/output,per-stream)
設(shè)置輸出的幀率

-s[:stream_specifier] size (input/output,per-stream)
設(shè)置輸出文件的大小柔昼,這里是等比例縮放的

-aspect[:stream_specifier] aspect (output,per-stream)
設(shè)置輸出文件視頻寬高比例

-vn (output)
不開(kāi)視頻轉(zhuǎn)碼

-vcodec codec (output)或者-codec:v
設(shè)置視頻編碼的編碼器

-pass[:stream_specifier] n (output,per-stream)
選擇pass的數(shù)量

ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null

-passlogfile[:stream_specifier] prefix (output,per-stream)
設(shè)置pass的log文件

-vf filtergraph (output)
設(shè)置轉(zhuǎn)碼的變換的規(guī)則

//按照寬高最小值進(jìn)行視頻的轉(zhuǎn)碼為240p
ffmpeg -i output_p_540.mp4 -vf scale="floor(iw/min(iw\,ih)*240/2)*2:floor(ih/min(iw\,ih)*240/2)*2" output_p_480.mp4

4.高級(jí)的視頻轉(zhuǎn)碼選項(xiàng)

-pix_fmt[:stream_specifier] format (input/output,per-stream)
設(shè)置輸入或者輸出的的pix_fmt,可以用-pix_fmts顯示可用的pix_fmt

-sws_flags flags (input/output)
設(shè)置圖片變換的flags

-rc_override[:stream_specifier] override (output,per-stream)
指定幀率控制的間隔

-ilme
強(qiáng)制編碼器的交錯(cuò)支持

-psnr
計(jì)算PSNR即壓縮后的視頻質(zhì)量

-vstats
dump轉(zhuǎn)碼的日志哑芹,到 vstats_HHMMSS.log中

-vstats_file file
dump轉(zhuǎn)碼的日志到指定的文件

-vstats_version file

version = 1 :
frame= %5d q= %2.1f PSNR= %6.2f f_size= %6d s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s

version > 1:
out= %2d st= %2d frame= %5d q= %2.1f PSNR= %6.2f f_size=   %6d s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s

-top[:stream_specifier] n (output,per-stream)
top=1/bottom=0/auto=-1 field first

-dc precision
內(nèi)部精度

-vtag fourcc/tag (output)
強(qiáng)制將視頻為四字節(jié)代碼?捕透?聪姿?

-qphist (global)
顯示QP的柱形圖

-force_key_frames[:stream_specifier] time[,time…] (output,per-stream)
-force_key_frames[:stream_specifier] expr:expr (output,per-stream)
強(qiáng)加關(guān)鍵幀到指定時(shí)間戳

-copyinkf[:stream_specifier] (output,per-stream)
stream copy的時(shí)候,同時(shí)將不是第一個(gè)關(guān)鍵幀乙嘀,前面的所有幀都拷貝過(guò)去

-init_hw_device type[=name][:device[,key=value…]]
-init_hw_device type[=name]@source
初始化硬編碼設(shè)備

-init_hw_device list
查看ffmpeg支持的硬編碼設(shè)備

-filter_hw_device name
通過(guò)硬編碼設(shè)備調(diào)用指定的濾鏡

-hwaccel[:stream_specifier] hwaccel (input,per-stream)
使用硬件加速去解碼流

-hwaccel_device[:stream_specifier] hwaccel_device (input,per-stream)
選擇一個(gè)設(shè)備去進(jìn)行硬件加速

-hwaccels
列舉FFmpeg支持的硬件加速

5.音頻的選項(xiàng)

-aframes number (output)
設(shè)置輸出的音頻幀數(shù)

-ar[:stream_specifier] freq (input/output,per-stream)
設(shè)置音頻的采樣率

-aq q (output)
設(shè)置音頻的質(zhì)量

-ac[:stream_specifier] channels (input/output,per-stream)
設(shè)置音頻的channel count

-an (output)
關(guān)閉音頻的轉(zhuǎn)碼

-acodec codec (input/output)或者-codec:a
設(shè)置音頻硬編碼器

-sample_fmt[:stream_specifier] sample_fmt (output,per-stream)
設(shè)置采樣的格式

-af filtergraph (output)
設(shè)置音頻的轉(zhuǎn)碼的濾鏡

6.高級(jí)音頻的選項(xiàng)

-atag fourcc/tag (output)或者-tag:a
強(qiáng)制音頻的選項(xiàng)

-guess_layout_max channels (input,per-stream)
猜測(cè)音頻的channel

7.字幕選項(xiàng)

-scodec codec (input/output)
設(shè)置字幕的編碼器

-sn (output)
不開(kāi)啟字幕轉(zhuǎn)碼

8.高級(jí)字幕選項(xiàng)

-fix_sub_duration
解決字幕時(shí)間

-canvas_size size
設(shè)置字幕顯示的畫(huà)布大小

9.高級(jí)選項(xiàng)

map [-]input_file_id[:stream_specifier][?][,sync_file_id[:stream_specifier]] | [linklabel] (output)
指定一個(gè)或者更多的輸入的流輸出到文件中

第一個(gè)-map選項(xiàng)末购,對(duì)應(yīng)輸出文件的流0,第二個(gè)-map選項(xiàng)虎谢,對(duì)應(yīng)輸出文件的流1盟榴,以此類(lèi)推。

[-]選項(xiàng)婴噩,是指除了指定流以外的所有流

?選項(xiàng)擎场,允許匹配到流

安排所有流從輸入到輸出文件

ffmpeg -i INPUT -map 0 output

假如有2路音頻流在輸入文件中,這些流都被指定為0:0 或者0:1讳推,用-map來(lái)選擇哪路流配置到輸出文件中,下面是設(shè)置第2路音頻流顶籽,到音頻流中

ffmpeg -i INPUT -map 0:1 out.wav

選擇第一個(gè)文件的index為2的流,并選擇第二個(gè)文件的index為6的流到银觅,輸出文件中

ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov

選擇所有的視頻流和第3路音頻流到輸出文件

ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT

選擇除了第二路音頻流的所有的流礼饱,都到輸出文件中

ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT

選擇所有的視頻流和音頻流,假如這個(gè)文件沒(méi)有音頻流也沒(méi)有問(wèn)題

ffmpeg -i INPUT -map 0:v -map 0:a? OUTPUT

選擇英文的音頻流

ffmpeg -i INPUT -map 0:m:language:eng OUTPUT

-ignore_unknown
忽略未知類(lèi)型的流拷貝錯(cuò)誤

-copy_unknown
忽略拷貝流失敗

map_channel [input_file_id.stream_specifier.channel_id|-1][?][:output_file_id.stream_specifier]

-1 是可以選擇靜音聲道

選擇輸出的音頻的聲道

? 可以不匹配到聲道

示例
假如輸入文件是立體聲道音頻文件究驴,通過(guò)下面命令變成雙聲道的音頻文件

ffmpeg -i INPUT -map_channel 0.0.1 -map_channel 0.0.0 OUTPUT

靜音第一個(gè)聲道并且保持第二個(gè)聲道

ffmpeg -i INPUT -map_channel -1 -map_channel 0.0.1 OUTPUT

-map_metadata[:metadata_spec_out] infile[:metadata_spec_in] (output,per-metadata)
設(shè)置輸出文件的metadata
metadata可以由下面的表單
g
全局metadata

s[:stream_spec]
流index的metadata

c:chapter_index
每個(gè)chapter的metadata

p:program_index
每個(gè)program的metadata

示例
拷貝輸入文件的第一路流的metadata到輸出文件的全局metadata

ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3

拷貝全局的metadata到音頻流中

ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv

-map_chapters input_file_index (output)
從輸入文件拷貝chapters到下個(gè)輸出文件

-benchmark (global)
顯示編碼結(jié)束標(biāo)記

-benchmark_all (global)
顯示標(biāo)記信息在編碼中

-timelimit duration (global)
在某個(gè)時(shí)間點(diǎn)退出FFmpeg

-dump (global)
dump所有的輸入到到文件中

-hex (global)
dump文件是镊绪,同時(shí)dump payload

-re (input)
輸出的幀率和輸入的文件保持一致

-loop_output number_of_times
重復(fù)這個(gè)文件,比如像gif文件

-vsync parameter
視頻同步方法
parameter的取值
0, passthrough
從解復(fù)用直接傳遞到復(fù)用中去
1, cfr
幀會(huì)復(fù)用并且丟棄去達(dá)到指定的幀率
2,vfr
幀會(huì)直接按照時(shí)間戳傳遞過(guò)去洒忧,并且丟棄區(qū)具有相同時(shí)間戳的視頻數(shù)據(jù)幀
drop
所有的幀都傳遞過(guò)去蝴韭,但是基于新的幀率得到新的時(shí)間戳
-1, auto
依賴(lài)復(fù)用器的能力,選擇1到2之間

-frame_drop_threshold parameter
丟幀的界限

-async samples_per_second
音頻同步的方法

-copyts
不處理輸入的時(shí)間戳熙侍,保持它們的值不收損害

-start_at_zero
當(dāng)使用上面的選項(xiàng)榄鉴,變化輸入的文件的時(shí)間戳履磨,所以他們其實(shí)時(shí)間為0

-copytb mode
在流拷貝的時(shí)候,設(shè)置編碼器的時(shí)間基點(diǎn)
1
使用解復(fù)用的時(shí)間基點(diǎn)
0
使用解碼器的時(shí)間基點(diǎn)
-1
自動(dòng)選擇時(shí)間基點(diǎn)庆尘,保證一個(gè)正常的輸出

-enc_time_base[:stream_specifier] timebase (output,per-stream)
設(shè)置編碼器的時(shí)間基點(diǎn)
0
設(shè)置一個(gè)默認(rèn)的時(shí)間基點(diǎn)值
-1
盡量使用出入流的時(shí)間基點(diǎn)
'> 0
使用指定的值作為時(shí)間基點(diǎn)

-bitexact (input/output)
啟動(dòng)位精確模式剃诅,給解復(fù)用器和復(fù)用器

-shortest (output)
使用最短的流進(jìn)行編碼

-dts_delta_threshold
時(shí)間戳不連續(xù)的閾值

-muxdelay seconds (input)
設(shè)置最大的解碼延遲

-muxpreload seconds (input)
設(shè)置初始化解碼延遲

-streamid output-stream-index:new-value (output)
賦值一個(gè)新的流id的值到輸出流中

ffmpeg -i inurl -streamid 0:33 -streamid 1:36 out.ts

-bsf[:stream_specifier] bitstream_filters (output,per-stream)
設(shè)置位流的濾鏡給匹配的流

ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
ffmpeg -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt

-tag[:stream_specifier] codec_tag (input/output,per-stream)
在指定的加個(gè)tag

-timecode hh:mm:ssSEPff
設(shè)置指定的時(shí)間點(diǎn)去寫(xiě)入

ffmpeg -i input.mpg -timecode 01:02:03.04 -r 30000/1001 -s ntsc output.mpg

-filter_complex filtergraph (global)
定義復(fù)雜的濾鏡器圖

覆蓋一張圖到視頻上面

ffmpeg -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map
'[out]' out.mkv

[0:v]連接到第一個(gè)視頻流在第一個(gè)輸入的文件,連接到第一個(gè)輸入輸入的覆蓋濾鏡驶忌。

假設(shè)這里只有一個(gè)視頻流的輸入文件矛辕,我們可以刪除輸入的標(biāo)志,所以上面等同于

ffmpeg -i video.mkv -i image.png -filter_complex 'overlay[out]' -map
'[out]' out.mkv

此外付魔,我們可以忽略輸出的標(biāo)記和單個(gè)輸出到濾鏡器聊品,并自動(dòng)添加到輸出文件。

ffmpeg -i video.mkv -i image.png -filter_complex 'overlay' out.mkv

完成5s的純紅視頻几苍,可以只用顏色源

ffmpeg -filter_complex 'color=c=red' -t 5 out.mkv

-filter_complex_threads nb_threads (global)
定義多少個(gè)線程進(jìn)行濾鏡的處理翻屈,默認(rèn)的數(shù)值是CPU的位數(shù)

-lavfi filtergraph (global)
定義一個(gè)復(fù)雜的濾鏡器圖

-filter_complex_script filename (global)
這個(gè)選項(xiàng)同-filter_complex,唯一不同的是從文件進(jìn)行讀取規(guī)則

-accurate_seek (input)
這個(gè)選項(xiàng)開(kāi)啟和關(guān)閉精確的seeking,配合-ss選項(xiàng)擦剑,并使用-noaccurate_seek進(jìn)行關(guān)閉

-seek_timestamp (input)
這個(gè)選項(xiàng)是開(kāi)啟或者關(guān)閉通過(guò)時(shí)間戳進(jìn)行seeking

-thread_queue_size size (input)
這個(gè)選項(xiàng)設(shè)置最大的數(shù)據(jù)隊(duì)列妖胀,當(dāng)讀取文件或者設(shè)備的時(shí)候,要低延時(shí)和高碼率的直播流惠勒,數(shù)據(jù)包可能會(huì)被丟棄赚抡,當(dāng)沒(méi)有及時(shí)被讀取到,提高這個(gè)值可以避免發(fā)送這種情況纠屋。

-sdp_file file (global)
打印sdp的信息到輸出的流

-discard (input)
允許丟棄指定的流或者幀在解復(fù)用的時(shí)候
none
不丟棄任何幀
default
默認(rèn)涂臣,不丟幀
noref
丟所有非參考幀
bidir
丟所有雙向預(yù)測(cè)幀
nokey
丟了除了關(guān)鍵幀之外的所有幀
all
丟所有的幀

-xerror (global)
出錯(cuò)是停止

-max_muxing_queue_size packets (output,per-stream)
編碼的時(shí)候,設(shè)置復(fù)用的包的隊(duì)列的大小

硬編字幕在DVB-T記錄到MPEG-TS格式售担,延時(shí)字幕為1s鐘

ffmpeg -i input.ts -filter_complex \
'[#0x2ef] setpts=PTS+1/TB [sub] ; [#0x2d0] [sub] overlay' \
-sn -map '#0x2dc' output.mkv

11.例子

11.1 音視頻抓取

如果你指定輸入的格式和設(shè)備赁遗,F(xiàn)Fmpeg能夠直接抓取視頻或者音頻

  ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg

或者使用ALSA的音頻輸入源替代OOS

ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
11.2 X11抓取

通過(guò)x11顯示進(jìn)行抓取

  ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg

0.0是顯示屏的坐標(biāo)X11 Server,和DISPLAY環(huán)境變量相似

ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg
11.3 音視頻文件格式變換

使用YUV文件作為輸入源

ffmpeg -i /tmp/test%d.Y /tmp/out.mpg

這會(huì)使用這些文件

  /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
  /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...

使用原始YUV420P的文件

ffmpeg -i /tmp/test.yuv /tmp/out.avi

輸出YUV420P文件

ffmpeg -i mydivx.avi hugefile.yuv

設(shè)置各自輸入文件和輸出文件

ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg

可以做音頻和視頻轉(zhuǎn)換

ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2

同一時(shí)間進(jìn)行幾種格式的轉(zhuǎn)換

ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2

從視頻里面截取圖片

ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg

通過(guò)使用-frames:v或者-t 族铆,進(jìn)行限制輸出的幀數(shù)岩四,或者通過(guò)-ss僅僅想視頻視頻

ffmpeg -f image2 -framerate 12 -i foo-%03d.jpeg -s WxH foo.avi

當(dāng)導(dǎo)入一個(gè)圖片集合,-i 同時(shí)可以支持的

ffmpeg -f image2 -pattern_type glob -framerate 12 -i 'foo-*.jpeg' -s WxH foo.avi

可以將多路相同的流哥攘,放到輸出文件中

ffmpeg -i test1.avi -i test2.avi -map 1:1 -map 1:0 -map 0:1 -map 0:0 -c copy -y test12.nu

強(qiáng)制輸出CBR視頻輸出

ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v

四個(gè)選項(xiàng)Imin,Imax,mblmin和mblmax使用‘lambda’單元

ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext

12.實(shí)際項(xiàng)目使用的命令

AAC轉(zhuǎn)PCM文件

  ffmpeg -i input.aac -f s16le -ar 44100 -acodec pcm_s16le output.pcm

PCM文件轉(zhuǎn)AAC

  ffmpeg -f s16le -ar 44100 -ac 2 -acodec pcm_s16le -i input. output.wav

FFmpeg推拉流命令

 //推流本地文件到服務(wù)器
ffmpeg -re -i /Users/xu/Desktop/bangbangbang.mp4 -vcodec     libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/home

//本地桌面錄制或者分享
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/rtmplive/home 

 //桌面+麥克風(fēng)
ffmpeg -f avfoundation -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/home

//桌面+麥克風(fēng)+攝像頭
ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1  -f flv rtmp://localhost:1935/rtmplive/home

FFmpeg的視頻分辨率轉(zhuǎn)換公式

ffmpeg -i output_p_540.mp4 -vf scale="floor(iw/min(iw\,ih)*240/2)*2:floor(ih/min(iw\,ih)*240/2)*2" output_p_480.mp4

FFmpeg進(jìn)行轉(zhuǎn)碼

ffmpeg -i input_ac3.mp4 -vcodec copy -acodec aac -f flv output.flv
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剖煌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逝淹,更是在濱河造成了極大的恐慌耕姊,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栅葡,死亡現(xiàn)場(chǎng)離奇詭異茉兰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)欣簇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)规脸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)坯约,“玉大人,你說(shuō)我怎么就攤上這事燃辖」淼辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵黔龟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我滥玷,道長(zhǎng)氏身,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任惑畴,我火速辦了婚禮蛋欣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘如贷。我一直安慰自己陷虎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布杠袱。 她就那樣靜靜地躺著尚猿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪楣富。 梳的紋絲不亂的頭發(fā)上凿掂,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音纹蝴,去河邊找鬼庄萎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛塘安,可吹牛的內(nèi)容都是我干的糠涛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兼犯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼忍捡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起免都,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锉罐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后绕娘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體脓规,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年险领,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侨舆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秒紧。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挨下,靈堂內(nèi)的尸體忽然破棺而出熔恢,到底是詐尸還是另有隱情,我是刑警寧澤臭笆,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布叙淌,位于F島的核電站,受9級(jí)特大地震影響愁铺,放射性物質(zhì)發(fā)生泄漏鹰霍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一茵乱、第九天 我趴在偏房一處隱蔽的房頂上張望茂洒。 院中可真熱鬧,春花似錦瓶竭、人聲如沸督勺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)智哀。三九已至,卻和暖如春腋舌,著一層夾襖步出監(jiān)牢的瞬間盏触,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工块饺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赞辩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓授艰,卻偏偏與公主長(zhǎng)得像辨嗽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淮腾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容