From d2c7ab7485a744ab1750d1858e34490dcdc4efa8 Mon Sep 17 00:00:00 2001 From: laoguanyao <806103474@qq.com> Date: Wed, 30 Oct 2024 10:45:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BD=91=E7=BB=9C=E8=A7=86?= =?UTF-8?q?=E9=A2=91header=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: laoguanyao <806103474@qq.com> --- .../main/ets/components/videoplayer/VideoPlayer.ets | 11 ++++++++++- .../ets/components/videoplayer/VideoPlayerApiImpl.ets | 10 +++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/video_player/video_player_ohos/ohos/src/main/ets/components/videoplayer/VideoPlayer.ets b/packages/video_player/video_player_ohos/ohos/src/main/ets/components/videoplayer/VideoPlayer.ets index d5906daef..399f0f008 100644 --- a/packages/video_player/video_player_ohos/ohos/src/main/ets/components/videoplayer/VideoPlayer.ets +++ b/packages/video_player/video_player_ohos/ohos/src/main/ets/components/videoplayer/VideoPlayer.ets @@ -58,14 +58,16 @@ export class VideoPlayer { private eventSink: QueuingEventSink | null = null; private interruptMode: audio.InterruptMode = audio.InterruptMode.INDEPENDENT_MODE; private fd: number | null = null; + private headers: Record | null; - constructor(playerModel: PlayerModel, textureEntry: SurfaceTextureEntry, url: resourceManager.RawFileDescriptor | null, iUrl: string | null, eventChannel: EventChannel, AudioFocus: Boolean) { + constructor(playerModel: PlayerModel, textureEntry: SurfaceTextureEntry, url: resourceManager.RawFileDescriptor | null, iUrl: string | null, eventChannel: EventChannel, AudioFocus: Boolean, headers: Record | null) { this.playerModel = playerModel; this.textureEntry = textureEntry; this.surfaceId = textureEntry.getSurfaceId().toString(); this.url = url; this.iUrl = iUrl; this.eventChannel = eventChannel; + this.headers = headers; if (AudioFocus == true) { this.interruptMode = audio.InterruptMode.SHARE_MODE; Log.i(TAG, "set interruptMode : " + this.interruptMode); @@ -94,6 +96,13 @@ export class VideoPlayer { } else { this.avPlayer.fdSrc = this.url!; } + + if (this.headers != null) { + let mediaSource: media.MediaSource = media.createMediaSourceWithUrl(this.iUrl, this.headers); + let playbackStrategy: media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 20, preferredHdr: false}; + // 设置媒体来源和播放策略 + await this.avPlayer.setMediaSource(mediaSource, playbackStrategy); + } } } diff --git a/packages/video_player/video_player_ohos/ohos/src/main/ets/components/videoplayer/VideoPlayerApiImpl.ets b/packages/video_player/video_player_ohos/ohos/src/main/ets/components/videoplayer/VideoPlayerApiImpl.ets index b73524cb3..30ec98380 100644 --- a/packages/video_player/video_player_ohos/ohos/src/main/ets/components/videoplayer/VideoPlayerApiImpl.ets +++ b/packages/video_player/video_player_ohos/ohos/src/main/ets/components/videoplayer/VideoPlayerApiImpl.ets @@ -81,6 +81,10 @@ export class VideoPlayerApiImpl { let flutterRenderer = this.flutterState.getTextureRegistry(); let uri: string = arg.getUri(); let asset: string = arg.getAsset(); + let header: Record = {}; + arg.getHttpHeaders().forEach((value, key) => { + header[key.toString()] = value.toString(); + }) let textureId: number = flutterRenderer.getTextureId(); Log.i(TAG, "enter getRawFd, textureId=" + textureId); let surfaceTextureEntry: SurfaceTextureEntry = flutterRenderer.registerTexture(textureId); @@ -105,16 +109,16 @@ export class VideoPlayerApiImpl { }); this.pixelMaps.set(JSON.stringify(arg), pixelMap); avImageGenerator.release(); - flutterRenderer.setTextureBackGroundPixelMap(textureId, this.pixelMaps.get(JSON.stringify(arg))); + flutterRenderer.setTextureBackGroundPixelMap(textureId, this.pixelMaps.get(JSON.stringify(arg))); } let eventChannel: EventChannel = new EventChannel(this.flutterState.getBinaryMessenger(), "flutter.io/videoPlayer/videoEvents" + textureId.toString()); if (asset != null) { let rawFileDescriptor: resourceManager.RawFileDescriptor = await this.getContext().resourceManager.getRawFd("flutter_assets/" + asset); - let videoPlayer = new VideoPlayer(playerModel, surfaceTextureEntry, rawFileDescriptor, null, eventChannel, this.AudioFocus); + let videoPlayer = new VideoPlayer(playerModel, surfaceTextureEntry, rawFileDescriptor, null, eventChannel, this.AudioFocus, null); await videoPlayer.createAVPlayer(); this.videoPlayers.set(textureId.toString(), videoPlayer); } else if (uri != null) { - let videoPlayer = new VideoPlayer(playerModel, surfaceTextureEntry, null, uri, eventChannel, this.AudioFocus); + let videoPlayer = new VideoPlayer(playerModel, surfaceTextureEntry, null, uri, eventChannel, this.AudioFocus, header); await videoPlayer.createAVPlayer(); this.videoPlayers.set(textureId.toString(), videoPlayer); } -- Gitee