1. 程式人生 > >FFmpeg常用推流命令

FFmpeg常用推流命令

一、FFmpeg推RTMP流準備工作

首先確保自已已經安裝了nginx + rtmp伺服器。
開啟配置檔案nginx.conf
完成如下配置


nginx配置.1


如果沒有nginx + rtmp伺服器,請閱讀我的另一篇簡書文章
Mac搭建nginx+rtmp伺服器

二、FFmpeg推流

1.推流MP4檔案

  • 視訊檔案地址:/Users/xu/Desktop/bangbangbang.mp4
  • 推流拉流地址:rtmp://localhost:1935/rtmplive/home
  • acc:RTMP的音訊格式
  • flv: RTMP的視訊格式
    ffmpeg -re -i /Users/xu/Desktop/bangbangbang.mp4
    -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/home

設定推流.2


輸入命令列後,暫時先不要點回車,等設定好本地拉流後,再進行推流。

2.本地拉流MP4檔案

  • 開啟VLC播放器

VLC.3
  • 設定播放地址

設定播放地址.4
  • 設定拉流地址
    rtmp://localhost:1935/rtmplive/home

    拉流地址.5
  • 開始推流,點選open後開始播放。

FFmpeg推流成功.6


推流成功!

三、用ffmpeg推流桌面以及推流攝像頭進行直播

1.如果希望將桌面錄製或者分享,可以使用命令列如下:

ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/rtmplive/home
  • 這個只能夠推桌面。

2.如果需要桌面+麥克風,比如一般做遠端教育分享 命令列如下:

ffmpeg -f avfoundation -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/home
  • 這個可以推桌面+麥克風。

3.如果需要桌面+麥克風,並且還要攝像頭拍攝到自己,比如一般用於互動主播,遊戲主播,命令列如下

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
  • 這個可以推桌面+麥克風,並且攝像頭把人頭放在介面下面

Snip20160713_12.png

四、FFmpeg常用基本命令

1.分離視訊音訊流

ffmpeg -i input_file -vcodec copy -an output_file_video  //分離視訊流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分離音訊流

2.視訊解複用

ffmpeg –i test.mp4 –vcodec copyan –f m4v test.264ffmpeg –i test.avi –vcodec copyan –f m4v test.264

3.視訊轉碼

ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //轉碼為碼流原始檔案
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //轉碼為碼流原始檔案
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //轉碼為封裝檔案
  • -bf B幀數目控制
  • -g 關鍵幀間隔控制
  • -s 解析度控制

4.視訊封裝

ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file

5.視訊剪下

ffmpegi test.avir 1f image2 image-%3d.jpeg //提取圖片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪下視訊
  • -r 提取影象的頻率
  • -ss 開始時間
  • -t 持續時間

6.視訊錄製

ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

7.YUV序列播放

ffplay -f rawvideo -video_size 1920x1080 input.yuv

8.YUV序列轉AVI

ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi

9.常用引數說明:

主要引數:
i 設定輸入流
f 設定輸出格式
ss 開始時間
視訊引數:
b 設定視訊流量,預設為200Kbit/s-r 設定幀速率,預設為25
s 設定畫面的寬與高-aspect 設定畫面的比例
vn 不處理視訊-vcodec 設定視訊編解碼器,未設定時則使用與輸入流相同的編解碼器
音訊引數:
ar 設定取樣率
ac 設定聲音的Channel數
acodec 設定聲音編解碼器,未設定時則使用與輸入流相同的編解碼器an 不處理音訊