Я хочу воспроизвести аудиофайл с определенной длительностью, например, запустить его на 1:00 минуте или на 500 миллисекундах, используя модуль медиаплеера в python.

    import vlc
    song = vlc.MediaPlayer('song.mp3')
    song.play()

теперь с помощью song.play() я могу воспроизвести файл, но только с начала, так что есть ли способ запустить его с определенной длительности?

Somebody

Ответов: 3

Ответы (3)

Используйте set_time() метод объекта MediaPlayer:

import vlc
song = vlc.MediaPlayer('song.mp3')
song.play()
song.set_time(10000)    # play at 10,000 ms (10 seconds)

Также существует set_position(), который работает со значениями от 0.0 до 1.0:

song.set_position(0.5)   # half way through media file

Ответ Рольфа - единственная версия, которая сработала для меня при использовании python-vlc на Raspbian на Pi. Копаясь в API VLC для метода set_position, можно найти "This may not work depending on the underlying input format and protocol. - У меня это не сработало. Единственный метод seek, который я нашел и который сработал для меня, - это пример с использованием экземпляра Media.

Существует много способов снять шкуру с кошки, и в дополнение к принятому ответу вы также можете использовать опции --start-time и --stop-time в экземпляре Media.
т.е.

import vlc
import time
url = "file:///home/rolf/BBB.ogv"

playing = set([1,2,3,4])
instance=vlc.Instance()
player=instance.media_player_new()
media = instance.media_new(url)
media.add_option('start-time=600.00') # start at 600 seconds (10 minutes)
media.add_option('stop-time=605.00') # for 5 seconds
player.set_media(media)
player.play()
time.sleep(0.1) # wait briefly for it to start
while True:
    state = player.get_state()
    if state not in playing:
        break

Примечание: --run-time также существует
. Используйте vlc -H в командной строке, чтобы получить множество опций.

2022 WebDevInsider