【问题标题】:Delay occouring when skipping to another mp3跳到另一个 mp3 时出现延迟
【发布时间】:2021-04-02 01:49:40
【问题描述】:

我正在发送设备中将传入的流录制到 mp3 文件的 20 秒部分。之后,我将此文件上传到 Google Drive(使用 RCLONE)。然后我将此文件下载到接收器设备。我在接收方等待了一段时间(缓冲)。然后我开始从命令行使用 VLC-player 播放这个文件并听这首歌。在媒体播放器中跳到另一个 m3 文件时出现问题,出现大约 0.1 秒的静音。我试图将这些 mp3 文件连接到一个文件中,但同样的问题又出现了。

我该如何处理这个问题?

这是部分代码;

def Sound(self):
    t1=threading.Thread(target=self.read_playlist)  # update playlist file continuously
    t1.start()
    vlc_instance = vlc.Instance() 
    player = vlc_instance.media_player_new()
    i=0
    while 1:           
        media = vlc_instance.media_new(self.playlist[i].strip())
        player.set_media(media)
        duration=self.len_mp3(self.playlist[i].strip())
        player.play()
        time.sleep(duration)
        i=i+1

【问题讨论】:

  • 整个过程存在固有的延迟。坦率地说,我很惊讶您将跳过时间缩短到 0.1 秒。 :-) VLC 尤其不能从一首曲目无缝播放到下一首曲目。我不完全确定您要做什么,但我建议您重新访问整个堆栈。
  • 实际上当媒体播放器换成另一个mp3时会很明显,但延迟时间可以少于或多于0.1秒。我的目的是进行一些延迟(2-3 分钟)的直播,因为当互联网中断 0-2 分钟时,广播不应该停止。这就是为什么,首先我将 mp3 文件上传到驱动器,然后我将这些文件下载到广播设备并等待 2-3 分钟(缓冲)。然后我开始广播了。
  • 您是否考虑过简单地使用具有显着缓冲区大小的 HLS? VLC 可以直接播放。
  • 我没有关于 HLS 的信息,但我现在正在搜索它

标签: stream mp3 playback python-vlc


【解决方案1】:

先生。布拉德,我迟到了,对此我很抱歉。用你的建议解决了问题,我在做什么:

首先我用这个命令创建一个 HLS 段;

ffmpeg -f alsa -i plughw:1,0 -c:a libmp3lame -f segment -strftime 1 -segment_time 1 -segment_format mpegts path/%Y%m%d%H%M%S.ts 

这会根据时间戳创建一个长度为 1 秒的“.ts”文件

在接收方,我正在将这个“.ts”文件下载到我的设备上。在下载这些“.ts”文件时,我正在等待创建一个“.m3u8”文件,例如, 缓冲时间为 3 分钟,然后我开始下载过程并等待 3 分钟创建“.m3u8”文件。 3 分钟后,我开始手动创建“.m3u8”文件,并启动 mpv-player(python 接口)播放“.m3u8”文件。我在接收端每隔一秒更新一次“.m3u8”文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2019-10-03
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多