diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index d089ce8235c50391b33890e682ed6bfba97f539c..13b00c4837c91619ac6f0503cc382f93a2b799e4 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -22,7 +22,11 @@ const DOMAIN = 0x0000; export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { - this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); + try { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); + } catch (err) { + hilog.error(DOMAIN, 'testTag', `setColorMode failed, code is ${err.code}, message is ${err.message}`); + } hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); } diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index a8987bc49b44eb6bbc24a43a30e81594f668e0f9..57e6e2474fb41029332b5494ad32bbc761b0088a 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -14,6 +14,8 @@ */ import { media } from '@kit.MediaKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { common } from '@kit.AbilityKit'; import { VideoTranscoderPage } from './VideoTranscoderPage'; import { TranscoderFinishPage } from './TranscoderFinishPage'; import { avConfigCommon } from '../utils/AVTranscoderManager'; @@ -42,6 +44,7 @@ struct Index { @State videoFrameWidth: number = 0; @State videoFrameHeight: number = 0; controller: VideoController = new VideoController(); + private context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext; @Builder myRouter(name: string) { @@ -74,21 +77,25 @@ struct Index { const TAG = 'MetadataDemo'; const isSupport: boolean = canIUse('SystemCapability.Multimedia.Media.AVMetadataExtractor'); if (isSupport) { - // Create an AVMetadataExtractor object - let avMetadataExtractor: media.AVMetadataExtractor = await media.createAVMetadataExtractor(); - // Set up fdSrc - avMetadataExtractor.fdSrc = await getContext(this).resourceManager.getRawFd('video_sample.mp4'); - // Get metadata (callback mode) - avMetadataExtractor.fetchMetadata((error, metadata) => { - if (error) { - console.error(TAG, `fetchMetadata callback failed, err = ${JSON.stringify(error)}`); - return; - } - console.info(TAG, `fetchMetadata callback success, genre: ${JSON.stringify(metadata)}`); - // Initialization parameters - this.videoFrameWidth = Number(metadata.videoWidth); - this.videoFrameHeight = Number(metadata.videoHeight); - }) + try { + // Create an AVMetadataExtractor object + let avMetadataExtractor: media.AVMetadataExtractor = await media.createAVMetadataExtractor(); + // Set up fdSrc + avMetadataExtractor.fdSrc = await this.context.resourceManager.getRawFd('video_sample.mp4'); + // Get metadata (callback mode) + avMetadataExtractor.fetchMetadata((error, metadata) => { + if (error) { + console.error(TAG, `fetchMetadata callback failed, err = ${JSON.stringify(error)}`); + return; + } + console.info(TAG, `fetchMetadata callback success, genre: ${JSON.stringify(metadata)}`); + // Initialization parameters + this.videoFrameWidth = Number(metadata.videoWidth); + this.videoFrameHeight = Number(metadata.videoHeight); + }) + } catch (err) { + hilog.error(0x0000, 'testTag', `createAVMetadataExtractor failed, code is ${err.code}, message is ${err.message}`); + } } } @@ -98,20 +105,32 @@ struct Index { const width: number = Number(this.resolution.split('x')[0]); console.info('this.videoFrameWidth', this.videoFrameWidth, width); if (this.videoFrameWidth < 3840 && width >= 3840) { - this.getUIContext().getPromptAction().showToast({ - message: $r('app.string.showToastWarn4k'), - duration: 2000 - }) + try { + this.getUIContext().getPromptAction().showToast({ + message: $r('app.string.showToastWarn4k'), + duration: 2000 + }) + } catch (err) { + hilog.error(0x0000, 'testTag', `getUIContext failed, code is ${err.code}, message is ${err.message}`); + } } else if (this.videoFrameWidth < 1920 && width >= 1920) { - this.getUIContext().getPromptAction().showToast({ - message: $r('app.string.showToastWarn1080'), - duration: 2000 - }) + try { + this.getUIContext().getPromptAction().showToast({ + message: $r('app.string.showToastWarn1080'), + duration: 2000 + }) + } catch (err) { + hilog.error(0x0000, 'testTag', `getUIContext failed, code is ${err.code}, message is ${err.message}`); + } } else if (this.videoFrameWidth < 720 && width >= 720) { - this.getUIContext().getPromptAction().showToast({ - message: $r('app.string.showToastWarn720'), - duration: 2000 - }) + try { + this.getUIContext().getPromptAction().showToast({ + message: $r('app.string.showToastWarn720'), + duration: 2000 + }) + } catch (err) { + hilog.error(0x0000, 'testTag', `getUIContext failed, code is ${err.code}, message is ${err.message}`); + } } else { const codeRate: number = parseInt(codeRateList[this.selectedIndex].split('Mbps')[0]) * 1000000; const params: avConfigCommon = { diff --git a/entry/src/main/ets/pages/VideoTranscoderPage.ets b/entry/src/main/ets/pages/VideoTranscoderPage.ets index 940640ca45885b6167778eee0bf7cc60d9976e90..e922ae6beff87083f421140e6dc102c1d92099a2 100644 --- a/entry/src/main/ets/pages/VideoTranscoderPage.ets +++ b/entry/src/main/ets/pages/VideoTranscoderPage.ets @@ -14,6 +14,7 @@ */ import { common } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; import { AVTranscoderManager, outputPathCommon } from '../utils/AVTranscoderManager'; @CustomDialog @@ -165,11 +166,15 @@ export struct VideoTranscoderPage { .height('40vp') .onClick(() => { if (this.isFinish) { - this.getUIContext().getPromptAction().showToast({ - message: $r('app.string.showToastWarnPause'), - duration: 2000 - }) - return + try { + this.getUIContext().getPromptAction().showToast({ + message: $r('app.string.showToastWarnPause'), + duration: 2000 + }) + return + } catch (err) { + hilog.error(0x0000, 'testTag', `getUIContext failed, code is ${err.code}, message is ${err.message}`); + } } if (this.isPause) { // Resume to convert diff --git a/entry/src/main/ets/utils/AVTranscoderManager.ets b/entry/src/main/ets/utils/AVTranscoderManager.ets index 8564a99cb4f6f218d7b828164226c5377a9a1b73..2431c2f71915dd846e8bc8278ffb7ce4c63e826b 100644 --- a/entry/src/main/ets/utils/AVTranscoderManager.ets +++ b/entry/src/main/ets/utils/AVTranscoderManager.ets @@ -81,11 +81,19 @@ export class AVTranscoderManager { async startTranscoderProcess() { if (this.isSupport) { if (this.avTranscoder) { - await this.avTranscoder.release(); + try { + await this.avTranscoder.release(); + } catch (err) { + hilog.error(0x0000, 'testTag', `release failed, code is ${err.code}, message is ${err.message}`); + } this.avTranscoder = undefined; }; // 1. Create a transcoding instance. - this.avTranscoder = await media.createAVTranscoder(); + try { + this.avTranscoder = await media.createAVTranscoder(); + } catch (err) { + hilog.error(0x0000, 'testTag', `createAVTranscoder failed, code is ${err.code}, message is ${err.message}`); + } this.setAVTranscoderCallback(); // 2. Get the transcoding source file fd and the target file fd to avTranscoder; refer to the FilePicker document. if (this.context) { @@ -93,47 +101,67 @@ export class AVTranscoderManager { // To obtain the input file fd, video_sample.mp4 is a provisioning resource in the rawfile directory, // which needs to be replaced by the developer according to the actual situation. let fileDescriptor = await this.context.resourceManager.getRawFd('video_sample.mp4'); - this.avTranscoder.fdSrc = fileDescriptor; + this.avTranscoder!.fdSrc = fileDescriptor; } catch (error) { hilog.error(0x0000, 'testTag', 'Failed to get the file descriptor, please check the resource and path.'); } let outputFilePath = this.context.filesDir + '/output.mp4'; - let file = fs.openSync(outputFilePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); - this.avTranscoder.fdDst = file.fd; - this.outputFilePath = outputFilePath; - this.currentProgress = 0; + try { + let file = fs.openSync(outputFilePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); + this.avTranscoder!.fdDst = file.fd; + this.outputFilePath = outputFilePath; + this.currentProgress = 0; + } catch (err) { + hilog.error(0x0000, 'testTag', `openSync failed, code is ${err.code}, message is ${err.message}`); + } + } + try { + // 3. Configure transcoding parameters to complete the preparation. + await this.avTranscoder!.prepare(this.avConfig); + // 4. Start transcoding. + await this.avTranscoder!.start(); + } catch (err) { + hilog.error(0x0000, 'testTag', `prepare or start failed, code is ${err.code}, message is ${err.message}`); } - // 3. Configure transcoding parameters to complete the preparation. - await this.avTranscoder.prepare(this.avConfig); - // 4. Start transcoding. - await this.avTranscoder.start(); } } // Pause the process for transcoding. async pauseTranscoderProcess() { if (this.isSupport && this.avTranscoder) { - // Call pause only after the start returns. - await this.avTranscoder.pause(); + try { + // Call pause only after the start returns. + await this.avTranscoder.pause(); + } catch (err) { + hilog.error(0x0000, 'testTag', `pause failed, code is ${err.code}, message is ${err.message}`); + } } } // Restore the corresponding transcoding process. async resumeTranscoderProcess() { if (this.isSupport && this.avTranscoder) { - // It is reasonable to call resume only after the call is returned. - await this.avTranscoder.resume(); + try { + // It is reasonable to call resume only after the call is returned. + await this.avTranscoder.resume(); + } catch (err) { + hilog.error(0x0000, 'testTag', `resume failed, code is ${err.code}, message is ${err.message}`); + } } } // Release the transcoding process. async releaseTranscoderProcess() { if (this.isSupport && this.avTranscoder) { - // 1. Release the transcoding instance. - await this.avTranscoder.release(); - this.avTranscoder = undefined; - // 2. Turn off the transcoding target file fd. - fs.closeSync(this.avTranscoder!.fdDst); + try { + // 1. Release the transcoding instance. + await this.avTranscoder.release(); + this.avTranscoder = undefined; + // 2. Turn off the transcoding target file fd. + fs.closeSync(this.avTranscoder!.fdDst); + } catch (err) { + hilog.error(0x0000, 'testTag', `release failed, code is ${err.code}, message is ${err.message}`); + } } }