Twonky (How to run multiple instances with custom Navtree's)

General discussion about the media server. Feature requests. Hints, tips and tricks.
Locked
User avatar
phibertron
Posts:1566
Joined:Sun Jan 30, 2011 5:52 pm
AV Hardware:Hardware
========
WHS - HP Ex495
PS3
XBOX 360
iTouch - Gen 2 and Gen 3
PSP - 3000

Encoders
========
Handbrake
x264
ffmpeg
mencoder

Tagging
======
mp3tag
Twonky (How to run multiple instances with custom Navtree's)

Post by phibertron » Tue Mar 08, 2011 4:20 am

I recently put up a post about the Navtree (How to show folders at the root solved and more)
to show what things could be done within the current limits of the navtree architecture.

The idea here is to take that same direction, but this time lets apply it to different running instances of twonky

There are a few things that we can gain from doing that

1. I could have different twonky servers looking at different shares that would be isolated from each other
which would allow us to create navtree's that only reflected the data each server had access to

2. I could for example have one for c:\movies, another for c:\television, and another for c:\family
they each would have there own web page, and would be seen as seperate servers to clients

3. I could also for example have one just for music, one just for photo's, one just for videos, and one just for remote access

As you can see there are a lot of mix and match possibilities here


Ok, so how do I do any of this you ask..

Note:
I am currently doing this with 6.0.31
And I assume that you already have twonky installed
I am going to run through installing 3 more instances like in example 3 from above

Open a command prompt and cd directories to C:\Program Files\TwonkyMedia\
CD C:\Program Files\TwonkyMedia\
Type of paste the following commands into the command prompt
Note: if one just had -install, its the same as -install 0, the number is the instance
twonkymediaserverwatchdog.exe -install 1
twonkymediaserverwatchdog.exe -install 2
twonkymediaserverwatchdog.exe -install 3

Ok, So what did that just do?

It created the the following services, in addtion to the existing TwonkMedia service
each acting as its own entity
TwonkMedia-1
TwonkMedia-2
TwonkMedia-3
It created the following files in C:\Program Files\TwonkyMedia\
(1)twonkymedia-config1.html
(1)twonkymedia-config.html
(2)twonkymedia-config1.html
(2)twonkymedia-config.html
(3)twonkymedia-config1.html
(3)twonkymedia-config.html
It created the following files in C:\Documents and Settings\All Users\Application Data\TwonkyMedia
(1)db.info
(1)twonkymedia-config1.html
(1)twonkymedia-config.html
(1)twonkymedia-server.ini
(2)db.info
(2)twonkymedia-config1.html
(2)twonkymedia-config.html
(2)twonkymedia-server.ini
(3)db.info
(3)twonkymedia-config1.html
(3)twonkymedia-config.html
(3)twonkymedia-server.ini

Ok, now what?

Well, all 3 new instances were created with copies from origianl files
The ones we really care about are the ini and xml files, as these are what we are going to edit
so that we can customize each instance to have the look anbd fell that we want
Note: at present there are servers running on ports 9000, 9001, 9002 and 9003, go take a peek if you want

IF you dont have that command prompt still open, open one again and type or paste the following
Note: The Twonky Tray Control tool is only capable of stopping or starting just the TwonkyMedia service
net stop TwonkyMedia
net stop TwonkyMedia-1
net stop TwonkyMedia-2
net stop TwonkyMedia-3
Note: you can read the following, and makes the edits yourself,
or you can use the files I have included within the attached zip file in this post
Also, I am going to for this example assume your stuff is in My Documents for Music, Photo, Video

Edit the following in the twonkymedia-server.ini
friendlyname=TwonkyServer Web
defaultview=Twonky Web
contentdir=+M|C:\Documents and Settings\ADMIN\My Documents\My Music,+P|C:\Documents and Settings\ADMIN\My Documents\My Pictures,+V|C:\Documents and Settings\ADMIN\My Documents\My videos
Edit the following in the (1)twonkymedia-server.ini
friendlyname=TwonkyServer Music
defaultview=Twonky Music
contentdir=+M|C:\Documents and Settings\ADMIN\My Documents\My Music
Edit the following in the (2)twonkymedia-server.ini
friendlyname=TwonkyServer Photo
defaultview=Twonky Photo
contentdir=+P|C:\Documents and Settings\ADMIN\My Documents\My Pictures
Edit the following in the (3)twonkymedia-server.ini
friendlyname=TwonkyServer Video
defaultview=Twonky Video
contentdir=+V|C:\Documents and Settings\ADMIN\My Documents\My videos
Create the following file twonky0.view.xml in the folder C:\Program Files\TwonkyMedia\resources\views

Code: Select all

<view name='Twonky Web' path='twonky0.view'>
	<navtree>

		<container id='music' />

		<container id='picture' />

		<container id='video' />

	</navtree>
</view>
Create the following file twonky1.view.xml in the folder C:\Program Files\TwonkyMedia\resources\views

Code: Select all

<view name='Twonky Music' path='twonky1.view'>
	<navtree>

		<container id='music/all' />
		<link id='music/artists' />
		<link id='music/artistindex' />
		<link id='music/composers' />
		<link id='music/rating' />
		<link id='music/artistalbum' />
		<link id='music/genre' />
		<link id='music/genrealbum' />
		<link id='music/genreartistalbum' />
		<link id='music/albums' />
		<link id='music/folders' />
		<link id='music/playlists' />
		<link groupid='music/onlineservices' />

	</navtree>
</view>
Create the following file twonky2.view.xml in the folder C:\Program Files\TwonkyMedia\resources\views

Code: Select all

<view name='Twonky Photo' path='twonky2.view'>
	<navtree>

		<container id='picture/all' />
		<link id='picture/folders' />
		<link id='picture/year' />
		<link id='picture/date' />
		<link id='picture/keywords' />
		<link id='picture/albums' />
		<link id='picture/rating' />
		<link id='picture/playlists' />
		<link groupid='picture/onlineservices' />

	</navtree>
</view>
Create the following file twonky3.view.xml in the folder C:\Program Files\TwonkyMedia\resources\views

Code: Select all

<view name='Twonky Video' path='twonky3.view'>
	<navtree>

		<container id='video/all' />
		<link id='video/folders' />
		<link id='video/titleindex' />
		<link id='video/genre' />
		<link id='video/year' />
		<link id='video/date' />
		<link id='video/albums' />
		<link id='video/rating' />
		<link id='video/playlists' />
		<link id='video/classified' />
		<link groupid='video/onlineservices' />

	</navtree>
</view>

Edit the following file view-definitions.xml in the folder C:\Program Files\TwonkyMedia\resources\views

Code: Select all

<view name='base' viewlist='twonky0,twonky1,twonky2,twonky3' guilist='Twonky Web,Twonky Music,Twonky Photo,Twonky Video'>

	<navtree sortcriteria='+upnp:originalTrackNumber'>

			<container name='Music By All' id='music/all' createClass='object.item.audioItem.musicTrack' class='object.container'/>

			<container name='Music By Artist' id='music/artists' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
				<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
				<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'/>
			</container>

			<container name='Music By Artist/Index' id='music/artistindex' class='object.container' createClass='object.item.audioItem.musicTrack'>
				<container buildon='upnp:artist[3]' class='object.container' createClass='object.item.audioItem.musicTrack'>
					<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
				</container>
			</container>

			<container name='Music By Composer' id='music/composers' createClass='object.item.audioItem.musicTrack' class='object.container' >
				<container buildon='upnp:author@role' createClass='object.item.audioItem.musicTrack' class='object.container.person.musicArtist' />
			</container>

			<container name='Music By Rating' id='music/rating' createClass='object.item.audioItem.musicTrack' class='object.container' >
				<container buildon='pv:rating' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
			</container>

			<container name='Music By Artist/Album' id='music/artistalbum' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
				<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
					<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
				</container>
				<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
					<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
					<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
				</container>
			</container>

			<container name='Music By Genre' id='music/genre' class='object.container' createClass='object.item.audioItem.musicTrack'>
				<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack' />
			</container>

			<container name='Music By Genre/Album' id='music/genrealbum' class='object.container' createClass='object.item.audioItem.musicTrack'>
				<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack' >
					<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
				</container>
			</container>

			<container name='Music By Genre/Artist' id='music/genreartistalbum' class='object.container' createClass='object.item.audioItem.musicTrack'>
				<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
					<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
					<container buildon='upnp:artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
				</container>
				<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack'>
					<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
					<container buildon='upnp:artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
				</container>
			</container>

			<container name='Music By Album' id='music/albums' createClass='object.item.audioItem.musicTrack' class='object.container' >
				<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
			</container>

			<container name='Music By Folder' id='music/folders' class='object.container.storageFolder' createClass='object.item.audioItem.musicTrack'>
				<container buildon='res' createClass='object.item.audioItem.musicTrack' class='object.container.storageFolder' />
			</container>

			<container name='Music By Playlists' id='music/playlists' class='object.container' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack' sortcriteria='+upnp:originalTrackNumber,+dc:title'   restricted='0' flags='pv:playlistRoot=Music' >
				<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistmostplayed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='1'  restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistlastplayed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='4' class='object.container.playlistContainer' restricted='1'  flags='pv:smartplaylist=1' />
				<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' upnp:originalTrackNumber='5' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack' class='object.container.playlistContainer' />
			</container>

			<container name='Music By Services' groupid='music/onlineservices' createClass='object.item.audioItem.online.musicTrack' class='object.container'>
			<container buildon='pv:onlineServiceTitle'  createClass='object.item.audioItem.online.musicTrack' class='object.container'>
				<container name='allstations' createClass='object.item.audioItem.online.musicTrack' class='object.container' />
				<container name='genrestation' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
					<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.online.musicTrack' />
				</container>
				<container name='stationindex' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
					<container buildon='dc:title[3]' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
						<container buildon='dc:title' class='object.container' createClass='object.item.audioItem.online.musicTrack'/>
					</container>
				</container>
			</container>
			</container>

			<container name='Photo By All' id='picture/all' createClass='object.item.imageItem.photo' class='object.container'/>

			<container name='Photo By Folder' id='picture/folders' class='object.container.storageFolder' restricted='0' createClass='object.item.imageItem.photo'>
				<container buildon='res' createClass='object.item.imageItem.photo' class='object.container.storageFolder'/>
			</container>

			<container name='Photo By Year' id='picture/year' createClass='object.item.imageItem.photo' class='object.container'>
				<container buildon='pv:year' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
			</container>

			<container name='Photo By Date' id='picture/date' createClass='object.item.imageItem.photo' class='object.container'>
				<container name='allname' createClass='object.item.imageItem.photo' class='object.container'>
					<container name='allname' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
					<container buildon='pv:month' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
				</container>
				<container buildon='pv:year' createClass='object.item.imageItem.photo' class='object.container'>
					<container name='allname' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
					<container buildon='pv:month' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
				</container>
			</container>

			<container name='Photo By Keyword' id='picture/keywords' createClass='object.item.imageItem.photo'  class='object.container' >
				<container buildon='pv:avKeywords' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
			</container>

			<container name='Photo By Album' id='picture/albums' createClass='object.item.imageItem.photo'  class='object.container' >
				<container buildon='upnp:album' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
			</container>

			<container name='Photo By Rating' id='picture/rating' createClass='object.item.imageItem.photo' class='object.container' >
				<container buildon='pv:rating' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
			</container>

			<container name='Photo By Playlists' id='picture/playlists' class='object.container' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Picture' >
				<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistmostviewed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistlastviewed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='4' class='object.container.playlistContainer' restricted='1' flags='pv:smartplaylist=1' />
				<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' upnp:originalTrackNumber='5' class='object.container.playlistContainer' />
			</container>

			<container name='Photo By Services' groupid='picture/onlineservices' createClass='object.item.imageItem.online.photo' class='object.container'>
			<container buildon='pv:onlineServiceName'  createClass='object.item.imageItem.online.photo' class='object.container'>
				<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
				<container buildon='pv:onlineServiceTitle' createClass='object.item.imageItem.online.photo' class='object.container'>
					<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
					<container name='keywords' createClass='object.item.imageItem.online.photo'  class='object.container' >
						<container buildon='pv:avKeywords' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
					</container>
					<container name='album' createClass='object.item.imageItem.online.photo'  class='object.container' >
						<container buildon='upnp:album' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
					</container>
					<container name='date' createClass='object.item.imageItem.online.photo' class='object.container'>
						<container buildon='pv:year' createClass='object.item.imageItem.online.photo' class='object.container'>
							<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
							<container buildon='pv:month' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum'/>
						</container>
					</container>
					<container name='author' createClass='object.item.imageItem.online.photo' class='object.container' >
						<container buildon='upnp:author' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
					</container>
				</container>
			</container>
			</container>

			<container name='Video By All' id='video/all' createClass='object.item.videoItem.movie' class='object.container'/>

			<container name='Video By Folder' id='video/folders' class='object.container.storageFolder' restricted='0' createClass='object.item.videoItem.movie'>
				<container buildon='res' createClass='object.item.videoItem.movie' class='object.container.storageFolder'/>
			</container>

			<container name='Video By Genre' id='video/genre' createClass='object.item.videoItem.movie' class='object.container'>
				<container buildon='upnp:genre' createClass='object.item.videoItem.movie' class='object.container' />
			</container>

			<container name='Video By Title' id='video/titleindex' class='object.container' createClass='object.item.videoItem.movie'>
				<container buildon='dc:title[3]' class='object.container' createClass='object.item.videoItem.movie'>
					<container buildon='dc:title' class='object.container' createClass='object.item.videoItem.movie'/>
				</container>
			</container>

			<container name='Video By Year' id='video/year' createClass='object.item.videoItem.movie' class='object.container'>
				<container buildon='pv:year' createClass='object.item.videoItem.movie' class='object.container' />
			</container>

			<container name='Video By Date' id='video/date' createClass='object.item.videoItem.movie' class='object.container'>
				<container buildon='pv:year' createClass='object.item.videoItem.movie' class='object.container'>
					<container buildon='pv:month' createClass='object.item.videoItem.movie' class='object.container'/>
				</container>
			</container>

			<container name='Video By Album' id='video/albums' createClass='object.item.videoItem.movie' class='object.container' >
				<container buildon='upnp:album' createClass='object.item.videoItem.movie' class='object.container' />
			</container>

			<container name='Video By Rating' id='video/rating' createClass='object.item.videoItem.movie' class='object.container' >
				<container buildon='pv:rating' createClass='object.item.videoItem.movie' class='object.container' />
			</container>

			<container name='Video By Playlists' id='video/playlists' class='object.container' createClass='object.item.videoItem.movie,object.item.videoItem.online.movie' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Video' >
				<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistmostviewed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1'  />
				<container name='playlistlastviewed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='4' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.videoItem.movie,object.item.videoItem.online.movie' upnp:originalTrackNumber='5' class='object.container.playlistContainer'  />
			</container>

     		        <container name='Video By Classified' id='video/classified' class='object.container'  createClass='object.item.videoItem.classified.movie'/>

			<container name='Video By Services' groupid='video/onlineservices' createClass='object.item.videoItem.online.movie' class='object.container'>
			<container buildon='pv:onlineServiceName' createClass='object.item.videoItem.online.movie' class='object.container'>
				<container buildon='pv:onlineServiceTitle' createClass='object.item.videoItem.online.movie' class='object.container'/>
			</container>
			</container>

		<container name='music' id='music' upnp:originalTrackNumber='1' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack'>

			<container name='Music All' createClass='object.item.audioItem.musicTrack' class='object.container'/>

			<container name='Music Artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
				<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
				<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'/>
			</container>

			<container name='Music Artist/Index' class='object.container' createClass='object.item.audioItem.musicTrack'>
				<container buildon='upnp:artist[3]' class='object.container' createClass='object.item.audioItem.musicTrack'>
					<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
				</container>
			</container>

			<container name='Music Composer' createClass='object.item.audioItem.musicTrack' class='object.container' >
				<container buildon='upnp:author@role' createClass='object.item.audioItem.musicTrack' class='object.container.person.musicArtist' />
			</container>

			<container name='Music Rating' createClass='object.item.audioItem.musicTrack' class='object.container' >
				<container buildon='pv:rating' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
			</container>

			<container name='Music Artist/Album' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
				<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
					<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
				</container>
				<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
					<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
					<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
				</container>
			</container>

			<container name='Music Genre' class='object.container' createClass='object.item.audioItem.musicTrack'>
				<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack' />
			</container>

			<container name='Music Genre/Album' class='object.container' createClass='object.item.audioItem.musicTrack'>
				<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack' >
					<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
				</container>
			</container>

			<container name='Music Genre/Artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
				<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
					<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
					<container buildon='upnp:artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
				</container>
				<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack'>
					<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
					<container buildon='upnp:artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
						<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
						<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
					</container>
				</container>
			</container>

			<container name='Music Album' createClass='object.item.audioItem.musicTrack' class='object.container' >
				<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
			</container>

			<container name='Music Folder' class='object.container.storageFolder' createClass='object.item.audioItem.musicTrack'>
				<container buildon='res' createClass='object.item.audioItem.musicTrack' class='object.container.storageFolder' />
			</container>

			<container name='Music Playlists' class='object.container' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack' sortcriteria='+upnp:originalTrackNumber,+dc:title'   restricted='0' flags='pv:playlistRoot=Music' >
				<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistmostplayed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='1'  restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistlastplayed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='4' class='object.container.playlistContainer' restricted='1'  flags='pv:smartplaylist=1' />
				<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' upnp:originalTrackNumber='5' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack' class='object.container.playlistContainer' />
			</container>

			<container name='Music Services'  createClass='object.item.audioItem.online.musicTrack' class='object.container'>
			<container buildon='pv:onlineServiceTitle'  createClass='object.item.audioItem.online.musicTrack' class='object.container'>
				<container name='allstations' createClass='object.item.audioItem.online.musicTrack' class='object.container' />
				<container name='genrestation' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
					<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.online.musicTrack' />
				</container>
				<container name='stationindex' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
					<container buildon='dc:title[3]' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
						<container buildon='dc:title' class='object.container' createClass='object.item.audioItem.online.musicTrack'/>
					</container>
				</container>
			</container>
			</container>

		</container>

		<container name='pictures' id='picture' upnp:originalTrackNumber='2' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' class='object.container'>

			<container name='Photo All' createClass='object.item.imageItem.photo' class='object.container'/>

			<container name='Photo Folder' class='object.container.storageFolder' restricted='0' createClass='object.item.imageItem.photo'>
				<container buildon='res' createClass='object.item.imageItem.photo' class='object.container.storageFolder'/>
			</container>

			<container name='Photo Year' createClass='object.item.imageItem.photo' class='object.container'>
				<container buildon='pv:year' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
			</container>

			<container name='Photo Date' createClass='object.item.imageItem.photo' class='object.container'>
				<container name='allname' createClass='object.item.imageItem.photo' class='object.container'>
					<container name='allname' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
					<container buildon='pv:month' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
				</container>
				<container buildon='pv:year' createClass='object.item.imageItem.photo' class='object.container'>
					<container name='allname' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
					<container buildon='pv:month' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
				</container>
			</container>

			<container name='Photo Keyword' createClass='object.item.imageItem.photo'  class='object.container' >
				<container buildon='pv:avKeywords' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
			</container>

			<container name='Photo Album' createClass='object.item.imageItem.photo'  class='object.container' >
				<container buildon='upnp:album' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
			</container>

			<container name='Photo Rating' createClass='object.item.imageItem.photo' class='object.container' >
				<container buildon='pv:rating' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
			</container>

			<container name='Photo Playlists' class='object.container' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Picture' >
				<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistmostviewed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistlastviewed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='4' class='object.container.playlistContainer' restricted='1' flags='pv:smartplaylist=1' />
				<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' upnp:originalTrackNumber='5' class='object.container.playlistContainer' />
			</container>

			<container name='Photo Services'  createClass='object.item.imageItem.online.photo' class='object.container'>
			<container buildon='pv:onlineServiceName'  createClass='object.item.imageItem.online.photo' class='object.container'>
				<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
				<container buildon='pv:onlineServiceTitle' createClass='object.item.imageItem.online.photo' class='object.container'>
					<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
					<container name='keywords' createClass='object.item.imageItem.online.photo'  class='object.container' >
						<container buildon='pv:avKeywords' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
					</container>
					<container name='album' createClass='object.item.imageItem.online.photo'  class='object.container' >
						<container buildon='upnp:album' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
					</container>
					<container name='date' createClass='object.item.imageItem.online.photo' class='object.container'>
						<container buildon='pv:year' createClass='object.item.imageItem.online.photo' class='object.container'>
							<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
							<container buildon='pv:month' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum'/>
						</container>
					</container>
					<container name='author' createClass='object.item.imageItem.online.photo' class='object.container' >
						<container buildon='upnp:author' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
					</container>
				</container>
			</container>
			</container>

		</container>

		<container name='videos' id='video' upnp:originalTrackNumber='3' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.videoItem.movie,object.item.videoItem.classified.movie,object.item.videoItem.online.movie' class='object.container'>

			<container name='Video All' createClass='object.item.videoItem.movie' class='object.container'/>

			<container name='Video Folder' class='object.container.storageFolder' restricted='0' createClass='object.item.videoItem.movie'>
				<container buildon='res' createClass='object.item.videoItem.movie' class='object.container.storageFolder'/>
			</container>

			<container name='Video Genre' createClass='object.item.videoItem.movie' class='object.container'>
				<container buildon='upnp:genre' createClass='object.item.videoItem.movie' class='object.container' />
			</container>

			<container name='Video Title' class='object.container' createClass='object.item.videoItem.movie'>
				<container buildon='dc:title[3]' class='object.container' createClass='object.item.videoItem.movie'>
					<container buildon='dc:title' class='object.container' createClass='object.item.videoItem.movie'/>
				</container>
			</container>

			<container name='Video Year' createClass='object.item.videoItem.movie' class='object.container'>
				<container buildon='pv:year' createClass='object.item.videoItem.movie' class='object.container' />
			</container>

			<container name='Video Date' createClass='object.item.videoItem.movie' class='object.container'>
				<container buildon='pv:year' createClass='object.item.videoItem.movie' class='object.container'>
					<container buildon='pv:month' createClass='object.item.videoItem.movie' class='object.container'/>
				</container>
			</container>

			<container name='Video Album' createClass='object.item.videoItem.movie' class='object.container' >
				<container buildon='upnp:album' createClass='object.item.videoItem.movie' class='object.container' />
			</container>

			<container name='Video Rating' createClass='object.item.videoItem.movie' class='object.container' >
				<container buildon='pv:rating' createClass='object.item.videoItem.movie' class='object.container' />
			</container>

			<container name='Video Playlists' class='object.container' createClass='object.item.videoItem.movie,object.item.videoItem.online.movie' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Video' >
				<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlistmostviewed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1'  />
				<container name='playlistlastviewed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='4' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
				<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.videoItem.movie,object.item.videoItem.online.movie' upnp:originalTrackNumber='5' class='object.container.playlistContainer'  />
			</container>

     		        <container name='Video Classified' id='video/classified' class='object.container'  createClass='object.item.videoItem.classified.movie'/>

			<container name='Video Servies' createClass='object.item.videoItem.online.movie' class='object.container'>
			<container buildon='pv:onlineServiceName' createClass='object.item.videoItem.online.movie' class='object.container'>
				<container buildon='pv:onlineServiceTitle' createClass='object.item.videoItem.online.movie' class='object.container'/>
			</container>
			</container>

		</container>

	</navtree>
</view>

IF you dont have that command prompt still open, open one again and type or paste the following
Note: The Twonky Tray Control tool is only capable of stopping or starting just the TwonkyMedia service
net start TwonkyMedia
net start TwonkyMedia-1
net start TwonkyMedia-2
net start TwonkyMedia-3
Phew, just a little editing
But now everything should be up and running
If you connect to the following from a browser, you should see them like this

http: //serverip:9000

http: //serverip:9001
twonky1.jpg
twonky1.jpg (64.28KiB)Viewed 12258 times
http: //serverip:9002
twonky2.jpg
twonky2.jpg (54.98KiB)Viewed 12258 times
http: //serverip:9003
twonky3.jpg
twonky3.jpg (56.03KiB)Viewed 12258 times
And if you look at it from a client point of view, what do you gain
Well on the PS3 for example, I now have an instance of twonky for each media type
So when I click on the XMB and go to Music, I just click on the TwonkyServe Music icon, and I get root navtree for music
So when I click on the XMB and go to Photo, I just click on the TwonkyServe Photo icon, and I get root navtree for photo
So when I click on the XMB and go to video, I just click on the TwonkyServe Video icon, and I get root navtree for video
now you dont have to navigate twice, they look just like the web gui ones

I'll make notes on some of the other things in my next post
Last edited by phibertron on Tue Mar 08, 2011 4:37 am, edited 2 times in total.
viewtopic.php?f=2&t=10627
viewtopic.php?f=2&t=9353
viewtopic.php?f=2&t=9408
viewtopic.php?f=2&t=9416
viewtopic.php?f=2&t=9424
viewtopic.php?f=2&t=9364
viewtopic.php?f=2&t=9497

User avatar
phibertron
Posts:1566
Joined:Sun Jan 30, 2011 5:52 pm
AV Hardware:Hardware
========
WHS - HP Ex495
PS3
XBOX 360
iTouch - Gen 2 and Gen 3
PSP - 3000

Encoders
========
Handbrake
x264
ffmpeg
mencoder

Tagging
======
mp3tag

Notes: things to be aware of with multiple instances of twon

Post by phibertron » Tue Mar 08, 2011 4:23 am

I guess one of the first things that comes to mind when thinking about using this approach is,
am I going to need more licenses?

As I understand it (Im not the authority on this), when I purchased Twonky Server,
an owner is/was allowed to use it on 5 different computers
But in the scenario, It is on one computer, and only consuming one license
Accorind to the Readme.txt instaled with version 6.0.31, whcih I have attached,
it states that one can install up to 10 instances on one machine
So I think its safe to say we are legit in either case,
and shouldnt have to spend any more money to go down this path

Another thing to consider is, what kind of performance can I expect?

Currently on on HP Ex485 Celeron 2Ghz, A single instance looking at my entire libray (MPV) uses this much memory

- twonkymediaserver.exe 22,164k
- twonkymediaserverwatchdog.exe 3,408k

The CPu load on twonkymediaserver.exe with 5 clients streaming 480p MP4(avc/aac) content

- twonkymediaserver.exe 20% - 40%

The Disk I/O is harder to measure, as it really is based off of the bitrates of the media
Needless to say, I have run 3 1080p MP4(avc/aac) content without issue
In the .ts or .m2ts container, not so good, never really figure out why
but I suspected the PS3 as the client with issue, and went to mp4 (reencoded)
In any case no stutters =)


Now for the example with 4 instances running on the same computer
If I follow the exact procedure outlined, except that I purposely pointed it to share with no media
to show you what it looks like running with nothing to stream or in the db and cache

- twonkymediaserver.exe 5,384k
- twonkymediaserver.exe 5,408k
- twonkymediaserver.exe 5,458k
- twonkymediaserver.exe 5,540k
- twonkymediaserverwatchdog.exe 3,408k
- twonkymediaserverwatchdog.exe 3,408k
- twonkymediaserverwatchdog.exe 3,408k
- twonkymediaserverwatchdog.exe 3,408k

At this point, the first thing we can clearly see is that it is going to need 4 times the amount of memory just to run them
Rounding up thats about 40MBytes of memory, as opposed to 10Mbytes for one with no media
In any case at the moment thats really not a lot, unless your on a NAS with limited memory

Note:
Tthe twonkymediaserverwatchdog.exe wont do much, as its job is to monitor twonkymediaserver.exe
its job is to start twonkymediaserver.exe, and check that it isnt hung up or has crashed
Once started it doesn eat any more memory nor does it use cpu cycles that I can see

Ok, so these following numbers are going to be simulated,
as I dont have a large enough collection of music and photos to make an impact, for me I use twonky for video streaming mostly
So say I did point the 4 services to there repsective content shares, and I got the following memory usage

- twonkymediaserver.exe 60,000k
- twonkymediaserver.exe 20,000k
- twonkymediaserver.exe 20,000k
- twonkymediaserver.exe 20,000k
- twonkymediaserverwatchdog.exe 3,408k
- twonkymediaserverwatchdog.exe 3,408k
- twonkymediaserverwatchdog.exe 3,408k
- twonkymediaserverwatchdog.exe 3,408k

You can see that the instance 0 the first one, is using a total amount for music, photo and video information
basically the total of instance 1,2 and 3
Say one did not need a web only version, you could not run the instance 0 and save some memory
if you did that, the difference in memory with 3 instances would now just be the addition of the extra 2 twonkymediaserverwatchdog services
which at this point isnt to bad of a hit at all, not much more than running just instance 0 by itself without 1,2, and 3

Ok so from a cpu perspective

if I was only streaming video, then the effect should be no different with 3 instances or just one

if I was streaming video and music, then thre would be more cpu usage, as they would be going through 2 instances
but it is hard to say if it is better to use 2 verse one at the moment
more testing is still needed to say what the ful effect is

If I was streaming video, music, and photo's, its just like above, its hard to say whether the sum total of cpu usage
is greater then the sum total usage of just one instance

The thing that probably matters most, is if the cpu is multicore/multithreaded
as with 3 instances, it is possible that 3 instances might be better from a cpu perspective
in that each is doing just one thing, in its own thread

Ok so from a disk i/o perspective

I think in any of the cases disk i/o is gonna be, except it could take more of a hit on boot up scan or db building
as nowe you have 3 instances trying to scan the hard drives, which is worse than one
the only exception I could add would be if you had seperate physical disks for each media type
then the only issue would be where are the databases

So there you have it
Is it possible to run multiple instnaces, sure it is,
would I reccommend doing this, sure I would, but...
I would say it depends on the hardware you would attempt it on, in comparison to the size of your library
.
Attachments
ReadMe.txt
(3.76KiB)Downloaded 390 times
Twonky Multiple Instances.zip
(16.07KiB)Downloaded 423 times
Last edited by phibertron on Wed Mar 09, 2011 3:14 am, edited 6 times in total.
viewtopic.php?f=2&t=10627
viewtopic.php?f=2&t=9353
viewtopic.php?f=2&t=9408
viewtopic.php?f=2&t=9416
viewtopic.php?f=2&t=9424
viewtopic.php?f=2&t=9364
viewtopic.php?f=2&t=9497

User avatar
phibertron
Posts:1566
Joined:Sun Jan 30, 2011 5:52 pm
AV Hardware:Hardware
========
WHS - HP Ex495
PS3
XBOX 360
iTouch - Gen 2 and Gen 3
PSP - 3000

Encoders
========
Handbrake
x264
ffmpeg
mencoder

Tagging
======
mp3tag

Notes: Running Twonky Server in Web Only mode

Post by phibertron » Tue Mar 08, 2011 6:27 pm

In regards to creating an instance of twony server running in a web only mode
I currently do this with version 5.1.1 from HP, but it is not working with 6.x
I edit the ImagePath path in the registry for the TwonkyMedia service as follows

HP WHS Twonky version 5.1.1
===========================

This works, and it is how I keep this version for the HP streaming app working
while not being visible on my network

ImagePath = twonkymedia.exe -serviceversion 0 -nossdp


Twonky version 6.0.31
=====================

This does not work

ImagePath = twonkymediaserverwatchdog.exe -serviceversion 0 -nossdp

But this does

ImagePath = twonkymediaserverwatchdog.exe -serviceversion 0 -friendlyname test

Which means that either nossdp is no longer an option in 6.x
or there is a new name for the option
As it did accept and use the freindlyname option and my server name was test

Is there a new name/option to disable ssdp?
and no not the one that already exists to disable it on localhost only

Note:
running http ://<server_ip_address>:9000/rpc/get_all on either version does not report nossdp as an option
so it looks like in 5.x it is a startup only option that cant be passed with get_option or set_option
also made tests with 6.0.32-RC1, not working there either
viewtopic.php?f=2&t=10627
viewtopic.php?f=2&t=9353
viewtopic.php?f=2&t=9408
viewtopic.php?f=2&t=9416
viewtopic.php?f=2&t=9424
viewtopic.php?f=2&t=9364
viewtopic.php?f=2&t=9497

salsaholic
Posts:14
Joined:Tue Mar 27, 2007 9:20 am
AV Hardware:Raidsonic ICY BOX IB-NAS-1000-B / Twonky 4.3
Terratec Noxon iRadio 2
Contact:

Re: Twonky (How to run multiple instances with custom Navtre

Post by salsaholic » Tue Mar 08, 2011 11:44 pm

Wow, this looks really neat - it would definitely help me organise different categories of audio, like mainstream, classic, comedy etc.
I'm positively surprised that Twonky Media seems to accept the multiple instances and does not request more licenses!
But how about performance? Would this still be feasible on one if those small NAS systems? (I'm having something like Synology DS110j or QNAP TS-110 in mind, maybe even my current IcyBox NB1000).
I would usually only use one instance at a time, so the most important question would probably memory usage while not being active... any thoughts on this?

User avatar
phibertron
Posts:1566
Joined:Sun Jan 30, 2011 5:52 pm
AV Hardware:Hardware
========
WHS - HP Ex495
PS3
XBOX 360
iTouch - Gen 2 and Gen 3
PSP - 3000

Encoders
========
Handbrake
x264
ffmpeg
mencoder

Tagging
======
mp3tag

Re: Twonky (How to run multiple instances with custom Navtre

Post by phibertron » Wed Mar 09, 2011 12:27 am

You hit the nail on the head
I have been meaning to put those questions and more in notes post
of which I will do here tonight
Im about to have dinner at the moment
but will be back later to add those notes, and comparisons
viewtopic.php?f=2&t=10627
viewtopic.php?f=2&t=9353
viewtopic.php?f=2&t=9408
viewtopic.php?f=2&t=9416
viewtopic.php?f=2&t=9424
viewtopic.php?f=2&t=9364
viewtopic.php?f=2&t=9497

User avatar
phibertron
Posts:1566
Joined:Sun Jan 30, 2011 5:52 pm
AV Hardware:Hardware
========
WHS - HP Ex495
PS3
XBOX 360
iTouch - Gen 2 and Gen 3
PSP - 3000

Encoders
========
Handbrake
x264
ffmpeg
mencoder

Tagging
======
mp3tag

Re: Twonky (How to run multiple instances with custom Navtre

Post by phibertron » Wed Mar 09, 2011 3:31 am

Ok I have added some info about the license and performance impliations

I still think that in addition to the idea, that other things could be done to negate the issues of boot up
Like doing a staggered startup of the service, based on time intervals or some other logic
But in the and I just really dont know what the impact would be on some of the nas devices you mentioned
If I had to attempt it on them, I would start with just two, to see how it went
and then attempt the third if two went ok

Note:
Speaking the whole nas thing, the install procedure to do it on a nas would be a little different
but the idea is the same

I have no idea whats in store with Version 7.x
I have no false hope or illusions, just desire that they add conditional tree building to it
if they did that, wow, would twonky really rock
as I love that fact I can tweak the hell out of it, but only to a point that the architecture allows me to
if they did that in 7.x, they would be the burger king of upnp/dlna servers
II'l take a number 7 with an apple pie, some onion rings, and a diet coke, cuz i like the taste LOL
viewtopic.php?f=2&t=10627
viewtopic.php?f=2&t=9353
viewtopic.php?f=2&t=9408
viewtopic.php?f=2&t=9416
viewtopic.php?f=2&t=9424
viewtopic.php?f=2&t=9364
viewtopic.php?f=2&t=9497

Womble99
Posts:8
Joined:Mon May 03, 2010 1:11 pm
AV Hardware:WD TV Live

Re: Twonky (How to run multiple instances with custom Navtre

Post by Womble99 » Tue Jun 21, 2011 10:07 am

Howdy,

I have been trying to follow this to install a second version of twonky on my server but I can't get it to work under WIN7? It doesn't create all of the files you mention nor does it put them in the folders listed...........

Do you have any ideas on a WIN7 installation?

regards,

Womble

User avatar
phibertron
Posts:1566
Joined:Sun Jan 30, 2011 5:52 pm
AV Hardware:Hardware
========
WHS - HP Ex495
PS3
XBOX 360
iTouch - Gen 2 and Gen 3
PSP - 3000

Encoders
========
Handbrake
x264
ffmpeg
mencoder

Tagging
======
mp3tag

Re: Twonky (How to run multiple instances with custom Navtre

Post by phibertron » Tue Jun 21, 2011 4:20 pm

Womble99 wrote:Howdy,

I have been trying to follow this to install a second version of twonky on my server but I can't get it to work under WIN7? It doesn't create all of the files you mention nor does it put them in the folders listed...........

Do you have any ideas on a WIN7 installation?

regards,

Womble
Before attempting the additional installs.
Did you do a normal install first?
If yes, is that install up and running?
viewtopic.php?f=2&t=10627
viewtopic.php?f=2&t=9353
viewtopic.php?f=2&t=9408
viewtopic.php?f=2&t=9416
viewtopic.php?f=2&t=9424
viewtopic.php?f=2&t=9364
viewtopic.php?f=2&t=9497

Womble99
Posts:8
Joined:Mon May 03, 2010 1:11 pm
AV Hardware:WD TV Live

Re: Twonky (How to run multiple instances with custom Navtre

Post by Womble99 » Thu Jun 23, 2011 12:09 pm

phibertron wrote:
Womble99 wrote:Howdy,

I have been trying to follow this to install a second version of twonky on my server but I can't get it to work under WIN7? It doesn't create all of the files you mention nor does it put them in the folders listed...........

Do you have any ideas on a WIN7 installation?

regards,

Womble
Before attempting the additional installs.
Did you do a normal install first?
If yes, is that install up and running?
Yep i had a single server running for a couple of years now. I have found where the files are stored on WIN7 for those who are looking for them. They are in C:\ProgramData\Twonkymedia , not in the user folders as per previous versions of windows :?

Womble99
Posts:8
Joined:Mon May 03, 2010 1:11 pm
AV Hardware:WD TV Live

Re: Twonky (How to run multiple instances with custom Navtre

Post by Womble99 » Fri Jul 01, 2011 12:40 am

Hmm, now I have three instances running but I am finding that the setting of media receivers is not working properly? If I make a change to the media receivers by the config webpage (yes i am using the separate webpages for each instance) it makes the change to ALL instances of the server?

Once I do have it set correctly it seems to revert whenever the machine is reset meaning i have to go back and reconfigure after every computer restart.

Would it be advisable to remove the twonkymedia-server.ini file from the main twonky directory leaving the other copies in the /ProgramData directory?

regards,

Womble

Locked