Compile: Difference between revisions

From Lundman Wiki
No edit summary
mNo edit summary
Line 1: Line 1:
Welcome to the FXP.One project.
'''llink is a media streamer''' that lets you play movies, view online trailers, browse images or play music over a network using the http protocol. It should work with most Syabas NMT hardware (NetworkedMediaTank middleware based players), such as the Popcorn Hour A- and B-series, HDX, iSTAR, Egreat a whole range of others, possibly even a couple of older ones like the LinkTheater. Some of the best reasons to run llink is that it can run on a great many platforms, including most popular NAS devices - even on the NMT player itself - and it can play media directly from RAR files. '''llink''' is also a '''UPNP MediaServer''', sometimes called DNLA/UPNP, and is able to talk to many UPNP devices.  




Before you start, this is not just another FTP/FXP client. It does not
[[Image:llink.screen2.jpg|right|thumb|100px|llink-2.2.0 aqua skin]]
work that way.
[[Image:llink.screen3.jpg|right|thumb|100px|llink-1.9.9 jukebox skin]]
[[Image:llink.screen4.jpg|right|thumb|100px|llink-2.2.0 clterm skin]]
[[Image:llink.screen5.jpg|right|thumb|100px|llink-2.2.0 nmt skin]]
[[Image:Kamaishi_skies.jpg|right|thumb|100px|llink-2.2.0 kamaishi_skies skin]]




FXP.One consists of an engine, and
you would need (at least) one GUI to control it.


=== llink overview ===


==FXP.One engine==


The idea was to put all the hard code into an engine that is really
* [[Llink:compatible_players|List of compatible players]]
easy to interface with. This has worked surprisingly well, in that you
==== Features ====
can FTP/FXP entirely by using "telnet". This means writing a client,
which is essentially just a Display Shell, quite trivial. This
includes people who wants to just script clients, like by using perl,
python and so on.


This also means you do NOT have to run the engine on the same machine that you run the GUI client(s).  
* Parses various video containers: vob, avi, ts, mkv, tp, mov, m2ts, evo.
* Streams any file type the NMT player can handle: mp3, flac, jpeg, png etc.
* Can play straight '''from rar files''': no more need to unrar your media. (Comes with special unrar-3.7.8-seek.)
* [[Llink:skins|Skin support]]: make your own html templates  or choose from pre-built.
* Simple iMDb querying to look up media information for Jukebox skins.
* Both HD and SD skins available.
* Light, tiny and clean code for Unix, OsX and Windows. Compiles to most platforms.
* Paginating: support to send listings in pages, with tags for Next/Prev.
* PlayAll cgi tag, and PlayAllFrom.
* External subtitles: subtitle files can be consolidated in one directory.
* libdvdnav support (and libdvdcss): provides basic playback of DVD .iso and .img files and from DVD drives.
* UDF 2.50 BD5-ISO support: provides basic playback of Bluray and HD-DVD.
* (External process support, like mencoder: incomplete).
* Can initiate custom shell scripts.
* Keep track of what you have already seen: small database for 'watched' media.
* UPNP MediaServer
* Transcoding Streaming support added to 2.3.2


For example, if you had a stable host, perhaps even with a static IP
<paypal></paypal>
making the credentials for authentication easier, you could run the
engine there. Then connect to it by the client of you choice.


You can disconnect this client (the engine will keep working if you do
not tell it to stop) and start a new (and possibly different) client
elsewhere, and resume control of your previous work.


But you can run the engine and client at the same time, and quitting
=== Todo ===
at the same time, making it appear like a normal FTP/FXP client.


