Log in

View Full Version : Media Browser Theater


Pages : [1] 2

luke823
18th November 2013, 16:23
Hi,
We (Team Media Browser), have released an alpha of Media Browser Theater. It's a windows-based app designed to browse and play a Media Browser library.

Media Browser is an open source client-server app, and you can read about our project here:

https://github.com/MediaBrowser/MediaBrowser
http://www.mediabrowser3.com/

For Media Browser Theater, the video player is direct-show based and supports LAV Filters, XyVsFilter, Reclock, Madvr & XySubFilter.

There's a long way to go but so far it's been fairly well received. I'm here in hopes of recruiting any potential developers who might have interest in joining the team and helping out.

luke823
18th November 2013, 16:27
Here are some screens:

http://mediabrowser3.com/community/uploads/inline/2/528a23b1ac15b_mbt1.png

http://mediabrowser3.com/community/uploads/inline/2/528a23ba45a0c_mbt2.png

http://mediabrowser3.com/community/uploads/inline/2/528a23c4ccc0d_mbt3.png

http://mediabrowser3.com/community/uploads/inline/2/528a23ce15557_mbt4.png

http://mediabrowser3.com/community/uploads/inline/2/528a23da218d0_mbt5.png

http://mediabrowser3.com/community/uploads/inline/2/528a23e2988e6_mbt6.png

http://mediabrowser3.com/community/uploads/inline/2/528a23ed2b28c_mbt7.png

http://mediabrowser3.com/community/uploads/inline/2/528a2406380bf_mbt8.png

http://mediabrowser3.com/community/uploads/inline/2/528a253b11413_mbt9.png

andyvt
18th November 2013, 16:48
What control methods are supported (RC6, IP, Windows messages)?

How is transcoding performed for mobile playback?

Thanks

luke823
18th November 2013, 16:54
This player itself is alpha. Brand new.

The server, as well as our other apps are all in their own stages. Server is stable. Windows Phone and iOS are released into their stores. Android actually will be in the store today. Roku is about a week or two away from store release. Our Windows 8.1 tablet app is about a month away from release. Then we have Media Portal and Xbmc clients in beta stages. So we're all over the place.

The server relies on ffmpeg for transcoding. This particular app (MBT as we call it), is designed to be used within the LAN and access the media files directly in order to avoid streaming through the server. But it can be used to connect to a remote server and stream if desired.

Please let me know if I can answer anything else. Thanks.

luke823
18th November 2013, 16:55
Control methods - it supports standard MCE remotes.

Then it can also be programatically controlled using our api, and we have a couple developers working on some interesting things with that (e.g. kinect).

andyvt
18th November 2013, 17:06
The server relies on ffmpeg for transcoding.


Sorry, that was a tangent :). I've been looking for a suitable non-CPU based way to do in home mobile streaming. I recently added RTP/RTSP support to QSTranscode (mostly to POC live555 integration), what streaming protocol do you use to provide video to clients. Is ffmpeg used externally or linked in (i.e. could I replace it w/ my own exe)?


This particular app (MBT as we call it), is designed to be used within the LAN and access the media files directly in order to avoid streaming through the server. But it can be used to connect to a remote server and stream if desired.


Thanks. Can we assume that the full suite of madVR's capabilities are supported (or will be). FSE, rate switching, IVTC, etc.

luke823
18th November 2013, 17:12
It streams through our web (http) api, however, our clients do their best to avoid encoding whenever possible, using stream copy techniques, and/or streaming the original file when the device can handle it natively. In addition, some of them like Android support external players, which add more client-side capabilities, thus further reducing the likelihood of encoding.

As for madvr, we have not implemented full screen exclusive mode yet, but it is on the roadmap. That's partially why I'm here, to recruit development help. As far as I know, every feature that doesn't depend on FSE should be functional at this stage.

andyvt
18th November 2013, 17:22
It streams through our web (http) api, however, our clients do their best to avoid encoding whenever possible, using stream copy techniques, and/or streaming the original file when the device can handle it natively.

I'd love to know more about how this is implemented, but I don't want to derail this thread too much. Is there a place where I can learn more about how you're using ffmpeg to do this? QSTrancode uses ffmpeg front/back-ends (transcoding is offloaded to Intel QuickSync), so it should be relatively easy for me to hook into this.

luke823
18th November 2013, 17:26
Yea come talk to us on our forum:

http://mediabrowser3.com/community/

I'll get you into the dev area if it gets too technical for the general population.

andyvt
18th November 2013, 17:32
As for madvr, we have not implemented full screen exclusive mode yet, but it is on the roadmap. That's partially why I'm here, to recruit development help. As far as I know, every feature that doesn't depend on FSE should be functional at this stage.

Where do you need assistance?

Oh, one thing that you'll want to be aware of if your UI is WinForm (maybe other .NET techs) based (I couldn't find it in a quick look around) is that it will leak memory each time the refresh rate changes. I never found a way to fix that, so it's probably just something you'll have to code around.

