1. 程式人生 > 其它 >ffmpeg rtmp推流 視訊轉碼

ffmpeg rtmp推流 視訊轉碼

ffmpeg -re -i 123.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://183.216.186.96:9935/live/555
首先安裝ffmpeg ,命令解釋
1. -re 本地幀頻讀資料,主要用於模擬捕獲裝置
2. -i 輸入您要處理的視訊檔案路徑,123.mp4是當前路徑下
3. -vcodec libx264
強制使用libx264編解碼方式。 如果用copy表示原始編解碼資料必須被拷貝
4. -acodec acc
使用acc 編解碼
5. -strict -2 -strict -2 之前是實驗引數表示 aac音訊編碼 如果不使用aac音訊編碼使用使其的編碼好像還需要匯入第三方的音訊編碼庫 比較麻煩 使用FFmpeg自帶的aac音訊編碼要帶上-strict -2 引數就可以了。帶這個引數是為了使用aac音訊編碼。
6.
-f flv 強制使用flv格式
7.rtmp://183.216.186.96:9935/live/555 nginx配置的推流地址,live是應用路由,9935時監聽埠,555是推流房間號,也就是推流id,會以這個id生成檔案,比如這裡會生成 555.flv檔案

rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application live {
            live on;
        }
    }
} 
如上配置的rtmp 推流路徑是 rtmp://ip:1935/live/roomId roomid是自定義的

ffmpeg 視訊格式轉換
# -f mp4 指定格式,-vcode指定視訊編碼器,-acode指定音訊編碼器,-y覆蓋輸出檔案 ,強制使用codec編解碼方式。 如果用copy表示原始編解碼資料必須被拷貝。


ffmpeg -i $path -f mp4 -vcodec copy -acodec copy -y $dirname/$basename.mp4 >>/opt/out.log 2>&1;

#path - recorded file path (/tmp/rec/mystream-1389499351.flv) //記錄檔案路徑
#filename - path with directory omitted (mystream-1389499351.flv)
#basename - file name with extension omitted (mystream-1389499351)
#dirname - directory path (/tmp/rec)