OpenHarmony多媒体-ijkplayer

简介

ijkplayer是OpenHarmony环境下可用的一款基于FFmpeg的视频播放器。

演示

编译运行

1、通过IDE工具下载依赖SDK,Tools->SDK Manager->OpenHarmony SDK 把native选项勾上下载,API版本>=9

2、开发板选择RK3568,ROM下载地址. 选择开发板类型是rk3568,请使用最新的版本

3、使用git clone下载源码,不要直接通过gitee网页的方式下载

下载安装

ohpm install @ohos/ijkplayer

使用说明

   import { IjkMediaPlayer } from "@ohos/ijkplayer";
   import type { OnPreparedListener } from "@ohos/ijkplayer";
   import type { OnVideoSizeChangedListener } from "@ohos/ijkplayer";
   import type { OnCompletionListener } from "@ohos/ijkplayer";
   import type { OnBufferingUpdateListener } from "@ohos/ijkplayer";
   import type { OnErrorListener } from "@ohos/ijkplayer";
   import type { OnInfoListener } from "@ohos/ijkplayer";
   import type { OnSeekCompleteListener } from "@ohos/ijkplayer";
   import { LogUtils } from "@ohos/ijkplayer";

在UI中配置XComponent控件

    XComponent({
      id: 'xcomponentId',
      type: 'surface',
      libraryname: 'ijkplayer_napi'
    })
    .onLoad((context) => {
      this.initDelayPlay(context);
     })
     .onDestroy(() => {
     })
     .width('100%')
     .aspectRatio(this.aspRatio)

播放

    let mIjkMediaPlayer = IjkMediaPlayer.getInstance();
    // 设置XComponent回调的context
    mIjkMediaPlayer.setContext(this.mContext);
    // 设置debug模式
    mIjkMediaPlayer.setDebug(true);
    // 初始化配置
    mIjkMediaPlayer.native_setup();
    // 设置视频源
    mIjkMediaPlayer.setDataSource(url); 
    // 设置视频源http请求头
    let headers =  new Map([
      ["user_agent", "Mozilla/5.0 BiliDroid/7.30.0 (bbcallen@gmail.com)"],
      ["referer", "https://www.bilibili.com"]
    ]);
    mIjkMediaPlayer.setDataSourceHeader(headers);
    // 使用精确寻帧 例如,拖动播放后,会寻找最近的关键帧进行播放,很有可能关键帧的位置不是拖动后的位置,而是较前的位置.可以设置这个参数来解决问题
    mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", "1");
    // 预读数据的缓冲区大小
    mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-buffer-size", "102400");
    // 停止预读的最小帧数
    mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", "100");
    // 启动预加载
    mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", "1");
    // 设置无缓冲,这是播放器的缓冲区,有数据就播放
    mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", "0");
    // 跳帧处理,放CPU处理较慢时,进行跳帧处理,保证播放流程,画面和声音同步
    mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", "5");
    // 最大缓冲cache是3s, 有时候网络波动,会突然在短时间内收到好几秒的数据
    // 因此需要播放器丢包,才不会累积延时
    // 这个和第三个参数packet-buffering无关。
    mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max_cached_duration", "3000");
    // 无限制收流
    mIjkMediaPlaye
<think>我们遇到了一个错误:尝试重命名一个不存在的镜像。错误信息表明本地没有这个镜像。用户之前可能已经尝试过拉取这个镜像,但失败了(如上一个问题所示),所以现在本地没有这个镜像,因此无法重命名。解决方案步骤:1.首先需要确认该镜像确实存在于本地。使用 `docker images`查看。2.如果不存在,需要先拉取镜像。但之前拉取失败,所以可能需要先解决拉取问题(如上一个回答所述)。3.如果镜像存在,但名称输入有误,需要修正名称。根据错误信息,当前本地没有该镜像,因此我们需要先拉取镜像,或者确认镜像的正确名称。具体步骤:-检查镜像名称是否正确(包括大小写、特殊字符等) -尝试拉取镜像:`dockerpull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0`-如果拉取失败,参考上一个问题的解决方案(登录仓库、检查网络、确认仓库是否存在等) -拉取成功后,再执行重命名操作如果用户已经确认镜像不存在,并且拉取失败,那么可能需要从其他途径获取镜像(如构建镜像)。因此,回答将包含以下内容:1.错误原因分析:镜像不存在于本地。2.解决步骤:先拉取镜像,再重命名。3.如果拉取失败的处理建议。注意:由于用户是在Windows的cmd下操作,命令格式相同。同时,根据规则,最后必须提出3-5个相关问题。</think>### Docker镜像重命名错误分析与解决 您遇到的错误 `Error response from daemon: No such image` 表明Docker在本地找不到指定的原镜像。以下是详细分析和解决方案: #### 错误原因: 1. **镜像不存在于本地**: - 您尚未拉取 `swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0` 到本地 - 或镜像名称/标签输入有误(大小写、特殊字符等) 2. **镜像列表验证**: ```bash docker images # 检查完整镜像列表 docker images | findstr "openharmony" # Windows搜索 ``` #### 解决方案: 1. **先拉取镜像再重命名**: ```bash docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0 docker tag swr...1.0.0 openharmony-docker:1.0.0 ``` 2. **使用镜像ID替代名称**(如果已存在其他标签): ```bash # 获取镜像ID docker images # 通过ID重命名 docker tag e530b8d2 openharmony-docker:1.0.0 ``` 3. **名称修正技巧**: - 使用Tab键自动补全(PowerShell/CMD支持) - 复制粘贴镜像全称避免手误 - 检查特殊字符:`/`、`:`、`.` 需完整保留 4. **仓库登录验证**(如果是私有镜像): ```bash docker login swr.cn-south-1.myhuaweicloud.com ``` #### 操作验证: ```bash docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" ``` 应显示新旧两个镜像标签指向相同镜像ID
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值