# one_api文档 **Repository Path**: vans5/one ## Basic Information - **Project Name**: one_api文档 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-07-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 版本:6.1.7 更新时间:2018.9.27 1.options添加获取副码流分辨率的方法 2.timelapse、interval shooting拍摄时增加设置文件尾 版本:6.1.0 - 6.1.6 debug version 版本:6.0.9 更新时间:2018.8.29 1 app进入拍摄页开始录像,不停止录像的情况下关闭预览流会crash compile 'com.arashivision.minicamera:minicamera:6.0.9' 版本:6.0.8 更新时间:2018.8.29 1 change setVideoISOTopLimit from private to pubic 2.app未进入拍摄页,相机单独开启录像,app进入拍摄页点击停止录像crash 3.app未进入拍摄页,相机单独开启录像,相机因卡速不够停止录像,app收到通知后调用stopRecord后crash compile 'com.arashivision.minicamera:minicamera:6.0.10' 版本:6.0.7 更新时间:2018.8.28 1 同步相机状态 1.APP未连接相机,相机单独开启录像、IntervalShooting、Timelapse等操作,APP连接相机后要同步相机的状态 2.APP已连接相机,APP未开预览流,相机单独开启\关闭录像、IntervalShooting、Timelapse等操作,APP要同步相机的状态 3.APP已连接相机,APP开启预览流,APP端通知相机开启录像、IntervalShooting、Timelapse等操作,APP关闭预览流后,相机单独关闭录像、IntervalShooting、Timelapse等操作,APP要同步相机的状态 4.APP已连接相机,APP未开预览流,相机单独修改拍摄相关的参数,APP这边需要同步(嵌入式应该还没实现 2 新加API start/stopBulletTime sendHeartBeat 3 增加photoOption set/getVideoISOTopLimit 4 新加OneDriverInfo.PhotoOptionsConstants.FunctionMode 中burst等模式 5 动态设置ap/p2p ip addr and port 6 添加单台机器唤醒 7 compile 'com.arashivision.minicamera:minicamera:6.0.7' compile 'com.arashivision.minicamera:fastble:1.0.10' 版本:6.0.6 更新时间:2018.8.4 1 修改相机录制时,app连接stopRecord失败 版本:6.0.5 测试版本 版本:6.0.4 更新时间:2018.8.4 1 添加相机授权接口 2 移除OneCamera/OneBle 外部mRecordStart的状态限制 3 OneBle 添加requestMtu 3 ffmpeg升级到4.2.18后移除后的代码,添加到我们的sdk中 4 API文档详见git compile 'com.arashivision.arcompose:arcompose:6.0.4' compile 'com.arashivision.minicamera:minicamera:6.0.4' 版本:6.0.3 更新时间:2018.7.27 1 添加相机状态同步新接口 2 wifi连接下添加以前只在蓝牙下需要支持的功能,比如陀螺仪校正等 3 减少wifi下单路预览延时5ms 4 预览参数添加audio,目前预览audio设置为disable,直播时设置为enable 5 API文档详见git 6 compile 'com.arashivision.arcompose:arcompose:6.0.3' compile "com.arashivision.arplayer:arplayer:6.0.3" compile.arashivision.arvpreviewer:arvpreviewer:1.1.18 compile.arashivision.arveditor:arveditor:1.1.15 compile 'com.arashivision.minicamera:minicamera:6.0.3' 版本:6.0.2 更新时间:2018.7.12 1 支持单双路预览切换,陀螺仪防抖 2 添加GetFileInfoList获取文件列表及其metadata 3 同步接口全部移除,换到异步,详见api文档 4 compile 'com.arashivision.minicamera:fastble:1.0.9' compile "com.arashivision.arplayer:arplayer:6.0.2" compile 'com.arashivision.arcompose:arcompose:6.0.2' compile 'com.arashivision.minicamera:minicamera:6.0.2' 5 文档 One2Doc_6.0.2.zip OneCamera.java 1 预览 API public synchronized long startStreaming() -- one2不在使用 使用新接口(单双路兼容) public synchronized long startStreaming(final StartStreamingParam param) 2 预览双路流 2.1更新ISurfacePlayer.java public interface ISurfacePlayer { /** * 是否采用GLTarget的方式,默认使用SurfaceTexture * @return */ boolean useGLTarget(); boolean useDualStreamTarget(); /** * use dual surface in {@link DualStreamTarget} * @return true: use dual surface ,false use other */ boolean useDualSurface(); /** * dual or single stream * @return true -- dual stream false -- single stream */ boolean useDualStream(); void onCreateGLTarget(GlTarget glTarget); void onReleaseGLTarget(GlTarget glTarget); void onCreateSecGLTarget(GlTarget glTarget); void onReleaseSecGLTarget(GlTarget glTarget); void onCreateSurface(Surface surface); void onReleaseSurface(Surface surface); void onCreateSecSurface(Surface surface); void onReleaseSecSurface(Surface surface); void onCreateDualStreamTarget(DualStreamTarget target); void onReleaseDualStreamTarget(DualStreamTarget target); /** * 初始化一个Player,并设置监听 * 如果之前创建过,先释放之前的Player,再创建,再设置监听 * 因为有些播放器不能重新设置资源,只能释放后,重新创建 * */ void initPlayer(); /** * 是否在播放 * @return */ boolean isPlaying(); /** * 销毁 */ void destroy(); /** * 设置播放资源 * @param source */ void setDataSource(String source) throws Throwable; /** * 设置播放资源 * @param context * @param uri Uri */ void setDataSource(Context context , Uri uri) throws Throwable; /** * 设置播放资源 * @param fd 文件描述符 */ void setDataSource(FileDescriptor fd) throws Throwable; /** * 设置播放资源 * @param fd 文件描述符 * @param offset 偏移量 * @param length 长度 */ void setDataSource(FileDescriptor fd, long offset, long length) throws Throwable; /** * 开始 */ void start(); /** * 停止 */ void stop(); /** * 设置是否循环播放 * @param looping */ void setLooping(boolean looping); /** * seekTo * @param pos */ void seekTo(int pos); /** * 获取播放总时长 * @return */ long getDuration(); /** * 获取当前位置 * @return */ int getCurrentPosition(); /** * 暂停 */ void pause(); /** * 恢复 */ void resume(); /** * 设置音量 * @param volume */ void setVolume(float volume); /** * 获取音量 * @return */ float getVolume(); /** * 获取当前帧的视频的陀螺仪数据 * @return */ String getGyro(); /** * 获取背景音乐控制器 * @return */ IBGMController getBGMController(); /** * 设置播放速度 * @param speed */ void setPlaybackSpeed(double speed); /** * 设置状态发生改改的监听 * @param listener */ void setOnStateChangedListener(OnStateChangedListener listener); /** * 设置异常监听 * @param listener */ void setOnErrorListener(OnErrorListener listener); /** * 设置Prepared的状态监听 * @param listener */ void setOnPreparedListener(OnPreparedListener listener); /** * 设置seekto 完成监听 * @param listener */ void setOnSeekCompleteListener(OnSeekCompleteListener listener); /** * 设置播放完成的监听 * @param listener */ void setOnCompletionListener(OnCompletionListener listener); /** * * @param listener */ void setOnBufferingUpdateListener(OnBufferingUpdateListener listener); /** * * @param listener */ void setOnRenderingFpsUpdateListener(OnRenderingFpsUpdateListener listener); /** * * @param listener */ void setOnRendererFpsReportListener(OnRendererFpsReportListener listener); /** * * @param key * @param value */ void setOption(String key , boolean value); /** * * @param key * @param value */ void setOption(String key , int value); /** * * @param key * @param value */ void setOption(String key , long value); /** * * @param key * @param value */ void setOption(String key , double value); /** * get the extras data return with bundle * @return */ boolean readExtras(); Bundle getExtra(); /** * * @param listener */ void setOnInfoListener(OnInfoListener listener); public interface OnStateChangedListener { void onPlaying(); void onPaused(); void onStopped(); void onPositionChanged(long position, long length); } public static interface OnErrorListener{ boolean onError(ISurfacePlayer player, int what, int extra); } public static interface OnPreparedListener{ void onPrepared(ISurfacePlayer player); } public static interface OnSeekCompleteListener{ void onSeekComplete(ISurfacePlayer player); } public static interface OnCompletionListener{ void onCompletion(ISurfacePlayer player); } public static interface OnBufferingUpdateListener{ void onBufferingUpdate(ISurfacePlayer player, int percent); } public static interface OnInfoListener{ boolean onInfo(ISurfacePlayer player, int what, int extra); } public static interface OnRenderingFpsUpdateListener{ void onRenderingFpsUpdate(ISurfacePlayer player, int fps); } public static interface OnRendererFpsReportListener{ void onRendererFpsReport(ISurfacePlayer player, double fps); } } 2.2 useDualStreamTarget返回true useDualSurface返回true @Override public boolean useDualStreamTarget() { return true; } @Override public boolean useDualSurface() { return true; } 2.3 新对象DualStreamTarget 目前支持surface模式,使用构造方法 /** * use surface * @param frameRenderCallback * @param surface * @param secSurface */ public DualStreamTarget(OnDualStreamFrameRenderCallback frameRenderCallback, Surface surface, Surface secSurface) { this.mOnFrameRenderCallback = frameRenderCallback; this.mType = Type.SURFACE; mSurface = surface; mSecSurface = secSurface; } 2.4 回调 public interface OnDualStreamFrameRenderCallback { void onDualStreamFrameRender(DualStreamTarget glTarget, DualShadowObj shadowObj); void onDualStreamSurfaceRender(DualStreamTarget glTarget, DualExtra shadowObj); } 仅需实现onDualStreamSurfaceRender onDualStreamFrameRender只需要空实现 @Override public void onDualStreamFrameRender(final DualStreamTarget dualStreamTarget, final DualStreamTarget.DualShadowObj shadowObj) { } 2.5 防抖 确保onDualStreamSurfaceRender回调同步完成,陀螺仪数据保存在 参数DualExtra中 public static class DualExtra { /** * origin pts */ private long mOriginPts; /** * gyro stabilization matrix */ private float[] mGyroMatrix; public long getOriginPts() { return mOriginPts; } public void setOriginPts(long originPts) { mOriginPts = originPts; } public float[] getGyroMatrix() { return mGyroMatrix; } public void setGyroMatrix(float[] gyroMatrix) { mGyroMatrix = gyroMatrix; } } 2.6 防抖测试接口 setPreviewDeltaNs单位为ns,需做一个滚动条 测试效果最好的值,范围暂时没定, 建议(-200ms,200ms)之间,记得转换成ns PS: 所有api详解见api 文档