動画の音量を変更するには

◆PROCESSING 逆引きリファレンス

 カテゴリー:動画・アニメーション

動画の音量を変更するには

【解説】

PROCESSINGで 動画を扱うには、公式サイト 様に公開されている動画専用のライブラリ(Videoライブラリ)を使うのが便利です。

VideoライブラリのMovieクラスには、volume( ) という動画の音量をコントロールするメソッドがあります。

またMovieクラスのプロパティとして保持されている PlayBin2クラスでも、音量の制御が可能です。

 

【構文】

以下の構文にある movie はMovieクラスのインスタンス変数です。

●Movieクラスのメソッドを使う方法
void  movie . volume( float  setvol ) ;

setvol :設定音量( 0.0 – 1.0 )

●PlayBin2クラスのメソッドを使う方法
PlayBin2   bin2  =  movie . playbin ;
void       bin2 . setVolume( double  setvol ) ;
double  getvol  =  bin2 . getVolume() ;

setvol :設定音量( 0.0 – 1.0 )
getvol :現在の音量( 0.0 – 1.0 )

 

【注意】

音量制御には2種類の方法があります。

簡単なのはMovieクラスが持つ volume() メソッドを使う方法です。

volume() メソッドに0.0を与えると音無し(ミュート)に、1.0を与えると最大音量になります。

特に値を設定していない場合、動画音量の初期値は1.0となっています。

ただしvolume()による制御は、play() メソッド実行中(動画再生中)でしか有効となりません。またMovieクラスには「現在の音量」を取得するメソッドがありません。

play() メソッド実行前に音量の制御を行いたい場合や、現在の音量を知りたい場合は、Movieクラスが持っている PlayBin2オブジェクトを使う事で実現可能です。

Movieクラスは、playbinプロパティにGStreamerのPlayBin2クラスのインスタンス変数を保持しています。このPlayBin2が持つ getVolume() メソッドで、「現在の音量」を取得する事ができます。

GStreamについては「動画を再生するには」記事を参照してください。

またPlayBin2クラスが持つsetVolume()メソッドでは、Movieクラスの volume()メソッドと同じく音量の制御が行えます。

与える音量の範囲はvolume() メソッドといっしょです。ただしこちらは play()メソッド実行前でも有効となりますので、使い勝手が良いかもしれません。

PlayBin2クラスについては、下記サイト様などが参考となります。

PlayBin2クラスを利用するには、スケッチの先頭に下記インポート文を記述してください。
import   org.gstreamer.elements.* ;

 

【関連記事】


サンプルプログラム

volume()で音量を制御する例:

実行結果ウィンドウ内でマウスクリックすると、動画の再生を行います。

再生時に音量を半分(0.5)に設定しています。play() の前で volume() を実行しても正しく動作しないので注意してください。

 

PlayBin2を利用する例:

PlayBin2を利用して音量の設定と取得を行っています。PlayBin2のsetVolume() は play() 実行前でも有効です。

また先の例では動画再生中かどうかを playing という変数で管理していましたが、PlayBin2を利用すると isPlaying() メソッドで再生中か否かを取得できます。

isPlaying() については「動画の再生位置を変更するには」記事を参照してください。

 

応用例:

応用例です。画面下に停止・再生を行う制御ボタンと、音量を制御するシークバーを設けました。

シークバーをクリックする事で音量を変化させる事が可能です。

<出力サンプル>

ボタン画像は illust-AC 様:ニコフ さん、至福の隙間 さん の画像を拝借しています。

また動画映像は、味噌や発酵食品で有名なマルコメ株式会社 様のテレビCMの1コマです。感動的なCMです。私は少しウルウルきました(笑)。

今回動画の掲載に関し、マルコメ株式会社 様より寛大なご許可を得ることができました。謹んでお礼申し上げます。

なお当サイトから動画を流用する行為は禁止とさせて頂いております。悪しからずご了承ください。

下記はサンプルプログラムと同じ動きになるように、 P5.js+P5.dom で書き直したものです。動作イメージを確認できます。

※ブラウザーによっては下記サンプルが表示されない事があります。動画が表示されない場合は IE11、FireFox、Chrome、Edge などでお試しください。

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。