Tôi có một dự án với Django Tôi đang làm việc trên nơi tôi muốn truyền một số tệp mp3.Ống bị hỏng trong luồng
Tôi có cùng vấn đề này: Streaming mp3 files with django, read from a page with <audio>
Hãy để tôi giải thích: Tôi muốn dòng một ogg với Django, và với một thẻ <audio>
trong trang html của tôi
Tôi có một url như domain.tld/song/show/X/
, trong đó X
là id của bài hát của tôi. Tôi có thể phát trực tiếp bằng VLC (trực tiếp với đường dẫn tệp), tôi có thể phát trực tuyến trong khi kiểm tra, (Tôi viết những gì tôi nhận và đọc nó với VLC).
Nhưng khi tôi mở trình duyệt và tải trang chủ của mình domain.tld
nơi tôi có và <\audio\>
cân bằng với url domain.tld/song/show/1/
, tôi nhận được một đường ống bị hỏng lớn, như thể khách hàng của tôi đã đóng kết nối.
Tôi đọc trên những người khác đăng rằng một số vấn đề đã được giải quyết khi đưa máy chủ vào sản xuất. Vì vậy, tôi đẩy ứng dụng của tôi lên máy chủ, sử dụng apache, với số django.wgsi
như trên djangoproject.com.
Tôi đang chạy python 2.7.3 trên Debian 7 với phiên bản Django 1.5. có mã của tôi:
Sông/views.py
def playAudioFile(request, pk):
f = get_stream_song(pk)# return a pipe from pipes.Template
l = f.read() # the file is an ogg get by pydub.com
f.close()
size_read = 550000
sr = size_read
while sr == size_read:
print "rep"
r = l[:size_read]
l=l[size_read:]
sr = len(r)
yield r
time.sleep(0.1)
#url : ~/song/show/X/
#@login_required
def show_song(request, pk):
return StreamingHttpResponse(playAudioFile(request, pk), mimetype='audio/ogg',)
Trong HTML của tôi, tôi chỉ có mà:
<audio controls height="100" width="100" preload="auto">
<source src="/.../song/show/1/" type="audio/ogg">
<embed height="50" width="100" src="/.../song/show/1/">
</audio>
Các lỗi trông giống như:
Traceback (most recent call last):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 86, in run
self.finish_response()
File "/usr/lib/python2.7/wsgiref/handlers.py", line 127, in finish_response
self.write(data)
File "/usr/lib/python2.7/wsgiref/handlers.py", line 215, in write
self._write(data)
File "/usr/lib/python2.7/socket.py", line 324, in write
self.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 104] Connection reset by peer
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 46392)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 593, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/home/lumy/SPhoque/SonoPhoque/SoPhoque/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 150, in __init__
super(WSGIRequestHandler, self).__init__(*args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 651, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 704, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
tôi nhận được điều này hai lần mỗi lần tôi cố gắng phát trực tiếp.
Sửa 15h 29/05:
Tôi đã làm những gì rahan gợi ý: Nhìn vào Firebug và Firefox debugger:
Các khách hàng không:
GET 1 200 OK localhost:8000 537.1KB 4.71s
Headers
Response Headersview source
Date Wed, 29 May 2013 13:08:54 GMT
Server WSGIServer/0.1 Python/2.7.3
Content-Type audio/ogg
Request Headersview source
Host localhost:8000
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20100101 Firefox/10.0.12 Iceweasel/10.0.12
Accept audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5
Accept-Language en-us,en;q=0.5
Connection keep-alive
Range bytes=0-
Referer http://localhost:8000/
và chi tiết nói rằng tổng kích thước cho tất cả tài liệu là 1 MB (526 KB từ bộ nhớ cache)
Khách hàng của bạn/trình duyệt đang chấm dứt kết nối. Bạn cần phải kiểm tra điều đó. – Rohan
@Rohan với wireshark? trên trình gỡ rối firefox nhận được phản hồi 200 cho url /.../song/show/1/ – Lumy
Có thể sử dụng wireshark hoặc cũng kiểm tra trình gỡ lỗi FF nếu có gì đó. – Rohan