首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用python查找被破坏的视频

用python查找被破坏的视频
EN

Stack Overflow用户
提问于 2022-02-16 08:30:29
回答 2查看 608关注 0票数 0

我有巨大的视频数据集(约500000 16帧长度剪辑)。其中一些视频产生的信息如下

代码语言:javascript
运行
复制
[mpeg4 @ 0x561b46a44b80] marker does not match f_code
[mpeg4 @ 0x561b480c0740] Error at MB: 4718
[mpeg4 @ 0x561b4811b640] header damaged

我想找出是哪个视频引起了问题。

首先,我尝试了这个https://superuser.com/questions/100288/how-can-i-check-the-integrity-of-a-video-file-avi-mpeg-mp4解决方案,但是错误文件中什么也没有。

我的第二个想法是读取视频的第一个图像,如果它抛出一个错误,将文件名保存到一个文件中。但是,这似乎不是一条错误消息:尽管消息出现在控制台上,但readsuccess=True一起返回。

然后,我尝试将文件名打印到标准错误(警告消息也在其中),将其保存到一个文件中,并进行一些后处理以提取有问题的视频。

代码语言:javascript
运行
复制
import os
from tqdm import tqdm
import sys

folder = '/path/to/videos'
for f in tqdm(os.listdir(folder)):
  sys.stderr.write('BEFORE VIDCAP ' + f + '\n')
  vidcap = cv2.VideoCapture(os.path.join(folder,f))
  sys.stderr.write('BETWEEN VIDCAP AND SUCCESS' + f + '\n')

  success, image = vidcap.read()
  sys.stderr.write('AFTER SUCCESS ' + f + '\n')

但是,标准错误的输出顺序如下:

代码语言:javascript
运行
复制
AFTER SUCCESS
[mpeg ...] 
[mpeg ...]
...
BEFORE VIDCAP

这是没有意义的,它怎么可能发生在这个顺序,一些破碎的视频应该看到之间的前后之间。(如果我试图单独打开它们,下面或前面的那些也不会被破坏。)

我的最后一个想法是为每个视频创建一个文件,使其成为stderr,并检查非空文件。(我知道这是疯狂的低效,但我没有其他的想法。)

代码语言:javascript
运行
复制
for f in os.listdir(folder):
  sys.stderr = open(f + '.txt', 'w')
  vidcap = cv2.VideoCapture(os.path.join(folder,f))
  success, image = vidcap.read()

这也不起作用,所有的错误文件都是空的,尽管消息仍然出现在标准错误上。

因此,我的问题如下:

  1. 这个问题的有效解决方案是什么?
  2. 是如何实现输出顺序(第一个代码示例)的?遮罩下有一些并行性?
  3. ,如果不是标准错误,这些消息在哪里?(第二个代码示例)?如果是,为什么将它们打印到控制台而不是指定的错误文件?
EN

Stack Overflow用户

发布于 2022-09-16 06:49:43

这是我试过的解决办法。

代码语言:javascript
运行
复制
import av
from rich.progress import track

for vid in track(df.video_id):
    try:
        with av.open(vid) as container:
            stream = container.streams.video[0]
            average_fps = int(stream.average_rate)
    except:
        
        print(vid)
        os.remove(vid)
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71138431

复制
相关文章

相似问题

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