2 Star 0 Fork 7

Skydroid/FPV-Player-Demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
咔一下 v3.2.2 a677d93 4个月前
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

更新日志

v3.2.2 
    文件包
    fpvplayer-v3.2.2.aar
    sky-ijkplayer-v1.1.aar
    
    更新内容
    云卓播放器:
        1.修复BUG
        2.RTSP流关闭时没有发送TEARDOWN指令问题
    
v3.1.6 
    文件包
    fpvplayer-v3.1.6.aar
    sky-ijkplayer-v1.1.aar
    
    更新内容
    1.RTMP推流功能
    2.降低拉流失败时重新拉流频率

v3.0.9 
    文件包
    fpvplayer-v3.0.9.aar
    sky-ijkplayer-v1.1.aar
    
    更新内容
    1.修复FPVPlayer 在H16上低分辨率硬解码花屏问题
    2.修复FPVPlayer 部分情况下重连不上的问题
    
v3.0.5
    文件包
    fpvplayer-v3.0.5.aar
    sky-ijkplayer-v1.1.aar
    
    更新内容
    1.FPVWidget 云卓播放器优化(运行效率,降低CPU占用)
    2.FPVReaderWidget 部分情况下宽高设置失败导致黑屏问题修复

v2.9.0
    文件包
    fpvplayer-v2.9.0.aar
    sky-ijkplayer-v1.1.aar
    
    更新内容
    1.截图功能
    2.IJKPlayer播放器优化
        a.关闭部分视频流时不释放问题
        b.修改缓存参数
    3.云卓播放器优化
        a.新增丢包策略
        b.其他优化
    4.新增串口图传播放控件(适用H12,需要配合RCSDK使用)

v2.8
优化IJKPlayer播放器
    1.RTSP流丢包时大片马赛克问题
    2.拉流时获取不到宽度高度时,部分硬解码器导致崩溃问题
    3.IJKPlayer动态链接库集成到aar
云卓播放器调整
    1.提高解码线程的优先级
    
注意*
    如果从v2.8版本以前的版本更新的,需要删除项目的.so文件,因为v2.8及以后的版本在aar中已经集成了相关的.so
    需要删除的.so:
    jniLibs
        arm64-v8a
            libijkffmpeg.so
            libijkplayer.so
            libijksdl.so
        armeabi-v7a
            libijkffmpeg.so
            libijkplayer.so
            libijksdl.so
        x86
            libijkffmpeg.so
            libijkplayer.so
            libijksdl.so
    v2.8及以后ijkplayer-java-release.aar替换为sky-ijkplayer.aar
    

v2.7.2
云卓播放器优化(处理未丢包的情况下偶尔卡顿跳帧问题)

v2.7.1
图像格式支持NV12、NV21、YV12、I420

v2.6
处理removeView(FPVWidget)后再次addView(FPVWidget)导致黑屏问题

v2.5
处理RTSP流丢包时导致大片马赛克问题

v2.4.1
删除OpenH264相关内容

v2.4
提升出图速度

v2.2
FPVPlayerVersion获取版本号

Demo 工程

下载或者克隆Git上的Android示例代码工程:https://gitee.com/skydroid/fpv-player-demo.git

空白项目集成 SDK

本指引介绍如何将 FPV-Player-Demo 中的 视频SDK包移植到用户的空白项目中

本指引中使用的 Android Studio 版本为 Android Studio Chipmunk | 2021.2.1 Patch 2

SDK所需权限
<uses-permission android:name="android.permission.INTERNET" />
  • 导入SDK AAR包

fpvplayer-v2.9.0.aar
sky-ijkplayer-v1.1.aar

将以上SDK AAR导入到项目app/libs中

  • 修改build.gradle(app) 文件

在 dependencies 项里添加SDK包

    implementation files("libs/fpvplayer-v3.2.2.aar")
    implementation files("libs/sky-ijkplayer-v1.1.aar")
  • 修改 AndroidManifest.xml 文件

