上一篇,FFmpeg&ffserver安装教程 手动安装 Mac OSX,我们讲解了如何安装FFmpeg和ffserver,但是大家愣是没看到ffserver出场,ffserver是什么,怎么和ffmpeg配合,怎么和播放器使用,一张图看懂。
简单地说,他可以将FFmpeg输入的视频feed,转换为sream广播出去,供任何播放器和浏览器观看,是不是很酷,现在就来实战下。
基础-广播本地音频
准备配置文件,ffserver.conf
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 30000
CustomLog -
NoDaemon
<Stream test.mp3>
File "~/test.mp3"
Format mp2
NoVideo
</Stream>
参数解释:
- conf根节点配置说明了服务器为本地
- 服务端口为8090
- http最大连接数
- 最大client数
- 最大带宽
- 非Daemon模式
- 使用原始log模式
- Stream节点为广播内部
- File标识本地文件地址,文件名为test.mp3
- 文件格式为mp2
- 不含有视频
以上都是比较精简的配置,方便演示。详细配置可以man ffserver
查阅。
启动ffserver
sudo ffserver -f ffserver.conf
访问音频,你可以直接使用浏览器打开,也可以使用视频软件。
http://localhost:8090/test.mp3
以上是广播本地音频的演示,可以参考这个配置完成本地视频的验证,有问题的可以留言给我。
进阶-广播实时音频
以上只是最基本的样例,现在我们来看如何利用FFmpeg实时录制音频,然后ffserver实时广播音频,达到本地或者内网的任何设备实时监听音频的目的。
ffserver配置ffserver.conf
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 30000
CustomLog -
NoDaemon
<Feed 1.ffm>
</Feed>
<Stream audioonline.wav>
Feed 1.ffm
NoVideo
</Stream>
单独解释下Feed
,是FFmpeg输出的种子,是ffserver输入的种子。
注意
:必须先启动ffserver,然后再启动FFmpeg,否则会找不到数据流源运行失败。
启动ffserver
sudo ffserver -f ffserver.conf
启动ffmpeg向ffserver提供数据流
ffmpeg -f avfoundation -i :0 http://localhost:8090/1.ffm
访问实时音频
http://localhost:8090/audioonline.wav
http://192.168.1.101:8089/audioonline.wav
本机使用localhost访问,局域网的机器可以使用静态IP访问,bingo!
高级-外网广播实时音频
以上都是本地操作,现在我们要做的是外网广播。
举个简单的场景,你的电脑或监控设备在家里,家里是拨号上网,设备在内网。需要将内网设备的视频和音频,甚至是屏幕实时播放给在外面的你,这时候你只需要一个反向代理(具有公网ip),将内网的广播端口8090转发到反向代理80端口,那么你在外网可以使用http://反向代理IP:80/test.mp3 来访问监控设备拉。
以上思路也是远程监控和远程控制的基本思路,下期我们再讲如何利用开源程序+购买公网ECS/VPS进行构建反向代理程序,实现跨网的远程监控。
本次教程结束,欢迎点击头像查看系列教程,持续更新。
广告
购买vultr ECS/VPS欢迎使用带有优惠的我的链接先注册,支持支付宝付款,以后支付时有优惠5%哦。优惠注册链接