我正在尝试从一系列图像中创建一个视频并在浏览器中显示它,但是出于一些奇怪的原因,无论我使用哪种编解码器或文件格式,我都会收到以下错误:
找不到支持格式和mime类型的视频
这是我的代码:
ready_images = []
import cv2
for img in videos['Images']:
image = cv2.imread(img.fileName)
ready_images.append(image)
fourcc = cv2.VideoWriter_fourcc(*'MP4V')
video_name = videos['Images'][0].gifLocationPath + "//" + videos['Name']
frame = cv2.imread(videos['Images'][0].fileName)
height, width, layers = frame.shape
video_name = video_name[:-4]+".mp4"
video = cv2.VideoWriter(video_name, fourcc, 20.0, (width, height))
for image in ready_images:
video.write(image)
cv2.destroyAllWindows()
video.release()
有趣的是,在Firefox或Chrome中,视频不起作用,但在Edge中......它们确实可以正常工作。
我不想使用FFMPEG,而是希望使用OpenCV。
如果你们中的任何人都知道什么格式的视频(我知道网络格式是webm,ogg,mp4)或我应该使用的编解码器,请告诉我。
感谢。
答案 0 :(得分:3)
大多数浏览器都不支持MP4V或MPEG-4第2部分,您可能需要尝试H.264(MPEG-4第10部分)。
为此,请更改:
fourcc = cv2.VideoWriter_fourcc(*'MP4V')
到
fourcc = cv2.VideoWriter_fourcc(*'H264')
如果您使用的是Python 3,请使用以下十六进制代码(使用四字节表示法时似乎存在错误):
fourcc = 0x00000021
运行脚本,您可能会收到以下错误消息:
无法加载OpenH264库:openh264-1.6.0-win32msvc.dll 请检查环境和/或下载库:https://github.com/cisco/openh264/releases
您需要按照消息的说明进行操作,并从github下载所需的库并将其放在PATH可访问的位置。
使用H.264压缩,您还可以获得更小的文件,这对Web更好。
答案 1 :(得分:1)
获取.webm
后缀音频文件。
fourcc = cv2.VideoWriter_fourcc(*'vp80')
video_writer = cv2.VideoWriter('file.webm', fourcc, 20, (640, 480))
在html中:
<body>
<video width="320" height="240" controls>
<source src="file.webm" type="video/webm">
</video>
</body>
它可以在centos7和Windows10上使用。
答案 2 :(得分:0)
我知道这个问题很旧,但是对于每个正在寻找兼容的编解码器+ Web浏览器容器的人: VP8或VP80是兼容的编码器
cv2.VideoWriter_fourcc('V','P','8','0')
我将它与.webM用作容器。
在2010年Google I / O会议上宣布了Mozilla Firefox,[7] [8] Opera,[9] [10]和Google Chrome [11]对WebM的支持。
https://en.wikipedia.org/wiki/WebM
它像魅力一样运转,并且表现出色,尽管 由于某些原因,在创建videoWriter对象时出现此错误:
OpenCV: FFMPEG: tag 0x30385056/'VP80' is not supported with codec id 139 and format 'webm / WebM'
答案 3 :(得分:0)
我通过fourcc=-1
打印所有可用的mp4编解码器。
之后,我检查对我有用的编解码器。我在那儿看到avc1
。
所以我写这样的代码:
fourcc = cv2.VideoWriter_fourcc(*'avc1')
打印代码时,您还会看到它们是小写字母。