makoto_fujimotoのblog

株式会社進角
代表 藤本信のブログです
どうぞよろしくお願いします

カテゴリ : デジタルサイネージ

ffmpegで動画ファイルの詳細情報を取得する際にファイル名がSJISの場合ファイル指定に
難航したので解決策のメモ。

例えばWindows系ファイルシステムがマウントされたLinux系サーバでは日本語ファイル名や
フォルダ名が以下の様に文字化けしてしまうことがあります(1行目)。ファイル名は"コ ピー.mp4"

$ ls -l
-rw-rw-r--  1 fujimoto fujimoto 111044022 11月  9 16:46 2015 ?R ?s?[.mp4
-rw-rw-r--  1 fujimoto fujimoto 111044022 11月  9 16:46 2015 ああ あ.mp4
-rw-rw-r--  1 fujimoto fujimoto 111044022 11月  9 16:46 2015 あああ.mp4

これを以下の様にffmpegにコピペしても旨く行きません
$ ffmpeg -i  ?R ?s?[.mp4
$ ffmpeg -i  "?R ?s?[.mp4"
$ env LANG=ja_JP.SJIS ffmpeg -i "?R ?s?[.mp4"
ffmpeg version N-81489-ga37e6dd Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
  configuration: --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libx264
  libavutil      55. 29.100 / 55. 29.100
  libavcodec     57. 54.101 / 57. 54.101
  libavformat    57. 48.101 / 57. 48.101
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 57.100 /  6. 57.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
?R ?s?[.mp4: No such file or directory


なんとか直接ファイル名を渡す方法は無いものか・・・

ということでlsやfindで取得したファイル名をそのままffmpegに渡す方法でうまくいきました。
ただしリストの何番目という情報を最初に把握する必要があり、あまりスマートな方法では無いかもしれません。

カレント内のファイルの場合
$ ls -1
$ ffmpeg -i "`ls -1|sed -n 1p`"

カレント内のサブフォルダのファイルを指定する場合
$ find . -type f|grep mp4
$ ffmpeg -i "`find . -type f|grep mp4|sed -n 1p`"

動画情報の取得に成功した場合の結果
$ ffmpeg -i "`find . -type f|grep mp4|sed -n 8p`"
ffmpeg version N-81489-ga37e6dd Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
  configuration: --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libx264
  libavutil      55. 29.100 / 55. 29.100
  libavcodec     57. 54.101 / 57. 54.101
  libavformat    57. 48.101 / 57. 48.101
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 57.100 /  6. 57.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './/Rs[.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp41mp42isom
    creation_time   : 2014-07-18T07:40:50.000000Z
  Duration: 00:00:44.08, start: 0.000000, bitrate: 20154 kb/s
    Stream #0:0(deu): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
    Metadata:
      creation_time   : 2014-07-18T07:40:50.000000Z
      handler_name    : Core Media Audio
    Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 20146 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 30k tbn, 50 tbc (default)
    Metadata:
      creation_time   : 2014-07-18T07:40:50.000000Z
      handler_name    : Core Media Video
At least one output file must be specified

ネットワーク制御が可能な動画デジタルサイネージを構築する場合に、C#などでがりがりWindowsネイティブコードを書いたり、レガシーなFlashで制作するのは少し荷が重いので既成品ソフトで対応できそうなモノを検証してみました。

まずWindows標準のメディアプレイヤーにもいくつかコマンドラインオプションが有るようですが、ローカル再生かつファイル指定程度しか対応していないので、そもそもリモート操作が出来ないということが分かりました。少し調べたところVLC media playerという、フリーの動画再生ソフトが豊富なコマンドラインオプションを実装していることが分かりましたのでこちらの方法をご紹介します。
VLC

(1) ソフトウェアパッケージの入手
http://www.videolan.org/vlc/

(2) VLCメディアプレーヤーのリモートコントロール設定
VLCを起動します
ツール>設定>設定の表示[すべて]>インターフェース
 メインインターフェース>
  拡張インターフェースモジュール
   WebとTelnetにチェック
 メインインターフェース>Lua
  Lua HTTP
   パスワード:*****(必須)
   ソースディレクトリ:
   ディレクトリインデックス:非チェック
  Lua Telnet
   ホスト  :localhost→192.168.123.10 (固定かDHCPで割り当てられているアドレス)
   ポート番号:4212(デフォルト)
   パスワード:*****(必須)

設定を行ったらVLCを再起動します。
 コマンドプロンプトのnetstatコマンドで8080と4212ポートがListenされていることを確認します。
 ファイアウォールで閉じられている場合は解放する必要があります。またリモート操作で応答が無い場合などは制御側PCからもからもポートチェックをしたほうがよいでしょう。


(3) 別マシンから動作確認
リモートマシンはPCでもLinuxでも可能です。
ブラウザにて操作する場合
 http://192.168.123.10:8080:/

TeratermによるTelnet接続の設定
VLC Teraterm 端末の設定
 送信時の改行:CR+LF
 エコーバックする

VLC Teraterm 新しい接続
 ポート:4212
 サービス:Telnet

VLC Teraterm ログイン

VLMコマンドの操作方法
 事前に再生PCに動画ファイルを用意する
  Telnetにログイン
  すぐに再生
  > add c:\movie\sample.mp4
  再生リストを作った後に再生
  > enqueue c:\movie\sample.mp4
  > play
  フルスクリーンにする
  > f
  コマンド一覧(help)
  > help

この様にtelnetプロトコルを使用して映像制御するスクリプトを組めば、簡易的なデジタルサイネージのリモート制御が可能となります。

(4) その他VLCの商用向け設定

再生ファイル名の非表示
ツール>設定>設定の表示[すべて]
 ビデオ>ビデオの一般的な設定
  ビデオにメディアタイトルを表示:非チェック


起動時にコントローラーを表示しない
ツール>設定>
 最小表示で起動:チェック


ファイルエラー等を表示しない
ツール>設定>設定の表示[すべて]>インターフェース
 対話的なインターフェース:非チェック

起動時にスタート画面を表示しないでデスクトップを表示する
タスクバー(右ボタン)>プロパティ>[タブ]ナビゲーション
 スタート画面
  サイン時または画面上~スタート画面ではなくデスクトップに移動する

待機中のカラーコーンを表示しない
ツール>設定>設定の表示[すべて]>インターフェース>メインインターフェース>Qt
 バックグラントコーン、またはアートの表示:非チェック

自動ログイン設定
netplwizを起動する
http://pc-karuma.net/windows-8-auto-sign-in/

プログラムの自動起動(win8.1)
C:\Users\ユーザーID\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
にアプリ(VLC)のショートカットをコピーする

弊社ではマルチメディア オーサリングソフト Macromedia Director(現 Adobe Direcor)で作成されたコンテンツのメンテナンスや、新しいソリューションへのコンバートを承っております。

マルチメディア端末

マルチメディア隆盛期には、博物館やショールームのキオスク端末や、教育ソフトの多くが Macromedia Director で開発されました。これらの資産を新しいPC環境でも活用していただくためのサービスです。タッチパネルやマルチモニター、外部機器の制御、外部信号の受け取りにも対応可能です。

コンバートサービス
Director → Flash,Air 変換サービス
Director → HTML5 変換サービス

更新サービス
Directorコンテンツの更新
再生OSバージョンアップに対応
ハードウェアのバージョンアップ対応

CD-ROMコンテンツ

また多くのマルチメディアコンテンツが Macromedia Director で作成され、CD-ROMで配布されていました。
これらのCD-ROMコンテンツのWebコンテンツへのコンバートも承ります。


CD-ROMのWebコンテンツ化
CD-ROM → Flash 変換サービス
CD-ROM → HTML5,Webアプリ 変換サービス
 

保守サービス

Director コンテンツの保守管理も承ります。


※対応可能なバージョンは Director 5 以降のDIRファイルになります。
※費用についてはDirectorのバージョン、コンバートするソリューション、ハードウェア制御の有無によって変動しますので、現状調査後にお見積りいたします。


【Macromedia Director について】
director5-400x247
Macromedia Director は1990年代に多くのマルチメディア制作ソフトとして使われていました。WindowsとMacintoshで動作させるための起動ファイル(プロジェクター)が自動生成できたのが、マルチメディア制作ソフトとして普及した一因だったかと思います。そのプログラミング言語のLingoも、画像や音声の制御のために特化していたため、開発効率が高かったのものも確かです。
博物館やショールームなどの展示コンテンツの制作にも使用され、Director から RS232C(シリアルポート)を使用して外部機器と通信させ、センサーやスイッチ、照明やメカトロ二クスとの連携を実現していました。
Director 5 以降からは Xtra に対応して、外部ビデオの再生や Flashファイルの再生が可能になりました。Director 7 からは Shockwaveファイル(*.dcr)の作成に標準対応し、マルチユーザサーバー(Multiuser Server)を使ったコミュニケーションサイトや対戦ゲームなどが作成されました。
今ではこれらもFlashを使ったコンテンツ制作に移行しています。

デジタルサイネージは映像や画像を含めたデジタル情報を表示するディスプレイシステムです。
大型のプラズマディスプレイや液晶ディスプレイを使った街頭広告としての利用や、交通機関の運行案内、公共施設や商業施設の利用案内・イベント告知など、用途は多岐に渡っています。

弊社が持つITソリューション技術によってデジタルサイネージの可能性はさらに広がります。

タッチパネルを使ったインタラクティブなコンテンツやWebカメラを接続した利用者参加型のイベント・プロモーション。デジタルサイネージをインターネットと接続してWeb連動型のキャンペーンイベントなど、単なる電子広告にはとどまらない効果的なデジタルサイネージ活用方法があります。

Flashを使ったシステムでは、カメラ画像表示、画像エフェクト処理、手描き文字認識、外部機器連動など、さまざまな用途に対応します。
HTML5を使ったシステムでは、動画や音声を含めたコンテンツ配信が可能で、同一プログラムでのタブレットやスマートフォンを含めたマルチデバイス対応も可能です。

以下にデジタルサイネージの活用方法をご紹介します。

【外部機器との連携、ネットワーク対応】
さまざまな外部機器と連携することで、ショールームや展示会で、来客者に合わせたコンテンツを表示できます。FeliCaやRFタグを使用すれば、入場時に登録した顧客情報に合わせたコンテンツの表示やサービスが提供できます。
Webカメラを利用した来場者参加型コンテンツの制作にも対応します。
スマートフォンを利用して、デジタルサイネージの表示コンテンツをリモートコントロールできます。
大規模なショールームや展示会ではネットワークにサーバを設置して、来場者の利用状況をリアルタイムに把握することができます。

【インターネットとの連携】
デジタルサイネージをインターネットに接続することで、既存のサービスやWebサイトとの連携が可能です。Webでのキャンペーンと連動したイベントや、リアルイベントでのインターネットへの情報送信など、プロモーション活動に有効です。Webの予約システムと連動したショールームの予約情報を、ショールーム内にリアルタイム表示せることも可能です。

【タブレットの活用】
大きな画面だけがデジタルサイネージではありません。接客員がタブレットを使ってデジタルサイネージの表示内容を操作したり、来場者へのアンケートをタブレットを使って入力することもできます。
タブレットを通して音声での情報入力や音声応答への対応も可能になってきました。タブレットを使った文字、画像、映像、音声などさまざまな要素を取り込んだシステムの構築も、これから増えていくでしょう。

【活用例】
Webカメラを利用した参加型デジタルサイネージ
・来場者へプリントサービス Webカメラ+プリンタ
・リアルタイム映像を組み合わせた売り場案内
インターネットを利用したデジタルサイネージ
・インターネットでの予約システムと連動した表示システム
・SNS投稿・表示端末 インターネットプリクラ端末
計測機器を使用したデジタルサイネージ
・心拍計測器や血圧計、体温計などと連動したサービス提供(ヘルスケアなど)
・温度計、湿度計、風速計などと連携したコンテンツ表示(衣料品、食料品)


株式会社進角では、この様にさまざまな目的に合わせて、最適なデジタルサイネージシステムをご提案いたします。

本記事
株式会社進角
取締役 シニアエンジニア
新野 浩一

http://www.shinkaku.co.jp/
TEL 03-3780-2952
Mail info@shinkaku.jp
→お問い合わせフォーム

このページのトップヘ