pythonweb 网页访问服务器音频文件
这个音频不能太大了,流媒体的模式,我一直没弄好,最后就暴力传入音频base64文件,在h5的页面里<audio>
标签把src
属性设置一下就好了。
先看服务端代码
import base64
from flask import Flask
from flask import request
from flask import Response
@app.route('/audio', methods=['GET'])
def audio():
def generate1(path):
with open(path, 'rb') as fmp3:
data = fmp3.read(1024)
while data:
yield data
data = fmp3.read(1024)
return data
# return Response(generate('audio.wav'), mimetype="audio/x-wav")
if request.args['wav_name'] != '':
path = request.args['wav_name']
return Response(generate1(path), mimetype='audio/x-wav')
@app.route('/audio22', methods=['GET'])
def audio22():
def generate1(path):
with open(path, 'rb') as fmp3:
data = fmp3.read()
data = base64.b64encode(data)
return data
# return Response(generate('audio.wav'), mimetype="audio/x-wav")
if request.args['wav_name'] != '':
path = request.args['wav_name']
return generate1(path)
@app.route('/audio1', methods=['GET'])
def audio1():
name = request.args['wav_name']
angry = request.args['angry']
sad = request.args['sad']
happy = request.args['happy']
surprise = request.args['surprise']
return '<h3>原音频</h3>' \
'<audio controls="controls" type="audio/x-wav"></audio>' \
'<h3>生气</h3>' \
'<audio controls="controls" type="audio/x-wav"></audio>' \
'<h3>悲伤</h3>' \
'<audio controls="controls" type="audio/x-wav"></audio>' \
'<h3>高兴</h3>' \
'<audio controls="controls" type="audio/x-wav"></audio>' \
'<h3>惊奇</h3>' \
'<audio controls="controls" type="audio/x-wav"></audio>' \
'<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>' \
'<script>' \
f'$.get("{request.host_url}audio22?wav_name={name}",' \
'function (data) {document.getElementsByTagName("audio")[0].setAttribute("src", "data:audio/x-wav;base64,"+data);' \
'});' \
f'$.get("{request.host_url}audio22?wav_name={angry}",' \
'function (data) {document.getElementsByTagName("audio")[1].setAttribute("src", "data:audio/x-wav;base64,"+data);' \
'});' \
f'$.get("{request.host_url}audio22?wav_name={sad}",' \
'function (data) {document.getElementsByTagName("audio")[2].setAttribute("src", "data:audio/x-wav;base64,"+data);' \
'});' \
f'$.get("{request.host_url}audio22?wav_name={happy}",' \
'function (data) {document.getElementsByTagName("audio")[3].setAttribute("src", "data:audio/x-wav;base64,"+data);' \
'});' \
f'$.get("{request.host_url}audio22?wav_name={surprise}",' \
'function (data) {document.getElementsByTagName("audio")[4].setAttribute("src", "data:audio/x-wav;base64,"+data);' \
'});' \
' </script>'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000, debug=True)
把这个文件跑起来
网页端输入
http://192.168.0.106:8000/audio1?wav_name=audio.wav&angry=audio.wav&sad=audio.wav&happy=audio.wav&surprise=audio.wav
就好了,当然只要一个局域网都可以访问,毕竟是把数据一次性直接传出去了。
但是有个很大的疑惑,我用的是python的Flask web框架,它推荐的音频流接口写法应该是这个
http://192.168.0.106:8000/audio?wav_name=audio.wav
但这个链接只能在本地服务器跑,换一个局域网的另机器就用不了了,有点奇怪。
本文来自博客园,作者:赫凯,转载请注明原文链接:https://www.cnblogs.com/heKaiii/p/17137430.html