天天看點

ffmpeg、ffplay、ffprobe 常用調試指令

(1)播放原始視訊yuv資料, 以1920*1280的xxx.yuv為例

ffplay -f rawvideo -video_size 1920x1080 xx.yuv

(2)播放原始音頻(需要大緻知道格式)

ffplay -ar 48000 -channels 1 -f s16le -i   xx.pcm

(3)抓取視訊中的某一幀,儲存為圖檔(以下是存取 第199幀)

ffmpeg -i rtmp2file.264 -vf select=`eq(n\,199)`  -frames:v 1 frame1.png 

(4)分析我抓取rtmp流儲存的檔案

ffprobe rtmp2fileC.flv -select_streams v -show_packets > 1122-show_packets.txt

(5)從服務端将直播流存成檔案

rtmpdump -r rtmp://202.108.14.1:1935/live/abc_1234  -o rtmpdump1.flv

ffmpeg -y -err_detect aggressive   -i rtmp://202.108.14.1:1935/live/abc_1234 -c:v copy -an mmi5_stream_by_ffmpeg.flv

ffmpeg -y -err_detect aggressive   -i rtmp://202.108.14.1:1935/live/abc_1234 -c copy /Users/wangzhong/recorder/Log/rtmp2file.flv

ffmpeg -y -i rtmp://202.108.14.1:1935/live/abc_1234 -c:v copy -an /Users/wangzhong/recorder/Log/rtmp2fileD.flv  -debug_ts

(6)将檔案以rtmp協定推流直播出去

ffmpeg  -i /Users/wangzhong/Downloads/video_files/bs_720.mp4 -map 0:v:0 -c:v copy -map 0:a:0 -c:a libvo_aacenc -ac 2 -ar 44100 -b:a 32k -af "asetpts=PTS-STARTPTS" -flags +global_header -f flv rtmp://10.11.50.195:1935/live/123

(7)用ffplay播放,-fflags no buffer低延時

ffplay -fflags nobuffer rtmp://202.108.14.1:1935/live/abc_123 

ffplay rtmp://202.108.14.1:1935/live/abc_2234 -fflags nobuffer

(8)自己制造一些特定格式的音視訊流(含幾個B幀、是否cabac編碼、每幀6個slice、碼率、幀率、分辨率、關鍵幀間隔30幀),分兩步,

第一步:重新編碼

ffmpeg -i VID_20161122_104326.mp4 -map 0:v:0 -b:v 3000

k -vf "scale=w=1280:h=720" -c:v libx264 -x264opts bframes=2:keyint=30:min-keyint=5:ref=1:rc-lookahead=15:subme=2:trellis=0:weightp=1:no-mixed-refs:me=dia:no-metree:cabac=0:slices=6  -r 30 -map 0:a:0 -c:a libvo_aacenc -ac 2 -ar 44100 -b:a 32k  -flags +global_header  -f flv bframes2_720P_20161122_104326.flv

第二步:抽取純視訊

ffmpeg -i bframes2_720P_20161122_104326.flv -c:v copy -bsf:v h264_mp4toannexb -an  bframes2_720P_20161122_104326.264

(9)ffmpeg指令行以電腦攝像頭作為直播視訊源

ffmpeg -fflags +nobuffer -avioflags direct -rtbufsize 65536000 -f dshow -i video="Logitech HD Pro Webcam C920" -map 0:v:0 -b:v 1000k -c:v libx264 -x264opts  keyint=15:min-keyint=10:ref=1:rc-lookahead=10:subme=2:trellis=0:weightp=1:no-mixed-refs:me=dia:no-mbtree  -an   -f flv -y rtmp_url

//-avioflags direct該參數可以消除ffmpeg編碼引起的畫面斷層

ffmpeg  -avioflags direct -f dshow -i video="Logitech HD Pro Webcam C920" -map 0:v:0 -b:v 1000k -c:v libx264 -x264opts  keyint=15:min-keyint=10:ref=1:rc-lookahead=10:subme=2:trellis=0:weightp=1:no-mixed-refs:me=dia:no-mbtree  -an   -f flv -y rtmp_url

//-f dshow -video_size 1280x720  設定dshow的渲染分辨率

ffmpeg  -avioflags direct -f dshow -video_size 1280x720 -i video="Logitech HD Pro Webcam C920" -map 0:v:0 -b:v 1000k -c:v libx264 -x264opts  keyint=15:min-keyint=10:ref=1:rc-lookahead=10:subme=2:trellis=0:weightp=1:no-mixed-refs:me=dia:no-mbtree  -an   -f flv -y  rtmp_url