音视频数据回调

更新时间: 2021/11/04 13:59:27

播放器提供音频数据和视频数据回调功能,第三方可以使用该数据进行自定义视频渲染显示和自定义音频播放、混音、混屏等功能。

音频数据回调

首先设置音频回调数据参数,然后设置音频数据回调监听,在回调中会有音频数据输出。

API原型

    /**
     * 配置PCM回调数据的参数信息,需要在prepare前调用
     *
     * @param config 配置参数
     * @return 非0表示失败
     */
    public abstract int setAudioPcmDataConfig(NEAudioPcmConfig config);
    /**
     * 注册获取音频帧数据的回调,用户需要实现回调函数OnAudioFrameFilterListener来接收音频帧
     * 只支持软件解码
     * @param listener 回调的结果
     * @return < 0 注册失败
     */
    public abstract int setOnAudioFrameFilterListener(OnAudioFrameFilterListener listener);
    /**
     * 音频数据的回调
     */
    public interface OnAudioFrameFilterListener {
        /**
         * 回调的结果
         * @param audioRawData 音频数据结构,包含音频数据以及采样率、通道数等参数
         */
        void onAudioFrameFilter(NEAudioRawData audioRawData);
    }

参数说明

参数 类型 说明
config NEAudioPcmConfig 音频回调数据的配置参数
audioRawData NEAudioRawData 回调的音频数据

示例

        player.setAudioPcmDataConfig(new NEAudioPcmConfig(-1, -1));
        player.setOnAudioFrameFilterListener(onAudioFrameFilterListener);
        private NELivePlayer.OnAudioFrameFilterListener onAudioFrameFilterListener = new NELivePlayer.OnAudioFrameFilterListener() {
             @Override
             public void onAudioFrameFilter(final NELivePlayer.NEAudioRawData audioRawData) {
                //自定义音频数据操作

             }
        }

视频数据回调

通过设置视频数据回调监听,在回调中会有视频数据输出。

API原型

    /**
     * 注册获取视频帧数据的回调,用户需要实现回调函数OnVideoFrameFilterListener来接收视频帧
     * 只支持软件解码
     * @param format 回调的视频数据格式,例如NELP_YUV420
     * @param listener 回调的结果
     * @return < 0 注册失败
     */
    public abstract int setOnVideoFrameFilterListener(int format, OnVideoFrameFilterListener listener);
    /**
     * 视频数据的回调
     */
    public interface OnVideoFrameFilterListener {
        /**
         * 回调的结果
         * @param videoRawData 视频数据结构,包含视频数据以及宽高等参数
         */
        void onVideoFrameFilter(NEVideoRawData videoRawData);
    }

参数说明

参数 类型 说明
format int 目前只支持设置NELivePlayer.NELP_YUV420
videoRawData NEVideoRawData 回调的视频数据

示例

    player.setOnVideoFrameFilterListener(NELivePlayer.NELP_YUV420, onVideoFrameFilterListener);
    private NELivePlayer.OnVideoFrameFilterListener onVideoFrameFilterListener = new NELivePlayer.OnVideoFrameFilterListener() {
        @Override
        public void onVideoFrameFilter(final NELivePlayer.NEVideoRawData videoRawData) {
            //自定义视频数据操作

        }
    };

多视频同步

实现多个带有SEI时间戳信息的视频流的同步播放。

API原型

    /**
     * 将当前播放器实例的时钟跟目标播放器同步起来。
     * 开启该功能需要保证两个流中均存在时间基准一致的同步时间戳信息,
     * 当前播放器的播放进度将以同步时间戳信息为基准同步到目标播放器。
     *
     * 该接口需要在调用prepare接口前调用,否则无效。
     * 调用该接口后,将自动开启同步时间戳解析功能。
     *
     * @param player 需要同步到的播放器实例。
     */
    public abstract void syncClockTo(NELivePlayer player);
    
    /**
     * 获取是否开启同步时间戳、同步内容信息回调
     * 如果使用同步时间戳、同步内容信息回调相关功能,需要先打开该开关
     *  {@link NELivePlayer#setOnCurrentSyncContentListener}
     *  {@link NELivePlayer#getCurrentSyncTimestamp}
     *  {@link NELivePlayer#setOnCurrentSyncTimestampListener}
     * @return 是否设置成功
     */
    public abstract boolean setSyncOpen(boolean isOpen);

参数说明

参数 类型 说明
player NELivePlayer 需要同步到的主播放器实例

示例

使用该功能时,需要同时开启主播放器的同步时间戳功能。

    playerMaster.setSyncOpen(true);
    playerSlave.syncClockTo(playerMaster);
此文档是否对你有帮助?
有帮助
去反馈
  • 音频数据回调
  • API原型
  • 参数说明
  • 示例
  • 视频数据回调
  • API原型
  • 参数说明
  • 示例
  • 多视频同步
  • API原型
  • 参数说明
  • 示例