首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将视频从POST请求中读取到python或OpenCV中?

是否可以将视频从POST请求中读取到python或OpenCV中?
EN

Stack Overflow用户
提问于 2021-01-15 10:43:23
回答 1查看 750关注 0票数 0

我一直在考虑一种用ffmpeg-python或OpenCV阅读上传视频的方法,这样我就可以在保存之前处理它,那么这有可能吗?如果没有,那么将视频保存到磁盘并完成所需的所有处理是否安全?困扰我的主要问题是,我想要读取视频长度,这样我就可以验证它的有效性,所以将它保存到磁盘中,检查长度,如果它的长度在允许的范围内,那么也是一个好主意,否则我就删除它。

提前谢谢。

注意:我注意到标签不包含ffmpeg-python,所以关于pyffmpeg的答案也被接受。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-15 15:42:11

在您收到视频后,您可以像处理硬盘中的任何其他视频一样处理它。注意视频的格式。在本例中,我使用video.mp4。

代码语言:javascript
复制
import cv2
video_path="videos/drone-001.mp4"

cap = cv2.VideoCapture(video_path)

# Some characteristics from the original video
w_frame, h_frame = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps, num_frames = cap.get(cv2.CAP_PROP_FPS), cap.get(cv2.CAP_PROP_FRAME_COUNT)

print(fps,num_frames,w_frame,h_frame)

while(True):

    success, frame = cap.read()
    
    if success:
        cv2.imshow('video',frame)
    
    if cv2.waitKey(10) & 0xFF == ord('q'):
        break

# When everything done, release the capture and destroy windows
cap.release()
cv2.destroyAllWindows()

或者用ffmpeg处理视频..。

获取有关视频的信息:

代码语言:javascript
复制
ffmpeg -i videos/drone-001.mp4

产出:

代码语言:javascript
复制
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'videos/drone-001.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2019-12-28T10:01:05.000000Z
  Duration: 00:05:41.38, start: 0.000000, bitrate: 2324 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 2192 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2019-12-28T10:01:05.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 12/28/2019.
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2019-12-28T10:01:05.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 12/28/2019.

您可以查看Flask,WSGI web应用程序框架:https://flask.palletsprojects.com/en/1.1.x/

这里是关于文件上传配置和安全问题:https://flask.palletsprojects.com/en/1.1.x/patterns/fileuploads/

限制视频文件的文件大小

服务器(或充当服务器的脚本)不知道视频文件的长度(小时:分钟:秒)在POST REQUEST期间从CLIENT收到HTML 。但是服务器可以执行三项操作,以了解视频文件的文件大小

第一种和第二种是,它们很容易攻击,因为它们可以被伪造。第三个是,不可以攻击

的第一件事是:通过请求输入视频文件的大小来给用户充分的信心(,坏主意,)。

第二个是:读取HTTP请求报头 "content-length: value“(这个值也可以被用户篡改)。

第三个是:读取并计数服务器正在接收的字节数。

如果字节数开始过高,最好选择关闭连接.

这样做,脚本,您的自我(套接字编程),,或配置一个现有的HTTP服务器WEB框架为您做(我把链接到烧瓶)。

http请求如何发生

HTML发送数据时,浏览器发出POST请求,向服务器发送如下信息:

这是POST请求的HEADER示例

代码语言:javascript
复制
POST /video-upload/ HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------219493771727403213993181042749
Content-Length: 99211703
Connection: keep-alive
Upgrade-Insecure-Requests: 1

查看内容-长度: 99211703

..。就像99 ..。

如果内容长度的值要高,则可以从服务器端中止连接。否则,将继续将数据读入服务器的硬盘。

所有这些都是套接字编程

你可以在这里品尝:https://realpython.com/python-sockets/

确保上传文件不能执行重命名文件上传验证内容类型标题使用病毒扫描器

为了安全起见,读取文件头的内容,正在上传,因为HTTP报头可以完全篡改。

这里是mp4文件格式的一个示例: https://www.file-recovery.com/mp4-signature-format.htm

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65734627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档