Tôi gặp vấn đề về chất lượng khi cố gắng phát trực tuyến trên máy chủ icecast cục bộ từ ứng dụng của mình.
Đây là mp3 ghi ngay trước khi gửi đến máy chủ icecast
và đây là bản mp3 đã ghi từ trình phát phương tiện vlc.
Như bạn có thể nghe thấy có một âm thanh run rẩy giữa các khối.
Điều gì có thể gây ra vấn đề này?
Khoảng thời gian chunk tôi đã chọn là 744 mili giây
Tần số lấy mẫu là 44,1KHz
Tôi sử dụng mô-đun python-shout để gửi dữ liệu âm thanh đến máy chủ icecasts.
Tệp cấu hình icecast là:
<icecast>
<hostname>localhost</hostname>
<limits>
<clients>100</clients>
<sources>2</sources>
<threadpool>8</threadpool>
<queue-size>102400</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>0</burst-on-connect>
<burst-size>65536</burst-size>
</limits>
<authentication>
<source-password>hackme</source-password>
<relay-password>hackme</relay-password>
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>
<http-headers>
<header name="Access-Control-Allow-Origin" value="*" />
</http-headers>
<mount type="normal">
<mount-name>/test.mp3</mount-name>
<username>username1</username>
<password>password1</password>
<max-listeners>100</max-listeners>
<dump-file>/tmp/dump-example1.mp3</dump-file>
<burst-size>25536</burst-size>
<fallback-mount>/test2.mp3</fallback-mount>
<fallback-override>0</fallback-override>
<fallback-when-full>0</fallback-when-full>
<!--<intro>111.mp3</intro>-->
<hidden>0</hidden>
<public>1</public>
<http-headers>
<header name="Access-Control-Allow-Origin" value="http://webplayer.example.org" />
<header name="baz" value="quux" />
</http-headers>
</mount>
<fileserve>1</fileserve>
<paths>
<logdir>./log</logdir>
<webroot>./web</webroot>
<adminroot>./admin</adminroot>
<alias source="/" destination="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
<logsize>10000</logsize> <!-- Max size of a logfile -->
<!-- <logarchive>1</logarchive> -->
</logging>
</icecast>
và các mô-đun python để mixx âm thanh mp3 là pyaudio và pydub.
Chỉnh sửa: Tốc độ bit mà tôi kết nối ứng dụng với máy chủ icecast là 128Kbps nhưng tôi không nghĩ dữ liệu mp3 được mã hóa là 128Kbps. Dù sao thì bản ghi trước khi truyền âm thanh tốt, vậy điều gì có thể gây ra vấn đề về chất lượng?
Chỉnh sửa: Nếu tôi cố truyền lại một đài phát thanh, thì không có vấn đề gì:
với request.get("https://impradio.bytemasters.gr/8002/LIVE", stream=True) dưới dạng peradio:
cho đoạn trong peradio.iter_content(chunk_size=4096):
để kết nối trong self.connections:
nếu kết nối["trạng thái"]=="đã kết nối":
kết nối["kết nối"].gửi(đoạn)
kết nối["kết nối"].sync()
vì vậy tôi nghĩ rằng không có lỗi icecast nhưng đã xảy ra sự cố với ứng dụng của tôi.
Bất kì sự trợ giúp nào đều được đánh giá cao.
Chỉnh sửa: Ở định dạng ogg, chất lượng gần như tuyệt vời.