luke823
18th November 2013, 17:52
I have to focus my dev time on the more mainstream features, so if somebody wanted to take on exclusive mode that would be fantastic. It's not a matter of turning it on though, that's the easy part. It's recreating all the in-video menus that will increase the effort required.

Or, two other big ones missing from the video player - dvd menu navigation, and loading external subtitle files into the direct show graph. I'm assuming the subtitles will be easy, just haven't been able to find a code sample.

andyvt
18th November 2013, 18:03
Or, two other big ones missing from the video player - dvd menu navigation, and loading external subtitle files into the direct show graph. I'm assuming the subtitles will be easy, just haven't been able to find a code sample.

If you're using the OOTB DVD navigator, you should be able to use the code from EVRPlay (http://sourceforge.net/p/babgvant/code/HEAD/tree/EVRPlay/) as a sample. It's pretty straight forward.

Subtitles will be more difficult because of all the different formats. I don't think I've ever played with that.

luke823
18th November 2013, 18:07
Thanks. I have sample code for dvd menus and I'll also review that. I just haven't been able to allocate time for it yet.

For subs - wouldn't the combination of lav splitter and xyvsfilter be able to understand the various formats? Or are you saying we would have to parse them ourselves and pass the data to the renderer? If it's the latter, we would just start with srt and add more over time.

andyvt
18th November 2013, 18:26
For subs - wouldn't the combination of lav splitter and xyvsfilter be able to understand the various formats? Or are you saying we would have to parse them ourselves and pass the data to the renderer? If it's the latter, we would just start with srt and add more over time.

I forgot about that :). I think that should work (may have to have a look if I get some time). It's an interesting problem.

ddjmagic
18th November 2013, 19:37
Interface looks very nice :)
I'm guessing this can be setup to use an external player for 2D/3D ISO's etc, if preferred?

luke823
18th November 2013, 19:38
Yes, and we can actually mount the iso internally so there's no need to fuss with third party mounting software.

ddjmagic
18th November 2013, 20:00
Yes, and we can actually mount the iso internally so there's no need to fuss with third party mounting software.

Thanks, that sound great - is there, or will there be an option to manually select the external player when required (similar to XBMC "play using" option)
For example by default it will use the internal player and try and play the main movie playlist from the BD, but if and when needed the external player can be launched to view menu's/special features (This is how I use XBMC/TMT currently)

luke823
18th November 2013, 20:04
right now you setup the external player configuration for specific kinds of files, and then it always gets used. the ability to pick a player on the fly is an interesting idea and can be added later.

ddjmagic
18th November 2013, 20:27
right now you setup the external player configuration for specific kinds of files, and then it always gets used. the ability to pick a player on the fly is an interesting idea and can be added later.

Cool, its a great option, as you can skip all the annoying stuff and go straight to the movie automatically when using the internal player, but then if you ever want to view the special features/menus, you just manually pick the external player.

Any chance of adding support in the future for reading the correct playlist from a "disc.inf" file that AnyDVD creates on the root of the Blu-ray Disc?
Currently I believe only JRiver supports this, but it can be a very useful feature.

luke823
18th November 2013, 20:47
that would be a while because there's a lot other more important things to do first. that's why i'm here to try and recruit. right now we just pass it to lav filters and it decides what gets played, which truthfully i think is the best approach.

ddjmagic
18th November 2013, 21:02
I've asked multiple times, but nevcairiel hasn't been interested in adding that feature to LAV so I doubt it will ever happen there (Slysoft can find the playlist better than LAV) anyway thanks for the answers - I definitely will be trying the various MB apps out, they look promising :)

nevcairiel
18th November 2013, 21:22
I've asked multiple times, but nevcairiel hasn't been interested in adding that feature to LAV so I doubt it will ever happen there (I think hes too 'proud' because Slysoft can find the playlist better than LAV) anyway thanks for the answers - I definitely will be trying the various MB apps out, they look promising :)

I would implement it, if they actually exported the information on all discs, and not just those discs with that special copy protection (that name i forgot), which is apparently never used in europe and as such i never had a disc with it.

andyvt
19th November 2013, 10:52
Where is the code for this project?

MSL_DK
19th November 2013, 11:57
Here: https://github.com/MediaBrowser/MediaBrowser.Theater

luke823
19th November 2013, 14:35
The video player is in this project:

https://github.com/MediaBrowser/MediaBrowser.Theater/tree/master/MediaBrowser.Theater.DirectShow

DirectShowPlayer.cs

andyvt
19th November 2013, 14:55
The video player is in this project:

https://github.com/MediaBrowser/MediaBrowser.Theater/tree/master/MediaBrowser.Theater.DirectShow

DirectShowPlayer.cs

Thanks. I had some time over lunch to take a look at it. It looks like you have it mostly wired up. I messed with it a bit to prefer LAV, wire the graph explicitly to keep out unnecessary filters and only load the EVR if madVR won't. Where should I send the patch?

luke823
19th November 2013, 15:08
Great, thanks. Just submit a pull request.

