Jump to content

MB3 on FreeNAS plugin


prashy21

Recommended Posts

woodsb02

That would certainly work. Has there been much appetite for that sort of thing from the people building in Linux distros with their own ffmpeg?

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

woodsb02

You could also default to having it look for ffmpeg in the current PATH, and only download if it is not found.

 

I imagine the command line params would overwrite both of the above options.

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

I've added support for command line params

 

-ffmpeg "path"

-ffprobe "path"

 

i can later look at finding them with the PATH variable, but that should get you going for now

Link to comment
Share on other sites

woodsb02

Awesome thanks - will try tonight.

 

On a more basic front, what is the difference between the first build, and then the mkbundle build? Is it ok that I skip the second?

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

yea i think we're going to deprecate the mkbundle. for a while we were pursuing bundling mono itself but we've dropped that in recent months

Link to comment
Share on other sites

woodsb02

Ah, gotcha.

 

Lastly, I see you have version numbers in the software... Any chance they could be tagged in the git repository. This would help my port as it needs to be for a snapshot in time, and then I can choose to wait before upgrading to the next release rather than every commit.

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

woodsb02

Good news... I am now able to at least run mediabrowser on FreeBSD now without it crashing!

It appears to be scanning my media and adding it to its library ok.

But when I browse the library in Google Chrome on my Macbook the images don't show up (they do in my iphone MB app).

DLNA is not working.

Streaming a movie to my iPhone MB app doesn't play at all (just waits as if buffering) and Google chrome on my macbook plays the video but no sound.

 

Mediabrowser server log attempt #1

Mediabrowser transcode log attempt #1

Mediabrowser server log attempt #2

Mediabrowser transcode log attempt #2

Mediabrowser server log attempt #3

Mediabrowser transcode log attempt #3

Link to comment
Share on other sites

woodsb02

If it helps troubleshoot the DLNA issue, I was running MediaBrowser as root in a FreeBSD jail with IP address 192.168.1.99/24

Link to comment
Share on other sites

fyi, i will update the ffmpeg downloading to support bsd with the linux build. so you can use that for testing if you like.

Link to comment
Share on other sites

@@woodsb02, please try the following:

- go into your mb3 directory

- you should find the following two files there: Imazen.WebP.dll.config and System.Data.SQLite.dll.config

- in both files you'll find lines starting with <dllmap that map to the correct native libs to use

- in both files replace os="linux" with os="linux,freebsd"

 

This _should_ help with the image loading under chrome and possibly also with the dlna problems.

I don't have a freebsd system available to test so maybe thats not completely it.

Link to comment
Share on other sites

woodsb02

Luke: not sure that will work (may require Linux binary compatibility support which is definitely not preferred). Would be better to use an ffmpeg built for FreeBSD

Link to comment
Share on other sites

woodsb02

Luke: libmp3lame is disabled by default in the ffmpeg FreeBSD port.

Is there anyway to detect which codecs are available in ffmpeg and choose a different format to encode to?

Edited by woodsb02
Link to comment
Share on other sites

well it's not that simple. if a client says that it needs mp3 we can't just give it aac. i think there are alternative mp3 libraries for ffmpeg though

Link to comment
Share on other sites

also if linux compatibility mode is an issue, the same might apply to our libwebp build. if you build that for freebsd i can help you with it.

Link to comment
Share on other sites

woodsb02

@@woodsb02, please try the following:

- go into your mb3 directory

- you should find the following two files there: Imazen.WebP.dll.config and System.Data.SQLite.dll.config

- in both files you'll find lines starting with <dllmap that map to the correct native libs to use

- in both files replace os="linux" with os="linux,freebsd"

 

This _should_ help with the image loading under chrome and possibly also with the dlna problems.

I don't have a freebsd system available to test so maybe thats not completely it.

 

That didn't work... made the server crash on startup.

Log here: http://slexy.org/view/s23nY0JQGS

 

Am I correct in saying that the change will cause the server to use the precompiled Linux binary ./sqlite3/linux/lib64/libsqlite3.so.0.8.6?

 

By default, FreeBSD does not have binary compatibility with Linux. It can be enabled, but it is a bit of a hack. Given that sqlite (like ffmpeg) is available natively, is it possible to use the sqlite already available on the system (installed from FreeBSD ports)?

 

Which other precompiled binaries are used that will come up against this also?

Link to comment
Share on other sites

yes the command line override still applies for ffmpeg.

 

i'll remove the change that was made.

 

