概要
ビデオ再生機能は、映像データをデコードしてデバイスに出力し、再生タスクを管理するプロセスです。本記事では、ビデオ再生の全体的なフロー、動画切り替え、ループ再生などのシーン開発について詳しく説明します。このサンプルでは、ローカル動画とネットワーク動画の再生機能を実装し、@ohos.multimedia.media、@ohos.resourceManager、@ohos.wifiManagerなどのインターフェースを使用して、動画の再生、一時停止、再生速度調整、動画切り替え機能を実現しています。
実装効果

使用方法
- 動画画面をタップすると操作パネルが表示され、再度タップすると非表示になります。操作がない場合、5秒後に自動的に非表示になります。
- 一時停止/再生ボタンをタップして、動画の再生と一時停止を制御します。
- 再生进度バーをスライドすると、指定した位置に動画がジャンプし、動画中央に時間進捗が表示されます。
- 再生速度ボタンをタップすると、1.0、1.25、1.75、2.0から再生速度を選択できます。
- 下部の動画名をタップすると、動画を切り替えることができます。注意:「network」はネットワーク動画で、ネットワーク接続がない場合はアプリが終了します。ネットワーク接続がある場合、ローカル動画とネットワーク動画の切り替えが可能です。
- 左上角の終了矢印をタップすると、アプリが終了します。
ディレクトリ構造
VideoPlay/src/main/ets/
|---components
| |---ExitVideo.ets // アプリ終了コンポーネント
| |---SpeedDialog.ets // 再生速度ダイアログ
| |---VideoOperate.ets // ビデオ操作コンポーネント
| |---VideoPanel.ets // ビデオリストパネル
|---pages
| |---Index.ets // メインビデオ画面
|---utils
| |---Logger.ts // ログヘルパークラス
| |---TimeUtils.ts // ビデオ時間ヘルパークラス
|---videomanager
| |---AvPlayManager.ts // ビデオ管理インターフェース、外部提供機能を統一カプセル化
実装詳細
- ビデオの再生速度切り替え、一時停止、再生、動画切り替え、動画ジャンプ機能はすべてAvPlayManager.tsにカプセル化されています。
- media.createAVPlayer()を使用してAVPlayerオブジェクトを取得します。
- 再生速度切り替え:異なる再生速度を選択する際にavPlayer.setSpeed(speed: PlaybackSpeed)を呼び出します。
- 一時停止、再生:一時停止、再生ボタンをクリックする際にavPlayer.pause()、avPlayer.play()を呼び出します。
- 動画切り替え:動画を切り替える前に、まずavPlayer.reset()を呼び出してリソースをリセットし、その後avPlayer.fdSrcに値を割り当ててinitialized状態マシンの報告をトリガーします。
- 動画ジャンプ:スライダーをドラッグする際にavPlayer.seek()を呼び出します。
- ビデオプリダウンロード:prepared状態の前にavPlayer.setMediaSource()を呼び出します。
関連権限
- ohos.permission.INTERNET
- ohos.permission.GET_WIFI_INFO
依存関係
該当なし。
制約と制限
- 本サンプルは標準システムでのみ実行可能で、ネットワーク動画の再生にはインターネット接続が必要です。
- 本サンプルはAPI12バージョンSDKに適応済みで、バージョン番号:5.0.0.17、イメージバージョン番号:OpenHarmony5.0.0.18です。
- 本サンプルをコンパイルして実行するには、DevEco Studio NEXT Developer Preview1 (Build Version: 4.1.3.500, built on January 20, 2024)が必要です。
ダウンロード
本プロジェクトを単独でダウンロードするには、以下のコマンドを実行してください:
git init
git config core.sparsecheckout true
echo code/BasicFeature/Media/VideoPlay/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master