简单的ffmpeg广播和视频监控

来源:互联网 发布:软件开发设计方案模板 编辑:程序博客网 时间:2024/05/20 09:09

         想通过远程查看家中的摄像头,查阅相关资料,通过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 8090HTTPBindAddress 0.0.0.0MaxHTTPConnections 2000MaxClients 1000MaxBandwidth 1000CustomLog -<Feed feed1.ffm>File /tmp/feed1.ffmFileMaxSize 2000K</Feed><Stream test.mp3>Feed feed1.ffmAudioBitRate 64audioSampleRate 44100AudioChannels 2Format mp2 </Stream><Stream stat.html>Format statusACL allow 127.0.0.1ACL allow localhostACL 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 8090HTTPBindAddress 0.0.0.0MaxHTTPConnections 2000MaxClients 1000MaxBandwidth 1000CustomLog -<Feed feed1.ffm>File /tmp/feed2.ffmFileMaxSize 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 statusACL allow 127.0.0.1ACL allow localhostACL 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 8090HTTPBindAddress 0.0.0.0MaxHTTPConnections 2000MaxClients 1000MaxBandwidth 1000CustomLog -<Feed feed1.ffm>File /tmp/feed1.ffmFileMaxSize 2000K</Feed><Feed feed2.ffm>File /tmp/feed2.ffmFileMaxSize 2000K</Feed><Feed feed3.ffm>File /tmp/feed3.ffmFileMaxSize 2000K</Feed><Stream test.mp3>Feed feed1.ffmAudioBitRate 64audioSampleRate 44100AudioChannels 2Format 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 statusACL allow 127.0.0.1ACL allow localhostACL 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错误,后面发现是公司的网络问题,换一个网络环境推流成功.

阅读全文
0 0
原创粉丝点击