In no particular order:
* Add a transparent FTP fs layer? this would be well nice if it worked with RAR. ''Be quite easy to do now as a 'unrar' replacement, 'unftp'.''
* Scraping/parsing of .NFO files (for media info).
* mms:// protocol support (libmms looks ok, but has own select() call, needs deeper inspection).
** Implemented as unmms (unrar clone) but Stream support on PCH is lacking. Please bug Syabas about letting us set stream-mode
* Scrape/look for subtitles (ex. http://www.subtitlesource.org/title/tt0325710/).
* Proposed [[llink:menus|menus]]. Partly working since v2.2.0
* Configuration via web page.
* [http://www.teamavalaunch.com/ Avalaunch] style backgrounds. (Ex. fetch picture from [http://apod.nasa.gov/apod/archivepix.html NASA] every 30s and refresh) for mp3/playlists.
* Playing mp3s, and photos from RAR files don't appear to work.
* When playing music, allow to specify pictures to view.
* <s>Explore what more power we get from libdvdnav: choose audio tracks etc.</s> ALso, subtitle streams since C200 can display!
* Support [http://www.antp.be/software/moviecatalog ANT's Movie Database] .xml files.
** Difficult. ANT did weird things like put entire DB in one giant XML, with no references to the disk path.
* Support [http://www.movienizer.com Movienizer's Movie Database] .xml files.  Please provide sample .xml files for inspection.
* Remote skin support, e.g. invoke play from an iPhone or any other web enabled device.
* Apparently directories/files with "&" may not get a tick in the visited db. URL decoding?
* Make ticked directories become un-ticked when new files (unticked) files are added to the directory.
* Add NMJ sqlite DB support. Test MediaInfo source [http://www.lundman.net/ftp/test-mediainfo.c] is working.
* BUG: upnp missing filters/sortcriteria.


'''If you are looking for a Windows binary, please download the bundle from the latest [[UFxp]] client'''
=== User guide and other documentation  ===


==Compiling and Install the engine==
Feel free to contribute to the wiki documentation:
  % wget http://www.lundman.net/ftp/fxp-one-1.4.tar.gz
  % tar -xvf fxp-one-1.4.tar.gz
  % cd FXP.One/
  % ./configure
  % make
  % cp FXP.One /usr/local/bin/


Now create your SSL keys
* [[Llink:user_guide|User guide]] for functions.
* [[Llink:Windows_installation|Installation guide]] for Windows.
* [[llink:Linux_installation|Installation guide]] for Linux.
* [[llink:macros|Macros]] supported by the HTML engine in llink.
* [[llink:Samples|Sample Files]] for configuring llink Jukebox xml.
* [[llink:Compiling|Compiling]] Guide for compiling, cross-compiling and compiling on Windows.


  % openssl req -new -x509 -nodes -out lion.pem -keyout lion.pem
=== Download binaries ===


Note: if you are in luck, devices not listed here may share platform and architecture.
Please report your success/failure.


Create your .FXP.One folder and copy lion.pem into it
* [[llink:windows|Windows]] 2.3.2 binaries for Windows OS
* [[llink:osx|OsX]] 2.3.1 binaries for Apple Macintosh Os X. App Store submitted.
* [[llink:nmt|NMT]] 2.3.0 binaries for the Network Media Tank (Popcornhour A-100, C200 etc.) '''Please use CSI to install'''
* [[llink:linux|Linux]] 2.3.0 binaries for Linux OS, Intel (add more if you can)
* [[llink:opensolaris|OpenSolaris]] 2.2.5 binaries for OpenSolaris (Solaris 11) OS, Intel
* [[llink:readynas|ReadyNAS]] 2.2.2 binaries and instructions for Infrant/Netgear ReadyNAS
* [[llink:synology|Synology]] 2.2.4 binaries and older, instructions for Synology NAS (ppc and arm)
* [[llink:asus_wl-500gl|Asus WL-500GL]] binaries for Asus router running OpenWrt
* [[llink:Asus WL-500g Premium|Asus WL-500g Premium]] binaries for Asus router running Oleg's firmware
* [[llink:landisk|landisk]] binaries for IO-Data landisk uhdl-av, cpu-SH4
* "[[llink on a stick]]" let's you run llink from a USB stick or external USB drive (unmaintained)
* [[Llink:dlink_dns323|D-Link DNS-323]] binaries and instructions for D-Link NAS
* [http://forum.excito.net/viewtopic.php?p=6195 Bubba server] 2.2.0 Linux compile instructions (no binaries)
* [http://www.azboxworld.com/index.php?page=Thread&postID=66741#post66741 AzBox HD] 2.2.0 plugin binaries
* [[llink:buffalo|Buffalo]] 2.2.3 binaries and instructions for Buffalo Linkstation (arm)
* [[llink:Thecus|Thecus]] N5200-N0503 2.2.2 binaries (intel Atom)
* [[llink:qnap|QNAP]] 2.2.4 binaries for QNAP TS-109/209 series (arm)


  % mkdir .FXP.One && cp lion.pem .FXP.One/ 
''(Compilers, you can upload new versions directly in the wiki, see Synology page as example)''


Start the FXP.One engine
=== Sources ===


  % FXP.One
* [[llink:sources|Sources]] Build your own for your platform. Includes autoconf for Unix and project files for Windows Visual Studio.
* libdvdcss sources are: [http://download.videolan.org/pub/libdvdcss/1.2.10/ libdvdcss-1.2.10.tar.gz]
* [[llink:mime|mime.types]] defining MIME types, generally not needed, only if you use it with a browser.
* <s>libdvdnav sources are: [http://www.mplayerhq.hu/MPlayer/releases/dvdnav/ libdvdnav-4.1.2]</s> ''libdvdnav sources now included.''
* <s>libdvdread with MSVC++ Project files: [http://www.lundman.net/ftp/llink/libdvdread-0.9.7-win32.tar.gz</s>
* <s>libdvdread sources for llink v2.0.8 to 2.1.1 only are: [http://www.dtek.chalmers.se/groups/dvd/downloads.shtml libdvdread-0.9.7.tar.bz]</s>


(Please use gnuMake; which might be called make, gmake, gnumake etc on your system)
=== Known issues ===


This should always compile the '''FXP.One engine'''. If ''configure'' can find the correct '''CDK''' library and '''ncurses''' on your system it will also compile the '''ncurses''' client '''FXP.cOne'''. Otherwise it will skip compiling this client.
Although llink is capable of many things, there are limitations that should be known to users.
Please read here for details: [[Llink:Known_issues]]


'''Openssl-devel'''If you see a error like this:
=== Changelog ===
''checking whether we need extra options to link OpenSSL... configure: error: Found linkable OpenSSL in , but it doesn't run, even with -R.  Maybe specify another using --with-ssl-dir?''


You will need to openssl-devel for your system. On most Red Hat Variants it can be done with yum.  
The [[llink:changelog|llink changelog]] contains the basic release notes history.


yum -y install openssl-devel


'''''SSL Issues'''''
=== Transcoding ===


If your trying to connect from your client and get errors about ssl it probably means that they versions of ssl you have on your engine and your client are not compatible.
* [[llink:transcoding|Transcoding]] is a large subject, full of endless tweaks and hacks. I am hoping there are users willing to help find the correct settings that will work for most.
 
For example on the client end we have ssl version OpenSSL 0.9.8e-fips-rhel5 and on the server and OpenSSL 09.8k on another. There are many reasons why this will not work and many more why it should. In this case you will need to compile OpenSSL 0.9.8K on the server you wish to use FXP.Oned on and build FXP.Oned against that version of ssl. It the example below we will build openssl-0.9.8k in a local directory and compile FXP.Oned to use it.
 
To do this go to the openssl.org downloads page and download the version you want to use.
http://openssl.org/source/
wget http://openssl.org/source/openssl-0.9.8k.tar.gz
tar -xvzf openssl-0.9.8k.tar.gz
cd openssl-0.9.8k
./configure
make
 
Now go back to your FXP.Oned directory,
make clean
./configure LIBS=-ldl --with-ssl-dir=/home/erin/srcs/openssl-0.9.8k
make
cp engine/FXP.Oned /usr/local/bin/
 
==Running the engine==
 
 
'''You will most likely need to create an SSL certificate for the engine since the default is only to accept secure connections.'''
 
 
Since the engine will be saving your remote FTP site information, as
well as any User/Passwords you chose on disk, you should consider
encrypting these files.
 
FXP.One engine will do this for you. When you start the engine, it
will as for a "Key". This is the Key that it will use to encrypt all
its data files. If you do not want encryption, just press return.  
 
For the first time you run FXP.One, just make up whatever Key you
want.
 
When you start the engine in future, you have to specify the correct
Key or it will not be able to read your data files. (And you will not
be able to login).
 
To start again, you need to delete all .FXP.One files, and the engine
will create these again.
 
When the user file does not exist, the FXP.One engine will
automatically create a login as "admin" with password "admin".
 
 
NOTE: If you edit .FXP.One.settings file, you can change the option
"ssl=1". By default it will only allow SSL connections. If you change
it to "ssl=0" you make it optional. This allows you to telnet to the
engine should you wish to check it out. Please read the
"engine/API.txt" for more information on the FXP.One protocol.
 
NOTE: Please be aware that all skiplist, movefirstlist and passlists
are separated by the "/" character.
That is, "fmovefirst=*.sfv/*.nfo".

Revision as of 04:59, 12 December 2011

llink is a media streamer that lets you play movies, view online trailers, browse images or play music over a network using the http protocol. It should work with most Syabas NMT hardware (NetworkedMediaTank middleware based players), such as the Popcorn Hour A- and B-series, HDX, iSTAR, Egreat a whole range of others, possibly even a couple of older ones like the LinkTheater. Some of the best reasons to run llink is that it can run on a great many platforms, including most popular NAS devices - even on the NMT player itself - and it can play media directly from RAR files. llink is also a UPNP MediaServer, sometimes called DNLA/UPNP, and is able to talk to many UPNP devices.


llink-2.2.0 aqua skin
llink-1.9.9 jukebox skin
llink-2.2.0 clterm skin
llink-2.2.0 nmt skin
llink-2.2.0 kamaishi_skies skin


llink overview

Features

  • Parses various video containers: vob, avi, ts, mkv, tp, mov, m2ts, evo.
  • Streams any file type the NMT player can handle: mp3, flac, jpeg, png etc.
  • Can play straight from rar files: no more need to unrar your media. (Comes with special unrar-3.7.8-seek.)
  • Skin support: make your own html templates or choose from pre-built.
  • Simple iMDb querying to look up media information for Jukebox skins.
  • Both HD and SD skins available.
  • Light, tiny and clean code for Unix, OsX and Windows. Compiles to most platforms.
  • Paginating: support to send listings in pages, with tags for Next/Prev.
  • PlayAll cgi tag, and PlayAllFrom.
  • External subtitles: subtitle files can be consolidated in one directory.
  • libdvdnav support (and libdvdcss): provides basic playback of DVD .iso and .img files and from DVD drives.
  • UDF 2.50 BD5-ISO support: provides basic playback of Bluray and HD-DVD.
  • (External process support, like mencoder: incomplete).
  • Can initiate custom shell scripts.
  • Keep track of what you have already seen: small database for 'watched' media.
  • UPNP MediaServer
  • Transcoding Streaming support added to 2.3.2

<paypal></paypal>


Todo

In no particular order:

  • Add a transparent FTP fs layer? this would be well nice if it worked with RAR. Be quite easy to do now as a 'unrar' replacement, 'unftp'.
  • Scraping/parsing of .NFO files (for media info).
  • mms:// protocol support (libmms looks ok, but has own select() call, needs deeper inspection).
    • Implemented as unmms (unrar clone) but Stream support on PCH is lacking. Please bug Syabas about letting us set stream-mode
  • Scrape/look for subtitles (ex. http://www.subtitlesource.org/title/tt0325710/).
  • Proposed menus. Partly working since v2.2.0
  • Configuration via web page.
  • Avalaunch style backgrounds. (Ex. fetch picture from NASA every 30s and refresh) for mp3/playlists.
  • Playing mp3s, and photos from RAR files don't appear to work.
  • When playing music, allow to specify pictures to view.
  • Explore what more power we get from libdvdnav: choose audio tracks etc. ALso, subtitle streams since C200 can display!
  • Support ANT's Movie Database .xml files.
    • Difficult. ANT did weird things like put entire DB in one giant XML, with no references to the disk path.
  • Support Movienizer's Movie Database .xml files. Please provide sample .xml files for inspection.
  • Remote skin support, e.g. invoke play from an iPhone or any other web enabled device.
  • Apparently directories/files with "&" may not get a tick in the visited db. URL decoding?
  • Make ticked directories become un-ticked when new files (unticked) files are added to the directory.
  • Add NMJ sqlite DB support. Test MediaInfo source [1] is working.
  • BUG: upnp missing filters/sortcriteria.

User guide and other documentation

Feel free to contribute to the wiki documentation:

Download binaries

Note: if you are in luck, devices not listed here may share platform and architecture. Please report your success/failure.

  • Windows 2.3.2 binaries for Windows OS
  • OsX 2.3.1 binaries for Apple Macintosh Os X. App Store submitted.
  • NMT 2.3.0 binaries for the Network Media Tank (Popcornhour A-100, C200 etc.) Please use CSI to install
  • Linux 2.3.0 binaries for Linux OS, Intel (add more if you can)
  • OpenSolaris 2.2.5 binaries for OpenSolaris (Solaris 11) OS, Intel
  • ReadyNAS 2.2.2 binaries and instructions for Infrant/Netgear ReadyNAS
  • Synology 2.2.4 binaries and older, instructions for Synology NAS (ppc and arm)
  • Asus WL-500GL binaries for Asus router running OpenWrt
  • Asus WL-500g Premium binaries for Asus router running Oleg's firmware
  • landisk binaries for IO-Data landisk uhdl-av, cpu-SH4
  • "llink on a stick" let's you run llink from a USB stick or external USB drive (unmaintained)
  • D-Link DNS-323 binaries and instructions for D-Link NAS
  • Bubba server 2.2.0 Linux compile instructions (no binaries)
  • AzBox HD 2.2.0 plugin binaries
  • Buffalo 2.2.3 binaries and instructions for Buffalo Linkstation (arm)
  • Thecus N5200-N0503 2.2.2 binaries (intel Atom)
  • QNAP 2.2.4 binaries for QNAP TS-109/209 series (arm)

(Compilers, you can upload new versions directly in the wiki, see Synology page as example)

Sources

Known issues

Although llink is capable of many things, there are limitations that should be known to users. Please read here for details: Llink:Known_issues

Changelog

The llink changelog contains the basic release notes history.


Transcoding

  • Transcoding is a large subject, full of endless tweaks and hacks. I am hoping there are users willing to help find the correct settings that will work for most.