Video Preview in EmulationStation



  • Hi everyone. I just thought I'd share with you a video of something I've been working on over the last few days. I've managed to get a video preview component working in EmulationStation and have put a simple theme together to try it out. I've been wanting this for the Raspberry Pi since putting an Xbox with Coin Ops in my bartop which has a very nice video preview.

    This works equally well on Linux and Raspberry Pi 3. I haven't tried it on other platforms or other Raspberry Pi's yet. The video is taken from my Linux machine.

    Have a look and see what you think :)

    YouTube: EmulationStation with Video Preview



  • That looks really promising! Very impressive :)

    Perhaps you should collaborate with these guys:
    https://retropie.org.uk/forum/topic/3121/emulationstation-mod/220

    @Zigurana @jacobfk20 @ben_thatmustbeme



  • That almost looks like my "Alma Mater" GameEx. :) I was just talking about my NES build on that forum saying how I wish there was a way to use video snaps. Now you're talking! My only question would be, is the Pi system capable of maintaining stability with that? I'm already bummed that the skin I want to use breaks because of the number of systems I'm using. I figured something intensive such as video snaps would probably never be a possibility. I can't wait to see how this progresses!



  • @Floob - thanks! Yes, if there is enough interest then I'll try and get this pulled into a central location. Up until a few days ago I haven't looked at EmulationStation for a while and didn't realise the original author had stopped developing it. I'd love to collaborate with any future development on EmulationStation.

    @hansolo77 - The theme I'm using is a mish-mash of a few different bits and pieces: It's based on the default detailed theme view with the arcade cabinet image borrowed from the "HS Arcade - MAME -Main Menu" them from the hyperspin forums along with a few modifications by myself. I'm a SW engineer and not artistic in any way so it's the best I can do.

    I was wondering how the Pi would cope with the video but it seems to cope just fine. I have a RPi2 which I'll try it on as I've only tried the RPi3 at the moment. I've made it so the time it takes between selecting a game and the video starting is configurable - 1 second in my YouTube video. This means that when fast scrolling it doesn't try to load and unload each one. Adding video clips should be no more demanding on the Pi than any other theme except when it's playing.



  • That would be great if there is a centralised project to move the development of ES on RetroPie forward.
    I think everyone would love to see some progress with that front-end.

    You will find lots of guys happy to help out with the aesthetic side of themes such as @lilbud and @Rookervik

    You may get some ideas for the video playback from how Attract Mode does this:
    https://retropie.org.uk/forum/topic/93/attract-mode-with-retropie-alternative-to-emulationstation



  • @Floob said in Video Preview in EmulationStation:

    That looks really promising! Very impressive :)

    Perhaps you should collaborate with these guys:
    https://retropie.org.uk/forum/topic/3121/emulationstation-mod/220

    @Zigurana @jacobfk20 @ben_thatmustbeme

    Yes please do 😉



  • @fieldofcows OMFG this makes me extremely happy!!!

    How does having a video preview affect theming? Does the positioning work the same as artwork?

    Also, what software are you using to play the video - Omxplayer?



  • Nice!

    I played about with attract mode previously because I like the idea of video previews but it became a bit unmanageable with long ROM lists.

    This looks like a happy medium, where I can have my video previews (and updated marquee image - nice!) without all the additional micro-managing involved in seperate attractmode menus.

    Looking forward to trying this out, thanks.



  • @robertybob So, I've added a new VideoGameListView which is based on the DetailedGameListView where the md_image item has been renamed to md_marquee and there is a new <video> component named "md_video". Probably best shown with an example:

    <theme>
    	<formatVersion>3</formatVersion>
    	<view name="video">
    		<image name="md_marquee">
    			<pos>0.0293 0.039</pos>
    			<origin>0.0 0.0</origin>
    			<size>0.5488 0.181</size>
    		</image>
    		<video name="md_video">
    			<pos>0.3050 0.472</pos>
    			<origin>0.5 0.5</origin>
    			<size>0.3740 0.3540</size>
    			<delay>1.0</delay>
    		</video>
    	    	<text name="md_publisher">
    			...
    

    Then the gamelist.xml is defined like this:

    	<game>
    		<path>./1944.zip</path>
    		<name>1944 - the loop master (000620 USA)</name>
    		<desc>1944 - the loop master (000620 USA)</desc>
    		<video>/home/pi/Games/config/videos/1944.xmv</video>
    		<marquee>/home/pi/Games/config/marquees/1944.png</marquee>
    		<rating>0.5</rating>
    		<releasedate>20000101T000000</releasedate>
    		<developer>Capcom / 8ing / Raizing</developer>
    		<publisher>2000 Capcom / 8ing / Raizing</publisher>
    		<genre>Shooter / Flying Vertical</genre>
    		<players></players>
    	</game>
    

    Any suggestions for how this can be improved are very welcome :)

    I am using libvlc for the video rendering. This renders into a buffer that then gets imported into an OpenGL texture for display. This will allow for some of the effects seen in Attract Mode videos in the future if we want to add them. I used vlc because I thought I could make use of the hardware acceleration on the rPI but it is not currently using it and, in fact, does not seem to be necessary at least on the rPI3 that I am using.



  • This is absolutely amazing!!

    Please can you share with us a windows binary build? Please! Please!

    Thank you very much, great work. Regards.



  • @GtBFilms said in Video Preview in EmulationStation:

    Nice!

    I played about with attract mode previously because I like the idea of video previews but it became a bit unmanageable with long ROM lists.

    This looks like a happy medium, where I can have my video previews (and updated marquee image - nice!) without all the additional micro-managing involved in seperate attractmode menus.

    Looking forward to trying this out, thanks.

    This is where emumovies comes in. They have tools that will make it easier to maintaining your video snaps.

    A lifetime subscription is the way to go.
    Have never regretted it one sec.



  • @Nismo I can share a Linux or RPi build but I haven't got a WIndows toolchain setup for EmulationStation yet. If I get time tomorrow I'll see what I can do.

    Anyone else interested in giving this a try?



  • @Rion Well said. I'm a close friend of Circo and his emumovies. Been a lifetime member for years and years. Haven't updated my sets on my gaming PC in a while though, probably outta. Been working on setting up a RetroPie.

    @fieldofcows I would definitely be willing to test this, but I know very little. I've only been a member of the site for like 3 days, and only just started building my RetroPie in the last 2. Perhaps some day. :)



  • @fieldofcows of course i want to test.

    Maybe i could try to install VS2010 in my computer and try to compile myself if you give me source code. But i never did before...



  • @fieldofcows Sure, I could test it and put a video overview up if you like?



  • @Nismo I'll try to see if it builds on Windows today. If you or anyone else want to try to build from source then you can download it from my github



  • Hey, good work!
    The youtube vid is very promising.
    The initial halting when going into the gamelist, is that because of the video loading / libvlc starting up ?

    If you ever want to have someone else have look at your code, and you can handle stupid questions, don't hesitate to drop me a line. I am looking for a coding buddy myself, and combining efforts seems like a fun way to bring ES to the next level!



  • @fieldofcows I'm trying to compile to windows from Linux Lite (Ubuntu 16.04.1 LTS) using Mingw64.

    First problem i encountered is Mingw64 can't find freeimage so i did this change on CMakeLists.txt:

    #finding necessary packages
    #-------------------------------------------------------------------------------
    if(${GLSystem} MATCHES "Desktop OpenGL")
    find_package(OpenGL REQUIRED)
    else()
    find_package(OpenGLES REQUIRED)
    endif()
    find_package(Freetype REQUIRED)
    find_package(SDL2 REQUIRED)
    find_package(Boost REQUIRED COMPONENTS system filesystem date_time locale)
    find_package(Eigen3 REQUIRED)
    find_package(CURL REQUIRED)
    find_package(VLC REQUIRED)

    #add ALSA for Linux
    if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
    find_package(ALSA REQUIRED)
    endif()

    FIND_PATH( FREEIMAGE_INCLUDE_PATH FreeImage.h
        /usr/include
        /usr/local/include
        /sw/include
        /opt/local/include
        DOC "The directory where FreeImage.h resides")
    FIND_LIBRARY( FREEIMAGE_LIBRARY
        NAMES FreeImage freeimage libfreeimage libfreeimage-3.15.2
        PATHS
        /usr/lib64
        /usr/lib
        /usr/local/lib64
        /usr/local/lib
        /sw/lib
        /opt/local/lib
        DOC "The FreeImage library")
    

    #-------------------------------------------------------------------------------

    Now i have not freeimage error while compiling, but any message about freeimage. I'm sure latest version of freeimage is installed.

    Now Mingw64 can't find vlc library, and i don't know what to do or where to point. I have installed libvlc-dev.

    This is my Mingw64 script:

    cmake -DFREETYPE_INCLUDE_DIRS=/usr/include/freetype2/ -DFREETYPE_LIBRARY=/usr/include/freetype2/ft2build.h -DFREEIMAGE_INCLUDE_DIRS=/usr/include/ -DFREEIMAGE_LIBRARY=/usr/include/FreeImage.h -DSDL2_INCLUDE_DIR=/usr/include/SDL2/ -DSDL2_LIBRARY=/usr/include/SDL2/SDL.h -DBOOST_LIBRARYDIR=/usr/lib/x86_64-linux-gnu/ -DCURL_LIBRARY=/usr/include/curl/curl.h -DVLC_INCLUDE_DIR=/usr/include/vlc/ -DVLC_LIBRARY=/usr/include/vlc/libvlc.h -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=/usr/bin/x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=/usr/bin/x86_64-w64-mingw32-c++

    Any help whould be appreciate, thanx.

    #-------------------------------------------------------------------------------



  • @Nismo Is MinGW64 a supported build environment for EmulationStation? I don't know much about it but I would have thought you would need to build all the dependencies (including libvlc) using the mingw64 toolchain for this to work rather than trying to build against the linux headers and libraries.

    I was hoping to get a windows environment setup over the weekend but I didn't find much time. I did manage to get it nearly working though using Visual Studio 2015. It all builds but I'm getting link errors. It shouldn't take much to get it working except some of my time of which I don't have much!



  • @fieldofcows if you read about mingw64 it's not much difference about compiling for windows from ubuntu, anyway if you need a PC with windows to make test and make an windows environment setup i can let you use mine trought teamviewer. No problems with that. Mi PC is your PC. If i can contribute with my computer, i'm happy to help with the project.
    intel core i7 4790k 8gb ram. Windows 10. You will work with an 250GB SSD because all my HDD are full.

    what do you think?



Looks like your connection to RetroPie Forum was lost, please wait while we try to reconnect.