在pycharm搭建了一个服务器,可以运行成功,但是在浏览器上打不开,端口没有被占用,防火墙也没有阻拦,host换了“localhost”和“127.0.0.1”也都没有用
你都没写路由,不转圈才怪
那就是没搭建成功
注意:(1)需要在项目文件夹下手动新建存放图片的文件夹;(2)尽量不要使用os.chdir()去改变路径,容易“迷惑”Pycharm寻找文件,使用默认地址即可;(3)一定注意路径的使用,比如:视频放在项目的所属文件中
from flask import Flask,render_template
import os
import cv2
app=Flask(__name__)
def genFrame():
v_path='static/ghz.mp4'
image_save='static/pic'
if not(os.path.exists(image_save)):
os.mkdir(image_save)
cap=cv2.VideoCapture(v_path)
fc=cap.get(cv2.CAP_PROP_FRAME_COUNT)
for i in range(int(fc)):
_,img=cap.read()
cv2.imwrite('static/pic/image{}.jpg'.format(i),img)
@app.route('/')
def index():
genFrame()
return render_template('index.html')
if "__main__"==__name__:
app.run()
html文件内容则为:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
视频分镜
<br>
<video width="180" height="320" controls autoplay>
<source src="static/ghz.mp4" type="video/mp4">
<object data="static/ghz.mp4" width="180" height="320">
<embed width="180" height="320" src="static/ghz.mp4">
</object>
</video>
</body>
</html>
结果:
pic文件里也有所有的图片,例如:
首先,服务器无法在浏览器上打开可能有以下几个原因导致:
端口被占用:请再次确认端口是否被其他程序占用。可以使用netstat -ano
命令(Windows)或lsof -i :port
命令(Mac/Linux)检查端口占用情况。
防火墙阻拦:除了确认本地防火墙之外,也需要检查路由器或网络设备上的防火墙设置,确保端口被正确放行。
Flask配置问题:请检查Flask应用程序的配置,特别是app.run()
函数的参数。确保host
参数设置为正确的IP地址,可以尝试将其改为0.0.0.0
来监听所有网络接口。
根据参考资料中的代码片段,可以看出这是一个基于Flask的API接口。如果代码已经成功运行并且没有报错,那么可能是服务器的问题。
在代码中,letter_api.add_resource(Letter_Res,'/message',endpoint='message')
这一行表明在路径/message
上注册了一个资源。但这并不意味着服务器会自动监听该路径,还需要在app.run()
函数中使用host
和port
参数指定服务器的监听地址和端口。
以下是一个可能的解决方案:
from flask import Flask
app = Flask(__name__)
# 加载资源
from financial.resource.letter.letter_resource import Letter_Res
app.add_resource(Letter_Res,'/message',endpoint='message')
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
上述代码中的host
参数设置为0.0.0.0
,这将使服务器监听所有网络接口。port
参数设置为5000
,你可以根据需要更改为其他未被占用的端口。
请尝试运行上述代码,并在浏览器中访问http://127.0.0.1:5000/message
,如果仍然无法打开,请确认代码中是否还有其他相关配置,并提供更多细节以供进一步分析问题。