国产精品久久久久久2021,日韩精品无码av中文无码版,亚洲精品久久久午夜麻豆,无码成人精品日本动漫纯h

010-68421378
當前您所在的位置:首頁>新聞中心>新品發(fā)布

Wowza技術(shù):如何使用FFMpeg向Wowza推流?

發(fā)布時間:2020/09/11 瀏覽量:3252
FFmpeg 是一個基于命令行的工具,可以利用它進行轉(zhuǎn)碼和推流

 

FFmpeg 是一個基于命令行的工具,可以利用它進行轉(zhuǎn)碼和推流。這篇文章介紹了如何將FFmpeg當作一個實時編碼器,推流到Wowza Streaming Engine™軟件。

注意: 需要FFmpeg N-52458-gaa96439 及以上版本的支持。隨著新版本的發(fā)布,F(xiàn)Fmpeg 的命令可能會變化很快,所以你最好是從它的官方文檔FFmpeg documentation 了解更多的編碼細節(jié)。

 

FFmpeg的基本命令說明

 

FFmpeg的基本命令格式,如下所示: 

ffmpeg [input-options] -i [input-file] [output-options][output-stream-URI]

其中: 

· [input-options]是一些針對輸入源的可選參數(shù)。例如,如果輸入源是視頻文件,那么-re參數(shù)會根據(jù)輸入文件的幀率對外推送流。

· [input-file]是作為輸入源的視頻文件或要轉(zhuǎn)發(fā)的直播流

· [output-options] 是一些針對輸出流的可選參數(shù)。例如-f參數(shù)設(shè)置了輸入流的格式。

· [output-stream-URI]是輸出流的URL,URL的具體格式依賴輸出流的格式。
 

使用FFmpeg轉(zhuǎn)發(fā)流下面的這個例子是將Wowza安裝目錄[install-dir]/content/sample.mp4文件作為視頻源對外推送視頻流。 

安裝FFmpeg (Windows): 

1.下載FFmpeg的最新版本,下載地址:http://ffmpeg.zeranoe.com/builds//。將其解壓縮到Wowza所在的服務(wù)器上。

2.創(chuàng)建一個新的目錄C:/usr/local/share/ffmpeg。將FFmpeg的presets目錄拷貝到這個新的目錄下。

3.打開命令行提示窗口,輸入以下命令,進入FFmpeg的安裝目錄下的bin目錄: 

cd[ffmpeg-install-dir]\bin

4.輸入下面的FFmpeg命令將Wowza安裝目錄/content/下的sample.mp4文件做為視頻源通過UDP推送到本機端口: 

ffmpeg -re -i"%WMSAPP_HOME%/content/sample.mp4" -vcodec libx264  -vb 150000 -g 60-vprofile baseline -level 2.1 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsfh264_mp4toannexb -strict experimental -f mpegtsudp://127.0.0.1:10000?pkt_size=1316

5.根據(jù)How to publish and play a livestream (MPEG-TS based encoder) 的介紹配置一個直播應(yīng)用來發(fā)布FFmpeg推送過來的流。當你配置stream file的時候,請使用udp://127.0.0.1:10000?pkt_size=1316作為源流的Stream URI.

在上面的例子中,F(xiàn)Fmpeg推送了一個低碼率、低編碼復(fù)雜度、低質(zhì)量的流,以保障它在大多數(shù)設(shè)備上都可以正常播放。要推送出去一個高質(zhì)量的流,請使用下面的例子: 

ffmpeg -re -i"%WMSAPP_HOME%/content/sample.mp4" -vcodec libx264  -vb 500000 -g 60-vprofile main -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb-strict experimental -f mpegts udp://127.0.0.1:10000?pkt_size=1316

注意: 

· sample.mp4文件的時長大約是6分鐘。在流傳輸結(jié)束后,F(xiàn)Fmpeg將停止推流。因此如果測試期間你要繼續(xù)推流,你就得反復(fù)啟動FFmpeg推流命令。用下面的prefix 參數(shù)可以讓FFmpeg持續(xù)不間斷地循環(huán)推送流: 

FOR /L %% IN(0) DO

 

· 如果Wowza server安裝在另外一臺服務(wù)器上,你需要將udp://127.0.0.1:10000中的IP地址改為Wowza server所在服務(wù)器的IP地址,端口可以改為任意UDP端口。另外要確認這個端口沒被路由器、防火墻屏蔽。

· Microsoft Silverlight 播放器需要關(guān)鍵幀間隔為2秒,因此需要將-r參數(shù) (幀率) 設(shè)置為-g 值(GOP or i-frameinterval)的一半。

 

用FFmpeg進行轉(zhuǎn)碼

