功能模塊概述
成都創(chuàng)新互聯(lián)是專業(yè)的乾安網(wǎng)站建設(shè)公司,乾安接單;提供網(wǎng)站制作、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行乾安網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
通過obs客戶端推流到nginx流媒體服務(wù)器上,對(duì)流媒體用ffmpeg將流剪切為若干段ts流文件并保存到臨時(shí)目錄中,通過訪問m3u8格式拼接ts流文件段來觀看直播。
推流端
采用開源工具OBS客戶端進(jìn)行推流
根據(jù)項(xiàng)目的推流地址,填入OBS客戶端(下載地址)中,并設(shè)置場(chǎng)景,保存后重啟,便可開始推流。
為更加穩(wěn)定的推流,建議使用以上鏈接中的v0.625穩(wěn)定版本,按提示安裝完成后,打開設(shè)定.在廣播設(shè)定中,伺服器統(tǒng)一填寫我們項(xiàng)目的流媒體接收流地址:
rtmp://127.0.0.1:1935/hls/
以上這幾個(gè)數(shù)據(jù)都是可以更改的。
127.0.0.1——你的流媒體服務(wù)器ip
1935——你的rtmp端口號(hào)
hls——你的直播nginx配置模塊
具體在下文中也有詳細(xì)介紹
配置地址
回到主界面,右鍵來源,選擇添加視頻捕捉設(shè)備或獲取窗口等(相關(guān)設(shè)置默認(rèn)即可),點(diǎn)擊開始串流,便可開始直播。
添加場(chǎng)景
圖為添加視頻捕捉設(shè)備后的直播畫面:
直播中
流媒體服務(wù)器
Nginx接收推流模塊
rtmp_auto_push on;
rtmp {
server {
listen 1935;
application hls {
live on;
hls on;
hls_path /tmp/hls;
on_publish 項(xiàng)目地址/liveOnPublish;
on_publish_done 項(xiàng)目地址/liveOnDone;
notify_method get;
}
}
}
配上我在word上的注解
注解1
Nginx處理直播流模塊
http {
server {
listen 80;
server_name localhost;
location /hls {
secure_link $arg_st,$arg_e;
secure_link_md5 key$arg_e;
subs_filter .ts '.ts?st=$arg_ste=$arg_eclentip=$remote_addr';
subs_filter_types application/vnd.apple.mpegurl;
if ($secure_link = "") {
return 402;
}
if ($secure_link = "0") {
return 403;
}
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}
注解2
項(xiàng)目部署服務(wù)器
流媒體服務(wù)器不通過項(xiàng)目服務(wù)器,整個(gè)直播過程的推流和處理流都在流媒體服務(wù)器上進(jìn)行。項(xiàng)目服務(wù)器主要進(jìn)行直播地址加密處理意見推流開始和結(jié)束觸發(fā)的方法(liveOnPublish(),liveOnDone())已及對(duì)直播地址加密.
播放端
直接通過HTML5中的video標(biāo)簽設(shè)置src來播放直播流。如:
video src="pro/live.m3u8?st=UM/L8jdfTlY2b1j1F6XSxA==e=1468548530
" controls="controls"/video
存在的問題
延遲待測(cè)試(不科學(xué)的數(shù)據(jù)是安卓手機(jī)普遍在30-40s,蘋果手機(jī)在20-30s)
并發(fā)待測(cè)試
掉幀待測(cè)試(網(wǎng)速影響大,網(wǎng)絡(luò)好幾乎不掉幀,網(wǎng)絡(luò)差掉一半,用戶體驗(yàn)差)
在系統(tǒng)環(huán)境變量的path中添加FFMPEG可執(zhí)行程序的的目錄。
例如FFMPEG位于D:\ffmpeg\bin中。右鍵“我的電腦”-屬性-高級(jí)系統(tǒng)設(shè)置-高級(jí)-環(huán)境變量,找到名字為path的變量,在其后追加字符串:D:\ffmpeg\bin;(結(jié)尾是有分號(hào)的)。設(shè)置完一般重啟后生效。
設(shè)置后,在任意目錄下都可以用ffmpeg.exe(ffplay.exe)轉(zhuǎn)碼(播放)。
前言
如此強(qiáng)大的FFmpeg,能夠?qū)崿F(xiàn)視頻采集、視頻格式轉(zhuǎn)化、視頻截圖、視頻添加水印、視頻切片、視頻錄制、視頻推流、更改音視頻參數(shù)功能等。通過終端命令如何實(shí)現(xiàn)這些功能,Richy在本文做一記錄,以備之后查閱。
注意:下面一一列舉的命令,未歸類整理,命令參數(shù)供參考。
如果參數(shù)有誤,大家可對(duì)照文章- FFmpeg參數(shù)命令 ,進(jìn)行修改。
第一組
1.分離視頻音頻流
ffmpeg -i input_file -vcodec copy -an output_file_video//分離視頻流ffmpeg -i input_file -acodec copy -vn output_file_audio//分離音頻流
2.視頻解復(fù)用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
3.視頻轉(zhuǎn)碼
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264
//轉(zhuǎn)碼為碼流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //轉(zhuǎn)碼為碼流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //轉(zhuǎn)碼為封裝文件
說明: -bf B幀數(shù)目控制,-g 關(guān)鍵幀間隔控制,-s 分辨率控制
4.視頻封裝
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5.視頻剪切
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取圖片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切視頻//-r 提取圖像的頻率,-ss 開始時(shí)間,-t 持續(xù)時(shí)間
6.視頻錄制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
7、利用ffmpeg視頻切片
主要把視頻源切成若干個(gè).ts格式的視頻片段然后生成一個(gè).m3u8的切片文件索引提供給html5的video做hls直播源
命令如下:
ffmpeg -i 視頻源地址 -strict -2 -c:v libx264 -c:a aac -f hls m3u8文件輸出地址
8、ffmpeg縮放視頻
假設(shè)原始視頻尺寸是 1080p(即 1920×1080 px,16:9),使用下面命令可以縮小到 480p:
命令如下:
ffmpeg -i 視頻源地址 -vf scale=853:480 -acodec aac -vcodec h264 視頻輸出地址(如:out.mp4)
各個(gè)參數(shù)的含義:-i a.mov 指定待處理視頻的文件名-vf scale=853:480 vf 參數(shù)用于指定視頻濾鏡,其中 scale 表示縮放,后面的數(shù)字表示縮放至 853×480 px,其中的 853px 是計(jì)算而得,因?yàn)樵家曨l的寬高比為 16:9,所以為了讓目標(biāo)視頻的高度為 480px,則寬度 = 480 x 9 / 16 = 853-acodec aac 指定音頻使用 aac 編碼。注:因?yàn)?ffmpeg 的內(nèi)置 aac 編碼目前(寫這篇文章時(shí))還是試驗(yàn)階段,故會(huì)提示添加參數(shù) “-strict -2” 才能繼續(xù),盡管添加即可。又或者使用外部的 libfaac(需要重新編譯 ffmpeg)。-vcodec h264 指定視頻使用 h264 編碼。注:目前手機(jī)一般視頻拍攝的格式(封裝格式、文件格式)為 mov 或者 mp4,這兩者的音頻編碼都是 aac,視頻都是 h264。out.mp4 指定輸出文件名上面的參數(shù) scale=853:480 當(dāng)中的寬度和高度實(shí)際應(yīng)用場(chǎng)景中通常只需指定一個(gè),比如指定高度為 480 或者 720,至于寬度則可以傳入 “-1” 表示由原始視頻的寬高比自動(dòng)計(jì)算而得。即參數(shù)可以寫為:scale=-1:480,當(dāng)然也可以 scale=480:-1
9、ffmpeg裁剪
有時(shí)可能只需要視頻的正中一塊,而兩頭的內(nèi)容不需要,這時(shí)可以對(duì)視頻進(jìn)行裁剪(crop),比如有一個(gè)豎向的視頻 1080 x 1920,如果指向保留中間 1080×1080 部分命令如下:ffmpeg -i 視頻源地址 -strict -2 -vf crop=1080:1080:0:420 視頻輸出地址(如:out.mp4)
其中的 crop=1080:1080:0:420 才裁剪參數(shù),具體含義是 crop=width:height:x:y,其中 width 和 height 表示裁剪后的尺寸,x:y 表示裁剪區(qū)域的左上角坐標(biāo)。比如當(dāng)前這個(gè)示例,我們只需要保留豎向視頻的中間部分,所以 x 不用偏移,故傳入0,而 y 則需要向下偏移:(1920 – 1080) / 2 = 420
10. 轉(zhuǎn)視頻格式
ffmpeng -i source.mp4 -c:v libx264 -crf 24 destination.flv
其中 -crf 很重要,是控制轉(zhuǎn)碼后視頻的質(zhì)量,質(zhì)量越高,文件也就越大。
此值的范圍是 0 到 51:0 表示高清無損;23 是默認(rèn)值(如果沒有指定此參數(shù));51 雖然文件最小,但效果是最差的。
值越小,質(zhì)量越高,但文件也越大,建議的值范圍是 18 到 28。而值 18 是視覺上看起來無損或接近無損的,當(dāng)然不代表是數(shù)據(jù)(技術(shù)上)的轉(zhuǎn)碼無損。
第二組
1.ffmpeg 把文件當(dāng)做直播推送至服務(wù)器 (RTMP + FLV)
ffmpeg - re -i demo.mp4 -c copy - f flv rtmp://w.gslb.letv/live/streamid
2.將直播的媒體保存到本地
ffmpeg -i rtmp://r.glsb.letv/live/streamid -c copy streamfile.flv
3.將一個(gè)直播流,視頻改用h264壓縮,音頻改用faac壓縮,送至另一個(gè)直播服務(wù)器
ffmpeg -i rtmp://r.glsb.letv/live/streamidA -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://w.glsb.letv/live/streamb
4.提取視頻中的音頻,并保存為mp3 然后輸出
ffmpeg -i input.avi -b:a 128k output.mp3
第三組
1.獲取視頻的信息
ffmpeg -i video.avi
2.將圖片序列合成視頻
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令會(huì)把當(dāng)前目錄下的圖片(名字如:image1.jpg. image2.jpg. 等...)合并成video.mpg
3.將視頻分解成圖片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令會(huì)生成image1.jpg. image2.jpg. ...
支持的圖片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI
4.為視頻重新編碼以適合在iPod/iPhone上播放
ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4
5.為視頻重新編碼以適合在PSP上播放
ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
6.從視頻抽出聲音.并存為Mp3
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
7.將wav文件轉(zhuǎn)成Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
8.將.avi視頻轉(zhuǎn)成.mpg
ffmpeg -i video_origine.avi video_finale.mpg
9.將.mpg轉(zhuǎn)成.avi
ffmpeg -i video_origine.mpg video_finale.avi
10.將.avi轉(zhuǎn)成gif動(dòng)畫(未壓縮)
ffmpeg -i video_origine.avi gif_anime.gif
11.合成視頻和音頻
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
12.將.avi轉(zhuǎn)成.flv
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv
13.將.avi轉(zhuǎn)成dv
ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
或者:
ffmpeg -i video_origine.avi -target pal-dv video_finale.dv
14.將.avi壓縮成divx
ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi
15.將Ogg Theora壓縮成Mpeg dvd
ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg
16.將.avi壓縮成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-dvcd video_finale.mpg
17.將.avi壓縮成VCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg
18.多通道編碼
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
19.從flv提取mp3
ffmpeg -i source.flv -ab 128k dest.mp3
第四組
1、將文件當(dāng)做直播送至live
ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName
2、將直播媒體保存至本地文件
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
3、將其中一個(gè)直播流,視頻改用h264壓縮,音頻不變,送至另外一個(gè)直播服務(wù)流
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
4、將其中一個(gè)直播流,視頻改用h264壓縮,音頻改用faac壓縮,送至另外一個(gè)直播服務(wù)流
ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream
5、將其中一個(gè)直播流,視頻不變,音頻改用faac壓縮,送至另外一個(gè)直播服務(wù)流
ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream
6、將一個(gè)高清流,復(fù)制為幾個(gè)不同視頻清晰度的流重新發(fā)布,其中音頻不變
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k
7、功能一樣,只是采用-x264opts選項(xiàng)
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k
8、將當(dāng)前攝像頭及音頻通過DSSHOW采集,視頻h264、音頻faac壓縮后發(fā)布
ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name
9、將一個(gè)JPG圖片經(jīng)過h264壓縮循環(huán)輸出為mp4視頻
ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4
10、將普通流視頻改用h264壓縮,音頻不變,送至高清流服務(wù)(新版本FMS live=1)
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1〃
文/騷之哈塞給(作者)
分享標(biāo)題:html5ffmpeg的簡(jiǎn)單介紹
本文網(wǎng)址:http://chinadenli.net/article40/dsdepeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站策劃、商城網(wǎng)站、外貿(mào)建站、移動(dòng)網(wǎng)站建設(shè)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)