Аудиофайл веб-сервера Python Twisted

Я пытаюсь создать простой веб-сервер с использованием python. Однако у меня возникают проблемы с обслуживанием аудиофайла m4a.

В текущей программе, когда я загружаю http://localhost:8880/mp3.html, все работает отлично. Он показывает аудиоплеер и играет mp3. Кроме того, программа печатает как «/mp3.html», так и «/test.mp3».

Однако, когда я загружаю http://localhost:8880/m4a.html, это не работает . Он показывает аудиоплеер, но m4a не играет. Кроме того, программа печатает только «/m4a.html», а не «/test.m4a».

Мой текущий код ниже.

import urlparse
import os
from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.web.static import File
import time
import subprocess
import mimetypes

class playM4A(Resource):
    isLeaf = True
    def render_GET(self, request):
        this=urlparse.urlparse(request.path)#scheme,netloc,path,query
        root,ext=os.path.splitext(this.path)
        filename=os.path.basename(request.path)
        fileFolder=request.path.replace(filename,"")
        self.serverRoot=os.getcwd()
        print request.path
        if ext==".m4a":
            thisFile=File(self.serverRoot+request.path)
            return File.render_GET(thisFile,request)
        elif ext==".mp3":
            thisFile=File(self.serverRoot+request.path)
            return File.render_GET(thisFile,request)
        elif filename=="m4a.html":
            return """
<html>
<audio controls>
  <source src="http://localhost:8880/test.m4a" type="audio/mp4a-latm">
Your browser does not support the audio element.
</audio>
not m4a </html>"""
        elif filename=="mp3.html":
            return """
<html>
<audio controls>
  <source src="http://localhost:8880/test.mp3" type="audio/mp3">
Your browser does not support the audio element.
</audio>
not m4a </html>"""

resource = playM4A()
factory = Site(resource)
reactor.listenTCP(8880, factory)
reactor.run()

person user1763510    schedule 17.03.2016    source источник
comment
Кажется, он работает с mp3, поэтому я думаю, что это может быть как-то связано с форматом файла m4a.   -  person user1763510    schedule 17.03.2016
comment
Я подозреваю, что заголовок Content-Type: неверен. Можете ли вы с помощью запросов wget, curl, Python или любого другого удобного инструмента определить тип контента, возвращаемый M4A GET и MP3 GET?   -  person Robᵩ    schedule 17.03.2016
comment
И какую ОС вы используете? А какой браузер?   -  person Robᵩ    schedule 17.03.2016
comment
Я использую Mac с хромом. Позвольте мне посмотреть, могу ли я увидеть тип содержимого   -  person user1763510    schedule 17.03.2016
comment
Кроме того, одна странность заключается в том, что он не выполняет «print request.path», что может означать, что он даже не запрашивает m4a.   -  person user1763510    schedule 17.03.2016
comment
Это заголовки request. Что такое Content-Type: в заголовках response?   -  person Robᵩ    schedule 17.03.2016
comment
Похоже, что нет Content-Type: заголовков({'дата': ['четверг, 17 марта 2016 16:46:19 по Гринвичу'], 'сервер': ['TwistedWeb/15.4.0']}) Если я добавлю request.setHeader("Content-Type","audio/mp4a-latm"), все равно не работает.   -  person user1763510    schedule 17.03.2016


Ответы (1)


Код работает, если вы измените audio/mp4a-latm на audio/mp4.

person user1763510    schedule 17.03.2016