在使用flash推流的时候使用的demo一般是参考的如下地址:
https://young-cowboy.github.io/gallery/rtmp_client/index.html,网页界面如下:
这个地址配置简单,用来做flash的测试推流感觉很方便,不过使用这个网页推出来的问题是使用的视频编码默认是flv1,现在主流常见视频编码使用的基本是H264,音频的编码为nellymoser,一般主要的音频编码使用为AAC。这种推出来的流会遇到一些很多的问题,比如有的HLS就播放不了,或者CDN终端用户无法正常观看流等。
音频编码在这里无法修改,flash SDK在这方面没有提供修改的接口,只能依靠CDN厂商后端进行音频的编码转换,毕竟HLS的播放目前基本只支持AAC和MP3.
这里主要提供一下如何修改flv1编码为H264的修改方式以及其他的一些问题:
原始的github代码为:
https://github.com/chxj1992/rtmp-streamer
在其中有H264的setting相关的部分,请把这部分代码打开
这里的setProfileLevel,支持的参数为字符串,所以这里要修改为
h264setting.setProfileLevel(H264Profile.MAIN, “4”);
这段代码也打开,然后下载flexsdk进行重新编译。
https://www.adobe.com/devnet/flex/flex-sdk-download.html
使用4.6编译即可,安装好flexsdk后,进入bin目录,使用编译命令如下:
mxmlc demo.as
注意flexsdk依赖JRE/JDK,并且依赖的是32位的版本,否则会提示jvm.dll无法加载的错误,安装好JDK后配置好JAVA_HOME,flash SDK可以根据该环境变量找到JAVA的安装目录。
按上述代码修改后,就可以使用H264推流了,不过还有个小问题是声音不连续,无法提供稳定的音频流,主要原因是对麦克风的静音检测设置过高,导致检测为静音而不提供音频的输出。
Flash SDK提供了另外一个设置的接口:
setSilenceLevel(silenceLevel:Number,timeout:int = -1):void
设置可认定为有声的最低音量输入水平,以及实际静音前需经历的无声时间长度(可选)。
在demo的actionscript中继续添加如下的代码:
mic.setSilenceLevel(0, 5); 0表示将检测设置到最低,这样就会有不断的音频流输出了。
https://github.com/chxj1992/rtmp-streamer
https://www.cnblogs.com/xiaoniuzai/p/7129036.html
https://blog.csdn.net/leixiaohua1020/article/details/43936141
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。