ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

動画再生プレイヤーを作りたいメモ

シンプルな動画再生プレイヤーをC#で自作したいと思って軽く調べてみたところ、WindowsMediaPlayerのコントロールが利用できるという情報がまず目に入りました。

しかし‥

個人的に最低限必須と思っている「MP4を再生可能」「再生」「停止」「一時停止」「コマ送り」「コマ戻し」「ループ再生」「区間指定してのループ再生」(これら全てがショートカットキーで操作可能)といったあたりは全然満たせないっぽい?

ということで、さらに少しだけ調べたことをメモっておきます。
もうこのまま制作しない可能性が大きいですが。。

 

■WindowsMediaPlayerコントロールを使う方法

C# Fromで動画再生するには
 http://truthfullscore.hatenablog.com/entry/2014/03/03/120602
 ・ コマ送り再生ができない ⇒ 実装すればできます
 ・ WindowsMediaPlayerの外観使ってます感バリバリ
 ・ UI部分のカスタマイズができない
 ・一時停止中にシークしてもサムネイルが移動しない

試しに作ってみました。

 

■MediaElementクラスを使用する方法

・3.C#コードでMediaElementを生成
 http://coelacanth.heteml.jp/site/silverlight/article_3

 

■DirectShowを使用する方法

・【C#Windowsフォーム アプリケーションで動画再生ユーザコントロール
 http://atamo-dev.hatenablog.com/entry/2017/01/04/161651
・MediaFoundationを使う (2) MediaFoundation管理クラスの宣言
 https://www.timbreofprogram.info/blog/archives/453

 メモリ管理に難がある
 mp4を標準でサポートしたい場合、DirectShowでもデコーダを各自でインストールすれば可能

 

■MediaFoundationを使用する方法

・MediaFoundationを使う (1) MediaFoundationの特徴
 https://www.timbreofprogram.info/blog/archives/452
  MicrosoftがDirectShowに代わってWindowsVista以降で使用できるようにしたマルチメディアAPI

 mp4を標準でサポートしたい場合、MediaFoundation(ほぼ)一択
 mp4のサポートはWindows7から

C#でaviを使いたい!~MediaFoundation~
 http://talewin.kagome-kagome.com/%E5%82%99%E5%BF%98%E9%8C%B2/c-%E3%81%A7avi%E3%82%92%E4%BD%BF%E3%81%84%E3%81%9F%E3%81%84%EF%BC%81-mediafoundation-

 

■調べる単語

メディアコンテナ(Media Container)
メディア分離(Demultiplexing)
映像コーデック・デコード(復号)
音声コーデック・デコード(復号)
メディア再生時間管理、表示時刻(Presentation TimeStamp;PTS)管理
映像レンダリング(描画)
音声レンダリング(再生)