ffmpeg+ffserver搭建流媒体服务器
http://blog.chinaunix.net/uid-9688646-id-3399113.html
<Stream test.flv>
File "/project/apps/ffserver/test.flv"
Format flv
</Stream>
ffmpeg -i inputfile(输入文件) http://localhost:10535/feed1.ffm
myfile/ffmpeg0.8.9/ffserver.conf & ffmpeg -f
video4linux2 -framerate 30 -i /dev/video0
http://127.0.0.1:8090/feed1.ffm
容,你可以找到关键字ffm以及向客户端传送流的配置信息,在feed1.ffm做缓冲用的时候,这些信息是不会被覆盖掉的,就把它们理解为
feed1.ffm文件的头吧。
ffserver主机的ip,如果ffmpeg和ffserver都在同一系统中运行的话,用localhost也行。ffmpeg启动后会与
ffserver建立一个连接(短暂的连接),通过这第一次的连接,ffmpeg从ffserver那里获取了向客户端输出流的配置,并把这些配置作为自
己编码输出的配置,然后ffmpeg断开了这次连接,再次与ffserver建立连接(长久的连接),利用这个连接ffmpeg会把编码后的数据发送给
ffserver。
没有播放的请求,就把数据写入feed1.ffm中缓存,写入时把数据加上些头信息然后分块,每块4096B(每块也有结构),当feed1.ffm的大
小到了ffserver.conf中规定的大小后,就会从文件开始(跳过头)写入,覆盖旧的数据。直到网络上有播放的请求,ffserver从
feed1.ffm中读取数据,发送给客户端。
http://ip:port/test.flv,或者在vlc中输入以上网址也可实现播放。
rtsp://ip:port/rtsp.mpg,或者在vlc中输入以上网址也可实现播放。
相关错误:
Error occurs when I transcode a file into asf format
http://ffmpeg.gusari.org/viewtopic.php?f=11&t=590
You can't stream avi file format, it's not designed to be streamed, rather to be used as a file/storage format. Streaming formats are: flv, mpegts, asf, rtmp/rtp/rtsp... So, try changing Format avi to Format mpegts and see if that works. But, the most convenient way of using ffmpeg/ffserver is to create a config file for ffserver and then run ffmpeg, telling it to feed the ffserver, which will do the actual encoding and streaming.
ffmpeg与ffserver的协同工作
http://blog.csdn.net/shendan00/article/details/18839837
工作流程如下:
1、 启动ffserver,配置参数
ffserver先于ffmpeg启动,它在启动的时候需要加参数-f指定其配置文件,配置文件里包含端口信息、缓冲文件配置、传送流配置(如编码方式,帧率,采样率……)。
2、 启动ffmpeg,输入流
启动ffmpeg,向缓冲文件输入数据流,数据流可以来自摄像头,也可以来自本来就存在的文件。
feed1.ffm是一个缓冲文件,fserver启动后,feed1.ffm就会自动被创建,feed1.ffm开始的部分已经写入向客户端传送流的配置信息,在feed1.ffm做缓冲用的时候,这些信息是不会被覆盖掉。
ffmpeg启动的一个关键参数就是“http://ip:port/feed1.ffm”,其中ip是运行ffserver主机的ip,如果 ffmpeg和ffserver都在同一系统中运行的话,用localhost或者127.0.0.1也行。ffmpeg启动后会与ffserver建立 一个连接(短暂的连接),通过这第一次的连接,ffmpeg从ffserver那里获取了向客户端输出流的配置,并把这些配置作为自己编码输出的配置,然后ffmpeg断开了这次连接,再次与ffserver建立连接(长久的连接),利用这个连接ffmpeg会把编码后的数据发送给ffserver。如果你观察ffserver端的输出就会发现这段时间会出现两次HTTP的200,这就是两次连接的过程。
3、连接过程
ffmpeg从摄像头获取数据后,按照输出流的编码方式编码,然后发送给ffserver,ffserver收到ffmpeg的数据后,如果网络上 没有播放的请求,就把数据写入feed1.ffm中缓存,写入时把数据加上些头信息然后分块,每块4096B(每块也有结构),当feed1.ffm的大 小到了ffserver.conf中规定的大小后,就会从文件开始(跳过头)写入,覆盖旧的数据。直到网络上有播放的请求,ffserver从feed1.ffm中读取数据,发送给客户端。