andyvt
19th November 2013, 15:33
Great, thanks. Just submit a pull request.

Done (I think, not real handy w/ git :)).

luke823
19th November 2013, 15:54
what happened to the formatting in the file?

https://github.com/babgvant/MediaBrowser.Theater/commit/5309e7de67258c43abee15f3d6c0990ef8fc0f6f

are your formatting settings not set to defaults? i'm unable to see what the changes are because of this.

andyvt
19th November 2013, 16:00
Not sure. I just edited the file in VS2012. I should be able use WinMerge to try again.

andyvt
19th November 2013, 16:01
What line endings do you use? When I open the file VS complains that it isn't consistent.

andyvt
19th November 2013, 16:10
Looks right now. UNIX line endings.

luke823
19th November 2013, 16:12
i'm on visual studio 2012 defaults.

luke823
19th November 2013, 16:16
Thanks, got your update. i'll do a quick test at lunchtime and then merge it. did you test madvr both on and off? also with both just do a quick test of resizing the window and making sure the video still scales.

andyvt
19th November 2013, 16:39
I didn't realize xyVsFilter needed to be b/w the video decoder and the EVR for it to work. That has been fixed.

GREG1292
19th November 2013, 16:56
Just want to say thanks for the Media player:goodpost:
Played around last night and for the most part easy to setup. What impressed me the most was the phone app with IOS 7.
smooth as silk.

luke823
19th November 2013, 17:02
Glad to hear that Greg, and by the way, Android went live in the store last night:

https://play.google.com/store/apps/details?id=com.mb.android&hl=en

It will hit the amazon store later this week. Then the Roku app will be in it's store shortly after that.

luke823
19th November 2013, 19:31
Andy - the changes have been merged. It all seems to be working fine. Thanks for your help.

andyvt
19th November 2013, 19:49
Andy - the changes have been merged. It all seems to be working fine. Thanks for your help.

Thanks. Can you point me towards the menus that will need to be altered to support FSE?

luke823
19th November 2013, 20:27
well it's not a matter of altering them, it's a matter of implementing them from scratch for FSE. The current menus are built using wpf overlays. FSE will require madvr's drawing api where you can render shapes and bitmaps. I have sample code from another .net-based madvr player I can send you, if you want to proceed.

Or, there might be some smaller "wins" we could go after first - like external subs, perhaps a refresh rate change option (or should that be left to madvr settings?). A couple people have requested that the application remember which monitor it was on, etc.

andyvt
19th November 2013, 21:38
If you can send the madVR API e.g. I'll have a look.

Does xyVsFilter also load external subs or do you have another filter in mind (IIRC MPC-HC has one)?

In the long term it's probably best to manage refresh rate changes yourself, but that will require UI to support it. In the short term probably easiest to just let madVR handle.

KeyserSoze17
20th November 2013, 01:34
Being intimately familiar with the Full Screen Exclusive "sample code" you're referring to, I'd recommend incorporating an XML file to reference the size and position of the graphics etc so that your themes can change the XML file without you needing to change the underlying code.

luke823
20th November 2013, 03:44
Being intimately familiar with the Full Screen Exclusive "sample code" you're referring to, I'd recommend incorporating an XML file to reference the size and position of the graphics etc so that your themes can change the XML file without you needing to change the underlying code.

Any interest in jumping on and helping out?

andyvt
25th November 2013, 22:33
Can you give me a hint at where the FullscreenVideoTransportOsd is drawn in? Also, have you noticed a little blue rectangle in the top left corner of the video window during playback?

luke823
25th November 2013, 22:46
it's all wpf controls. i don't think you're going to be able to use any of it. But look in the default theme project / Resources.

Also, i haven't noticed that but the changes i made to put the video player on it's own thread probably have a few defects that needs to be worked through. So it wouldn't surprise me.

andyvt
25th November 2013, 23:35
it's all wpf controls. i don't think you're going to be able to use any of it. But look in the default theme project / Resources.


Thanks. I don't want to reuse it, just trying to figure out how to turn it off :).

It looks like there's a window overlaying madVR so it won't flip into FSE. Is the OSD the only overlay?

luke823
25th November 2013, 23:42
I don't think you need to worry about the internal osd. once you get into FSE, it will be on top of everything else so the internal OSD will never be seen. The internal osd should be used in all cases except FSE, including madvr without FSE. So if anything then perhaps I can give you a method to hide the window overlaying the video player.

andyvt
26th November 2013, 10:39
The problem is that madVR will switch out of FSE (or not switch at all) when it detects UI on top of it or an attempt to draw UI over it. I'm not sure what the exact mechanism is yet (should probably ask madshi) for how it figures that out.

luke823
26th November 2013, 13:27
Ok, no problem. I will get FSE working just to the point that it launches. You can then take it from there and do the menus.

luke823
27th November 2013, 19:15
I should have this ready soon. Right now I'm able to get the FSE window to come up, but it quickly hangs. As soon as I work through that you'll be good to start on the FSE osd.