MiniDLNA 1.1.4 新增對rmvb格式的支援
因為電視為安卓系統,螢幕大,所以看電影時喜歡在TV上看,之前都是PC端通過samba(網路上的芳鄰)來分享視訊,但在TV上觀看時,在多人同時用上網時偶爾會卡頓,體驗不怎麼好。所以就想換個方式來共享視訊,所以就選定DLNA了。
Windows:
Windows Media Player----即DLNA服務端又為DLNA客戶端,可直接推送視訊至TV上,當時系統為Win7,XP的MediaPlayer就不清楚了
AirPlay(官方網站)----DLNA服務端,這款軟體可以直接將電腦桌面推送至TV上(帶聲音),效果同雙顯示器,發現它後就再也沒有使用過HDMI線連線TV了。也可以單獨推送視訊/圖片/音樂至TV上
之後一段時間,PPTV、迅雷視訊、騰訊視訊等等播放軟體都開始支援DLNA了,現在因工作需要已經轉至Linux了,所以不怎麼玩Windows了,這些軟體的DLNA功能怎麼樣不太清楚。
Linux :
rygel----DLNA服務端,Debain Wheezy源裡的版本,因不支援mov、flv、rm、rmvb、mkv等格式的檔案分享,用過一段時間後放棄了
MiniDLNA(官網)----DLNA服務端,不支援rm、rmvb格式的檔案分享,但可以自己修改原始檔來支援,所以就選它了。它還自帶一個Web網頁,可以顯示分享資源數與當前客戶端名字等等,在瀏覽器裡開啟http://本機IP:8200
1、下載原始碼,目前minidlna最新版本1.1.4, 下載地址
2、修改原始檔
metadata.c
//line 840 else if( strncmp(ctx->iformatctx->name, "matroska", 8) == 0 ) xasprintf(&m.mime, "video/x-matroska"); else if( strcmp(ctx->iformatctx->name, "flv") == 0 ) xasprintf(&m.mime, "video/x-flv"); //----新增---- else if( strcmp(ctx->iformat->name, "rm") == 0 ) xasprintf(&m.mime, "video/x-pn-realvideo"); else if( strcmp(ctx->iformat->name, "rmvb") == 0 ) xasprintf(&m.mime, "video/x-pn-realvideo"); //---結束---- if( m.mime ) goto video_nodlna;
upnpglobalvars.h
// Line 169
"http-get:*:audio/mp4:*," \
"http-get:*:audio/x-wav:*," \
"http-get:*:audio/x-flac:*," \
"http-get:*:application/ogg:*," \
//----add----
"http-get:*:video/x-pn-realvideo:*"
//----end----
#define DLNA_FLAG_DLNA_V1_5 0x00100000
#define DLNA_FLAG_HTTP_STALLING 0x00200000
utils.c
//line 381
ends_with(file, ".m2t") || ends_with(file, ".mkv") ||
ends_with(file, ".vob") || ends_with(file, ".ts") ||
ends_with(file, ".flv") || ends_with(file, ".xvid") ||
//----add----
ends_with(file, ".rm") || ends_with(file, ".rmvb") ||
//----end----
#ifdef TIVO_SUPPORT
ends_with(file, ".TiVo") ||
#endif
ends_with(file, ".mov") || ends_with(file, ".3gp"));
3、編譯步驟
sudo apt-get install build-essential libexif-dev libjpeg-dev \
libid3tag0-dev libFLAC-dev libvorbis-dev libsqlite3-dev libavformat-dev \
autoconf automake
./autogen.sh
./configure
make
make install
sudo cp ./linux/minidlna.inot.d.script.tmpl /etc/init.d/minidlna
sudo cp ./minidlna.conf /etc/minidlna.conf
# 第一次啟動使用-d –v選項看有沒有出錯
sudo /usr/local/sbin/minidlnad -d -v
# 沒出錯就ctrl+c 結束程序
# 正常啟動
sudo service minidlna start
# 重新整理列表
sudo service minidlna restart
4. Minidlna配置
minidlna.conf
# port for HTTP (descriptions, SOAP, media transfer) traffic
port=8200
# network interfaces to serve, comma delimited
#network_interface=eth0
# specify the user account name or uid to run as
#user=jmaggard
# set this to the directory you want scanned.
# * if you want multiple directories, you can have multiple media_dir= lines
# * if you want to restrict a media_dir to specific content types, you
# can prepend the types, followed by a comma, to the directory:
# + "A" for audio (eg. media_dir=A,/home/jmaggard/Music)
# + "V" for video (eg. media_dir=V,/home/jmaggard/Videos)
# + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)
# + "PV" for pictures and video (eg. media_dir=PV,/home/jmaggard/digital_camera)
media_dir=/opt
# set this to merge all media_dir base contents into the root container
# note: the default is no
#merge_media_dirs=no
# set this if you want to customize the name that shows up on your clients
#friendly_name=My DLNA Server
# set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache
#db_dir=/var/cache/minidlna
# set this if you would like to specify the directory where you want MiniDLNA to store its log file
#log_dir=/var/log
# set this to change the verbosity of the information that is logged
# each section can use a different level: off, fatal, error, warn, info, or debug
#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn
# this should be a list of file names to check for when searching for album art
# note: names should be delimited with a forward slash ("/")
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
# set this to no to disable inotify monitoring to automatically discover new files
# note: the default is yes
inotify=yes
# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO
enable_tivo=no
# set this to strictly adhere to DLNA standards.
# * This will allow server-side downscaling of very large JPEG images,
# which may hurt JPEG serving performance on (at least) Sony DLNA products.
strict_dlna=no
# default presentation url is http address on port 80
#presentation_url=http://www.mylan/index.php
# notify interval in seconds. default is 895 seconds.
notify_interval=900
# serial and model number the daemon will report to clients
# in its XML description
serial=12345678
model_number=1
# specify the path to the MiniSSDPd socket
#minissdpdsocket=/var/run/minissdpd.sock
# use different container as root of the tree
# possible values:
# + "." - use standard container (this is the default)
# + "B" - "Browse Directory"
# + "M" - "Music"
# + "V" - "Video"
# + "P" - "Pictures"
# + Or, you can specify the ObjectID of your desired root container (eg. 1$F for Music/Playlists)
# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root
#root_container=.
# always force SortCriteria to this value, regardless of the SortCriteria passed by the client
#force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title
# maximum number of simultaneous connections
# note: many clients open several simultaneous connections while streaming
#max_connections=50
一般只需修改media_dir引數即可
# V 即視訊
# 此目錄下只分享視訊檔案
media_dir=V,/home/aa/Videos
# P 即圖片
# A 即音樂
# 此目錄下分享圖片與音樂檔案
media_dir=PA,/home/aa/Public
Debian版minidlna_1.1.4_x64_支援rmvb
注:編譯時Linux版本為Kali/Debian Wheezy x64
新增RMVB支援後的原始碼
minidlna_1.1.5_x64_支援rmvb
注:編譯時Linux版本為Kali 2.0 x64