首页 > 其他分享 >Android平台RTSP|RTMP播放器之视音频效果设置

Android平台RTSP|RTMP播放器之视音频效果设置

时间:2024-09-05 17:56:08浏览次数:14  
标签:return int RTSP param 视音频 RTMP 支持 handle surface

RTSP|RTMP播放器模块是大牛直播SDK的SmartMediaKit下非常优异的子产品,功能丰富、性能优异,毫秒级超低延迟,支持Windows、Linux(x86_64|aarch64架构)、Android、iOS平台。

先看demo主界面,可以通过界面,做基础的设置,比如旋转、镜像等操作。

Android平台RTSP|RTMP播放器之视音频效果设置_Android RTMP播放器

下面就视音频效果,做个大概的介绍。

视频填充效果:支持按照比例显示,或整体填充,设计到的接口如下:

/*
 * SmartPlayerJniV2.java
 *
 * Author: daniusdk.com
 * Created by DaniuLive on 2015/09/26.
 * Copyright © 2014~2024 DaniuLive. All rights reserved.
 */

/**
 * 设置视频画面的填充模式,如填充整个view、等比例填充view,如不设置,默认填充整个view
 * @param handle: return value from SmartPlayerOpen()
 * @param render_scale_mode 0: 填充整个view; 1: 等比例填充view, 默认值是0
 * @return {0} if successful
 */
public native int SmartPlayerSetRenderScaleMode(long handle, int render_scale_mode);

旋转:支持0°、90°、180°和270°四个视频画面渲染角度设置:

/**
 * 设置顺时针旋转, 注意除了0度之外, 其他角度都会额外消耗性能
 *
 * @param handle: return value from SmartPlayerOpen()
 *
 * @param degress: 当前支持 0度,90度, 180度, 270度 旋转
 *
 * @return {0} if successful
 */
public native int SmartPlayerSetRotation(long handle, int degress);

镜像:支持无镜像、水平镜像和垂直镜像三种镜像模式设置:

/**
 * 设置视频垂直反转
 *
 * @param handle: return value from SmartPlayerOpen()
 *
 * @param is_flip: 0: 不反转, 1: 反转
 *
 * @return {0} if successful
 */
public native int SmartPlayerSetFlipVertical(long handle, int is_flip);

/**
 * 设置视频水平反转
 *
 * @param handle: return value from SmartPlayerOpen()
 *
 * @param is_flip: 0: 不反转, 1: 反转
 *
 * @return {0} if successful
 */
public native int SmartPlayerSetFlipHorizontal(long handle, int is_flip);

渲染模式:支持SurfaceView和TextureView模式,支持设置hardware render模式:

if (SURFACE_TYPE_SURFACE_VIEW == surface_type_) {
	if (sSurfaceView != null && sSurfaceView instanceof SurfaceView && ((SurfaceView)sSurfaceView).getHolder() != null)
		surface = ((SurfaceView)sSurfaceView).getHolder().getSurface();
}else if (SURFACE_TYPE_TEXTURE_VIEW == surface_type_) {
	if (null == texture_view_surface_) {
		if (sSurfaceView != null && sSurfaceView instanceof TextureView && ((TextureView) sSurfaceView).getSurfaceTexture() != null)
			texture_view_surface_ = new Surface(((TextureView) sSurfaceView).getSurfaceTexture());
	}

	surface = texture_view_surface_;
} 

libPlayer.SetSurface(playerHandle, surface, surface_codec_media_color_format, disable_codec_render_surface_, disable_sdk_render_surface_);
...
if (isHardwareDecoder && is_enable_hardware_render_mode) {
	libPlayer.SmartPlayerSetHWRenderMode(playerHandle, 1);
}

设置播放音量:播放音量可以播放过程中动态调整,或者一开始就静音:

/**
 * Set mute or not(设置实时静音)
 *
 * @param handle: return value from SmartPlayerOpen()
 *
 * @param is_mute: if with 1:mute, if with 0: does not mute
 *
 * @return {0} if successful
 */
public native int SmartPlayerSetMute(long handle, int is_mute);

/**
 * 设置播放音量
 *
 * @param handle: return value from SmartPlayerOpen()
 *
 * @param volume: 范围是[0, 100], 0是静音,100是最大音量, 默认是100
 *
 * @return {0} if successful
 */
public native int SmartPlayerSetAudioVolume(long handle, int volume);

设置音频输出模式:支持AudioTrack、OpenSL ES模式,一般来说考虑到通用性,建议使用AudioTrack模式。

/**
 * Set AudioOutput Type(设置audio输出类型)
 *
 * @param handle: return value from SmartPlayerOpen()
 *
 * @param use_audiotrack:
 *
 * <pre> NOTE: if use_audiotrack with 0: it will use auto-select output devices; if with 1: will use audio-track mode. </pre>
 *
 * @return {0} if successful
 */
public native int SmartPlayerSetAudioOutputType(long handle, int use_audiotrack);

总结

目前Android平台的SmartPlayer主要设计的功能如下:

  • 音频:AAC/Speex(RTMP)/PCMA/PCMU;
  • 视频:H.264、H.265;
  • 播放协议:RTSP|RTMP;
  • 支持纯音频、纯视频、音视频播放;
  • 支持多实例播放;
  • 支持软解码,特定机型硬解码;
  • 支持RTSP TCP、UDP模式设置;
  • 支持RTSP TCP、UDP模式自动切换;
  • 支持RTSP超时时间设置,单位:秒;
  • 支持buffer时间设置,单位:毫秒;
  • 支持超低延迟模式;
  • 支持断网自动重连、视频追赶,支持buffer状态等回调;
  • 支持视频view实时旋转(0° 90° 180° 270°);
  • 支持视频view水平反转、垂直反转;
  • 支持Surfaceview/OpenGL ES/TextureView绘制;
  • 支持视频画面填充模式设置;
  • 音频支持AudioTrack、OpenSL ES模式;
  • 支持jpeg、png实时截图;
  • 支持实时音量调节;
  • 支持解码前音视频数据回调;
  • 支持解码后YUV/RGB数据回调;
  • 支持Enhanced RTMP;
  • 支持扩展录像功能;
  • 支持Android 5.1及以上版本。

