开发者社区> double2li> 正文

基于ffmpeg的流媒体服务器

简介: OS:ubuntu 12.04ffmpeg:N-47141-g4063bb2x264:0.133.2334 a3ac64b目标:使用ffserver建立流媒体服务器使用ffmpeg对本地文件流化(x264编码器)使用ffplay播放 目录 [hide] 1 ffserver.
+关注继续查看

OS:ubuntu 12.04
ffmpeg:N-47141-g4063bb2
x264:0.133.2334 a3ac64b
目标:
使用ffserver建立流媒体服务器
使用ffmpeg对本地文件流化(x264编码器)
使用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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ffmpeg ffserver 推流服务器
ffmpeg ffserver 推流服务器
174 0
ffmpeg搭建一个简单的rtsp推流方案
ffmpeg搭建一个简单的rtsp推流方案
851 0
FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放
FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放
674 0
FFmpeg开发笔记(八):ffmpeg解码音频并使用SDL同步音频播放
FFmpeg开发笔记(八):ffmpeg解码音频并使用SDL同步音频播放
193 0
音视频系列五:ffmpeg之rtmp推流阿里云转发vlc拉流播放
在前两篇 阿里云服务器搭建Nginx+rtmp推流服务器中,我们已经配置把阿里云的rtmp推流服务搭建好了,用的是PC软件OBS来进行推流到阿里云服务器,接下来就用雷神的最简单的基于ffmpeg的推流器,rtmp方式推流,阿里云服务器转发流,VLC拉流的流程走一遍。
540 0
FFMPEG音视频开发: 发布RTSP流(采用EasyDarwin作为流媒体服务器)
FFMPEG音视频开发: 发布RTSP流(采用EasyDarwin作为流媒体服务器)
593 0
FFMPEG音视频开发: Linux下采集音频(alsa-lib库)、视频(V4L2框架)数据编码并实时推流到RTMP流媒体服务器,达到直播功能(推流)
FFMPEG音视频开发: Linux下采集音频(alsa-lib库)、视频(V4L2框架)数据编码并实时推流到RTMP流媒体服务器,达到直播功能(推流)
865 0
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
465 0
FFMPEG音频视频开发:QT采集摄像头数据帧与声卡音频通过FFMPEG实时推流到RTMP服务器(v1.0)
FFMPEG音频视频开发:QT采集摄像头数据帧与声卡音频通过FFMPEG实时推流到RTMP服务器(v1.0)
668 0
ffmpeg入门小结(二)——音视频同步
ffmpeg入门小结(二)——音视频同步
202 0
FFmpeg流媒体处理-收流与推流
流媒体 (streaming media) 是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网络上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。
1296 0
FFmpeg封装格式处理1-简介
封装格式(container format)可以看作是编码流(音频流、视频流等)数据的一层外壳,将编码后的数据存储于此封装格式的文件之内。封装又称容器,容器的称法更为形象,所谓容器,就是存放内容的器具,以一瓶饮料为例,饮料是内容,那么装饮料的瓶子就是容器。
416 0
FFmpeg简易播放器的实现5-音视频同步
基于 FFmpeg 和 SDL 实现的简易视频播放器,主要分为读取视频文件解码和调用 SDL 显示两大部分。
750 0
FFmpeg 开发(06):FFmpeg 播放器实现音视频同步的三种方式
前文中,我们基于 FFmpeg 利用 OpenGL ES 和 OpenSL ES 分别实现了对解码后视频和音频的渲染,本文将实现播放器的最后一个重要功能:音视频同步。
372 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
文章
问答
视频
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载