【问题标题】:Error while writing opencv frames to HLS segment file将opencv帧写入HLS段文件时出错
【发布时间】:2020-12-15 13:21:39
【问题描述】:

我正在通过 opencv 处理 hls 视频片段。我的目的是创建另一个带有已处理帧的段文件。经过一些研究,我发现它可以使用 gstreamer 管道来实现。我按照示例进行了操作,但它对我不起作用

代码示例

   vs = cv2.VideoCapture(video)
   fourcc = cv2.VideoWriter_fourcc(*"MJPG")
   writer = cv2.VideoWriter("appsrc num-buffers=100 ! x264enc ! queue ! mpegtsmux name=mux ! filesink location="+outpath, fourcc, 30, (W, H), True)
   while True:
       frame = vs.read()
       frame = frame[1]
       frame = imutils.resize(frame, width=500)
       rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
       writer.write(frame)

错误

OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mpegts / MPEG-TS (MPEG-2 Transport Stream)'
[ERROR:0] global /private/var/folders/nz/vv4_9tw56nv9k3tkvyszvwg80000gn/T/pip-req-build-gi6lxw0x/opencv/modules/videoio/src/cap.cpp (563) open VIDEOIO(CV_IMAGES): raised OpenCV exception:

OpenCV(4.4.0) /private/var/folders/nz/vv4_9tw56nv9k3tkvyszvwg80000gn/T/pip-req-build-gi6lxw0x/opencv/modules/videoio/src/cap_images.cpp:267: error: (-215:Assertion failed) number < max_number in function 'icvExtractPattern'

我尝试了不同可能的编解码器组合('MJPG'、'MPV4'、'MPEG' 等),但到目前为止还没有运气:(。非常感谢任何帮助/建议。谢谢!

【问题讨论】:

  • 我也尝试了“mpegts”和“MPEG-TS”,但在这种情况下我得到了以下错误。回溯(最后一次调用):文件“processor.py”,第 201 行,在 fourcc = cv2.VideoWriter_fourcc(*"mpegts") TypeError: VideoWriter_fourcc() 最多接受 4 个参数(给定 6 个)

标签: python opencv ffmpeg gstreamer


【解决方案1】:

对于x264enc,您需要定义fourcc

  • 如果你安装了x264

    fourcc = cv2.VideoWriter_fourcc(*'x264')
    
    

    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    

就我而言,mp4v 有效

import cv2

vs = cv2.VideoCapture("video.mp4")

fourcc = cv2.VideoWriter_fourcc(*'mp4v')

W = int(vs.get(cv2.CAP_PROP_FRAME_WIDTH))
H = int(vs.get(cv2.CAP_PROP_FRAME_HEIGHT))

writer = cv2.VideoWriter("result.mp4", fourcc, 30.0, (W, H), True)

while True:
    ret, frame = vs.read()
    if ret:
        writer.write(frame)
    else:
        break

vs.release()
writer.release()

【讨论】:

  • mp4v 有效! MPEG-TS 和 mp4 一样吗?我可以在 HLS 流式传输中使用 .mp4 吗?
  • 很高兴,如果我能帮上忙 :),好吧,MPEG 传输流可能与.mp4 一样工作。如果不是,你可以用MJPG 代替mp4v.avi 代替.mp4
  • 我试过了,但 mp4 在流媒体中不起作用。转换为 MPEG-TS 的任何其他方式
猜你喜欢
  • 1970-01-01
  • 2014-01-21
  • 2022-07-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多