FFmpeg可以用來對RTSP流、native RTP流或MPEG-TS流進行轉(zhuǎn)碼。要對一個視頻源做轉(zhuǎn)碼,請在命令行將輸入源(也就上面例子中的sample.mp4文件)改為對應(yīng)的輸入源,去掉-re參數(shù)。下面是幾個例子:

RTSP/RTP camera

ffmpeg -i"rtsp://[camera-ip-address]/[camera-URI-syntax]" -vcodec libx264 -vb150000 -g 60 -vprofile baseline -level 2.1 -acodec aac -ab 64000 -ar 48000 -ac2 -vbsf h264_mp4toannexb -strict experimental -f mpegtsudp://127.0.0.1:10000?pkt_size=1316

MPEG-TS stream

ffmpeg -i"udp://localhost:[port]" -vcodec libx264 -vb 150000 -g 60 -vprofilebaseline -level 2.1 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsfh264_mp4toannexb -strict experimental -f mpegtsudp://127.0.0.1:10000?pkt_size=1316

Native RTP stream

ffmpeg -i"unicast.sdp" -vcodec libx264 -vb 150000 -g 60 -vprofile baseline-level 2.1 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strictexperimental -f mpegts udp://127.0.0.1:10000?pkt_size=1316

 

其它推流協(xié)議

FFmpeg 也可以用其它協(xié)議推流,例如RTMP、RTSP/RTP (QuickTime ANNOUNCE). 


RTMP 
要推送RTMP流,將FFmpeg命令行中輸出流的url做如下修改: 

-f mpegts udp://127.0.0.1:10000?pkt_size=1316改為: 

-f flv rtmp://127.0.0.1/live/myStream
rtmp流的url格式:rtmp://[wowza-ip-address]:1935/[application]/[streamName].


RTSP/RTP
要推送RTSP/RTP流, 將FFmpeg命令行中輸出流的url做如下修改: 

-f mpegts udp://127.0.0.1:10000?pkt_size=1316

改為: 

-f rtsp rtsp://127.0.0.1:1935/live/myStream.sdp


RTSP流的url格式: rtsp://[wowza-ip-address]:1935/[application]/[streamName].
其中: 

· [wowza-ip-address] 是Wowza服務(wù)器的IP地址

· The [application] Wowza服務(wù)器中應(yīng)用名(例如live 或 vod)。

· The [stream-name] 流的名字。

 

其它一些FFmpeg命令的例子

 

需要進行用戶名和密碼驗證的RTSP推流 
下面的例子使用了推流認證、H.264/AAC、baselineprofile、level 3.0、24 fps (幀率)、2秒的關(guān)鍵幀間隔、350kbps 碼率, 44.1khz采樣率、立體聲。 

ffmpeg -re -isample.mp4 -c:v libx264 -profile:v baseline -level 3.0 -r 24 -g 48 -keyint_min48 -sc_threshold 0 -vb 310k -c:a libvo_aacenc -ab 40k -ar 44100 -ac 2 -f rtsp-muxdelay 0.1 rtsp://username:password@[wowza-ip-address]:1935/live/myStream

 

RTP推流并生成SDP文件 

下面的例子采集當前設(shè)備的攝像頭視頻和麥克風音頻,編碼后推送RTP流,并生成SDP文件,編碼時使用15幀率和12位色彩:

ffmpeg -y -fdshow -s 640x480 -r:v 15 -i video="IntegratedWebcam":audio="Microphone (Realtek High Defini" -c:v libx264-pix_fmt yuv420p -vb 450 -an -map 0:0 -f rtp rtp://127.0.0.1:10000 -flags+global_header -c:a libvo_aacenc -vn -map 0:1 -f rtp rtp://127.0.0.1:10002 >10000.sdp

 

顯示編碼參數(shù)信息 
下面的命令顯示一個VOD文件或直播流的編碼參數(shù)信息,可以用來做故障排查: 

ffprobe -show_streams [stream-name]下面是用這個命令查看sample.mp4的編碼參數(shù)信息: 

[STREAM]

index=0

codec_name=h264

codec_long_name=H.264/ AVC / MPEG-4 AVC / MPEG-4 part 10

profile=ConstrainedBaseline

codec_type=video

codec_time_base=1/60

codec_tag_string=avc1

codec_tag=0x31637661

width=512

height=288

has_b_frames=0

sample_aspect_ratio=1:1

display_aspect_ratio=16:9

pix_fmt=yuv420p

level=21

timecode=N/A

id=N/A

r_frame_rate=30/1

avg_frame_rate=30/1

time_base=1/15360

start_pts=0

start_time=0.000000

duration_ts=9747968

duration=634.633333