参照 Demo 的 AndroidManifest.xml添加SDK 需要的最基础权限

<uses-permission android:name="android.permission.INTERNET" />
  • 网口图传播放

  • 布局文件添加控件

<com.skydroid.fpvplayer.FPVWidget
    android:id="@+id/fpvWidget"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

添加视频播放控件<com.skydroid.fpvplayer.FPVWidget/>

  • 播放视频

SDK内部会自动重连,开发者无需再关注连接状态及重连逻辑

//设置播放地址
fpvWidget?.url = "rtsp://192.168.144.108:554/stream=0"
//开始播放
fpvWidget?.start()

//停止播放
fpvWidget?.stop()
  • 播放器配置

//使用硬解
fpvWidget?.usingMediaCodec = true
//使用软解
fpvWidget?.usingMediaCodec = false

//修改播放器
PlayerType.AUTO:根据视频流自动选择播放器(默认)
PlayerType.ONLY_SKY:仅使用云卓播放器
PlayerType.ONLY_IJK:仅使用IJKPlayer播放器

fpvWidget?.playerType = PlayerType.AUTO

//修改RTSP流TCP/UDP连接方式
RtspTransport.AUTO:默认(由FFmpeg自动设置)
RtspTransport.UDP:固定UDP连接
RtspTransport.TCP:固定TCP连接

fpvWidget?.rtspTranstype = RtspTransport.AUTO

//监听状态及帧数据
fpvWidget?.onPlayerStateListener = object : OnPlayerStateListener{
            override fun onConnected() {
                
            }

            override fun onDisconnect() {
                
            }

            //在使用IJKPlayer播放器时,onReadFrame无效
            override fun onReadFrame(p0: FrameInfo?) {
                
            }

        }
        
//获取版本号
FPVPlayerVersion.getVersion()
  • 串口图传播放(适用于H12)

注意* 串口图传需要配合RCSDK使用(https://gitee.com/skydroid/rcsdk-demo)

  • 布局文件添加控件

<com.skydroid.fpvplayer.FPVReaderWidget
        android:id="@+id/fpvReaderWidget"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

添加视频播放控件<com.skydroid.fpvplayer.FPVReaderWidget/>

  • 初始化串口图传播放器

//设置解码器类型
//三体相机与双轴云台需要使用OpenH264进行软解
fpvReaderWidget.setVideoDecoderType(FPVReaderWidget.VIDEO_DECODER_TYPE_OPENH264);

//设置参数准备播放
fpvReaderWidget.start(FPVReaderWidget.VIDEO_TYPE_H264,640,360,15);

//停止播放
fpvReaderWidget?.stop()
  • 连接串口,接收串口视频数据进行播放

SDK内部会自动重连,开发者无需再关注连接状态及重连逻辑 *串口通讯部分需要引入RCSDK

//配置串口信息
pipeline = PipelineManager.INSTANCE.createSerialPipeline("/dev/ttyHS0",4000000);
pipeline.setOnCommListener(new CommListener() {

    @Override
    public void onConnectSuccess() {
        //连接串口成功
    }

    @Override
    public void onConnectFail(SkyException e) {
        //连接串口失败
    }

    @Override
    public void onDisconnect() {
        //串口断开连接
    }

    @Override
    public void onReadData(byte[] bytes) {
        //收到串口数据,发送到串口图传播放控件进行解码显示
        fpvReaderWidget.sendFrame(bytes);
    }
});


//连接串口
PipelineManager.INSTANCE.connectPipeline(pipeline);

//断开串口连接
PipelineManager.INSTANCE.disconnectPipeline(pipeline);

空文件

简介

云卓图传播放器Demo 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Android
1
https://gitee.com/skydroid/fpv-player-demo.git
git@gitee.com:skydroid/fpv-player-demo.git
skydroid
fpv-player-demo
FPV-Player-Demo
dev

搜索帮助