好多开发者纠结,RTSP流播放,到底是用开源的VLC Media Player还是大牛直播SDK的SmartPlayer?针对此,本文做个简单的技术探讨,方便开发者根据实际需要,做适合自己场景的选择:
VLC Media Player
使用VLC Media Player播放RTSP流视频是一个简单且直接的过程。VLC Media Player是一款功能强大且开源的跨平台多媒体播放器,支持多种音频和视频格式以及流媒体协议,包括RTSP。以下是详细的步骤说明:
1. 安装VLC Media Player
首先,确保你的Windows系统上已经安装了VLC Media Player。如果尚未安装,可以从VLC官方网站或其他可信赖的软件下载平台下载并安装。
2. 打开VLC Media Player
双击桌面上的“VLC media player”图标,或者通过开始菜单中的快捷方式打开VLC Media Player。
3. 打开网络串流
在VLC Media Player的顶部菜单栏中,选择“媒体”(Media)选项。然后,在下拉菜单中选择“打开网络串流”(Open Network Stream),或者直接按快捷键“Ctrl N”。
4. 输入RTSP URL
在弹出的“打开媒体”窗口中,你会看到一个文本输入框。在这个输入框中,输入你想要播放的RTSP流的URL。这个URL通常由流媒体服务或内容提供商提供,格式通常为rtsp://url_ip_address:port_number/mount_point
。例如:rtsp://192.168.0.101:8554/stream1
。
5. 配置选项(可选)
如果你需要配置其他选项,如字幕、缓存大小等,可以在“打开媒体”窗口的底部选项卡中进行设置。但对于大多数直播流来说,默认设置通常就足够了。
6. 播放RTSP流
输入URL并配置好选项后,点击窗口右下角的“播放”(Play)按钮。VLC Media Player将开始连接到RTSP流,并在连接成功后开始播放视频。
SmartPlayer
SmartPlayer是大牛直播SDK开发的跨平台低延迟播放器,始于2015年,好多场景已慢慢从点播模式到直播过渡,大家对RTSP直播延迟要求越来越高,所以有了全自研内核的SmartPlayer,经过多年迭代,目前支持的功能如下:
- [支持播放协议]RTSP毫秒级延迟;
- [多实例播放]支持多实例播放;
- [事件回调]支持网络状态、buffer状态等回调;
- [视频格式]H.265,H.264;
- [音频格式]支持AAC/PCMA/PCMU;
- [H.264/H.265软解码]支持H.264/H.265软解;
- [H.264硬解码]Windows/Android/iOS支持H.264硬解;
- [H.265硬解]Windows/Android/iOS支持H.265硬解;
- [H.264/H.265硬解码]Android支持设置Surface模式硬解和普通模式硬解码;
- [缓冲时间设置]支持buffer time设置;
- [首屏秒开]支持首屏秒开模式;
- [低延迟模式]支持类似于线上娃娃机等直播方案的超低延迟模式设置;
- [复杂网络处理]支持断网重连等各种网络环境自动适配;
- [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
- [音视频多种render机制]Android平台,视频:surfaceview/OpenGL ES,音频:AudioTrack/OpenSL ES;
- [实时静音]支持播放过程中,实时静音/取消静音;
- [实时快照]支持播放过程中截取当前播放画面;
- [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
- [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
- [渲染镜像]支持水平反转、垂直反转模式设置;
- [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
- [ARGB叠加]Windows平台支持ARGB图像叠加到显示视频;
- [解码前视频数据回调]支持H.264/H.265数据回调;
- [解码后视频数据回调]支持解码后YUV/RGB数据回调;
- [解码后视频数据缩放回调]Windows平台支持指定回调图像大小的接口(可以对原视图像缩放后再回调到上层);
- [解码前音频数据回调]支持AAC/PCMA/PCMU数据回调;
- [音视频自适应]支持播放过程中,音视频信息改变后自适应;
- [扩展录像功能]支持RTSP/RTMP H.264、扩展H.265流录制,支持PCMA/PCMU转AAC后录制,支持设置只录制音频或视频等。
VLC还是SmartPlayer?
废话不多说,先上图,同时播放海康2560*1440分辨率8M码率的流数据(海康摄像头对着手机计时器),效果如下,可以看到,SmartPlayer的延迟大概220毫秒,VLC的延迟大概1.4秒,如果是做平衡操控等场景,vlc的延迟延迟超过1秒,已无法满足操控类低延迟场景:
我们之前blog写过RTSP直播播放开发设计思路,总结下来如下:
1. 低延迟:大多数RTSP的播放都面向直播场景,所以,如果延迟过大,严重影响体验,所以,低延迟是衡量一个好的RTSP播放器非常重要的指标,目前大牛直播SDK的RTSP直播播放延迟比开源播放器更优异,而且长时间运行下,不会造成延迟累积;
2. 音视频同步处理:有些播放器为了追求低延迟,甚至不做音视频同步,拿到audio video直接播放,导致a/v不同步,还有就是时间戳乱跳等各种问题,大牛直播SDK提供的播放器,具备好的时间戳同步和异常时间戳矫正机制;
3. 支持多实例:大牛直播SDK提供的播放器支持同时播放多路音视频数据,比如4-8-9窗口,大多开源播放器对多实例支持不太友好;
4. 支持buffer time设置:在一些有网络抖动的场景,播放器需要支持buffer time设置,一般来说,以毫秒计,开源播放器对此支持不够友好;
5. TCP/UDP模式设定、自动切换:考虑到好多服务器仅支持TCP或UDP模式,一个好的RTSP播放器需要支持TCP/UDP模式设置,如链接不支持TCP或UDP,大牛直播SDK可自动切换,,开源播放器不具备自动切换TCP/UDP能力;
6. 实时静音:比如,多窗口播放RTSP流,如果每个audio都播放出来,体验非常不好,所以实时静音功能非常必要,开源播放器不具备实时静音功能;
7. 视频view旋转:好多摄像头由于安装限制,导致图像倒置,所以一个好的RTSP播放器应该支持如视频view实时旋转(0° 90° 180° 270°)、水平反转、垂直反转,开源播放器不具备此功能;
8. 支持解码后audio/video数据输出:大牛直播SDK接触到好多开发者,希望能在播放的同时,获取到YUV或RGB数据,进行人脸匹配等算法分析,开源播放器不具备此功能;
9. 实时快照:感兴趣或重要的画面,实时截取下来非常必要,一般播放器不具备快照能力,开源播放器不具备此功能;
10. 网络抖动处理(如断网重连):稳定的网络处理机制、支持如断网重连等,开源播放器对网络异常处理支持较差;
11. 长期运行稳定性:不同于市面上的开源播放器,大牛直播SDK提供的Windows平台RTSP直播播放SDK适用于数天长时间运行,开源播放器对长时间运行稳定性支持较差;
12. log信息记录:整体流程机制记录到LOG文件,确保出问题时,有据可依,开源播放器几无log记录。
13. 实时下载速度反馈:大牛直播SDK提供音视频流实时下载回调,并可设置回调时间间隔,确保实时下载速度反馈,以此来监听网络状态,开源播放器不具备此能力;
14. 异常状态处理、Event状态回调:如播放的过程中,断网、网络抖动、等各种场景,大牛直播SDK提供的播放器可实时回调相关状态,确保上层模块感知处理,开源播放器对此支持不好;
15. 关键帧/全帧播放实时切换:特别是播放多路画面的时候,如果路数过多,全部解码、绘制,系统资源占用会加大,如果能灵活的处理,可以随时只播放关键帧,全帧播放切换,对系统性能要求大幅降低。
总结
通过上述VLC Media Player和SmartPlayer两个播放器的功能说明和技术比较,相信大家很容易做出自己的选择,如果是点播需求,VLC Media Player足够用了,如果是跨平台超低延迟的直播诉求,可以试试SmartPlayer,更能满足低延迟技术诉求。以上抛砖引玉,感兴趣的开发者,可以单独跟我沟通交流。