未验证 提交 bb88e509 编写于 作者: O openharmony_ci 提交者: Gitee

!3353 hls播放测试用例

Merge pull request !3353 from NOBUGGERS/r00514670_0528
......@@ -23,6 +23,7 @@ export function playAudioSource(src, duration, playTime, checkSeekTime, done) {
let pauseCount = 0;
let stopCount = 0;
let seekCount = 0;
let seekEOS = false;
let audioPlayer = media.createAudioPlayer();
if (audioPlayer == null) {
console.error('case createAudioPlayer failed');
......@@ -104,7 +105,7 @@ export function playAudioSource(src, duration, playTime, checkSeekTime, done) {
// step 2: seek duration/3 -> pause
expect(audioPlayer.state).assertEqual('playing');
if (checkSeekTime) {
expect(audioPlayer.duration / 3).assertEqual(seekDoneTime);
expect(audioPlayer.duration / 3).assertClose(seekDoneTime, 1);
}
mediaTestBase.msleep(playTime);
audioPlayer.pause();
......@@ -125,13 +126,13 @@ export function playAudioSource(src, duration, playTime, checkSeekTime, done) {
audioPlayer.loop = false;
audioPlayer.setVolume(0.5);
audioPlayer.seek(audioPlayer.duration);
} else if (seekCount == 4){
// step 7: seek duration -> setVolume + seek duration when loop is false
seekEOS = true;
} else if (seekEOS && seekDoneTime != 0){
// step 7: wait for finish
if (checkSeekTime) {
expect(audioPlayer.duration).assertEqual(seekDoneTime);
}
mediaTestBase.msleep(playTime);
expect(audioPlayer.state).assertEqual('stopped');
}
});
audioPlayer.on('volumeChange', () => {
......@@ -141,6 +142,7 @@ export function playAudioSource(src, duration, playTime, checkSeekTime, done) {
audioPlayer.on('finish', () => {
console.info('case play end');
expect(audioPlayer.state).assertEqual('stopped');
expect(seekEOS).assertTrue();
// step 8: play when stream is end
audioPlayer.play();
});
......
......@@ -13,7 +13,6 @@
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import * as mediaTestBase from './MediaTestBase.js';
......@@ -120,17 +119,20 @@ export async function playVideoSource(url, width, height, duration, playTime, do
console.info('case setVolume called');
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
await videoPlayer.seek(duration, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
await videoPlayer.seek(videoPlayer.duration, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
console.info('case seek called and seekDoneTime is ' + seekDoneTime);
mediaTestBase.msleep(duration - seekDoneTime);
mediaTestBase.msleep(videoPlayer.duration - seekDoneTime);
videoPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_00_X);
expect(videoPlayer.state).assertEqual('playing');
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
videoPlayer.loop = false;
await videoPlayer.seek(duration, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
await videoPlayer.seek(videoPlayer.duration, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
console.info('case seek called and seekDoneTime is ' + seekDoneTime);
mediaTestBase.msleep(duration - seekDoneTime);
expect(videoPlayer.state).assertEqual('stopped');
if (seekDoneTime != 0){
mediaTestBase.msleep((videoPlayer.duration - seekDoneTime) + playTime);
expect(videoPlayer.state).assertEqual('stopped');
}
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
await videoPlayer.play().then(() => {
......@@ -148,9 +150,6 @@ export async function playVideoSource(url, width, height, duration, playTime, do
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
videoPlayer.url = url;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
console.info('case setDisplaySurface success, surfaceID: ' + surfaceID);
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
await videoPlayer.prepare().then(() => {
console.info('case prepare called');
......@@ -175,4 +174,3 @@ export async function playVideoSource(url, width, height, duration, playTime, do
console.info('case release called');
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
}
# Copyright (C) 2022 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//test/xts/tools/build/suite.gni")
ohos_js_hap_suite("hls_player_js_hap") {
hap_profile = "./src/main/config.json"
js2abc = true
deps = [
":video_player_js_assets",
":video_player_resources",
]
# shared_libraries = [
# "//third_party/giflib:libgif",
# "//third_party/libpng:libpng",
# ]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "ActsHLSPlayerJsTest"
# part_name = "prebuilt_hap"
# subsystem_name = "xts"
}
ohos_js_assets("video_player_js_assets") {
source_dir = "./src/main/js/default"
}
ohos_resources("video_player_resources") {
sources = [ "./src/main/resources" ]
hap_profile = "./src/main/config.json"
}
{
"description": "Configuration for hls player Tests",
"driver": {
"type": "JSUnitTest",
"test-timeout": "2000000",
"package": "ohos.acts.multimedia.media.hlsplayer",
"shell-timeout": "60000"
},
"kits": [
{
"test-file-name": [
"ActsHLSPlayerJsTest.hap"
],
"type": "AppInstallKit",
"cleanup-apps": true
},
{
"type": "ShellKit",
"run-command": [
],
"teardown-command":[
]
},
{
"type": "PushKit",
"pre-push": [
],
"push": [
]
}
]
}
{
"app": {
"apiVersion": {
"compatible": 6,
"releaseType": "Beta1",
"target": 7
},
"vendor": "acts",
"bundleName": "ohos.acts.multimedia.media.hlsplayer",
"version": {
"code": 1000000,
"name": "1.0.0"
}
},
"deviceConfig": {
"default": {
"debug": true
}
},
"module": {
"abilities": [
{
"iconId": 16777218,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"descriptionId": 16777217,
"visible": true,
"labelId": 16777216,
"icon": "$media:icon",
"name": "ohos.acts.multimedia.media.hlsplayer.MainAbility",
"description": "$string:mainability_description",
"label": "$string:entry_MainAbility",
"type": "page",
"homeAbility": true,
"launchType": "standard"
}
],
"deviceType": [
"default",
"tablet",
"tv",
"wearable"
],
"mainAbility": "ohos.acts.multimedia.media.hlsplayer.MainAbility",
"distro": {
"moduleType": "entry",
"installationFree": false,
"deliveryWithInstall": true,
"moduleName": "entry"
},
"package": "ohos.acts.multimedia.media.hlsplayer",
"name": ".MyApplication",
"js": [
{
"pages": [
"pages/index/index",
"pages/surfaceTest/surfaceTest",
"pages/surfaceTest2/surfaceTest2"
],
"name": "default",
"window": {
"designWidth": 720,
"autoDesignWidth": true
}
}
]
}
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export default {
onCreate() {
console.info('AceApplication onCreate');
},
onDestroy() {
console.info('AceApplication onDestroy');
}
};
{
"strings": {
"hello": "Hello",
"world": "World"
}
}
\ No newline at end of file
{
"strings": {
"hello": "您好",
"world": "世界"
}
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.title {
font-size: 40px;
color: #000000;
opacity: 0.9;
}
@media screen and (device-type: tablet) and (orientation: landscape) {
.title {
font-size: 100px;
}
}
@media screen and (device-type: wearable) {
.title {
font-size: 28px;
color: #FFFFFF;
}
}
@media screen and (device-type: tv) {
.container {
background-image: url("/common/images/Wallpaper.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.title {
font-size: 100px;
color: #FFFFFF;
}
}
@media screen and (device-type: phone) and (orientation: landscape) {
.title {
font-size: 60px;
}
}
<!--
Copyright (c) 2022 Huawei Device Co., Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Core, ExpectExtend} from 'deccjsunit/index'
export default {
data: {
title: ""
},
onInit() {
this.title = this.$t('strings.world');
},
onShow() {
console.info('onShow finish')
const core = Core.getInstance()
const expectExtend = new ExpectExtend({
'id': 'extend'
})
core.addService('expect', expectExtend)
core.init()
const configService = core.getDefaultService('config')
this.timeout = 90000
configService.setConfig(this)
require('../../../test/List.test')
core.execute()
},
onReady() {
},
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.title {
font-size: 40px;
color: #000000;
opacity: 0.9;
}
@media screen and (device-type: tablet) and (orientation: landscape) {
.title {
font-size: 100px;
}
}
@media screen and (device-type: wearable) {
.title {
font-size: 28px;
color: #FFFFFF;
}
}
@media screen and (device-type: tv) {
.container {
background-image: url("/common/images/Wallpaper.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.title {
font-size: 100px;
color: #FFFFFF;
}
}
@media screen and (device-type: phone) and (orientation: landscape) {
.title {
font-size: 60px;
}
}
<!--
Copyright (c) 2022 Huawei Device Co., Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div class="container">
<text class="title">
VideoPlayer Test
</text>
<Xcomponent id = 'XcomponentId2'
type = 'surface'
onload = 'LoadXcomponent2'
style = "width:720px;height:480px;border-color:red;border-width:5px">
</Xcomponent>
</div>
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Core, ExpectExtend} from 'deccjsunit/index'
import Fileio from '@ohos.fileio'
export default {
data: {
title: ""
},
onInit() {
this.title = this.$t('strings.world');
},
onShow() {
},
onReady() {
},
LoadXcomponent2() {
globalThis.value = this.$element('XcomponentId2').getXComponentSurfaceId()
},
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.title {
font-size: 40px;
color: #000000;
opacity: 0.9;
}
@media screen and (device-type: tablet) and (orientation: landscape) {
.title {
font-size: 100px;
}
}
@media screen and (device-type: wearable) {
.title {
font-size: 28px;
color: #FFFFFF;
}
}
@media screen and (device-type: tv) {
.container {
background-image: url("/common/images/Wallpaper.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.title {
font-size: 100px;
color: #FFFFFF;
}
}
@media screen and (device-type: phone) and (orientation: landscape) {
.title {
font-size: 60px;
}
}
<!--
Copyright (c) 2022 Huawei Device Co., Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div class="container">
<text class="title">
VideoPlayer Test
</text>
<Xcomponent id = 'XcomponentId3'
type = 'surface'
onload = 'LoadXcomponent3'
style = "width:720px;height:480px;border-color:red;border-width:5px">
</Xcomponent>
</div>
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Core, ExpectExtend} from 'deccjsunit/index'
import Fileio from '@ohos.fileio'
export default {
data: {
title: ""
},
onInit() {
this.title = this.$t('strings.world');
},
onShow() {
},
onReady() {
},
LoadXcomponent3() {
globalThis.value = this.$element('XcomponentId3').getXComponentSurfaceId()
},
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import {playAudioSource} from '../../../../../AudioPlayerTestBase.js';
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('AudioPlayerHLSTest', function () {
const HTTP_PATH = 'http://123.57.24.33:8000/';
const PLAY_TIME = 3000;
beforeAll(function() {
console.info('beforeAll case');
})
beforeEach(function() {
console.info('beforeEach case');
})
afterEach(function() {
console.info('afterEach case');
})
afterAll(function() {
console.info('afterAll case');
})
/* *
* @tc.number : SUB_MEDIA_AUDIO_PLAYER_HLS
* @tc.name : 001.test hls audio only
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_AUDIO_PLAYER_HLS', 0, async function (done) {
playAudioSource(HTTP_PATH + '05.hls/audio_only/index.m3u8', 219600, PLAY_TIME, false, done);
})
/* *
* @tc.number : SUB_MEDIA_AUDIO_PLAYER_HLS_VARIANT
* @tc.name : 001.test hls audio variant
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_AUDIO_PLAYER_HLS_VARIANT', 0, async function (done) {
playAudioSource(HTTP_PATH + '05.hls/hls_variant_audio/index.m3u8', 219600, PLAY_TIME, false, done);
})
})
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require('./VideoPlayerHLSTest.test.js')
require('./AudioPlayerHLSTest.test.js')
// require('./VideoPlayerHLSBitrateTest.test.js')
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import {toNewPage, clearRouter} from '../../../../../VideoPlayerTestBase.js';
import * as mediaTestBase from '../../../../../MediaTestBase.js';
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('VideoPlayerHLSBitrateTest.test', function () {
const HTTP_PATH = 'http://123.57.24.33:8000/';
const PLAY_TIME = 3000;
const pagePath1 = 'pages/surfaceTest/surfaceTest';
const pagePath2 = 'pages/surfaceTest2/surfaceTest2';
let pageId = 0;
let width = 0;
let height = 0;
let expectBitrateArray = [];
let videoSizeArray = [];
let videoSizeId = -1;
let bitrateArray = [];
let videoPlayer = null;
beforeAll(async function() {
console.info('beforeAll case');
})
beforeEach(async function() {
await mediaTestBase.toNewPage(pagePath1, pagePath2, pageId);
pageId = (pageId + 1) % 2;
await mediaTestBase.msleepAsync(1000).then(
() => {}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
console.info('beforeEach case');
})
afterEach(async function() {
await mediaTestBase.clearRouter();
console.info('afterEach case');
})
afterAll(async function() {
console.info('afterAll case');
})
async function initVideoPlayer(done) {
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
console.info('case createVideoPlayer success');
videoPlayer = video;
} else {
console.error('case createVideoPlayer failed');
expect().assertFail();
done();
}
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
videoPlayer.on('videoSizeChanged', (w, h) => {
console.info('case videoSizeChanged width: ' + w + ' height: ' + h + 'videoSizeId: ' + videoSizeId);
width = w;
height = h;
if (w == videoSizeArray[videoSizeId][0] && h == videoSizeArray[videoSizeId][1]) {
releaseVideoPlayer(done);
}
});
videoPlayer.on('availableBitrateCollected', (bitrates) => {
bitrateArray = bitrates;
for (let i = 0; i < bitrateArray.length; i++) {
console.info('case availableBitrateCollected bitrates: ' + bitrateArray[i]);
}
});
videoPlayer.on('error', (err) => {
console.error(`case error called, errMessage is ${err.message}`);
expect().assertFail();
videoPlayer.release();
done();
});
}
async function setVideoUrl(url) {
console.info(`case media source url: ${url}`)
let surfaceID = globalThis.value;
videoPlayer.url = url;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
console.info('case setDisplaySurface success, surfaceID: ' + surfaceID);
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
await videoPlayer.prepare().then(() => {
console.info('case prepare called');
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
}
async function playAndSetLoop(playTime) {
videoPlayer.loop = true;
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(async () => {
console.info('case play called');
expect(videoPlayer.state).assertEqual('playing');
await mediaTestBase.msleepAsync(playTime);
console.info('case play done');
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(playTime, 1000);
}
async function releaseVideoPlayer(done) {
await videoPlayer.reset().then(() => {
console.info('case reset called');
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called');
done();
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
}
function checkArray(realArray, expectArray) {
expect(realArray.length).assertEqual(expectArray.length);
for (let i = 0; i < expectArray.length; i++) {
console.info('case expect ' + expectArray[i]);
expect(realArray[i]).assertEqual(expectArray[i]);
}
}
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HLS_SET_BITRATE_0100
* @tc.name : 001.test hls set bitrate
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HLS_SET_BITRATE_0100', 0, async function (done) {
await initVideoPlayer(done);
await setVideoUrl(HTTP_PATH + '05.hls/hls_variant/index.m3u8');
await playAndSetLoop(PLAY_TIME * 2);
expectBitrateArray = [165340, 344388, 387360, 765178, 1676816];
videoSizeArray = [ [256, 144], [426, 240], [640, 360], [854, 480], [1280, 720] ];
checkArray(bitrateArray, expectBitrateArray);
videoSizeId = 1;
console.info('case selectBitRate aaa' + expectBitrateArray[videoSizeId]);
videoPlayer.selectBitrate(expectBitrateArray[videoSizeId]).then((bitrate) => {
console.info('case selectBitrate called');
expect(bitrate).assertEqual(expectBitrateArray[videoSizeId]);
}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HLS_SET_BITRATE_0200
* @tc.name : 001.test hls set bitrate
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HLS_SET_BITRATE_0200', 0, async function (done) {
await initVideoPlayer(done);
await setVideoUrl(HTTP_PATH + '05.hls/hls_variant/index.m3u8');
await playAndSetLoop(PLAY_TIME);
expectBitrateArray = [165340, 344388, 387360, 765178, 1676816];
videoSizeArray = [ [256, 144], [426, 240], [640, 360], [854, 480], [1280, 720] ];
checkArray(bitrateArray, expectBitrateArray);
videoSizeId = videoSizeArray.length - 1;
console.info('case selectBitRate' + expectBitrateArray[videoSizeId]);
videoPlayer.selectBitrate(expectBitrateArray[videoSizeId], (err, bitrate) => {
console.info('case selectBitrate called');
if (typeof (err) == 'undefined') {
expect(bitrate).assertEqual(expectBitrateArray[videoSizeId]);
} else {
mediaTestBase.printError(err, done);
}
})
})
})
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import {playVideoSource} from '../../../../../VideoPlayerTestBase.js';
import * as mediaTestBase from '../../../../../MediaTestBase.js';
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('VideoPlayerHLSTest', function () {
const HTTP_PATH = 'http://123.57.24.33:8000/';
const PLAY_TIME = 3000;
const pagePath1 = 'pages/surfaceTest/surfaceTest';
const pagePath2 = 'pages/surfaceTest2/surfaceTest2';
let pageId = 0;
beforeAll(async function() {
console.info('beforeAll case');
})
beforeEach(async function() {
await mediaTestBase.toNewPage(pagePath1, pagePath2, pageId);
pageId = (pageId + 1) % 2;
await mediaTestBase.msleepAsync(1000).then(
() => {}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
console.info('beforeEach case');
})
afterEach(async function() {
await mediaTestBase.clearRouter();
console.info('afterEach case');
})
afterAll(async function() {
console.info('afterAll case');
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HLS
* @tc.name : 001.test hls
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HLS', 0, async function (done) {
await playVideoSource(HTTP_PATH + '05.hls/1/index.m3u8', 640, 320, 10033, PLAY_TIME, done);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HLS_SEPARATE
* @tc.name : 001.test hls audio video separate
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HLS_SEPARATE', 0, async function (done) {
await playVideoSource(HTTP_PATH + '05.hls/2/index.m3u8', 640, 320, 10033, PLAY_TIME, done);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HLS_AUDIOONLY
* @tc.name : 001.test hls audio only
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HLS_AUDIOONLY', 0, async function (done) {
await playVideoSource(HTTP_PATH + '05.hls/audio_only/index.m3u8', 0, 0, 10033, PLAY_TIME, done);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HLS_VARIANT
* @tc.name : 001.test hls variant
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HLS_VARIANT', 0, async function (done) {
await playVideoSource(HTTP_PATH + '05.hls/hls_variant/index.m3u8', null, null, 120000, PLAY_TIME, done);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HLS_AUDIOOFF
* @tc.name : 001.test hls variant
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HLS_VARIANT_AUDIOOFF', 0, async function (done) {
await playVideoSource(HTTP_PATH + '05.hls/hls_variant2/index.m3u8', null, null, 120000, PLAY_TIME, done);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HLS_CODEC_CHAGNGE
* @tc.name : 001.test hls variant
* @tc.desc : HLS Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HLS_CODEC_CHAGNGE', 0, async function (done) {
await playVideoSource(HTTP_PATH + '05.hls/hls_variant3/index.m3u8', null, null, 120000, PLAY_TIME, done);
done();
})
})
{
"string": [
{
"name": "entry_MainAbility",
"value": "entry_MainAbility"
},
{
"name": "mainability_description",
"value": "JS_Empty Ability"
}
]
}
\ No newline at end of file
......@@ -16,7 +16,7 @@
import media from '@ohos.multimedia.media'
import * as mediaTestBase from '../../../../../MediaTestBase.js';
import {playAudioSource} from '../../../../../AudioPlayerTestBase.js';
import {toNewPage, clearRouter, playVideoSource} from '../../../../../VideoPlayerTestBase.js';
import {playVideoSource} from '../../../../../VideoPlayerTestBase.js';
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('HttpPlayerCompatibilityTest', function () {
......@@ -35,7 +35,7 @@ describe('HttpPlayerCompatibilityTest', function () {
})
beforeEach(async function() {
await toNewPage(pagePath1, pagePath2, pageId);
await mediaTestBase.toNewPage(pagePath1, pagePath2, pageId);
pageId = (pageId + 1) % 2;
await mediaTestBase.msleepAsync(1000).then(
() => {}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
......@@ -43,7 +43,7 @@ describe('HttpPlayerCompatibilityTest', function () {
})
afterEach(async function() {
await clearRouter();
await mediaTestBase.clearRouter();
console.info('afterEach case');
})
......@@ -61,7 +61,7 @@ describe('HttpPlayerCompatibilityTest', function () {
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MP4_0100', 0, async function (done) {
let path = VIDEOPLAYER_PATH + 'mp4/h264_aac_640x320_30r.mp4';
await playVideoSource(path, 640, 320, 10034, PLAY_TIME, done);
await playVideoSource(path, 640, 320, 10100, PLAY_TIME, done);
done();
})
......@@ -75,7 +75,7 @@ describe('HttpPlayerCompatibilityTest', function () {
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MP4_0200', 0, async function (done) {
let path = VIDEOPLAYER_PATH + 'mp4/h264_mp3_640x480_25r.mp4';
await playVideoSource(path, 640, 480, 10034, PLAY_TIME, done);
await playVideoSource(path, 640, 480, 10080, PLAY_TIME, done);
done();
})
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册