简单的ffmpeg广播和视频监控

         想通过远程查看家中的摄像头,查阅相关资料,通过ffmpeg和ffserver(https://trac.ffmpeg.org/wiki/ffserver)可实现.

  这里ffmpeg和ffserver可以在同一主机运行或者在不同的主机运行.在同一台主机的话,远程访问需要

将ip设置成公网,这样太麻烦.这里直接将ffserver运行在阿里云服务器上,通过ffmpeg推流到阿里云服务器,

客户端通过支持流媒体的播放器观看音视频.首先安装ffmpeg(或者下载源码并编译),在ubuntu上运行

apt-get install ffmpeg(ffplay和ffserver也会安装),默认的ffserver配置文件为/etc/ffserver.conf,这里先

不传输视频,而是拿音乐进行广播来实验.

编写一个新的配置ffserver.conf,如下

HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000

CustomLog -

<Feed feed1.ffm>
	File /tmp/feed1.ffm
	FileMaxSize 2000K
</Feed>

<Stream test.mp3>
	Feed feed1.ffm
	AudioBitRate 64
	audioSampleRate 44100
	AudioChannels 2
	Format mp2 
</Stream>


<Stream stat.html>
Format status
ACL allow 127.0.0.1
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>


<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
服务端运行

ffserver -f ffserver.conf

推流

ffmpeg -re -i  test.mp3 http://120.78.155.169:8090/feed1.ffm

播放

ffplay http://120.78.155.169:8090/test.mp3

广播可以了,直接试下传输音视频,配置如下

HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000

CustomLog -

<Feed feed1.ffm>
	File /tmp/feed2.ffm
	FileMaxSize 2000K
</Feed>

<Stream test.flv>             
    Feed feed1.ffm
    Format flv
    AudioCodec aac
    Strict -2
    AudioBitRate 128
    AudioChannels 2
    AudioSampleRate 32000
    AVOptionAudio flags +global_header
    VideoCodec libx264
    VideoBitRate 600
    VideoFrameRate 25
    VideoSize 640x480
    VideoGopSize 25
    AVOptionVideo flags +global_header
</Stream>


<Stream stat.html>
Format status
ACL allow 127.0.0.1
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>


<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
运行ffserver服务

ffserver -f ffserver.conf

推流

ffmpeg -re -i  test.flv http://120.78.155.169:8090/feed1.ffm

播放

ffplay http://120.78.155.169:8090/test.flv


直接推流摄像头

ffserver -f ffserver.conf

推流

ffmpeg -re -i  /dev/video0  http://120.78.155.169:8090/feed1.ffm

播放

ffplay http://120.78.155.169:8090/test.flv


也可以将上面几份配置写在同一个文件中,如下

HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000

CustomLog -

<Feed feed1.ffm>
	File /tmp/feed1.ffm
	FileMaxSize 2000K
</Feed>

<Feed feed2.ffm>
	File /tmp/feed2.ffm
	FileMaxSize 2000K
</Feed>

<Feed feed3.ffm>
	File /tmp/feed3.ffm
	FileMaxSize 2000K
</Feed>

<Stream test.mp3>
	Feed feed1.ffm
	AudioBitRate 64
	audioSampleRate 44100
	AudioChannels 2
	Format mp2 
</Stream>

<Stream test.flv>             
    Feed feed2.ffm
    Format flv
    AudioCodec aac
    Strict -2
    AudioBitRate 128
    AudioChannels 2
    AudioSampleRate 32000
    AVOptionAudio flags +global_header
    VideoCodec libx264
    VideoBitRate 600
    VideoFrameRate 25
    VideoSize 640x480
    VideoGopSize 25
    AVOptionVideo flags +global_header
</Stream>

<Stream camera.flv>     
    Feed feed3.ffm
    Format flv
    VideoFrameRate 25
    VideoSize 640x480        
    VideoCodec libx264
    NoAudio
</Stream>

<Stream stat.html>
Format status
ACL allow 127.0.0.1
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>


<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>


推流的时候,ffmpeg -re -i  input http://ip:8090/feedx.ffm,修改对应的feedx即可.

网页可通过ip:port/stat.html查看ffserver状态

遇到的最大问题是出现推流时出现Invalid data found when processing input错误,后面发现是公司的网络问题,换一个网络环境推流成功.

猜你喜欢

转载自blog.csdn.net/mike8825/article/details/78522243