YAMJ / yamj-v3

Main Project for YAMJ v3
11 stars 7 forks source link

what about a TV app, as a frontend? #331

Closed ghost closed 6 years ago

ghost commented 6 years ago

Hello there,

are you interested in adding a "TV app" as a "frontend" for YAMJ?

Here's some background: some time ago, I developed a tomcat webapp, with very limited capabilities and ugly UI, to let me view all my movies via HTTP (yes, "yet another"): http://www.servicemix.eu/_JSVS/

While the web-UI was ok to use from a pc (or from a ipad/galaxy tab) browser, it was very poor on the TV browser, so I developed a TV app: img-20171005-wa0011

The TV app can go fullscreen easy, which I couldn't get with the web-app (not to mention how ugly and hard to control with the remote): 1507218159054-1220205673

The TV app still relies on the webapp, as the webapp exposes not only the web-UI but also the "JSON browsing" and "HTTP streaming" servlet, that are used by both frontends.

I'd be happy to share the source code and help integrating it with YAMJ backend, if you're interested: the remaining core feature to implement (let alone movie info, poster, subtitles, etc) is the backend configurability: screenshot from 2017-10-06 07-46-34

PS: developed for: samsung smart tv legacy platform (pre-tizen), tested on 2012 and 2013 models.

ghost commented 6 years ago

I just finished implementing endpoint configuration...

http://www.servicemix.eu/2017-10-07%20-%20MyVideos%20SHOTs%20-%200_8_600/

if yamj-v3 would provide a JSON APIs to browse content and HTTP streaming to play videos, the TV app could use it.

cheers corrado

jluc2808 commented 6 years ago

i'm sorry corrado , but i don't really understand what is goal of your application and in what context that could be done , to answer your question : yamj3 provide a JSON API , and a service which could tell where to start any video on any remote device (already used by bikini skin)

please contact me to elaborate

ghost commented 6 years ago

Hi jluc, thx for your reply, I didn't noticed the API section.

Then I took a good look at it, built and started yamj-v3, and played a little with the api.

So far I can do searches quite ok, and I can get some movie info using this: http://localhost:8888/yamj3/api/video/MOVIE/1?dataitems=files to get this: { "options": { "dataitems": [ "files" ], "id": 1, "type": "MOVIE" }, "baseArtworkUrl": "http://192.168.1.100:8888/artwork/", "baseMediainfoUrl": "http://192.168.1.100:8888/mediainfo/", "basePhotoUrl": "http://192.168.1.100:8888/photo/", "baseTrailerUrl": "http://192.168.1.100:8888/trailer/", "count": 1, "totalCount": 1, "queryDuration": "85ms", "queryTime": "2017-10-07 19:40:41 +0200", "status": { "status": 200, "message": "OK" }, "result": { "id": 1, "title": "...", "originalTitle": "...", "watched": false, "videoType": "MOVIE", "sortTitle": "...", "videoYear": 2015, "releaseDate": "2015-10-01", "files": [ { "id": 1, "extra": false, "container": "AVI", "runtime": "", "videoSource": "DVDRip", "fileId": 1, "fileName": "/home/corrado/MOVIEz/heritage-mmedia/TODO/....avi", "fileDate": "2016-01-30 19:30:04", "fileSize": "1.25 GB" } ] } }

What I can't do yet, is getting a "streaming URL" for a given movie, .i.e. an HTTP address which is a "playable HTML5 video stream": http://www.adrianwalker.org/2012/06/html5-video-pseudosteaming-with-java-7.html

I mean, look at this "W3C - HTML5 Video Events and API" page: https://www.w3.org/2010/05/video/mediaevents.html

The movie is provided via HTTP: https://media.w3.org/2010/05/sintel/trailer.mp4

Is "exposing movies this way" something that YAMJ already does?

I couldn't find any, actually there was no way to play a movie: I played with the example skin for the queries, and with the bikini skin a little, but it was quite unusable: screenshot from 2017-10-07 20-09-11

Adrian Walker's "pseudo streaming servlet" works quite fine, is it possible to "add it"?

I tried adding a servlet:

screenshot from 2017-10-07 20-21-48

but could not get the autowiring work (jsonApiStorageService stays null). screenshot from 2017-10-07 20-20-28

any hints?

jluc2808 commented 6 years ago

wity bikini, you need to start jetty's process which is the one who deliver JSON response for the html5 skin for streaming , then when you get (from JSON) the video path you are able to play with and ask your stream process to play the file

NOTA: on the detail page bikin call play_to_device function which talk to Popup_Player.html to start the video

REM: i can't use html5 video function, because MKV and AVI aren't supported by video function

jluc2808 commented 6 years ago

i tried what you point (i don't exactly understand what is your goal so if you could elaborate !!!!!) there is 2 comments:

inside bikini you could

if the goal path is by exemple http://127.0.0.1:8080/ - or any webserver you have on the remote machine, yamj3 will send the content of the movie to this remote

contact me on jean-luc.berno@wanadoo.fr

ghost commented 6 years ago

Hi jluc, thx for the clarifications.

By the way: I followed the alpha-testing instruction, to run the Jetty process (that's where I got the JSON response I reported above, just before the screenshots) and to test a couple of skins (the example one and the bikini one, both able to talk with Jetty - see first shot: bikini was able to display something, but in an ugly way on firefox on debian). Indeed, the 3rd shot above is xterm showing output from "sh jetty.sh", the exception shown is due to my failed hack...

PS: what's the benefit of avi files, compared with mp4?

jluc2808 commented 6 years ago

i don't understand why bikini is empty , look inside media button , to see what is the source where you scrap info ?

jluc2808 commented 6 years ago

if you compare avi and mp4 nothing , if you compare mp4 and mkv a lot (several video and audio, chapter, subtitle forced and not, bonus embelded, ......)

jluc2808 commented 6 years ago

you said " see first shot: bikini was able to display something, but in an ugly way on firefox on debian)"

to fill all the field with private movie , you need to install MediaInfo plugin and specify in config/yamj3_core_static.user.properties where to find MediaInfo program mediainfo.home=C:/Program Files/MediaInfo

ghost commented 6 years ago

hi thx for clarifications

sent you an email to your email address