ffmpeg+ffserver多媒体服务器开发入门
来源:互联网 发布:stc12c5a60s2编程 编辑:程序博客网 时间:2024/05/23 23:47
公司需要为Html5客户端配置多媒体服务器。主要是作为媒体server,,音频是实时来自聊天室,中间需要经过一次转码,Opus->mp3,实时转码。
研究了两周,将其中一些心得记录分享下。
1.循环播放mp3文件。
ffserver提供对外的服务请求的处理,ffmpeg作为转码的工具,即将文件或者流中的数据流转发或者转码到ffserver的磁盘文件/tmp/feed1.ffm中。ffm是ffmpeg中保存文件的一种格式,自带文件头,其实细节我们不用关系。
ffserver.conf配置如下:
HTTPPort 8999RTSPBindAddress 0.0.0.0MaxHTTPConnections 2000MaxClients 1000MaxBandwidth 1000CustomLog -<Feed feed1.ffm>File /tmp/feed1.ffmFileMaxSize 20M#ACL allow 127.0.0.1</Feed># MP3 audio<Stream str.mp3>NoVideoFeed feed1.ffmFormat mp2AudioCodec libmp3lameAudioBitRate 64AudioChannels 2AudioSampleRate 44100StartSendOnKeyAVOptionAudio flags +global_header</Stream>
ffmpeg命令如下:
./ffmpeg -re -f concat -i <(for i in {1..10000}; do echo "file '$PWD/test.mp3'"; done) http://localhost:8999/feed1.ffm
做了一个shell循环语句,循环读取文件,作用是客户端循环播放,不会中断。
无限循环不知道怎么做,但是循环1w次就是1个月了,大不了一个月重启一次。谁知道无限的shell语法的告诉我一声。
通过以上的处理就可以实现一个只提供一首mp3歌曲的mp3服务器。
如果想要做成服务器实时转发实时流,比如来自聊天室的语音数据,需要改写ffmpeg的输入模块,即从内存中获取,然后我们自己处理,比如从socket接收等。
性能的话肯定没有他们说的那么厉害,2000路,毕竟一个单线程的东西。具体性能等以后测试完后再分享。
//2015-12-30
搞了将近一个月,最后还是放弃用ffserver了。这就是一个坑,永远填不完。
缺点:
1.单线程server,扛不住大量的并发访问。是由他的IO架构决定的。他用的是poll而不是epoll
2.ffmpeg 在多线程编程上的问题。追踪源代码发现有使用static变量的情况。
3.ffmpeg转码的架构设计不够优化,想象一下,不能无限开启线程来转码吧。
...
最后解决方案:
自己开发,一周搞定。
- ffmpeg+ffserver多媒体服务器开发入门
- ffmpeg+ffserver搭建流媒体服务器
- ffmpeg+ffserver配置直播服务器
- ffmpeg+ffserver搭建流媒体服务器
- ffmpeg+ffserver搭建流媒体服务器
- ffmpeg+ffserver 搭建流媒体服务器
- ffmpeg+ffserver搭建流媒体服务器
- ffmpeg+ffserver搭建流媒体服务器
- ffmpeg+ffserver搭建流媒体服务器
- ffmpeg+ffserver搭建流媒体服务器
- ffmpeg ffserver 作为 rtsp 服务器
- ffmpeg+ffserver搭建流媒体服务器
- ffserver联合ffmpeg建立媒体服务器
- ffserver联合ffmpeg建立媒体服务器
- ffserver联合ffmpeg建立媒体服务器
- [转]ffserver联合ffmpeg建立媒体服务器
- ffserver联合ffmpeg建立媒体服务器
- ffmpeg+ffserver
- SlickEdit 2014 V19 入门笔记
- 【Machine Learning】5.正则化
- hdu 2546 饭卡
- 首次进入带有EditText的activity时不启动软键盘
- 远程桌面连接教程(teamview&向日葵).doc
- ffmpeg+ffserver多媒体服务器开发入门
- c++ new new[]和 delete delete[] 问题
- 安卓系统--修改常用参数
- 自己在项目管理中总结的 APP 开发流程(适用于创业项目快速迭代)
- img div之间差3px
- Hadoop问题集锦
- AFNetworking最新版本与NSFileManager自制缓存
- nyoj301递推求值【矩阵快速幂】
- 【Android】——开发过程中各个目录的意义