Xin lỗi nhưng tôi không có Python3 để kiểm tra ở đây, để dòng mp3
sử dụng pyaudio
bạn sẽ cần phải giải mã nó trong dữ liệu PCM, tôi biết rằng pymedia có thể làm điều đó, nhưng nó là quá già và chỉ hỗ trợ python27
.
Để làm điều này đúng cách, bạn sẽ cần phải biết một số thuộc tính của âm thanh của bạn, những thứ như lấy mẫu, số kênh, độ phân giải bit, để đặt nó trong pyaudio.
tôi có thể hiển thị như thế nào tôi làm điều đó bằng python27
+ pyaudio
, đầu tiên tôi sẽ hiển thị như thế nào nó được thực hiện để dòng .wav
from urllib2 import urlopen
#to python3.x
#from urllib.request import urlopen
import pyaudio
pyaud = pyaudio.PyAudio()
srate=44100
stream = pyaud.open(format = pyaud.get_format_from_width(1),
channels = 1,
rate = srate,
output = True)
url = "http://download.wavetlan.com/SVV/Media/HTTP/WAV/NeroSoundTrax/NeroSoundTrax_test4_PCM_Mono_VBR_8SS_44100Hz.wav"
u = urlopen(url)
data = u.read(8192)
while data:
stream.write(data)
data = u.read(8192)
chọn đệm lớn, trăn chậm trong khi vòng lặp, tôi đã làm nó bằng khối kích thước 8192
, lưu ý rằng format
, channels
và rate
là thuộc tính rigth cho wav
tập tin này, vì vậy cho .wav
chúng ta không cần phải giải mã, nó là một PCM
dữ liệu, bây giờ cho mp3
chúng tôi sẽ cần phải giải mã và đưa vào định dạng PCM
dòng.
Hãy thử sử dụng pymedia
from urllib2 import urlopen
import pyaudio
import pymedia.audio.acodec as acodec
import pymedia.muxer as muxer
dm= muxer.Demuxer('mp3')
pyaud = pyaudio.PyAudio()
srate=44100
stream = pyaud.open(format = pyaud.get_format_from_width(2),
channels = 1,
rate = srate,
output = True)
url = "http://www.bensound.org/bensound-music/bensound-dubstep.mp3"
u = urlopen(url)
data = u.read(8192)
while data:
#Start Decode using pymedia
dec= None
s= " "
sinal=[]
while len(s):
s= data
if len(s):
frames= dm.parse(s)
for fr in frames:
if dec== None:
# Open decoder
dec= acodec.Decoder(dm.streams[ 0 ])
r= dec.decode(fr[ 1 ])
if r and r.data:
din = r.data;
s=""
#decode ended
stream.write(din)
data = u.read(8192)
Đây có thể là bí mật, bởi vì tôi chưa bao giờ thấy bất cứ ai thấy thế nào điều này có thể được thực hiện trong python, cho python3 Tôi không biết bất cứ điều gì có thể giải mã .mp3 thành từng miếng như PyMedia làm .
đây hai mã này được streming và làm việc cho .wav
và .mp3
Tôi đoán bạn sẽ phải tìm cách để tải xuống tệp đầu tiên dưới dạng mp3 và sau đó phát chúng như bạn đã đề cập với pygame chẳng hạn. Tải xuống nên là phần khó khăn tuy nhiên ... Làm thế nào sẽ url = "sound_cloud url" trông như thế nào? Bạn có thể đưa ra một ví dụ không? Tôi đã có một cái gì đó như url = "soundcloud.com/artist/song.mp3" bạn chỉ có thể sử dụng: import os; os.system ('wget' + url) nhưng tôi nghi ngờ rằng url có định dạng này. – Ohumeronen
Tôi cần nó để được phát trực tuyến, url trông giống như sau: "https://ec-media.sndcdn.com/cWHNerOLlkUq.128.mp3?f10880d39085a94a0418a7ef69b03d522cd6dfee9399eeb9a522079b6afcbe3bd34f537531708eb245f81c7e0db701476a167319865dd299cf41501b5895e9caee9e3be93d" bất kỳ cái nào? – LichKing
Tôi nhận được "403 - Cấm" nếu tôi nhấp vào url đó. Bạn có chắc url là chính xác không? – Ohumeronen