gpt4 book ai didi

python - 通过 Http 将视频文件从 Unity 上传到 Python

转载 作者:行者123 更新时间:2023-12-02 19:34:40 46 4
gpt4 key购买 nike

我正在尝试将视频文件从 Unity 客户端上传到 python 服务器,但是当我尝试使用 Unity 中的 UnityWebRequest 和 Unity 中的 http 模块来执行此操作时python,但服务器接收到无效的视频文件。

我的问题是如何通过 Http 将视频文件从 Unity 上传到 python?

这是我在 Unity 中的代码:

IEnumerator StartUploadCoroutine()
{
// Show a load file dialog and wait for a response from user
yield return FileBrowser.WaitForLoadDialog(false, null, "Load File", "Load");

isOpen = false;
// Upload File to movie server
if (FileBrowser.Success)
{
StreamReader reader = new StreamReader(FileBrowser.Result);
StartCoroutine(UploadCoroutine(reader)); // upload file to server;
}
}

/* Upload the chosen video file to the movie server */
IEnumerator UploadCoroutine(StreamReader reader)
{
UnityWebRequest www = UnityWebRequest.Post(videoPlayerManager.GetServerIp() + ":" + port.ToString(), reader.ReadToEnd());
yield return www.SendWebRequest();

if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}

这是我的 Python 代码:

from http.server import BaseHTTPRequestHandler, HTTPServer

class HandleRequests(BaseHTTPRequestHandler):

def do_POST(self):
'''Reads post request body'''
content_length = int(self.headers['Content-Length'])
body = self.rfile.read(content_length)
self.send_response(200)
self.end_headers()
outF = open("myOutFile.mp4", "wb")
outF.write(body)


host = "127.0.0.1"
port = 9999

HTTPServer((host, port), HandleRequests).serve_forever()

最佳答案

我认为在将文件(任何扩展名)上传到服务器时,编码并不重要。

寻找两件事:

  1. 检查本地视频文件和上传的视频文件的大小是否相同。如果它们不匹配,则意味着您在上传进度时遇到问题。 ( Check here )
  2. 您正在使用 POST 方法上传视频。这意味着整个文件将上传到您的服务器,然后您的 python 脚本可以在“body”变量上使用它。我的文件大小匹配,我可以建议您使用像 Flask 这样的框架作为服务器端 python 脚本。

关于python - 通过 Http 将视频文件从 Unity 上传到 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61249549/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com