opencv获取视频时间戳,opencv获取视频帧率
难点这个问题有几个难点
中文版保存视频能否播放网端能否显示视频自己研究这个问题研究了整整三天,现在对以上难点进行一一解答
中文版保存视频能否播放我找到的比较多的例子都是如下这样的
fps=self.video_stream.get(cv2 .CAP _ PROP _ FPS)size=(int(self。视频_流。获取(cv2 .CAP_PROP_FRAME_WIDTH))、int(self.video_stream.get(cv2 .CAP _ PROP _ FRAME _ HEIGHT)))# fourcc=cv2 .视频作者_ fourcc(* av C1 )# fourcc=cv2 .VideoWriter_fourcc(m , p , 4 , v)# fourcc=cv2 .video writer _ fourcc(* " MP4V )# fourcc=cv2 .视频作者_ fourcc(* FMP 4 )fourcc=cv2 .视频编写器_ fourcc(* XVID )cv _ result _ file _ name= test _ result。avi视频编写器=cv2 .视频编写器(cv _ result _ file _ name,fourcc,fps,size)但是我的苹果的默认播放器是无法播放的,只能使用别的辅助播放器播放
然后保存成为其他fourcc "* .avi"/*.mp4 的组合,就会连播放都播放不了,就更不要想在网端显示了
网端能否显示视频对于影片格式格式的视频,web端完全无法显示
对于mp4格式的视频,opencv生成的视频,Chrome浏览器也没有办法展示出来
网上冲浪得知的原因是铬浏览器只购买了H264编码格式的版权,所以只使用H264格式的MP4才能播放
所以需要转化成H264编码版本的MP4,这里就涉及了一个新的问题
用什么转化?
网上的答案一般是FFmpeg,但是需要安装x264的FFmpeg编译版本
中途又是很多的巨多的坑,详见我的另一篇文章
如何把视频转化成H264编码网端可播放的MP4格式,安装带H264编码的FFmpeg _未知编码器h264
解决方案保存视频fps=self.video_stream.get(cv2 .CAP _ PROP _ FPS)size=(int(self。视频_流。获取(cv2 .CAP_PROP_FRAME_WIDTH))、int(self.video_stream.get(cv2 .CAP _ PROP _ FRAME _ HEIGHT)))# fourcc=cv2 .视频作者_ fourcc(* av C1 )# fourcc=cv2 .VideoWriter_fourcc(m , p , 4 , v)# fourcc=cv2 .video writer _ fourcc(* " MP4V )# fourcc=cv2 .视频作者_ fourcc(* FMP 4 )fourcc=cv2 .视频编写器_ fourcc(* XVID )cv _ result _ file _ name= test _ result。avi视频编写器=cv2 .视频编写器(cv _ result _ file _ name,fourcc,fps,size)转化成H264格式FFmpeg没有H264格式(未知的编码器" h264 "):
如何把视频转化成H264编码网端可播放的MP4格式,安装带H264编码的FFmpeg _未知编码器h264
ffmpeg-y-I测试结果。avi-vcodec h264-strict-2 ffmpeg 4.2 _测试。MP4也可以是如下大蟒封装函数
def avi_to_web_mp4(self,input _ file _ path): ffmpeg-I test _ result。avi-vcodec h264测试结果。MP4 @ param:[in]输入文件路径带影片格式或mp4的非H264编码的视频的全路径@ return:[输出]输出文件路径生成的H264编码视频的全路径 output _ file _ path=input _ file _ path[:-3] MP4 cmd= ffmpeg-y-I { }-vcodec h264 { } .格式(输入文件路径,输出文件路径)子过程call(cmd,shell=True)返回输出文件路径在超文本标记语言中展示视频名称=演示控件自动播放宽度= 50% 高度= 40% 源src= path _ to _ test _ result。 MP4 type= video/MP4 /source/video其他尝试用avc1格式(报错找不到编解码器id 27的编码器:找不到编码器)铬由于版权问题只支持h264编码的视频
fps=self.video_stream.get(cv2 .CAP _ PROP _ FPS)size=(int(self。视频_流。获取(cv2 .CAP_PROP_FRAME_WIDTH))、int(self.video_stream.get(cv2 .CAP _ PROP _ FRAME _ HEIGHT)))fourcc=cv2 .视频作者_ fourcc(* av C1 )# fourcc=cv2 .VideoWriter_fourcc(m , p , 4 , v)# fourcc=cv2 .video writer _ fourcc(* " MP4V )# fourcc=cv2 .视频作者_ fourcc(* FMP 4 )# fourcc=cv2 .视频编写器_ fourcc(* XVID )cv _ result _ file _ name= test _ result。MP4视频编写器=cv2 .视频编写器(cv _ result _ file _ name,fourcc,fps,size)网上说h264和avc1其实是同一种编码格式,但是使用h264传入时,后缀必须为阿维,如果为mp4会报错:
编解码器id 27和格式" mp4 /MP4 (MPEG-4第14部分)"不支持OpenCV:FFMPEG:tag0x 34363268/" h264 ",OpenCV: FFMPEG: fallback使用标签0x 31637661/“C1大道”参考opencv-python保存视频
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。