media_player プログラム仕様

PySide6とQtMultimediaを使用したシンプルなメディアプレイヤーアプリケーション。

このモジュールは、メディアファイルの再生、一時停止、シーク、ドラッグ&ドロップ、 およびウィンドウ状態の保存機能を備えた基本的なメディアプレイヤーを提供します。

Media Player Technical Document

class multimedia.media_player.QtMediaPlayer(media_path=None, autoplay=False)[ソース]

ベースクラス: QMainWindow

メディアファイルの再生、一時停止、シーク、ドラッグ&ドロップ、およびウィンドウ状態の保存機能を備えたPySide6ベースのメディアプレイヤーアプリケーション。

QMediaPlayer、QAudioOutput、QVideoWidgetを使用してメディアを再生します。 UIコントロール(再生/一時停止、停止、巻き戻し、速度調整、ファイルを開く)を提供します。 再生位置スライダーと総再生時間を管理します。 ドラッグ&ドロップでメディアファイルを読み込むことができます。 アプリケーション終了時にウィンドウのサイズと位置をINIファイルに保存し、次回起動時に復元します。 コマンドライン引数によるファイル読み込みと自動再生に対応しています。

media_player_architecture

closeEvent(event: QCloseEvent)[ソース]

ウィンドウが閉じられる際に発生するイベントを処理します。

アプリケーションが終了する前に、現在再生中のメディアを停止します。 ウィンドウの現在のジオメトリをINIファイルに保存し、次回起動時に復元できるようにします。 イベントを受け入れ、ウィンドウの閉鎖を許可します。

パラメータ:

event -- PySide6.QtGui.QCloseEvent - ウィンドウの閉鎖イベントに関する情報を含むオブジェクト。

戻り値:

None

dragEnterEvent(event: QDragEnterEvent)[ソース]

ドラッグされたアイテムがウィンドウに入ってきたときの処理。

ドラッグされたデータがURLを含み、そのURLがサポートされているメディアファイルの拡張子を持つ場合のみ、 ドロップアクションを受け入れます。これにより、ユーザーはサポートされていないファイルを ドロップしようとしたときに視覚的なフィードバックを受け取ることができます。

パラメータ:

event -- PySide6.QtGui.QDragEnterEvent - ドラッグアンドドロップイベントに関する情報を含むオブジェクト。

戻り値:

None

dropEvent(event: QDropEvent)[ソース]

ファイルがウィンドウにドロップされたときの処理。

ドロップされたデータからファイルのURLを抽出し、ローカルファイルのパスに変換します。 ファイルが存在することを確認し、そのファイルをメディアプレイヤーにロードして自動的に再生を開始します。

パラメータ:

event -- PySide6.QtGui.QDropEvent - ドロップイベントに関する情報を含むオブジェクト。

戻り値:

None

duration_changed(duration: int)[ソース]

メディアの総再生時間 (ミリ秒) が確定したら、スライダーの最大値を設定します。

メディアの総再生時間(ミリ秒)を取得し、再生位置スライダーの最大値をその値に設定します。 これにより、スライダーがメディアの全範囲を正確に表現できるようになります。

パラメータ:

duration -- int - メディアの総再生時間(ミリ秒)。

戻り値:

None

load_media(file_path: str, start_playback: bool = True)[ソース]

指定されたメディアファイルをプレイヤーにロードし、必要に応じて再生を開始します。

ファイルパスが存在するかどうかを確認し、QMediaPlayerのソースを設定します。 ウィンドウのタイトルを更新し、`start_playback`フラグに基づいてメディアの再生を開始または 一時停止ボタンの状態を設定します。

パラメータ:
  • file_path -- str - ロードするメディアファイルのパス。

  • start_playback -- bool - ファイルロード後に自動で再生を開始するかどうか。デフォルトは`True`。

戻り値:

None

load_window_geometry()[ソース]

INIファイルからウィンドウの位置とサイズをロードし、適用します。

`player_config.ini`ファイルが存在する場合、その中の`[Window]`セクションから`geometry`設定を読み取ります。 読み取りに成功した場合、ウィンドウのジオメトリを復元します。 ファイルが存在しないか、読み取りに失敗した場合は、画面中央にデフォルトのサイズでウィンドウを配置します。

戻り値:

None

open_file()[ソース]

ファイルダイアログを開き、メディアをロードします。

`QFileDialog`を使用して、サポートされているメディアファイルのみをフィルタリングして表示します。 ユーザーがファイルを選択してダイアログを閉じると、選択されたファイルを`load_media`メソッドに渡し、再生を開始します。