if you build libwebp for freebsd and send me the output, i can include that to make things easier.

Link to comment
Share on other sites

woodsb02

This is effectively a difference in the standard method of deploying third party software on the different operating systems.

Windows and Mac typically bundle all required libraries into the pre-compiled installation (be it through an app store or via the user going to the software's website).

In linux distributions and the BSDs, each piece of software typically share the same installed libraries, with the software being built from source code by the operating system developers and distributed as binaries by the operating system.

 

Obviously mediabrowser has initially been developed with Windows and Mac in mind, and therefore adopted the approach to include precompiled binaries for each library required. This same approach has been adopted when expanding to Linux.... but would it be possible to add the option to use the system libraries (which can then be added as "dependencies" in the operating system port)?

Link to comment
Share on other sites

woodsb02

The issue I have is that FreeBSD 8, 9 and 10 are all still supported, but don't necessarily have binary compatibility with each other, no with OpenBSD or NetBSD.

 

I really see the utilisation of the system libraries as a barrier for entry to the BSDs (and therefore FreeNAS).

 

Yes, we could use a precompiled binary for each system... but what happens if a security flaw is found in them.... how quickly will we then bring the fixed precompiled binary across to mediabrowser?

Link to comment
Share on other sites

woodsb02

Sorry, I misunderstood. I thought mediabrowser would not fallback to using the preinstalled system libraries.

I now realise it will (I just manually installed webp on my server system and now I can stream to Google Chrome on my Macbook).

 

So... getting there... are there any other binaries required?

 

Thumbnail images still aren't showing consistently when browsing the media (for whatever reason some do) and DLNA is still not working...

Link to comment
Share on other sites

woodsb02

For the DLNA, it looks like the code is having difficulty getting the IP address of the network interface.

 

In the file MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs the "localIp" variable is set by network.GetIPProperties().UnicastAddresses... but I wonder if it could be returning null and therefore the variable is not initialised?

var localIp = network.GetIPProperties().UnicastAddresses
                    .Where(i => i.Address.AddressFamily == AddressFamily.InterNetwork)
                    .Select(i => i.Address)
                    .FirstOrDefault();

                if (localIp != null)
                {
                    try
                    {
                        CreateListener(localIp, ipV4.Index);
                    }
                    catch (Exception e)
                    {
                        _logger.ErrorException("Failed to Initilize Socket", e);
                    }
                }
2014-09-15 22:27:13.9829 Info - Dlna: SSDP service started
2014-09-15 22:27:14.0946 Error - Dlna: Error sending Datagram to 239.255.255.250:1900 from 6.7.6.0:0: NOTIFY * HTTP/1.1
. HOST: 239.255.255.250:1900
. CACHE-CONTROL: max-age = 600
. LOCATION: http://6.7.6.0:8096/mediabrowser/dlna/3a16e916bbfcee4dfcc63c53e4ba8736/description.xml
. SERVER: Unix64/9.1 UPnP/1.0 DLNADOC/1.5 MediaBrowser/3.0.5371.39012
. NTS: ssdp:alive
. NT: upnp:rootdevice
. USN: uuid:3a16e916bbfcee4dfcc63c53e4ba8736::upnp:rootdevice
.
.
        The requested address is not valid in this context
        System.Net.Sockets.SocketException
          at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) [0x00000] in <filename unknown>:0
          at MediaBrowser.Dlna.Ssdp.Datagram.Send () [0x00000] in <filename unknown>:0
Link to comment
Share on other sites

woodsb02

I added the following text to MediaBrowser.Dlna/Main/DlnaEntryPoint.cs:

private void RegisterServerEndpoints()
        {
            foreach (var address in _network.GetLocalIpAddresses())
            {
                    _logger.Error("RegisterNotification for ip: {0}", address); // NEW LINE

Then my log shows this:

2014-09-16 22:57:53.1506 Error - Dlna: RegisterNotification for ip: 0.0.0.0
2014-09-16 22:57:53.1828 Error - Dlna: RegisterNotification for ip: 6.7.6.0
 
So my take is that the DLNA server tries to send out a upnp multicast asking for subscribers, with responses to goto the above ip addresses.
Well the server successfully binds to 0.0.0.0 but responses never make it back since that ip address is too broad... and the server is giving me the earlier errors as it fails to bind to ip address 6.7.6.0.
 
The question is.... why are these the 2 ip addresses returned from GetLocalIpAddresses instead of my actual ip addresses 192.168.1.99 and 127.0.0.1?
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...