跳到另一个 mp3 时出现延迟

问题描述

我正在将传入流录制到 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

解决方法

先生布拉德,我这么晚才收到反馈,抱歉。问题已根据您的建议解决,我的做法是:

首先我用这个命令创建一个 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”文件

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...