RTSPPort 8091
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -
<Feed feed1.ffm>
#File /tmp/feed1.ffm
File "/home/yingc/gcyin/test/thirdparty/output/ffmpeg/bin/feed1.ffm"
FileMaxSize 20000000K
ACL allow 127.0.0.1
</Feed>
#<Stream test.ts>
#Feed feed1.ffm
#Format mpegts
#
#AudioCodec libmp3lame
#AudioBitRate 128
#AudioChannels 2
#AudioSampleRate 44100
#AVOptionAudio flags +global_header
#
#VideoBitRate 800
#VideoFrameRate 25
#VideoSize 640x480
#VideoCodec libx264
#AVOptionVideo flags +global_header
#</Stream>
#
#<Stream test.asf>
#Feed feed1.ffm
#Format asf
#
#AudioCodec aac
#AudioBitRate 128
#AudioChannels 2
#AudioSampleRate 44100
#AVOptionAudio flags +global_header
#
#VideoBitRate 800
#VideoFrameRate 25
#VideoSize 640x480
#VideoCodec libx264
#AVOptionVideo flags +global_header
#</Stream>
<Stream test.ts>
Feed feed1.ffm
Format mpegts
</Stream>
<Stream test.avi>
Feed feed1.ffm
Format avi
</Stream>
<Stream test.flv>
Feed feed1.ffm
Format flv
</Stream>
<Stream test.mp4>
Format rtp
File "/home/yingc/gcyin/test/thirdparty/output/ffmpeg/bin/h.mp4"
</Stream>
<Stream test.asf>
Feed feed1.ffm
Format asf
</Stream>
<Stream stat.html>
Format status
# Only allow local people to get the status
ACL allow localhost
ACL allow 192.168.110.0 192.168.110.255
</Stream>
# Redirect index.html to the appropriate site
<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
ffmpeg+ffserver搭建流媒体服务器的更多相关文章
- Linux-Nginx+rtmp+ffmpeg搭建流媒体服务器
Nginx+rtmp+ffmpeg搭建流媒体服务器 说明: nginx搭建流媒体服务需要用到 nginx-rtmp-module 模块 具体操作步骤: 安装nginx (1)下载第三方扩展模块ngin ...
- centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)
搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master ...
- 使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
参考: 1,使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(一)http://blog.csdn.net/xdwyyan/article/details/4319 ...
- Linux 下搭建流媒体服务器
http://blog.csdn.net/huangtaishuai/article/details/9836581 ----------------------------------------- ...
- Ubuntu下使用nginx和nginx-rtmp-module搭建流媒体服务器的正确姿势
之前在使用nginx和nginx-rtmp-module搭建流媒体服务器的时候遇到一个很尴尬的问题,就是在把nginx-rtmp-module模块添加到nginx中去的时候,我最开始采取的做法是先卸载 ...
- 使用 Live555 搭建流媒体服务器
最近因为工作需要,需要搭建流媒体服务器,所以研究了一下,在此分享我的搭建过程. 搭建过程还是非常简单的! 搭建环境为Centos 7.2 64bit 一.安装gcc编译器 yum install gc ...
- nginx + rtmp 搭建流媒体服务器
一.安装nginx服务器 1.路径说明: 路径:/usr/local/src 2.下载nginx-rtmp-module (我这里的目录是在/usr/local/src/下面) cd /usr/loc ...
- obs nginx-rtmp-module搭建流媒体服务器实现直播 ding
接下来我就简单跟大家介绍一下利用nginx来搭建流媒体服务器. 我选择的是腾讯云服务器 1.下载nginx-rtmp-module: nginx-rtmp-module的官方github地址:http ...
- nginx的rtmp搭建流媒体服务器实现直播流
最近自己搞了一个用nginx的rtmp来搭建流媒体服务器,从而实现直播的过程,参考了网上很多资料,有些资料对于初学者来说比较难以理解,在此将我搭建的过程记录下来,分享给大家. 1.下载nginx-rt ...
随机推荐
- [转]VC的DDK编译环境构建
[转]VC的DDK编译环境构建 http://blog.csdn.net/skdev/article/details/1336935 1 环境状况 Windows XP SP1 NTDDK(win ...
- 前端开发规范之html编码规范
原则1.规范 .保证您的代码规范,趋html5,远xhtml,保证结构表现行为相互分离.2.简洁.保证代码的最简化,避免多余的空格.空行,保持代码的语义化,尽量使用具有语义的元素,避免使用样式属性和行 ...
- [转载]解决zabbix在configure时候遇到的问题(Ubuntu)
http://hi.baidu.com/ryq1xiuluo/item/6d37e658f1b90b13db16351d ./configure --enable-server --enable-ag ...
- C#开源大全--汇总(转)
商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...
- EasyUI 在aspx页面显示高度不正常解决办法
<body class="easyui-layout"> <form id="form1" runat="server"& ...
- 学习笔记--HashMap浅析
HashMap 实现了Map 接口,其底层以一个线性数组保存哈希表,所以它既有数组查询的高效,也有哈希存取的方便. HashMap提供了默认构造器,和有参构造器,在有参构造器中,提供了两个参数,可以对 ...
- web开发--文档下载
GOOGLE在线文档下载地址分享(GOOGLE的文档地址暂不能用了,会放在其它位置..) GOOGLE的在线文档功能好象挂掉了...等找个其它存放的位置把这些文档再上传上去... 存在GOOGLE里面 ...
- 三分--Football Goal(面积最大)
B - Football Goal Time Limit:500MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Su ...
- sqlite时间比较语法
如下: 字段 > datetime('2000-01-01 01:01:01') AND 字段 < datetime('2001-01-01 01:01:01');
- share干什么的
share到底干什么的 //--------------------打开GameServer,share中加载------------------------- .加载nBodyID //玩家的nBo ...