戻り値:

None

position_changed(position: int)[ソース]

現在の再生位置 (ミリ秒) が変更されたら、スライダーの現在値を更新します。

`seeking`フラグが`False`の場合(つまり、ユーザーがスライダーを操作していない場合)に、 再生位置スライダーの現在の値を更新します。これにより、再生中にスライダーがリアルタイムで進行します。

パラメータ:

position -- int - メディアの現在の再生位置(ミリ秒)。

戻り値:

None

rewind_to_start()[ソース]

再生位置を最初に巻き戻します。

`QMediaPlayer.setPosition(0)`を呼び出し、メディアの再生位置をリセットします。

戻り値:

None

save_window_geometry()[ソース]

ウィンドウの位置とサイズをINIファイルに保存します。

ウィンドウの現在のジオメトリ(X座標、Y座標、幅、高さ)を取得し、 カンマ区切りの文字列として`player_config.ini`ファイルに書き込みます。 これにより、アプリケーションが次回起動したときにウィンドウの状態が復元されます。

戻り値:

None

set_speed(value: int)[ソース]

再生速度を調整します (0.5x - 2.0x)。

スライダーの値(50-200)を受け取り、それを100で割って再生レート(0.5x - 2.0x)を計算します。 計算されたレートを`QMediaPlayer.setPlaybackRate()`に設定します。

パラメータ:

value -- int - 再生速度スライダーの現在の値 (50-200)。

戻り値:

None

setup_ui()[ソース]

メディアプレイヤーのユーザーインターフェースをセットアップします。

中央ウィジェット、メインレイアウト、ビデオ表示ウィジェット、シークスライダー、 およびコントロールパネル(ファイルを開く、巻き戻し、停止、再生/一時停止、速度調整)を配置します。 各UI要素のシグナルとスロットを接続します。

戻り値:

None

slider_pressed()[ソース]

スライダーが押されたら、自動更新を一時停止し、シーク中フラグを立てます。

`seeking`フラグを`True`に設定し、再生位置の自動更新を一時的に停止します。 これにより、ユーザーがスライダーをドラッグしている間、再生位置が不規則にジャンプするのを防ぎます。

戻り値:

None

slider_released()[ソース]

スライダーが離されたら、再生位置を設定し、シーク中フラグを解除します。

スライダーの現在の値(ミリ秒単位の再生位置)を`QMediaPlayer`に設定します。 `seeking`フラグを`False`に戻し、再生位置の自動更新を再開します。

戻り値:

None

staticMetaObject = PySide6.QtCore.QMetaObject("QtMediaPlayer" inherits "QMainWindow": )
stop_playback()[ソース]

再生を停止し、開始位置に戻します。

`QMediaPlayer.stop()`メソッドを呼び出して再生を停止します。 再生/一時停止ボタンのテキストを「▶ Play」に更新します。

戻り値:

None

toggle_play_pause()[ソース]

現在のメディアの再生状態(再生中または一時停止中)を切り替えます。

プレイヤーが現在再生中であれば一時停止し、「▶ Play」ボタンのテキストに更新します。 プレイヤーが一時停止中または停止中であれば再生を開始し、「⏸ Pause」ボタンのテキストに更新します。

戻り値:

None

multimedia.media_player.check_imports(modules)[ソース]

必要なPythonモジュールがシステムにインストールされているかを確認します。

指定されたモジュールリストを反復処理し、各モジュールがインポート可能か試行します。 インポートに失敗したモジュールがある場合、エラーメッセージとインストールヒントを表示してプログラムを終了します。

パラメータ:

modules -- list[tuple[str, str]] - チェックするモジュール名とインストールヒントのタプルのリスト。

戻り値:

None - すべてのモジュールがインポートできた場合。インポートできないモジュールがあれば`sys.exit(1)`で終了します。

multimedia.media_player.parse_args()[ソース]

コマンドライン引数を解析し、メディアファイルのパス、自動再生フラグ、ファイル選択ダイアログの表示フラグを取得します。

argparse`モジュールを使用して、`infile`(オプションのファイルパス)、--autoplay`、--ask_open`引数を定義します。 `infile`は起動時にロードするファイルを指定し、--autoplay`は自動再生を有効にします。 `--ask_open`は、`infile`が指定されていない場合にファイル選択ダイアログを開くかどうかを制御します。

戻り値:

argparse.Namespace - 解析された引数を含むオブジェクト。