Python 使用VLC库从livestream保存音频
我正在尝试使用VLC库从实时流中保存音频片段(每个片段15秒)。我找不到任何选项,可以让我记录只有15秒的直播流。因此,我在我的代码中使用了计时器,但录音片段有时包含10秒,有时包含20秒(很少是15秒)。此外,有时音频内容会在剪辑中重复。 这是代码(我是新手,请指导我) Code.pyPython 使用VLC库从livestream保存音频,python,ubuntu-16.04,vlc,live-streaming,Python,Ubuntu 16.04,Vlc,Live Streaming,我正在尝试使用VLC库从实时流中保存音频片段(每个片段15秒)。我找不到任何选项,可以让我记录只有15秒的直播流。因此,我在我的代码中使用了计时器,但录音片段有时包含10秒,有时包含20秒(很少是15秒)。此外,有时音频内容会在剪辑中重复。 这是代码(我是新手,请指导我) Code.py import os import sys import vlc import time clipNumber = sys.argv[1] filepath = 'http://streamer64.ebou
import os
import sys
import vlc
import time
clipNumber = sys.argv[1]
filepath = 'http://streamer64.eboundservices.com/geo/geonews_abr/playlist.m3u8'
movie = os.path.expanduser(filepath)
if 'http://' not in filepath:
if not os.access(movie, os.R_OK):
print ( 'Error: %s file is not readable' % movie )
sys.exit(1)
filename_and_command = "--sout=#transcode{vcodec=none,acodec=mp3,ab=320,channels=2,samplerate=44100}:file{dst=clip" + str(clipNumber) + ".mp3}"
# filename_and_command = "--sout=file/ts:clip" + str(clipNumber) + ".mp3"
instance = vlc.Instance(filename_and_command)
try:
media = instance.media_new(movie)
except NameError:
print ('NameError: % (%s vs Libvlc %s)' % (sys.exc_info()[1],
vlc.__version__, vlc.libvlc_get_version()))
sys.exit(1)
player = instance.media_player_new()
player.set_media(media)
player.play()
time.sleep(15)
exit()
现在我想录制1分钟的直播流,我从bash脚本中调用了这段python代码4次,它创建了4个音频片段(clip1.mp3、clip2.mp3、clip3.mp3和clip4.mp3)
Script.sh
for ((i=1; i<=4; i++))
do
printf "Recording stream #%d\n", "$i"
python code.py "$i"
printf "Finished stream #%d\n", "$i"
done
for((i=1;i如果您只想保存文件,无需使用vlc。下面是一个简短的过程:
def record(filepath, stream, duration):
fd = open(filepath, 'wb')
begin = datetime.now()
duration = timedelta(milliseconds=duration)
while datetime.now() - begin < duration:
data = stream.read(10000)
fd.write(data)
fd.close()
如果您只想保存文件,则无需使用vlc。以下是一个简短的过程:
def record(filepath, stream, duration):
fd = open(filepath, 'wb')
begin = datetime.now()
duration = timedelta(milliseconds=duration)
while datetime.now() - begin < duration:
data = stream.read(10000)
fd.write(data)
fd.close()
使用FFMPEG as可以轻松完成所需的所有工作:
ffmpeg -i streamURL -c copy -vn -ac 2 -acodec aac -t 15
-vn仅用于录制音频部分(无视频)
-t用于指定要记录的流的持续时间(此处为15秒)使用FFMPEG可以轻松完成所有需要的工作,如:
ffmpeg -i streamURL -c copy -vn -ac 2 -acodec aac -t 15
-vn仅用于录制音频部分(无视频)
-t用于指定要录制的流的持续时间(此处为15秒)任何了解这一点的人?任何事情都会有帮助并得到赞赏..也许这在FFMPEG中是可能的?任何了解这一点的人?任何事情都会有帮助并得到赞赏..也许这在FFMPEG中是可能的?