首先,为什么需要转码?
目前,Flash作为跨平台,跨浏览器的多媒体插件,在基于浏览器的视频直播发布应用上,仍然是不可替代的.
但它输出RTMP直播流时有个致命问题,只支持Speex或NellyMoser,不支持AAC音频编码.
即使是Flash Media Live Encoder这种应用程序仍然需要购买付费差价才能支持,不知道Adobe是处于什么考虑.
支持AAC有什么好处? 那太多了.
1.转出的HLS流可以直接被iOS/Android播放,可以使用HTML5技术在绝大多数浏览器内进行播放.
2.转出的HTTP-FLV流也可以依靠flv.js在绝大多数浏览器内进行播放,并且实时性非常好.
3.保存的录像文件可以被绝大多数播放器直接播放,speex/nellymoser很可能就无声了.
Nginx-Rtmp-Win32程序怎么实时转码?
如果是在Linux平台,Nginx-Rtmp可以直接使用exec来调用ffmpeg进行实时转码.
但是该功能原作者并没有在windows平台实现.而且,即使是在Linux平台,ffmpeg命令在处理直播型视频流时,会花很多时间进行分析.这验证影响了视频的实时性.
最新发布的v1.2版本Nginx-Rtmp-Win32,实现了内置的音频转码服务,经测试,转码流的视频与原视频几乎没有延迟.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
application live { live on; transcode on; #转码开关 transcode_appname hls; #转码后的 app name transcode_ar 44100; #转码后的采样率 transcode_ab 128000; #转码后的比特率 transcode_ac 1; #转码后的声道数 } application hls { live on; hls on; hls_path temp/hls; hls_fragment 8s; } |
目前支持任意格式的音频编码,转为LCAAC.
后期或将增加对HEAAC的支持,NVENC/NVDEC/Intel QSV硬件加速的视频转码,多分辨率输出等功能.
原创文章,转载请注明: 转载自贝壳博客