首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python视频处理

Python视频处理
EN

Stack Overflow用户
提问于 2014-07-10 14:03:06
回答 2查看 1.6K关注 0票数 0

我是python的新手,我想做的是接收UDP流(来自VLC,H264),并对视频进行任何修改并显示它(Python2.7)。

我使用了openCV (openCV 2.4.9),我可以接收视频帧并对其进行修改。现在我需要做的是使用这些帧创建一个视频文件并显示它,我不需要同时保存帧和视频。

我尝试了FFMPEG,FFPLAY,它工作在保存的视频帧上。

如果您能指出步骤或任何其他选择,我将对此表示感谢。

首先,对我的解释感到抱歉。以下是我尝试过的:

  1. 接收UDP视频流。
  2. 修改视频流:我使用了openCV,并从流中获取视频帧,并对它们进行了修改。 视频(“udp://224.1.1.1:1234”)而(cap.isOpened()):成功,图像= cap.read()Cv2.imwrite(./frames/frame%d.jpeg“% count,+= 1)计数
  3. 创建视频和显示:我尝试了FFMPEG和FFPLAY command1 = 'ffmpeg -i ./frame/frame%d.jpeg -c:v libx264 -vf fps=23.97 -pix_fmt yuv420p -f rawvideo‘command2 = 'ffplay -’pipe1 = sp.Popen(command1,stdout=sp.PIPE) pipe2 =sp.Popen(command1,stdout=sp.PIPE)pipe2=sp.Popen(command1,en19#)

这些步骤可以工作,但我不能物理地保存帧或视频文件。我需要做的是后第二步直接传递视频帧到FFMPEG,FFPLAY播放,而不保存在框架文件夹。

EN

回答 2

Stack Overflow用户

发布于 2014-07-17 14:57:12

代码语言:javascript
复制
command1 = 'ffmpeg -y -f image2pipe -vcodec mjpeg -r 23.97 -i - -vcodec mpeg4 -pix_fmt yuv420p -c:v libx264 -r 23.97 -f avi - '
command2 = 'ffplay -'

pipe1 = sp.Popen(command1,stdin=sp.PIPE,stdout=sp.PIPE)
pipe2 = sp.Popen(command2,stdin=pipe1.stdout)


While(cap.isOpened()):
    success,raw_image = cap.read()
    pil_im = Image.fromarray(raw_image)
    pil_im.save(pipe1.stdin ,'JPEG')

这对我有用,但有些颜色问题。

票数 1
EN

Stack Overflow用户

发布于 2018-09-20 11:20:13

您可以使用cv2.imshow()直接显示处理过的帧,而不是将它们传递给ffplay或ffmpeg,而不是在代码中编写框架。

代码语言:javascript
复制
import cv2 
cap = cv2.VideoCapture("udp://224.1.1.1:1234") 
while(cap.isOpened()):
        success,image = cap.read()
        ......
        ......
        cv2.imshow("Video", image)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24678635

复制
相关文章

相似问题

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