1.RTMP推流方案总结
2.Ubuntu 9.10ä¸å®è£
å使ç¨ffmpegç详ç»è¿ç¨ï¼
3.Java问题 —— 解决linux AMR转MP3出现转码成功却无法播放的源码问题
RTMP推流方案总结
RTMP协议简介,其全称为Real Time Messaging Protocol,源码是源码由Adobe Systems公司为Flash播放器与服务器之间音频、视频和数据传输开发的源码私有协议。RTMP协议像一个容器,源码用于装载AMF格式的源码外贸管理源码数据或FLV中的视/音频数据,一个连接可通过不同的源码通道传输多路网络流,通道中的源码包遵循固定大小的传输规则。更多协议细节请参考《rtmp specification 1.0》。源码
RTMP服务器的源码选择有多种开源方案,如Nginx的源码rtmp插件,用于实时流推送,源码具体实现可参考另一篇博客。源码SRS(Simple RTMP Server)是源码一款国人开发的优秀开源流媒体服务器软件,使用C++开发,源码适用于直播、录播、视频客服等场景,提供丰富的接入方案和流变换功能,GitHub源码链接为:github.com/ossrs/srs。
crtmpserver是网站源码助手一款由C++语言编写的开源RTMP流媒体服务器,功能相对简单,与Flash Player的兼容性较差,但代码结构良好,适用于学习RTMP协议和服务器端编程。GitHub源码链接为:github.com/shiretu/crtm...。
livego是基于Go语言的RTMP直播服务器,Go语言为服务器性能而生,开发效率高于C/C++。GitHub源码链接为:github.com/gwuhaolin/liv...
基于Go的livego服务器解决了语言级别上的并发问题。node-rtsp-rtmp-server是zuul+源码使用Node.js实现的RTMP服务器,GitHub源码链接为:github.com/iizukanao/nod...
测试时,推荐使用大牛直播提供的推流工具,也可以使用FFmpeg进行推流。
RTMP推流器的选择同样多样,librtmp软件包含一个基本的客户端:rtmpdump,以及提供RTMP协议支持的库。FFmpeg也能实现RTMP推流,内部集成了librtmp,官方给出了muxing.c源代码示例。srs-librtmp是418的源码srs提供的一个RTMP库,可以推送H数据,但在Windows环境下存在兼容性问题。
音视频开发相关教程与资料可免费订阅QQ群:,领取学习资源。
Ubuntu 9.ä¸å®è£ å使ç¨ffmpegç详ç»è¿ç¨ï¼
ffmpegçç¼è¯ãå®è£ å使ç¨(for x,for arm)
/iminway/blog/item/bda2db4ecedb2def1.html
ææ°çffmpegå¯ä»¥éè¿svnä¸è½½ï¼SVNè¾ å©ç软件æï¼
SubVersionï¼ä» /modules/mydownloads/ï¼pile --cc=arm-linux-gcc --arch=arm --enable-gpl --disable-strip --disable-network --disable-ipv6 --disable-vhook --disable-audio-beos --disable-audio-oss --disable-mpegaudio-hp --enable-pthreads --enable-small --disable-parsers --disable-debug
#make
#make install
xä¸çldconfigä¸è½å¨armä¸è¿è¡ï¼armä¸çldconfigå·¥å ·æ¯å¨å»ºç«äº¤åç¼è¯å¨æ¶ï¼ç¼è¯glibcæ¯äº§ççï¼å¯ä»¥æ·è´å°arm-linuxä¸ã
(4) æ¬æ大é¨åå 容æ¥èªç½ç»ï¼å ¶ä¸xvid,xçåºï¼æ亲æå®è£ è¿ï¼ffmpegçé ç½®ç¼è¯for xçç®æé ç½®ï¼for armï¼æ亲æé ç½®ç¼è¯è¿ï¼å¹¶å¨xï¼armä¸å¯ç¨ï¼ç¼è¯é ç½®é½æ¯éç¨éæåºã
ffmpegä½ä¸ºåªä½æ件å¤ç软件ï¼åºæ¬ç¨æ³å¦ä¸ï¼
ffmpeg -i INPUTfile [OPTI
æç« åºå¤ï¼DIYé¨è½(/course/6_system/linux/Linuxjs//.html)
Java问题 —— 解决linux AMR转MP3出现转码成功却无法播放的问题
本文主要探讨解决在Linux环境下Java程序处理AMR文件转为MP3格式时出现的问题,即转码成功但无法播放的问题。通过博客中给出的线索,我们发现关键在于Linux环境下ffmpeg的输出文件大小不正常导致播放器无法识别。
首先,我们尝试在Linux下安装ffmpeg,11001001的源码成功使用命令将AMR文件转换为MP3格式并播放。然而,在使用编译后的Java-1.0.2.jar进行相同操作时,文件大小不增反减,且在播放过程中遇到问题。进一步分析代码后,发现是异常处理机制导致文件写入操作中断。
经过项目组老大的指引,我们通过反编译工具找到相关源代码,并确定了问题的关键点:Linux环境下生成的MP3文件大小不正常。在Windows环境下,虽然代码运行时会报错,但转化的MP3文件仍能正常播放。初步判断问题可能出在异常处理逻辑上,导致文件写入过程不完整。
为了修复这一问题,我们决定对Java-1.0.2.jar的源代码进行修改。首先,我们将原有的异常处理逻辑提取到一个独立的方法`processErrorOutput`中,确保不直接修改原始代码。接着,对`encode`方法进行修改,调用`processErrorOutput`方法来处理可能发生的错误,从而避免文件写入中断的问题。
最终的实现是通过创建一个名为`AmrToMp3Encoder`的类,继承自`Encoder`并重写`processErrorOutput`方法,屏蔽原有的异常处理逻辑。经过单元测试,我们验证了该修复方案在Linux和Windows环境下均能成功执行,且生成的MP3文件能够正常播放。
通过这一解决方案,我们证实了问题确实源于异常处理机制的缺陷,并通过代码修改成功解决了问题。实验结果表明,ffmpeg的正常运行对于文件转换至关重要,因此需要确保在Linux环境中使用正确的版本。对于有兴趣了解或需要使用该修复方案的读者,我们提供了一个简化版本的源代码下载链接,方便大家进行下载和使用。