基於ffmpeg的流媒體服務器



OS:ubuntu 12.04
ffmpeg:N-47141-g4063bb2
x264:0.133.2334 a3ac64b
目標:
使用ffserver建立流媒體服務器
使用ffmpeg對本地文件流化(x264編碼器)
使用ffplay播放

目錄 [hide]

    1 ffserver.conf配置
    2 啓動ffserver服務器
    3 使用ffmpeg對本地文件流化
    4 捕捉本地攝像頭數據
    5 爲流媒體增加聲音
    6 使用ffplay播放

ffserver.conf配置
1    Port 8090  #訪問端口
2    RTSPPort 554 #rtsp端口
3    BindAddress 0.0.0.0 #服務器地址綁定
4    MaxHTTPConnections 2000 #允許的最大連接數
5    MaxClients 1000 #最大的客戶數
6    MaxBandwidth 10000
7    CustomLog -
8    
9    <Feed feed1.ffm>
10    File /tmp/feed1.ffm
11    FileMaxSize 1G
12    ACL allow 127.0.0.1 #只允許本地連接
13    </Feed>
14    
15    ################ asf ################
16    
17    <Stream test.asf>
18    Feed feed1.ffm
19    Format asf #流媒體格式
20    VideoCodec libx264 #編碼格式
21    VideoFrameRate 25 #楨率
22    VideoSize 1024x768 #播放大小
23    VideoBitRate 2M #碼率
24    VideoBufferSize 10000000
25    VideoGopSize 24
26    StartSendOnKey
27    Preroll 5
28    #使用x264編碼時必須有下面的4個參數
29    VideoQMin 3
30    VideoQMax 31
31    AVOptionVideo flags +global_header
32    AVOptionAudio flags +global_header
33    NOAudio
34    </Stream>
35    
36    ################ flv ################
37    
38    <Stream test.flv>
39    
40    Feed feed1.ffm
41    Format flv
42    
43    NoAudio
44    #AudioBitRate  32
45    #AudioChannels 2
46    #AudioSampleRate  44100
47    #AVOptionAudio flags +global_header
48    #AudioCodec libmp3lame
49    
50    #NoVideo
51    VideoBitRate  1024
52    VideoFrameRate  40
53    VideoSize 1280x720
54    VideoBufferSize 1000000
55    VideoCodec libx264
56    
57    VideoQMin 3
58    VideoQMax 31
59    
60    VideoBitRateTolerance 100
61    VideoGopSize 12
62    StartSendOnKey
63    
64    AVOptionVideo qmin 3
65    AVOptionVideo qmax 31
66    #AVOptionVideo quality good
67    #AVOptionVideo cpu-used 0
68    AVOptionVideo flags +global_header
69    #AVOptionVideo keyint_min 25
70    #AVOptionVideo qcomp 0.6
71    AVOptionVideo qdiff 4
72    #AVOptionVideo me_range 16
73    #Preroll 15
74    </Stream>
75    
76    ################ rtsp ################
77    
78    <Stream live.h264>
79    Format rtp
80    Feed feed1.ffm
81    VideoCodec libx264
82    #VideoFrameRate 7
83    VideoBitRate 300
84    #VideoSize 480x272
85    VideoSize 352x288
86    #AVPresetVideo default
87    AVPresetVideo superfast
88    AVOptionVideo flags +global_header
89    
90    PixelFormat yuv420p
91    AVOptionVideo me_range 4
92    AVOptionVideo qdiff 4
93    AVOptionVideo qmin 2
94    AVOptionVideo qmax 51
95    
96    #MulticastAddress 224.124.0.1
97    #MulticastPort 5000
98    #MulticastTTL 1
99    
100    NoAudio
101    #AudioCodec libfaac
102    #AudioBitRate 32
103    #AudioChannels 2
104    #AudioSampleRate 22050
105    #AVOptionAudio flags +global_header
106    </Stream>
107    
108    ################ html ################
109    
110    <Stream stat.html>
111    Format status
112    # Only allow local people to get the status
113    ACL allow localhost
114    ACL allow 192.168.0.0 192.168.255.255
115    #FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico
116    </Stream>
117    
118    # Redirect index.html to the appropriate site
119    <Redirect index.html>
120    URL http://www.ffmpeg.org/
121    </Redirect>
啓動ffserver服務器
1    ffserver -d -f ./ffserver.conf
使用ffmpeg對本地文件流化
1    ./ffmpeg -i  ./1.mov -vcodec libx264  -qmin 3 -qmax 31 -qdiff 4 -me_range 16 -keyint_min 25 -qcomp 0.6 -b 9000K    http://localhost:8090/feed1.ffm
捕捉本地攝像頭數據
1    ./ffmpeg -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffm
爲流媒體增加聲音

在ffmserver.conf中打開聲音:
1    #NoAudio
2    AudioBitRate  128kb
3    AudioChannels 2
4    AudioSampleRate 44100
5    AVOptionAudio flags +global_header

在輸入中加入聲音捕獲:
1    ffmpeg  -f v4l2 -i  /dev/video0  -f alsa  -i hw:0,0 http://localhost:8090/feed_tv.ffm
使用ffplay播放
1    ./ffplay  mmsh://localhost:8090/test.asf
2    ./ffplay  http://localhost:8090/test.flv
3    ./ffplay  rtsp://localhost:554/live.h264

git: https://github.com/lnmcc/multi_stream_server.git
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章