這里貼一個官網鏈接:http://ffmpeg.org/ffmpeg.html
一、ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:admin123@192.168.1.68:554/h264/ch1/main/av_stream" -f flv "rtmp://192.168.1.10:1935/webcam/cam01"
先來解讀下一引號中的內容:
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
rtsp和rtmp:都是一種實時的流傳輸協議,為什么要做rtsp到remp的轉換的,我們知道監控攝像機獲取的視頻是 rtsp 流的格式。 只能在特用的軟件中播放,並且只能在相同的網絡下播放。用戶要求開發一個管理軟件根據業務需要來播放視頻。最終的目地是要把rtsp 流視頻 轉換為能在瀏覽器,手機等主流的播放渠道上能播放的視頻(rtmp,mp4,flv,m3u8等格式)。
①username: 用戶名。例如admin
②password: 密碼。例如admin123
③ip: 為設備IP。例如 192.168.1.68
④port: 端口號默認為554,若為默認可不填寫
⑤codec:有h264、MPEG-4、mpeg4這幾種
⑥channel: 通道號,起始為1。例如通道1,則為ch1
⑦subtype: 碼流類型,主碼流為main,輔碼流為sub
rtmp://192.168.1.10:1935/webcam/cam01
①rtmp是在TCP之上,默認使用端口1935。
二、ffmpeg -re -rtsp_transport tcp -i %s -c:v libx264 -vf scale=600:-1 -f flv %s -loglevel fatal > /dev/null 2>&1 &
①%s處為流,如:rtsp://admin:admin123@192.168.1.68:554/h264/ch1/main/av_stream,這里是在代碼中直接拷貝出來的,方便使用。
②-re :以本地幀頻讀數據,主要用於模擬捕獲設備
③-rtsp_transport tcp: 強制使用tcp讀取rtsp流
④-i:輸入流
⑤-c:v :-vcodec和-codec:v都是一個意思,都是指定的流設置編碼器
⑥libx264:一種編碼器
⑦-vf:視頻過濾器
⑧-vf scale=600:-1 :在未知視頻分辨率的時候,-1的作用是保證縱橫比,視頻寬600。相關博客
⑨-f:官網中的解釋為,強制輸入或輸出文件格式。 通常會自動為輸入文件檢測格式,並從輸出文件的文件擴展名中猜測該格式,因此在大多數情況下不需要此選項。
⑩-f flv:FLASH VIDEO的簡稱
⑪-loglevel:字面意思,設置日志等級,fatal指的是指令的錯誤
⑫fatal > /dev/null 2>&1 :將錯誤輸入到空設備文件,也就是不輸出的意思,2表示的是標准錯誤(0標准輸入,1標准輸出),2>&1的意思就是講標准錯誤(error信息)重定向到標准輸出流。總的來說就是不報錯,就算報錯也只作為輸出,不影響后續執行。
三、ffmpeg -re -rtsp_transport tcp -i %s -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 640x360 -q 10 %s -loglevel fatal > /dev/null 2>&1 &
①-vprofile:H.264有四種畫質級別baseline, extended, main, high,介紹鏈接
②-acodec:設置音頻編解碼器。
③aac:AAC(Advanced Audio Coding),中文名:高級音頻編碼。
④-ar:設置音頻采樣頻率,44100hz。
⑤-strict -2:跟標准的嚴格性。
⑥-ac 1:1就是單聲道,2就是立體聲
⑦-s:尺寸
⑧-q 10 :質量為十張圖
shell 解釋:ps -ef | grep "rtmp://192.168.1.10:1935/webcam/cam01" | grep -v grep | awk '{print $2}'
①ps -ef :是用標准的格式顯示進程
②grep :查找字符串
③grep -v grep:為了去除包含grep的進程行 ,避免影響最終數據的正確性 。-v就是除了的意思
④awk '{print $2}':讀取打印信息中以空格為間隔的第二個字段。awk是一種處理文本文件的語言,是一個強大的文本分析工具。
這個指令的作用是查找對應ffmpeg指令的進程號,方便管理。