Looking for testers for ES Video Preview on Raspberry Pi
-
@Nismo Thank you for all that you have done so far. I use the application Handbrake to queue up all my videos to re-encode. It takes a while for the number of videos I have but its super nice just setting it up and letting it do all the work without me needing to do anything.
-
@HurricaneFan I know what is handbrake, and it's very limited, I know how to re-encode videos and how to batch re-encode, but I need to have all the advanced options available and handbrake it's a very limited program, I don't need programs for batch encoding, I only need people who can test videos, and find the best parameters for a rpi, because i don't have one, I know how to encode and batch encode videos and resize, apply effects, etc, etc.
Only need people who can test my videos because I use windows and i don't want to loose my time if I need to reencode all my videos for downscale.
I don't need optimized videos for me, but i'll try to do it for people with rpi, optimizing filesize, and no temps problems, because I'm trying to do my best for this great forum.
-
@Nismo Thanks Nismo. As I stated, in its current incarnation it's not ideal, but I have hopes that maybe the EmulationStation video performance can be adjusted, so I'd hold off on re-encoding everything as maybe things will improve.
Thank you for all the hard work!
-
@pjft said in Looking for testers for ES Video Preview on Raspberry Pi:
but I have hopes that maybe the EmulationStation video performance can be adjusted
Funny you should say that. I had play with this last night trying to work out where the high CPU usage stems from. I disabled all rendering code and just left the VLC library rendering into a buffer and the CPU usage (measured through the temperature gain) was the same.
At the moment, VLC is configured to reformat the video pixels to RGBA8888 so I tried some different encoding formats. The native format for my videos takes a bit more work so I just tried some others such as RV16 and RV32. This seemed to make quite a significant difference to the temperature of the pi and is a fairly quick fix to try. I'll put a build together, hopefully tonight for some people to try out to see if it makes a difference.
I don't know much about video formats but is there a prevailing format that is used by most videos/codec? According to https://wiki.videolan.org/YUV/#I420, "I420 is by far the most common format in VLC. Most video decoders output raw pictures in I420 format". If I add direct translation from that format then maybe it will alleviate the problem.
-
@fieldofcows I didn't in any way mean it in a way to suggest anything or put pressure on anyone - apologies if that's how it came across. :)
I just meant, from a technical, conceptual point of view, all things equal the video rendering should be able to perform similarly in ES as outside of ES, or at least incrementally similarly.
Should we encode videos differently or is it a rendering tweak? If I'm honest, I believe my videos are encoded like yours. Also, if people resort to Emumovies as a common source, then I'd say optimizing for those would be best as it's more likely that this videos are used by the majority.
I'm thinking of checking how Kodi actually renders videos. Will see what I can find in the coming days.
Thanks for all!
-
@pjft I wasn't feeling pressured -I just like to fix things :)
I have two rpi 3s and both of them run the same temperature with my videos. I have spent some time watching the temperatures with the script and they do indeed increase over time but plateau at about 75-76 degrees. I'm sure putting them in a case would reproduce the issue.The problem is that we are at the mercy of VLC with regards to performance. All we can do is tweak the settings and configuration in VLC to reduce it's workload and try to perform an ES/rpi optimisation on the remaining work. That's what I'm currently trying. VLC is doing a fantastic job - I was surprised this worked at all without GPU acceleration.
However, looking at how kodi works is a good idea. Does it use VLC? Something else? Can it render into a window or is it full screen only? I've never used it myself so if you can provide some information on this then that would be fantastic.
-
@fieldofcows Have you never used kodi? Well then you have been missing out on alot 😉.
There is alot info avaliable on Wikipedia
-
@fieldofcows I actually don't know. I know there's a Github repository:
Will need to look into it when I'm back. As far as I'm aware, it uses its own player (DVDPlayer), and it states the codecs it's using for different purposes:
http://kodi.wiki/view/DVDPlayer
I see some mentions of omxplayer in the dependencies, though I am unsure whether that's the one it's using. However in the search I found this article on HW acceleration - see if this helps your work on VLC, though:
https://www.oblivion-software.de/index.php?id=56&type=98
If you have RetroPie on your RPi, you can install Kodi on it - I believe it's in the Optional Packages.
https://github.com/retropie/retropie-setup/wiki/KODI
Look into it if it suits.
Thanks!
EDIT: @fieldofcows is there a way to load VLC from the command line as a standalone, or open a video with it from the command line? I'd be happy to test things out as well that way. I'm unsure whether you're just linking to it and using it as a library, or if peer chance it's also installing a standalone player.
-
@fieldofcows I don't pretend to be an expert by any means on any of this video stuff, three main libraries I know of are ffmpeg, omxplayer, and VLC . I do wonder if there are pi specific optimisations for compilation or if the libraries are more or less standardised. I suppose that's where the difference between hardware acceleration comes in perhaps. Kodi may be a good reference to at least understand how it works for them, but I'm not sure if it would require an optimised build for the pi vs a PC. Just throwing ideas out there
-
Here is some info i found browsing the web.
FFmpeg is a free software project that produces libraries and programs for handling multimedia data. FFmpeg includes libavcodec, an audio/video codec library used by several other projects, libavformat, an audio/video container mux and demux library, and the ffmpeg command line program for transcoding multimedia files. FFmpeg is published under the GNU Lesser General Public License 2.1+ or GNU General Public License 2+ (depending on which options are enabled). FFmpeg is developed mostly on Linux,...
FFmpeg is use by a lot of sofware like vlc, firefox, mpv, chromium and a lot more !
It use libavcodec library which is part of FFmpeg which contains all decoders, encoders and parsers of each type of video/audio formats.libavcodec is a free and open-source library of codecs for encoding and decoding video and audio data. libavcodec is an integral part of many open-source multimedia applications and frameworks. The popular MPlayer, xine and VLC media players use it as their main, built-in decoding engine that enables playback of many audio and video formats on all supported platforms. It is also used by the ffdshow tryouts decoder as its primary decoding library. libavcodec is also used in video editing and transcoding.
-
This post is deleted! -
Attract Mode uses FFmpeg, no one has yet reported the same overheating issues with it?
-
I may have a solution to the overheating problem. Give me a couple of hours and I'll try to get a version out for people to try.
-
@fieldofcows I haven't yet had time to replicate what @pjft posted earlier, but I'm hoping to get to that today. Do you want me to do a before and after test, or just test one or the other?
-
@MWGemini before and after would be fantastic.
-
@fieldofcows You got it. I'll see if I can do the "before" test now. Give me an hour or so to get it reconfigured, and I'll report back.
-
@MWGemini I suspect that a before and after test may help, not because of replicating the overheating issue necessarily, but to be able to compare and validate the improved temperature performance with @fieldofcows 's tentative fix by comparing temperature progression and plateaus for the same videos.
I'll only be back in the weekend, so I'm sure to try it out then.
Thanks all!
-
@pjft @fieldofcows Having trouble getting the watch command to work (still figuring out why), so I'm manually running it every few seconds with bash, but here's some initial reports:
With my open case and fan on, my Pi was idling at the carousel view with:
CPU Speed: 600 MHz - CPU Temp: 43.4°C - GPU Temp: 42.9'CAs soon as I started playing a video, temps jumped approx 10°C. After about 3 minutes on a video, they were at:
CPU Speed: 1200 MHz - CPU Temp: 62.3°C - GPU Temp: 62.3'C
Max I saw, after about 7 minutes of letting a video loop, was:
CPU Speed: 1200 MHz - CPU Temp: 63.3°C - GPU Temp: 63.4'CIt seemed to stabilize at these numbers. Specs for this video ('88 games): 640x480, 59 frames per second, 942kbps data rate, 1036kbps total bit rate, 94kbps audio bit rate, 2 channels, 48kHz, 38seconds in length.
I switched to another video, one that has always appeared graphically glitchy (I assumed it was a bad video, but it looks to be decoding issue, since it plays fine on my PC), and let it run for another 5-7 minutes. Max temps I saw there:
CPU Speed: 1200 MHz - CPU Temp: 65.5°C - GPU Temp: 65.0'C
I also noticed additional graphical glitches that were inconsistent with each loop of the video, so there's definitely something going on.
Specs on that particular video (19xx): 640x480, 59 frames per second, 1646kbps data rate, 1802kbps total bitrate, 156kbps audio bit rate, 2 channels, 48kHz, 35seconds in length.I have not yet had a chance to put in the videos that @pjft linked me to earlier or reconfigure my gamelists to show them, but wanted to get some initial data out there. I'll pull my fan and close up the case and repeat these tests.
-
@MWGemini thanks. Yes, sorry - in my last tests I just put together a small self-invoking script of
<Call temperature script>
<sleep 5 seconds>
<Repeat>Thanks for testing. Yes, 60fps videos I found that they end up glitching at different stages in different loops. Sometimes they are not very noticeable but glad you confirmed that.
These are good results with the fan - it took me a bit to understand that you had the fan on - but great nonetheless. I'll be curious with the new build in regards to:
- potentially better temperatures;
- 60fps video performance becoming non-glitchy
Thanks!
-
My Pi idles in the low 50s with the screensaver off, but not doing anything. It's in the low to mid 40s with the screensaver on (this is with the fan on).
With the fan removed and the case closed up a bit, those numbers become low 60s (i.e. 61/62) and 49/50, respectively. These numbers are rough, since I was waiting a while for a steady state to be achieved (or fairly close to it- I only waited about 10-15 minutes max for each trial, often more like 5).
After another ~3 minutes on '88 games (the "good" video), max temps I saw were:
CPU Speed: 1200 MHz - CPU Temp: 75.7°C - GPU Temp: 75.8'C
I also noticed a few graphical glitches (black sections of the video on some frames, or the entire video darkened for a few frames). At 5 minutes in, I saw the temperatur warning, briefly, and had the following measurements:
CPU Speed: 1200 MHz - CPU Temp: 79.5°C - GPU Temp: 80.1'CI switched over the the "bad" video (19xx) for another minute, and temps rose up to:
CPU Speed: 1200 MHz - CPU Temp: 81.1°C - GPU Temp: 81.1'C
At this point, the temperature warning indicator was steadily on, so I opened up the case and reconnected the fan.Summary: Closed case and no active cooling increases temperatures by about 20 °C. Difference between idling with screensaver on and screensaver off is about 10°C. Difference between idling with screensaver off and playing a video is about 10-20°C.
Based on my quick tests, I don't recommend that people keep their Pi in a tightly confined case with no ventilation or cooling. Mine was in a cardboard box about half the size of a shoe box (Amazon size A1, actually).
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.