淮南万泰电子股份有限公司|
ArkUI
5.1视频avplayer播放rtsp
鸿蒙4.1api11使用avplayer去播放rtsp视频流能够正常播放,现在要适配到5.1api18却报格式不支持的错误,目前鸿蒙5.1使用什么方式可以播放rtsp视频流?

1
1
11
浏览482 发布于2026-04-24 08:04安徽
全部评论
最多点赞
最新发布
最早发布
鹿鸣于野技术支持
1楼回复于2026-04-27 06:45 来自广东




你好报这个错误是不是缺少了什么关键配置,有没有详细的参考文档
2楼回复于2026-05-13 08:38 来自安徽
鹿鸣于野开发者您好,可以参考以下文章排查是否是三方库依赖缺失导致工程正常编译运行报错
https://developer.huawei.com/consumer/cn/forum/topic/0202194087106713089?fid=0109140870620153026
若是不能解决您的问题,麻烦请提供可运行能复现问题的最小demo或工程以及完整的hilog日志2026-05-18 07:15 来自广东
淮南万泰电子股份有限公司回复鹿鸣于野收起自动换行深色代码主题复制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 hilog from '@ohos.hilog'; const JKPLAYER_LOG_DOMAIN: number = 0xF005; const JKPLAYER_LOG_TAG: string = 'jkplayer'; @Entry @Component struct IjkVideoPlayerPage { @State aspRatio: number = 16 / 9; @State loadingVisible: Visibility = Visibility.Visible; @State currentTime: string = "00:00"; @State progressValue: number = 0; @State PROGRESS_MAX_VALUE: number = 100; private mIjkMediaPlayer: IjkMediaPlayer = IjkMediaPlayer.getInstance(); private mContext: object | undefined = undefined; //rtsp地址 private videoUrl: string = ""; build() { Column() { Text('视频播放器') .fontSize('30px') .fontColor(Color.White) .margin('20px') .fontWeight(FontWeight.Bold) .width('100%') .textAlign(TextAlign.Center) .backgroundColor(Color.Black) Stack({ alignContent: Alignment.Center }) { XComponent({ id: 'xcomponentId', type: 'surface', libraryname: 'ijkplayer_napi' }) .onLoad((context) => { this.mContext = context; if (context) { this.jkLog('XComponent onLoad, context ok, init player'); this.initDelayPlay(context); } else { this.jkLog('XComponent onLoad, context is empty'); } }) .onDestroy(() => { this.jkLog('XComponent onDestroy'); this.releasePlayer(); }) .width('100%') .aspectRatio(this.aspRatio) Text('加载中...') .fontSize('24px') .fontColor(Color.White) .visibility(this.loadingVisible) } .backgroundColor('#000000') } .width('100%') .height('100%') .backgroundColor(Color.Black) } private jkLog(msg: string): void { hilog.info(JKPLAYER_LOG_DOMAIN, JKPLAYER_LOG_TAG, '%{public}s', `jkplayer ${msg}`); } private jkLogError(msg: string): void { hilog.error(JKPLAYER_LOG_DOMAIN, JKPLAYER_LOG_TAG, '%{public}s', `jkplayer ${msg}`); } private initDelayPlay(context: object) { let that = this; this.jkLog(`initDelayPlay begin, url=${this.videoUrl}`); this.mIjkMediaPlayer.setContext(context, "xcomponentId"); this.mIjkMediaPlayer.setDebug(true); this.mIjkMediaPlayer.native_setup(); this.mIjkMediaPlayer.setDataSource(this.videoUrl); this.jkLog('setDataSource done'); let headers = new Map<string, string>([ ["user_agent", "Mozilla/5.0 BiliDroid/7.30.0 (bbcallen@gmail.com)"], ["referer", "https://www.bilibili.com"] ]); this.mIjkMediaPlayer.setDataSourceHeader(headers); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", "1"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-buffer-size", "102400"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", "100"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", "1"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", "0"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", "5"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max_cached_duration", "3000"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "infbuf", "1"); this.mIjkMediaPlayer.setScreenOnWhilePlaying(true); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "timeout", "10000000"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "connect_timeout", "10000000"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "listen_timeout", "10000000"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "addrinfo_timeout", "10000000"); this.mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "dns_cache_timeout", "10000000"); let mOnVideoSizeChangedListener: OnVideoSizeChangedListener = { onVideoSizeChanged(width: number, height: number, sar_num: number, sar_den: number) { that.aspRatio = width / height; that.jkLog(`onVideoSizeChanged width=${width} height=${height} sar_num=${sar_num} sar_den=${sar_den}`); that.hideLoadIng(); } }; this.mIjkMediaPlayer.setOnVideoSizeChangedListener(mOnVideoSizeChangedListener); let mOnPreparedListener: OnPreparedListener = { onPrepared() { let d = that.mIjkMediaPlayer.getDuration(); that.jkLog(`onPrepared durationMs=${d}`); } }; this.mIjkMediaPlayer.setOnPreparedListener(mOnPreparedListener); let mOnCompletionListener: OnCompletionListener = { onCompletion() { that.jkLog('onCompletion'); that.currentTime = that.stringForTime(that.mIjkMediaPlayer.getDuration()); that.progressValue = that.PROGRESS_MAX_VALUE; that.stop(); } }; this.mIjkMediaPlayer.setOnCompletionListener(mOnCompletionListener); let mOnBufferingUpdateListener: OnBufferingUpdateListener = { onBufferingUpdate(percent: number) { that.jkLog(`onBufferingUpdate percent=${percent}`); } }; this.mIjkMediaPlayer.setOnBufferingUpdateListener(mOnBufferingUpdateListener); let mOnSeekCompleteListener: OnSeekCompleteListener = { onSeekComplete() { that.jkLog('onSeekComplete'); that.startPlayOrResumePlay(); } }; this.mIjkMediaPlayer.setOnSeekCompleteListener(mOnSeekCompleteListener); let mOnInfoListener: OnInfoListener = { onInfo(what: number, extra: number) { that.jkLog(`onInfo what=${what} extra=${extra}`); } }; this.mIjkMediaPlayer.setOnInfoListener(mOnInfoListener); let mOnErrorListener: OnErrorListener = { onError(what: number, extra: number) { that.jkLogError(`onError what=${what} extra=${extra}`); that.hideLoadIng(); } }; this.mIjkMediaPlayer.setOnErrorListener(mOnErrorListener); this.mIjkMediaPlayer.setMessageListener(); this.jkLog('prepareAsync'); this.mIjkMediaPlayer.prepareAsync(); this.jkLog('start called after prepareAsync'); this.mIjkMediaPlayer.start(); this.jkLog(`initDelayPlay end isPlaying=${this.mIjkMediaPlayer.isPlaying()}`); } private hideLoadIng() { this.loadingVisible = Visibility.None; this.jkLog('hide loading overlay'); } private stringForTime(timeMs: number): string { let totalSeconds = Math.floor(timeMs / 1000); let minutes = Math.floor(totalSeconds / 60); let seconds = totalSeconds % 60; return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; } private stop() { if (this.mIjkMediaPlayer.isPlaying()) { this.jkLog('stop: pause (was playing)'); this.mIjkMediaPlayer.pause(); } else { this.jkLog('stop: skip pause (not playing)'); } } private startPlayOrResumePlay() { if (!this.mIjkMediaPlayer.isPlaying()) { this.jkLog('startPlayOrResumePlay: start()'); this.mIjkMediaPlayer.start(); } else { this.jkLog('startPlayOrResumePlay: already playing'); } } private releasePlayer() { try { this.jkLog('releasePlayer: stop + release'); this.mIjkMediaPlayer.stop(); this.mIjkMediaPlayer.release(); this.jkLog('releasePlayer: ok'); } catch (e) { this.jkLogError(`releasePlayer error: ${e}`); } } }这个是完整的组件demo,avplayer包是下载的
展开全部2026-05-25 06:44 来自安徽
鹿鸣于野回复淮南万泰电子股份有限公司开发者您好,当前本地运行测试您提供的demo可以播放rtsp视频源。
测试环境:API 23、DevEco Studio 6.1.0 Release
注意要通过包管理工具ohpm install的方式安装ijkplayer的依赖:ohpm i @ohos/ijkplayer。
若不能解决您的问题,欢迎再次反馈。2026-05-27 01:59 来自广东
展开剩余6条回复
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
- 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
- 如您发布的内容为转载内容,请注明内容来源。
我要提问题
相关推荐
换一批
1
HarmonyOS AVPlayer 如何获取手机相册中的视频 (API12+)
2
HarmonyOS AVPlayer断网能否自动重连,断网状态下播放到未缓存部分会进入哪个status?(API12+)
3
HarmonyOS AVPlayer调用release方法之后依旧可以触发播放,如何处理? (API12+)
4
HarmonyOS 提供一个AVPlayer视屏播放器可以播放本地或者网络视频,带视频下载到相册的Demo (API12+)
5
HarmonyOS 使用AVPlayer播放本地mp4视频报错,提示不支持的格式 (API12+)
6
HarmonyOS 是否有可以播放rtsp流的组件或者API (API12)
7
HarmonyOS AVPlayer报5411003错误(API12+)
8
HarmonyOS 视频用移动网络播放会偶发报错 (API12+)
了解社区公约,与您携手共创和谐专业的开发者社区。




































苏公安网备 32011402010933号