Search code examples
pythonvlcaspect-ratio

How to change video aspect ratio of vlc media player in python


I want to know how to change video aspect ratio of vlc media player in python to 16:10. Note that I am using vlc module. my code is as below:

import vlc
class Player():
    def __init__(self):
        self._instance = vlc.Instance(['--video-on-top'])
        self._player = self._instance.media_player_new()
        self._player.set_fullscreen(True)

    def play(self, path):
        media = self._instance.media_new(path)
        self._player.set_media(media)
        self._player.play()

    def stop(self):
        self._player.stop()
p=Player()
p.play('C:\\Users\\Keshavarz\\Desktop\\a.mp4')

Solution

  • Use the video_set_aspect_ratio("n:n") option where "n:n" is any of the usual suspects "16:9", "4:3" etc but can be anything you want such as "2:5" for example.

    You will also need to keep the script alive, I've included a simple loop in your play function, to do that.

    import vlc
    import time
    class Player():
        def __init__(self):
            self._instance = vlc.Instance(['--video-on-top'])
            self._player = self._instance.media_player_new()
            #self._player.set_fullscreen(True)
            self._player.video_set_aspect_ratio("16:9")
    
        def play(self, path):
            media = self._instance.media_new(path)
            self._player.set_media(media)
            self._player.play()
            playing = set([1,2,3,4])
            time.sleep(0.1)
            while True:
                state = self._player.get_state()
                if state not in playing:
                    break
                time.sleep(1)
    
        def stop(self):
            self._player.stop()
    p=Player()
    p.play('C:\\Users\\Keshavarz\\Desktop\\a.mp4')