bit_rate=640158

nb_frames=19039

nb_read_frames=N/A

nb_read_packets=N/A

DISPOSITION:default=0

DISPOSITION:dub=0

DISPOSITION:original=0

DISPOSITION:comment=0

DISPOSITION:lyrics=0

DISPOSITION:karaoke=0

DISPOSITION:forced=0

DISPOSITION:hearing_impaired=0

DISPOSITION:visual_impaired=0

DISPOSITION:clean_effects=0

DISPOSITION:attached_pic=0

TAG:language=und

TAG:handler_name=VideoHandler

[/STREAM]

[STREAM]

index=1

codec_name=aac

codec_long_name=AAC(Advanced Audio Coding)

profile=unknown

codec_type=audio

codec_time_base=1/48000

codec_tag_string=mp4a

codec_tag=0x6134706d

sample_fmt=fltp

sample_rate=48000

channels=2

bits_per_sample=0

id=N/A

r_frame_rate=0/0

avg_frame_rate=0/0

time_base=1/48000

start_pts=-1024

start_time=-0.021333

duration_ts=30439936

duration=634.165333

bit_rate=96193

nb_frames=29727

nb_read_frames=N/A

nb_read_packets=N/A

DISPOSITION:default=0

DISPOSITION:dub=0

DISPOSITION:original=0

DISPOSITION:comment=0

DISPOSITION:lyrics=0

DISPOSITION:karaoke=0

DISPOSITION:forced=0

DISPOSITION:hearing_impaired=0

DISPOSITION:visual_impaired=0

DISPOSITION:clean_effects=0

DISPOSITION:attached_pic=0

TAG:language=und

TAG:handler_name=SoundHandler

[/STREAM]

 

列出可用的視頻和音頻采集設(shè)備名稱 
下面的例子列出了當前可用的攝像頭和麥克風設(shè)備名稱: 

ffmpeg -list_devices true -f dshow -i dummy

 

將ts文件轉(zhuǎn)碼為mp4文件 
下面的這個例子將ts文件轉(zhuǎn)碼為mp4文件: 

ffmpeg -i input.ts -c:v copy -c:a copy output.mp4

 

檢查關(guān)鍵幀對齊(僅限Linux系統(tǒng)) 
下面的這個例子檢查了一個視頻內(nèi)容的多個多碼率文件之間關(guān)鍵幀是否對齊。這個例子確認這幾個多碼率文件中每一個關(guān)鍵幀中的PTS和 DTS 時間戳都保持一致。

ffprobe -output_format csv -show_frames [stream-name]|grep I

 

生成關(guān)鍵幀對齊的視頻文件(僅限Linux系統(tǒng)) 

這個例子生成了關(guān)鍵針對齊的多碼率文件,它使用了bigbuckbunny_1500.mp4作為源文件,你可以下載下來做個測試。 

ffmpeg -y -ibigbuckbunny_1500.mp4 -c:a libfaac -ac 2 -ab 64k -c:v libx264 -preset:vveryfast -threads 0 -r 24 -g 48 -keyint_min 48 -sc_threshold 0 -x264optsno-mbtree:bframes=1 -pass 1 -b:v 286k -s 384x216 bigbuck-350k.mp4

ffmpeg -y -ibigbuckbunny_1500.mp4 -c:a libfaac -ac 2 -ab 64k -c:v libx264 -preset:v fast-threads 0 -r 24 -g 48 -keyint_min 48 -sc_threshold 0 -x264opts no-mbtree:bframes=1-pass 2 -b:v 286k -s 384x216 bigbuck-350k.mp4

ffmpeg -y -ibigbuckbunny_1500.mp4 -c:a libfaac -ac 2 -ab 64k -c:v libx264 -preset:v fast-threads 0 -r 24 -g 48 -keyint_min 48 -sc_threshold 0 -x264optsno-mbtree:bframes=1 -pass 2 -b:v 836k -s 640x360 bigbuck-900k.mp4

 

Wowza Streaming Engine 4是業(yè)界功能強大、API接口豐富的流媒體Server產(chǎn)品,采用它作為流媒體服務(wù)器產(chǎn)品的案例很多,直播、在線教育、IPTV都有它的用武之地。

下一篇:Enterprise Architect 15.2:集成、Solver和擴展仿真的新工具
上一篇:IDA pro : IDA許可證不會過期,初次購買IDA許可證附帶一年的技術(shù)支持

                               

 京ICP備09015132號-996 | 違法和不良信息舉報電話:4006561155

                                   © Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號豪柏大廈C2座11層1105室

                         北京哲想軟件集團旗下網(wǎng)站:哲想軟件 | 哲想動畫

                            華滋生物