一个好的RTMP或RTSP播放器,不仅是需要功能完善,还需要有非常优异的性能,特别是多实例播放,资源占有也是考量的一个重要因素,其次,直播特别是和操控相关的场景,都需要极致的低延迟才行,真是应了那句话,做播放器容易,做个好的播放器,真的太难了!以上抛砖引玉,感兴趣的开发者,可以单独跟我沟通探讨。

标签:return,int,RTSP,param,视音频,RTMP,支持,handle,surface
From: https://blog.51cto.com/daniusdk/11929553

相关文章

  • Android平台RTSP|RTMP播放器(SmartPlayer)集成必读
    技术背景好多开发者拿到大牛直播SDK的Android平台RTSP、RTMP播放模块,基本上不看说明,测试后,就直接集成到自己系统了。不得不说,我们的模块虽然接口很多,功能支持全面,但是上层的demo设计逻辑确实简单,稍微有些Android开发基础的,都可以轻松处理。从高效率的角度,磨刀不误砍柴工,在模块集成......
  • OpenCV使用RTMP流
    使用RTMP流之前使用nginx进行推流sudoapt-getinstallnginxlibnginx-mod-rtmp配置文件中添加以下内容:rtmp{server{listen1935;chunk_size4096;applicationlive{liveon;recordoff;}}}Linux下安......
  • rtsp和onvif的区别和联系
    RTSP(Real-TimeStreamingProtocol)和ONVIF(OpenNetworkVideoInterfaceForum)在视频监控系统和技术标准方面各有其独特的作用和区别,同时它们之间也存在一定的联系。以下是对RTSP和ONVIF的区别和联系的详细分析:rtsp和onvif区别定义和用途:RTSP:是一种用于在互联网上控制实时多媒体流......
  • 使用LiveQing解决大疆无人机RTMP推流直播花屏,同时可以接收OBS等直播推流
    @目录1、流媒体服务搭建2、推流工具准备3、创建鉴权直播间4、获取推流地址5、配置OBS推流6、推流及播放7、获取播放地址7.1页面查看视频源地址7.2接口查询8、更多问题8.1、大疆无人机推流花屏9、RTMP推流视频直播和点播流媒体服务1、流媒体服务搭建Windows/Linux系统环境中搭......
  • 最新LiveNVR版本优化解决大疆无人机推花屏问题,实现大疆无人机RTMP推流转GB28181级联输
    @目录1、无人机推流转国标2、获取RTMP推流地址2.1、RTMP推流地址格式2.2、推流地址示例2、设备RTMP推流3、配置拉转RTMP3.1、直播流地址格式3.2、直播流地地址示例3.3、通道配置直播流地址4、配置级联到GB28181国标平台5、更多问题5.1、大疆无人机推流花屏6、非国标直播流转GB2818......
  • 基于live555开发的多线程RTSPServer轻量级流媒体服务器EasyRTSPServer开源代码及其调
    EasyRTSPServer参考live555testProg中的testOnDemandRTSPServer示例程序,将一个live555testOnDemandRTSPServer封装在一个类中,例如,我们称为ClassEasyRTSPServer,在EasyRTSPServer_Create接口调用时,我们新建一个EasyRTSPServer对象,再通过调用EasyRTSPServer_Startup接口,将EasyRTSP......
  • ZLMediaKit转码rtsp
    把摄像机的rtsp流转码播放1.启动ZLMediaKit2.执行addStreamProxy如下,stream是流ID,不要重复,可为字母数字等, 3.  rtsp://10.136.238.143/live/123这个地址可播放,如果stream变化则同步修改,vlc播放稳定4. rtmp://10.136.238.143/live/123这个地址可播放,vlc过一会掉线停止......
  • 使用mediamtx搭建RTSP流媒体服务器
    1、下载地址(运行环境:centos7下载mediamtx_v1.8.5_linux_amd64.tar.gz)https://github.com/bluenviron/mediamtx/releases 2、安装 mkdir/data/mediamtx mvmediamtx_v1.8.5_linux_amd64.tar.gz/data/mediamtx/ tar-zxvfmediamtx_v1.8.5_linux_amd64.tar.gz 3......
  • 一个简单的Rtmp推流客户端(QT录音,OpenCV摄像,FFmpeg编码推流)
            RTMP(Real-TimeMessagingProtocol)是一种实时流媒体传输协议,常用于音视频直播。        RTMP推流客户端是一种能够将音视频数据推送到直播服务器的工具。QT录音是利用Qt库实现的录音功能。OpenCV摄像是利用OpenCV库实现的对摄像头的控制和图像处理功......
  • LiveGBS流媒体平台GB/T28181功能-获取GB28181接入的海康大华宇视华为摄像头硬件NVR设
    @目录1、背景2、视频流媒体集成2.1、页面集成2.1、视频流地址播放集成3、页面集成说明3.1、直播分享页集成3.1.1、查看通道3.1.2、开启分享3.1.3、分享页面传参3.1.4、分享页面播放3.2、时间轴回放分享页集成3.3、电子地图分享页集成4、视频流地址播放集成说明4.1、获取直播流地......