基于ffmpeg的流媒体服务器

OS:ubuntu 12.04
ffmpeg:N-47141-g4063bb2
x264:0.133.2334
a3ac64b
目标:
使用ffserver建立流媒体服务器
使用ffmpeg对本地文件流化(x264编码器)
使用ffplay播放

目录 [hide]

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

时间: 2024-11-09 18:44:23

基于ffmpeg的流媒体服务器的相关文章

nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html 上面这两个流的地址分别是: 第一个就是推送的地址: RTMP推流地址: rtmp://serverIp:1935/myapp/test1 第二个是HTTP地址: HLS推流地址: http://serverIp:

Linux---nginx+ffmpeg搭建流媒体服务器

原帖地址:https://blog.csdn.net/loyachen/article/details/50907828 这里实现了简单nginx+ffmpeg 推本地mp4视频文件的功能,以后将会继续更新 环境 系统环境:CentOS release 6.7 (Final) 需求 利用nginx和ffmpeg搭建流媒体服务器 步骤 安装ffmpeg 安装过程可以参考:centos编译安装ffmpeg:http://blog.csdn.net/loyachen/article/details/5

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(二)

第二部分 1.昨天已经把网络摄像机的rtsp视频流成功利用FFmpeg和Nginx转换成rtmp流推送到了nginx视频服务器上面,并且通过vlc可以观看到直播视频. 今天继续昨天的工作,将rtsp的视频流推送到Nginx上面,客户端根据hls协议使用http在网页进行观看(推送的仍然是rtmp视频流),关于hls,先给一小段简单介绍: HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒

基于FFMPEG SDK流媒体开发1---解码媒体文件流信息

最近项目涉及到流媒体等开发,由于有过开发经验深知其难度所在,没办法只能重新拾起,最新版的SDK被改的一塌糊涂,不过大体的开发思路都是一样的,看多少书查多少资料都无用,一步一步的编写代码 才是学好的关键.. 我会把每一天的学习经过,更新到博文上,希望能给更多想学习的人带来帮助,篇尾附上工程     以及最新版本SDK. FFMPEG被大多数的人命令行来使用,其实在真正的流媒体开发中,要想灵活运用其开发流媒体应用层序,必须使用官方SDK开发  ,实际上我们市面上好多产品 都是基于FFMPEG,比如

基于 Red5 的流媒体服务器的搭建和应用

http://www.ibm.com/developerworks/cn/opensource/os-cn-Red5/ Red5 是一个采用 Java 开发的开源免费 Flash 流媒体服务器.Red5 基于 Java 和一些功能强大的开源框架,为企业级应用奠定了标准.它使用 RTMP,RTMPT,RTMPS 和 RTMPE 流媒体协议, 支持:将音频(MP3)和视频(FLV,MP4,F4V,3GP)转换成播放流:录制客户端播放流:共享对象:现场直播流发布:远程调用.Red5 为即时通信,远程教

基于FFMPEG SDK流媒体开发1---解码媒体文件流信息(转)

最近项目涉及到流媒体等开发,由于有过开发经验深知其难度所在,没办法只能重新拾起,最新版的SDK被改的一塌糊涂,不过大体的开发思路都是一样的,看多少书查多少资料都无用,一步一步的编写代码 才是学好的关键.. 我会把每一天的学习经过,更新到博文上,希望能给更多想学习的人带来帮助,篇尾附上工程     以及最新版本SDK. FFMPEG被大多数的人命令行来使用,其实在真正的流媒体开发中,要想灵活运用其开发流媒体应用层序,必须使用官方SDK开发  ,实际上我们市面上好多产品 都是基于FFMPEG,比如

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(十)

第十部分 -- 开发板测试 前几天已经分别将nginx和ffmpeg移植到了开发板上面,但是还是没有进行任何的测试并不知道移植后的效果如何. 今天分别做了两个测试,证明移植的结果是可用的. 1.测试ffmpeg 对于nginx的测试在移植完成后就已经进行过了,当然就是简单的能够显示nginx欢迎界面而已,但是对我来讲,nginx能用就行,并没有对他进行深一步的测试. 但是对于ffmpeg不测试下总感觉不放心,虽然移植时运行显示可以,但是还不知道它能不能工作,所以首先用它进行了视频格式转换的测试.

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(五)

第五部分 前段时间,在Ubuntu上面搭建起来了能支持HLS的流媒体服务器,最终目标是在arm的开发板上搭建这样的流媒体服务器.现在工作只是做了一小部分,正在进行移植,记录下来,方便以后继续干. 1.首先是要移植nginx到arm的开发板上面. 这个其实有人已经做过了,可以使用别人的工程. https://bitbucket.org/ntakimura/android-nginx/src/c80cb9c41a725ecf57f73a196735100aeef5b6e4/?at=android 这

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(一)

第一部分 主要步骤及命令记录: 1.下载nginx,地址http://nginx.org/en/download.html,选择最新版本下载.解压.当前最新版为:nginx-1.7.9. 2.为了增加对rtmp的支持,下载nginx-rtmp-module,地址:https://github.com/arut/nginx-rtmp-module#example-nginxconf,这个是个开源项目.解压后,为了和我在网上看到的教程同步,我改了文件夹名字,将其改成了nginx-rtmp-modul