首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏DevTips

    AVPlayer 添加音频播放功能

    01 前言 大家好,本文是 iOS/Android 音视频开发专题 的第八篇,该专题中 AVPlayer 项目代码将在 Github 进行托管,你可在微信公众号(GeekDev)后台回复 资料 获取项目地址 本篇文章中我们将为 AVPlayer 添加音效,并实现音视频同步。

    2.7K40发布于 2019-09-29
  • 来自专栏鸿蒙开发笔记

    HarmonyOS 开发实践 —— 基于AVPlayer音频后台播放

    步骤一:创建avPlayer实现音频播放创建avPlayer并加载音频资源async avPlayerFdSrcDemo() {  // 创建avPlayer实例对象  avPlayer = await = avFileDescriptor;}注册avPlayer回调函数// 注册avplayer回调函数setAVPlayerCallback(avPlayer: media.AVPlayer) {  , seek time is ${seekDoneTime}`);  })  // error回调监听函数,当avPlayer在操作过程中出现错误时调用 reset接口触发重置流程  avPlayer.on ': // avplayer 设置播放源后触发该状态上报        console.info('AVPlayer state initialized called.');        avPlayer.prepare called.');        avPlayer.audioInterruptMode=audio.InterruptMode.SHARE_MODE;        avPlayer.play()

    1.2K10编辑于 2024-12-07
  • 来自专栏iOS开发攻城狮的集散地

    iOS AVPlayer视频播放器

    GOVVideoPlayer/GOVVideoController 是一个基于AVPlayer封装的视频播放器,支持播放/暂停、左右退拽快进、上下滑动调节音量、自动手动全屏、全屏时横屏Or竖屏、有缓冲进度指示条 ]; //KOV监控 播放器进度更新 - (void)addObserverForAVPlayer { AVPlayerItem *playerItem = self.avPlayer.currentItem ; // 给AVPlayer添加观察者 必须实现 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context; //监控播放速率 [self.avPlayer addObserver :self forKeyPath:@"rate" options:NSKeyValueObservingOptionNew context:nil]; //监控状态属性(AVPlayer也有一个

    4.8K40发布于 2018-05-22
  • 来自专栏鸿蒙开发笔记

    HarmonyOS 开发实践——基于AVPlayer的视频播放

    1 场景描述示例场景:AVPlayer播放视频ArkTS实现,创建AVPlayer,设置播放资源和窗口,设置播放参数,播放控制(播放/暂停/跳转),重置,销毁资源,播放完成后切换视频。 本示例就是使用avplayer进行视频播放的实现,功能包括多种方式播放视频,以及对于视频播放的控制。具体实现步骤可分为Step1: 调用createAVPlayer()创建AVPlayer实例。 2.1 创建AVPlayer实例调用createAVPlayer()创建AVPlayer实例1.通过url设置网络地址来实现播放,网络视频地址为https://sns-video-bd.xhscdn.com   let avPlayer: media.AVPlayer = await media.createAVPlayer();  // 创建状态机变化回调函数  this.setAVPlayerCallback _258.mp4'; // 播放网络视频}}async avPlayerDataSrcDemo// 创建avPlayer实例对象let avPlayer: media.AVPlayer = await

    1.9K30编辑于 2024-11-20
  • 来自专栏慎独

    AVPlayer+AudioUnit之播放视频音轨(AVAssetTrack)

    AVPlayer解码过程中取到实时音频数据,直接转推到另一个AudioUnit播放出来,这种方案要是能通,Seek等可以默认实现对齐。 保底方案,从AVPlayer取出PCM文件,做内存或者文件缓存,单独再播一份,需要手动对齐媒体时间。 保底方案,使用AVPlayer播视频,同时直接再解码一份,光播音频的,需要手动对齐媒体时间。 尝试一 首先是看到官网中的架构图,第一反应肯定是AVPlayer的音频播放也是基于AudioUnit,那就好办了 ? 首先从AVPlayer的KVO中监听状态,获得音轨。 todo 需要监听AVPlayer的进度,来播放响应位置的AudioBufferData。

    3K20发布于 2020-11-03
  • 来自专栏sktj

    IOS 使用AVPlayer播放MP4

    11 12 let avPlayer = AVPlayer(url:movieURL as URL) 13 let avPlayerLayer = AVPlayerLayer(player:avPlayer avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 16 self.view.layer.addSublayer(avPlayerLayer) 17 18 avPlayer.play

    2.9K41发布于 2019-07-08
  • 来自专栏慎独

    AVPlayer初体验之视频解纹理

    AVPlayer是苹果提供的用来管理多媒体播放的控制器,提供了播放所需要的控制接口和支持KVO的属性,支持播放本地和网络视频,以及实时视频流。 在不同性能的设备上,甚至相同设备的不同iOS版本上,AVPlayer的最大支持清晰度都会不一样,例如在iOS10的某些机器上不支持4k播放,但是到iOS11就支持了,关于测定视频是否可以用AVPlayer error) //print("视频加载错误,\(String(describing: self.avPlayer?. error))") } } 如果播放遇到错误可以用self.avPlayer?.error来查看错误类型。 其实AVPlayer本身提供了切换播放源的函数。 func replaceCurrentItem(with item: AVPlayerItem?)

    3.9K40发布于 2018-06-01
  • 来自专栏慎独

    AVPlayer初体验之边下边播与视频缓存

    上篇文章介绍了AVPlayer的基本播放和解码纹理,本文主要利用AVAssetResourceLoaderDelegate实现AVPlayer的边下边播和缓存机制。 resourceLoaderDelegate, queue: self.queue) AVAssetResourceLoaderDelegate协议 AVAssetResourceLoaderDelegate是AVPlayer 对于AVPlayer来说,只有到AVPlayerItemStatusReadyToPlay状态时,才可以开始播放视频,而进入AVPlayerItemStatusReadyToPlay状态的必要条件就是播放器读到了媒体的 剩下的内容AVPlayer会帮我们处理,包括Seek也是这样的流程,当Seek的时候,原始请求的Range-Byte会变,并且会取消旧的原始请求。 以上就是实现分块下载和缓存的基本思路。

    7.8K51发布于 2018-06-01
  • AVPlayer 播放在线视频和本地文件的设置区别

    AVPlayer 播放本地文件特点:文件已经存储在设备本地,无需网络,加载快,播放稳定。支持 file:// URL 或 AVAsset 创建对象。 AVPlayer 播放在线视频(网络流)特点:URL 是网络地址,如 https://.../video.mp4 或 HLS 流 https://.../index.m3u8。 AVPlayer 会自动支持 HLS 流和部分自适应码率(Adaptive Bitrate)。 对 HLS 流,AVPlayer 会自动选择码率;对于普通 MP4,通常需要提前下载或依赖系统缓存。3. 混合方式:先下载到本地缓存,再用 AVPlayer 播放,可以兼顾离线播放和网络灵活性。

    35310编辑于 2025-08-14
  • 来自专栏KyXu

    【iOS 开发】同步快速判断视频是否可以播放

    : AVPlayer! avplayer = AVPlayer(url: url) avplayer.addObserver(self, forKeyPath: "status", options: .new, { if (avplayer == object as? AVPlayer) && (keyPath == "status") { print((avplayer.status == .readyToPlay) ? 如果你在这里需要直接使用这个 AVPlayer 进行视频播放,那么推荐使用这个 KVO 方法。

    2.6K20发布于 2019-04-11
  • 来自专栏万少的技术分享

    手把手带你实现 鸿蒙应用 键盘音乐

    AVPlayer,使其播放声音 了解AVPlayer 使用AVPlayer可以实现端到端播放原始媒体资源,本开发指导将以完整地播放一首音乐作为示例,向开发者讲解AVPlayer音频播放相关功能。 在进行应用开发的过程中,开发者可以通过AVPlayer的state属性主动获取当前状态或使用on('stateChange')方法监听状态变化。 使用流程基本围绕这一张图即可 AVPlayer基本使用流程 创建 AVPlayer 实例 此时,avPlayer进入空闲状态 idle const avPlayer = await media.createAVPlayer ' class AVPlayerManager { // 播放器实例 avPlayer: media.AVPlayer | null = null; url: string = "" { case "initialized": this.avPlayer?.

    64510编辑于 2025-02-10
  • 来自专栏鸿蒙开发笔记

    鸿蒙开发实战案例:视频横竖屏切换及进度条热区拖动

    实现步骤初始化@ohos.multimedia.media 的AVPlayer。 初始化完毕进入initialized状态时,将XComponent和AVPlayer通过surfaceId绑定,这样可以在XComponent组件内实现视频播放功能。 比起Video组件,AVPlayer可以更方便自定义全屏动画效果。 is:' + this.surfaceID); this.avPlayer.surfaceId = this.surfaceID; }使用AVPlayer 中的width和height属性判断是横屏视频还是竖屏视频 ; // 获取视频时长 this.aspect_ratio = this.avPlayer.width / this.avPlayer.height; // 获取视频宽高比 if(this.avPlayer.width

    84020编辑于 2025-02-24
  • 来自专栏雨尘分享

    An AVPlayerItem cannot be associated with more than one instance of AVPlayer 你困扰了我这么久

    发现有一个问题出现了400多次了 , An AVPlayerItem cannot be associated with more than one instance of AVPlayer 这个引起了崩溃 stackoverflow.com/questions/31337858/an-avplayeritem-cannot-be-associated-with-more-than-one-instance-of-avplayer-in

    1.5K40发布于 2018-06-07
  • 来自专栏梧雨北辰的开发录

    iOS视频播放的基本方法

    创建一个AVPlayerItem //self.player = [AVPlayer playerWithURL:localVideoUrl]; //self.player = [[AVPlayer alloc 其相比AVPlayer的使用更加方便,但是原理上还是AVPlayerViewController包含了一个AVPlayer对象。 vid=/junqing/1213.mp4"; NSURL *webVideoUrl = [NSURL URLWithString:webVideoPath]; //步骤2:创建AVPlayer AVPlayer *avPlayer = [[AVPlayer alloc] initWithURL:webVideoUrl]; //步骤3:使用AVPlayer创建AVPlayerViewController,并跳转播放界面 *avPlayer = [[AVPlayer alloc] initWithURL:webVideoUrl]; //步骤3:使用AVPlayer创建AVPlayerViewController,并跳转播放界面

    5.4K20发布于 2018-07-06
  • 来自专栏鸿蒙开发笔记

    制作一个OpenHarmony视频播放器

    + 和 VideoRecorder9+ 整合,推荐使用音频播放(AudioPlayer6+),AVPlayer9+ 发布后停止维护,请使用 AVPlayer9+视频播放(VideoPlayer8+),AVPlayer9 Creates an AVPlayer instance Return by promise. */ function createAVPlayer() : Promise<AVPlayer>;` * 注册 avplayer 回调 ` ,方便更新进度条时间 avPlayer.on('timeUpdate', (time:number) => { …… })avplayer 播放流程//视频播放伪代码async avPlayerDemo () // 释放avplayer对象 break; case 'initialized': // avplayer 设置播放源后触发该状态上报

    67220编辑于 2024-08-15
  • 来自专栏鸿蒙开发实践

    鸿蒙运动开发实战:打造专属运动视频播放器

    ) { try { if(this.avPlayer){ this.avPlayer.url = url; this.avPlayer.play(); } } catch 通过注册回调函数,我们可以更好地管理这些情况:setAVPlayerCallback(avPlayer: media.AVPlayer) { avPlayer.on('startRenderFrame ', () => { console.info(`AVPlayer start render frame`); }); avPlayer.on('seekDone', (seekDoneTime is ${err.message}`); avPlayer.reset(); }); avPlayer.on('stateChange', async (state: string, reason = id; avPlayer.prepare(); break; case 'prepared': avPlayer.play();

    30110编辑于 2025-06-15
  • 来自专栏CSDN博客

    鸿蒙应用开发-播放本地音频文件

    参考文档使用AVPlayer开发音频播放功能。 知识点: 熟悉使用AVPlayer音视频播放器。 读取应用文件夹的本地音频文件。 加载并播放音频。 (); }) // 状态机变化回调函数 this.avPlayer.on('stateChange', async (state, reason) => { switch (); break; } }) } 播放音频函数片段: async onPageShow(){ // 创建avPlayer实例对象 this.avPlayer ; async onPageShow(){ // 创建avPlayer实例对象 this.avPlayer = await media.createAVPlayer(); = fdPath; } // 注册avplayer回调函数 setAVPlayerCallback() { this.avPlayer.on('error', (err) =>

    1.4K00编辑于 2024-05-26
  • 来自专栏用户4773577的专栏

    鸿蒙Next使用AVRecorder录制和播放音频

    : media.AVPlayer @Local isShowSheet: boolean = false // 注册avplayer回调函数。 setAVPlayerCallback(avPlayer: media.AVPlayer) { //监听资源播放资源的时长,单位为毫秒(ms) avPlayer.on('durationUpdate avPlayer.on('seekDone', (seekDoneTime: number) => { console.info(`AVPlayer seek succeeded, seek console.info('AVPlayer state completed called.'); avPlayer.stop(); //调用播放结束接口。 console.info('AVPlayer state stopped called.'); avPlayer.reset(); // 调用reset接口初始化avplayer状态。

    49610编辑于 2025-06-28
  • 来自专栏鸿蒙开发笔记

    纯血鸿蒙APP实战开发——边缓存边播放案例

    : media.AVPlayer) => { avPlayer.on('timeUpdate', (time: number) => { this.currentTime = time; }); this.videoDuration = handleTime(avPlayer.duration); this.total = avPlayer.duration async initPlayer(context: common.UIAbilityContext, surfaceId: string, callback: (avPlayer : media.AVPlayer) => void): Promise<void> { logger.info(TAG, `initPlayer==initCamera surfaceId== $ {surfaceId}`); this.surfaceID = surfaceId; try { // 创建avPlayer实例对象 this.avPlayer = await

    57720编辑于 2025-02-11
  • 来自专栏鸿蒙开发笔记

    HarmonyOS APP性能优化之提升应用响应速度

    import media from '@ohos.multimedia.media';@Entry@Componentstruct Index { private avPlayer: media.AVPlayer ().then((ret) => { this.avPlayer = ret; }); } aboutToDisappear(): void { // 离开页面时销毁AVPlayer 实例 if (this.avPlayer) { this.avPlayer.release(); } this.avPlayer = undefined; } build import media from '@ohos.multimedia.media';@Entry@Componentstruct Index { private avPlayer: media.AVPlayer : media.AVPlayer; private player2?: media.AVPlayer; private currentPlayer?

    61520编辑于 2024-10-14
领券