AndroidでDLNA再生するのに良いアプリは?

スマートフォンでDLNAサーバーのファイルを視聴する良いソフトが無いかとずーっと探しています。わざわざDLNAを使わなくてもSambaクライアントを使えばファイル共有からなんでも再生できてしまいます。だけど何か負けた気がするので探していました。
今のところMediaHouseのUPnP / DLNA対応ブラウザがなんでも再生できていい感じです。





本当はDTCP-IPにも対応したアプリがあればよいのですがちょっと諦めてます。DiXiMが搭載されたスマートフォンが一番良いのでしょうね。

ではせめて、ほかのファイルは自由に見たいなぁ、といろいろ試していました。スマートフォンのDLNA再生は基本的にmp4形式ならほぼ問題なく動くものが多いです。サーバーにmp4へのトランスコード機能を組み込めれば無線の転送速度ト的にも一番良いのですがなかなかうまくいきませんでした。
それなら、事前にmp4へエンコードしておくのも良いのですが、手持ちのテレビ レグザではmp4の再生に難があり、再生する機器別にいくつもエンコードしたファイルを用意するのはバカらしいです。

DLNAを使わなければMX 動画プレーヤーを使うと何でも再生できてしまいます。ES ファイルエクスプローラーなどと組み合わせるとファイル共有でなんでも再生できます。

ファイル共有やSDカードに保存できれば何でも再生できちゃうのに・・・DLNAでもできないのかな?と思いながらポチポチとアプリを試していました。

そして今のところDLNAでの再生で一番良い組み合わせはMediaHouseのUPnP / DLNA対応ブラウザとMX 動画プレーヤーです。MediaHouseのUPnP / DLNA対応ブラウザがDLNAクライアントのフロントエンドとして動き、メディアファイルはMX 動画プレーヤーに渡します。
役割分担は重要ですね!

何でも再生し過ぎるのでDLNAサーバー側でトランスコードしているか確かめたりしました。WHSA2011のメディアサーバーだとある程度勝手にトランスコードしてくれたりします。メディアの解像度が落ちなければトランスコードされてもいいんですけどね。

WHS2011では何が起きてるかよくわからないのでBeer Media Server 2 (BMS2)を動かして何でも適当なMimeTypeを付けて送るようにしてみました。すると、なんでも再生してしまいます。すごい!

DLNAサーバーの種類に関わらずほとんどなんでも再生できるようです。

【2014/11/02 追記
”GinkgoDlna”も使いやすかったです。 シンプルなインターフェースが使いやすいDLNAプレーヤー "GinkgoDlna" もご覧ください。】

ということで、BMS2の設定ファイルを置いておきます。"common.lua"と"MediaHouse.lua"というテキストファイルを作ってBMS2のユーザー用スクリプトフォルダに置いてください。

【2017/5/26 追記
DLNAサーバー BMS2の設定方法は
BMS2用Luaスクリプト
にまとめています】

common.lua

----------------------------------------------------------------------------
BMS.ShowTranscodeFolder = true -- トランスコードフォルダを表示する
----------------------------------------------------------------------------

----------------------------------------------------------------------------
local org_GetScriptFileName = BMS.GetScriptFileName -- 標準スクリプトの BMS.GetScriptFileName を保存。
----------------------------------------------------------------------------

----------------------------------------------------------------------------
-- 新しい BMS.GetScriptFileName を定義。
----------------------------------------------------------------------------
function BMS.GetScriptFileName(in_header, ip_addr, in_uri)
  
  -- Toshiba REGZA 
  i1 = string.find(string.upper(in_header), "USER-AGENT:", 1, true)
  s = string.match(in_header, "UPnP/1.0 DLNADOC/1.50 Intel_SDK_for_UPnP_devices/1.2", i1) 
  if s then 
   return "REGZA-ZP2" 
  end 

  -- Panasonic VIERA
  s = string.match(in_header, "Panasonic MIL DLNA CP", i1) 
  if s then 
   return "VIERA-GT3" 
  end 

  -- MediaHouse
  s = string.match(in_header, "MediaHouse", i1) 
  if s then 
   return "MediaHouse" 
  end 


  -- 保存しておいた標準スクリプトの BMS.GetScriptFileName を呼ぶ。
  return org_GetScriptFileName(in_header, ip_addr, in_uri)
end


----------------------------------------------------------------------------
function BMS.GetFolderName(fname)
  -- フォルダ名の表示を < > で括らないように
  return fname
end

MediaHouse.lua

--[[
MediaHouse用スクリプト
2013-01-14 MimeType固定で何でも送信。
           初版 SignalFlag_Z
   http://signal-flag-z.blogspot.jp/
]]

----------------------------------------------------------------------
-- この機種がサポートしているメディア情報のリスト
----------------------------------------------------------------------
SUPPORT_MEDIA_LIST = {
 "video/mpeg:*",
}

----------------------------------------------------------------------
-- BMS.GetPlayInfo 関数
--   メディアファイルの再生方法の情報を返す。
--   引数:
--     fname: ファイル名
--     minfo: MediaInfo.dll などから得られた情報
--   戻り値:
--     1: MimeType または トランスコード情報テーブル
--     2: 表示用文字列(省略でファイル名そのまま)
--     3: ソート用文字列(省略でファイル名そのまま)
----------------------------------------------------------------------
function BMS.GetPlayInfo(fname, minfo)
 --print("\r\nDEBUG: "..BMS.ClientInfo.ext.."\r\n")
 --local MimeTypeString=MimeTypeString
 local minfo = minfo

  --メディアではない?
 if not (minfo.Video.Format ~= "" or minfo.Audio.Format ~= "")then
  return ""
 end

 --JPEG
 if minfo.General.Format == "JPEG" then
  return "image/jpeg:*"
 end 
 --WAVE
 if minfo.General.Format == "Wave" then
  return "audio/L16:*"
 end
 --MP3
 if minfo.General.Format == "MPEG Audio" then
  return "audio/L16:*"
 end

 --ビデオ
 return "video/mpeg:*"
end

コメント

  1. 大変役立つ情報をありがとうございました。
    早速使用しております。

    返信削除

コメントを投稿

最近のコメント

Threaded Recent Comments will be here.