首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv无法从索尼摄像机读取MP4文件

opencv无法从索尼摄像机读取MP4文件
EN

Stack Overflow用户
提问于 2016-06-06 22:22:57
回答 1查看 1.1K关注 0票数 2

索尼摄录机以MP4格式录制视频。我正在读文件

代码语言:javascript
复制
import cv2
vid = cv2.VideoCapture('sample.MP4')

我的OpenCV版本是2.4.8,作为一个Python模块。

'sample.MP4‘的编解码器是H.264,线性PCM.

代码语言:javascript
复制
ffprobe sample.MP4

返回:

代码语言:javascript
复制
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C0004.mp4':   Metadata:
>     major_brand     : XAVC
>     minor_version   : 16785407
>     compatible_brands: XAVCmp42iso2
>     creation_time   : 2016-06-06 13:41:51   Duration: 00:00:15.02, start: 0.000000, bitrate: 50439 kb/s
>     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/iec61966-2-4), 1920x1080 [SAR 1:1 DAR 16:9],
> 48655 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
>     Metadata:
>       creation_time   : 2016-06-06 13:41:51
>       handler_name    : Video Media Handler
>       encoder         : AVC Coding
>     Stream #0:1(und): Audio: pcm_s16be (twos / 0x736F7774), 48000 Hz, 2 channels, s16, 1536 kb/s (default)
>     Metadata:
>       creation_time   : 2016-06-06 13:41:51
>       handler_name    : Sound Media Handler
>     Stream #0:2(und): Data: none (rtmd / 0x646D7472), 245 kb/s (default)
>     Metadata:
>       creation_time   : 2016-06-06 13:41:51
>       handler_name    : Timed Metadata Media Handler 
> Unsupported codec with id 0 for input stream 2

似乎h.264的编解码器丢失了。我的FFmpeg版本是3.0

avconv -i sample.MP4 -c:a copy -c:v copy sample_converted.mp4 I尝试将sample.MP4转换为sample_converted.mp4,此命令行不起作用。命令工作正常;但是,它破坏了视频质量。我使用了一个在线视频转换器:http://www.online-convert.com/ (它以mp4格式输出质量很好的视频,但对免费用户有大小限制)将MP4转换为mp4,终端中的命令如下:

代码语言:javascript
复制
ffprobe 'sample_converted.mp4'

返回

代码语言:javascript
复制
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C0001_converted.mp4':  
> Metadata:
>     major_brand     : isom
>     minor_version   : 512
>     compatible_brands: isomiso2avc1mp41
>     encoder         : Lavf57.36.100   Duration: 00:00:02.02, start: 0.000000, bitrate: 16777 kb/s
>     Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 16801 kb/s, 59.94
> fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
>     Metadata:
>       handler_name    : VideoHandler
>     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
>     Metadata:
>       handler_name    : SoundHandler

显然,编码器、handler_names等对sample.MP4和sample_converted.mp4的是不同的。使用FFmpeg或OpenCV将原始视频从摄录机转换为可读的格式,而不影响视频质量?

EN

回答 1

Stack Overflow用户

发布于 2016-06-07 20:01:27

命令:

代码语言:javascript
复制
avconv -i sample.MP4 -c:v copy sample_converted.mp4

代码语言:javascript
复制
ffmpeg -i sample.MP4 -c:v copy sample_converted.mp4

这两种方法都是通过将MP4视频文件从索尼摄录机转换成一个OpenCV可读的MP4文件进行进一步分析。视频质量没有受到损害。

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

https://stackoverflow.com/questions/37667745

复制
相关文章

相似问题

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