您的位置:首页 > 其它

ffmpeg+ffserver媒体服务搭建小记

2013-05-30 20:18 302 查看
linux pc机下的配置:

1、首先编译好ffmpeg,主要有ffmpeg、ffserver、ffplay三个主要可执行文件,具体编译这里就不详细说明了

2、准备好摄像头,作为输入文件,采集摄像头数据(当然用视频文件代替摄像头也行,不过没啥意思)

3、配置ffserver.conf文件,下面是我的配置

#基本信息设置

Port 8090

BindAddress 0.0.0.0

MaxHTTPConnections 2000

MaxClients 1000

MaxBandwidth 1000

CustomLog -

NoDaemon

#媒体流文件设置

<Feed feed1.ffm>

File /tmp/feed1.ffm

FileMaxSize 2M

ACL allow 127.0.0.1

</Feed>

#压缩为asf格式

<Stream test.asf>

Feed feed1.ffm

Format asf

VideoFrameRate 15

VideoSize 352x240

VideoBitRate 256

VideoBufferSize 40

VideoGopSize 30

StartSendOnKey

NoAudio

</Stream>

#rm格式视频

<Stream test.rm>

Feed feed1.ffm

Format rm

VideoSize 640x480

AudioBitRate 32

VideoBitRate 128

VideoFrameRate 25

VideoGopSize 25

NoAudio

</Stream>

#可以查看ffserver的启动状态

<Stream stat.html>

Format status

ACL allow localhost

</Stream>

#不起作用

<Redirect index.html>

URL http://www.ffmpeg.org/

</Redirect>

4、启动ffserver

ffserver -f /etc/ffserver.conf (假设ffserver.conf存放在etc目录下)

可以在网页输入:http://115.156.196.242:8090/stat.html查看ffserver运行状态

5、启动ffmpeg

ffmpeg -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffm

如果有采集视频的信息,说明ffmpeg运行正确

6、实时播放

ffplay播放:ffplay http://115.156.196.242:8090/test.rm

mplayer也可以播放:mplayer http://115.156.196.242:8090/test.rm

windows media player播放:文件->URL链接输入http://115.156.196.244:8090/test.asf

我试过用快播和realplayer也可以播放

arm-linux嵌入式系统下的配置(我的硬件是tiny6410的板子):

1、同样需要交叉编译好ffmpeg,主要有ffmpeg、ffserver、ffplay三个主要可执行文件,并且库文件和可执行文件打包拷贝到嵌入式系统上,具体过程这里就不详细说明了

2、准备好摄像头,作为输入文件,采集摄像头数据(当然用视频文件代替摄像头也行,不过没啥意思)

3、配置ffserver.conf文件,下面是我的配置,与物理机基本一致

#基本信息设置

Port 8090

BindAddress 0.0.0.0

MaxHTTPConnections 2000

MaxClients 1000

MaxBandwidth 1000

CustomLog -

NoDaemon

#媒体流文件设置

<Feed feed1.ffm>

File /tmp/feed1.ffm

FileMaxSize 2M

ACL allow 127.0.0.1

</Feed>

#压缩为asf格式

<Stream test.asf>

Feed feed1.ffm

Format asf

VideoFrameRate 15

VideoSize 352x240

VideoBitRate 256

VideoBufferSize 40

VideoGopSize 30

StartSendOnKey

NoAudio

</Stream>

#rm格式视频

<Stream test.rm>

Feed feed1.ffm

Format rm

AudioBitRate 32

VideoBitRate 128

VideoFrameRate 25

VideoGopSize 25

NoAudio

</Stream>

#可以查看ffserver的启动状态

<Stream stat.html>

Format status

ACL allow localhost

</Stream>

#不起作用

<Redirect index.html>

URL http://www.ffmpeg.org/

</Redirect>

4、编写运行shell文件,下面是我的shell文件

#!/bin/sh

#基本的库文件设置为全局变量

export LD_LIBRARY_PATH=/usr/local/sheryuan/ffmpeg/lib:$LD_LIBRARY_PATH

#启动ffserver

./bin/ffserver -f ffserver.conf &

#这里延时主要是为了保证ffserver完全启动后才启动ffmpeg

sleep 20

#启动ffmpeg,注意。IP用127.0.0.1,用localhost和115.156.196.244会报错

./bin/ffmpeg -f video4linux2 -i /dev/video2 http://127.0.0.1:8090/feed1.ffm &

#启动ffplay查看视频流,我的板子上ffplay有点问题,所以我用的是mplayer,如果触摸屏上显示了图像说明成功

mplayer http://115.156.196.244:8090/test.rm

./bin/ffplay http://115.156.196.244:8090/test.rm

6、远端也可以监控

另外一台linux机下ffplay播放:ffplay http://115.156.196.244:8090/test.rm

mplayer也可以播放:mplayer http://115.156.196.244:8090/test.rm

PC机下windows media player播放:文件->URL链接输入http://115.156.196.244:8090/test.asf

我试过用快播和realplayer也可以播放

感觉ARM上采集视频流播放比较滞后,不太实用,一些参数都需要自己去摸索尝试

ARM上可能出现下面错误:

Failed to resolve hostname localhost: Temporary failure in name resolution

http://localhost:8090/feed1.ffm: Input/output error

一般是启动ffmpeg出现这样的错误,肯能没用127.0.0.1,也可能是ffserver.conf视频配置参数有问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: