1

My console application handles the playback of different videos via the vlc player. As soon as the video changes, VLC exits full screen mode and switches back to full screen mode when the new video is loaded. This causes a short "flicker".

To prevent this behavior I want to force a blackscreen in this time. I tried to use tvservice --off and tvservice --preferred to toggle the blackscreen but this also cause a short "flicker".

Then I tried to use vcgencmd display_power to turn the screen on / off which is better than the tvservice but also cause a short "flicker".

Is there another way? I dont't need to turn the screen off. Just make it black to hide the vlc player when the video switch. Maybe set the brightness to 0? I only found a good solution for the official 7' touchscreen. There you can use rpi_backlight which would be a perfect solution for my problem but I have a different screen.

2
  • keep it in fullscreen and have something stream to vlc. may have to transcode some stuff but everything including black screens would end up buffered
    – Abel
    Commented Mar 17, 2022 at 23:27
  • @Abel It is already a bit older but I got around this issue by starting chromium in kiosk mode with a black page. when VLC leaves the fullscreen, you will see the chromium browser with a black page. Commented Mar 18, 2022 at 14:17

2 Answers 2

0

Find out how to change backlight brightness on your screen, then set it to zero. If there's no way, get a screen which supports brightness setting.

Alternatively, prepare a single video file with seamless transitions. Or make a playlist. Or a video stream. Then VLC will never have to quit fullscreen mode.

Alternatively, write your own app which would sit in on the screen displaying a black background, and spawn VLC (or a different media player) to play videos.

Or, write your own player. There are very simple video players like ffplay which are easy to start with.

0

I'm doing something similar.

What I did is set the desktop background to the color black, then set the menu bar (LXPanel) at the top of the screen to the color black, then turn on auto-hide for the menu.

[EDIT: I have since changed to using python-mpv.]

I'm writing the app using the python-vlc API. I eliminated the flick between videos by using two VLC media player instances and having them overlap slightly:

  1. instantiate the new mediaplayer instance
  2. set the media for the video on it
  3. set full screen true
  4. invoke new_player.play()
  5. call time.sleep(0.75) to give the new player time to get started
  6. after time.sleep() returns call old_player.stop()

I'm trying to figure out how to do the same thing for a looping video, i.e. rather than use the VLC --replay option (which has the same gap issue, I'm not sure why) I'll just use the same trick. I need to find the right API calls to figure out the video's duration, to get the timing right.

To set the desktop background and menu bar to black:

Desktop background: right-click on empty desktop and select "Desktop Preferences". Select the Desktop tab if it's not already on it, and select:

Layout: No Image Color: click on the color sample and set it for a black color.

LXPanel: Click on the menu bar and select "Panel Settings".

Select the "Appearance" tab and click on the radio button for "Solid colour (with opacity)", then click on the color sample and set it for a black color.

Then select the "Advanced" tab and under the heading "Automatic Hiding", check "Minimize panel when not in use".

I didn't bother messing with the "Size when minimized" setting, the above was enough to do the job for me.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.