将RTSP流记录到文件(.wav)

时间:2017-10-03 10:27:44

标签: python audio streaming vlc transcoding

我试图将音频流中的X秒保存到文件中。我有一个RTSP服务器,我在python中创建了一个简单的脚本,从这个服务器节省几秒钟,以便记录在一个文件(.wav)中。

def main():
    ########################### MAIN INIT ###########################

    instance = vlc.Instance("-vvv", "--no-video", "--clock-jitter=0", "--sout-audio", "--sout",
                            "#transcode{acodec=s16l,channels=2}:std{access=file,mux=wav,dst=test.wav}")

    # Create a MediaPlayer with the default instance
    player = instance.media_player_new()

    # Load the media file
    media = instance.media_new("rtsp://XXX.XX.XXX.XX:YYYY/") 

    # Add the media to the player
    player.set_media(media)

    # Play for 10 seconds then exit
    player.play()
    time.sleep(10)


if __name__ == '__main__':
    main()

但是当我运行脚本时,它会创建文件" test.wav"但它是一个文本平面文件而不是wav,我在等什么。

Log向我显示下一个信息:

[00000000022aec08] core input error: ES_OUT_RESET_PCR called
[00007f6704040518] core decoder error: cannot continue streaming due to errors

所以我非常感谢能帮助我的人。 非常感谢。

1 个答案:

答案 0 :(得分:0)

Wav文件的结构使用不同的字段来表示您可能知道的不同信息 - 请参阅此链接中的示例(https://github.com/kushalpandya/WavStagno):

enter image description here

听起来您的输出格式不正确 - 有可用于检查WAV文件的工具,这是一个很好的起点,或者如果您想分享这里的文件链接,那么人们可以看一看

如果你要做的是收听流并同时保存它,那么你可能想要使用重复的功能 - 这里有一个神的例子(尽管是基于视频的):{{3} }