运行时错误:帧为 0 字节,但预期为 691200

问题描述

在 google colab 中运行代码以检测视频中的对象,但发生以下错误

RuntimeError                              Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/imageio/plugins/ffmpeg.py in _read_frame_data(self)
    620                     raise RuntimeError(
--> 621                         "Frame is %i bytes,but expected %i." % (len(s),framesize)
    622                     )

RuntimeError: Frame is 0 bytes,but expected 691200.

During handling of the above exception,another exception occurred:

CannotReadFrameError                      Traceback (most recent call last)
4 frames
/usr/local/lib/python3.7/dist-packages/imageio/plugins/ffmpeg.py in _read_frame_data(self)
    626                 err2 = self._stderr_catcher.get_text(0.4)
    627                 fmt = "Could not read frame %i:\n%s\n=== stderr ===\n%s"
--> 628                 raise CannotReadFrameError(fmt % (self._pos,err1,err2))
    629             return s,is_new
    630 

CannotReadFrameError: Could not read frame 3603:
Frame is 0 bytes,but expected 691200.
=== stderr ===
ffmpeg version 3.4.8-0ubuntu0.2 copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configuration: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0,mov,mp4,m4a,3gp,3g2,mj2,from '/content/drive/MyDrive/Project1/PROJECT1/CodeforWindows1/New Maserati Quattroporte Official Promo Comercial.-w4KifcavGQs.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2014-02-02T14:45:29.000000Z
  Duration: 00:02:00.35,start: 0.000000,bitrate: 484 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661),yuv420p,640x360,386 kb/s,29.97 fps,29.97 tbr,60k tbn,59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D),44100 Hz,stereo,fltp,96 kb/s (default)
    Metadata:
      creation_time   : 2014-02-02T14:45:29.000000Z
      handler_name    : IsoMedia File Produced by Google,5-11-2011
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
Press [q] to stop,[?] for help
Output #0,image2pipe,to 'pipe:':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf57.83.100
    Stream #0:0(und): Video: rawvideo (RGB[24] / 0x18424752),rgb24,q=2-31,165722 kb/s,29.97 tbn,29.97 tbc (default)
    Metadata:
... showing only last few lines ...
frame= 3549 fps=1.4 q=-0.0 size= 2395575kB time=00:01:58.41 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3550 fps=1.4 q=-0.0 size= 2396250kB time=00:01:58.45 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3551 fps=1.4 q=-0.0 size= 2396925kB time=00:01:58.48 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3552 fps=1.4 q=-0.0 size= 2397600kB time=00:01:58.51 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3553 fps=1.4 q=-0.0 size= 2398275kB time=00:01:58.55 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3554 fps=1.4 q=-0.0 size= 2398950kB time=00:01:58.58 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3555 fps=1.4 q=-0.0 size= 2399625kB time=00:01:58.61 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3556 fps=1.4 q=-0.0 size= 2400300kB time=00:01:58.65 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3557 fps=1.4 q=-0.0 size= 2400975kB time=00:01:58.68 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3558 fps=1.4 q=-0.0 size= 2401650kB time=00:01:58.71 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3559 fps=1.4 q=-0.0 size= 2402325kB time=00:01:58.75 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3560 fps=1.4 q=-0.0 size= 2403000kB time=00:01:58.78 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3561 fps=1.4 q=-0.0 size= 2403675kB time=00:01:58.81 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3562 fps=1.4 q=-0.0 size= 2404350kB time=00:01:58.85 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3563 fps=1.4 q=-0.0 size= 2405025kB time=00:01:58.88 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3564 fps=1.4 q=-0.0 size= 2405700kB time=00:01:58.91 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3565 fps=1.4 q=-0.0 size= 2406375kB time=00:01:58.95 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3566 fps=1.4 q=-0.0 size= 2407050kB time=00:01:58.98 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3567 fps=1.4 q=-0.0 size= 2407725kB time=00:01:59.01 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3568 fps=1.4 q=-0.0 size= 2408400kB time=00:01:59.05 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3569 fps=1.4 q=-0.0 size= 2409075kB time=00:01:59.08 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3570 fps=1.4 q=-0.0 size= 2409750kB time=00:01:59.11 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3571 fps=1.4 q=-0.0 size= 2410425kB time=00:01:59.15 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3572 fps=1.4 q=-0.0 size= 2411100kB time=00:01:59.18 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3573 fps=1.4 q=-0.0 size= 2411775kB time=00:01:59.21 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3574 fps=1.4 q=-0.0 size= 2412450kB time=00:01:59.25 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3575 fps=1.4 q=-0.0 size= 2413125kB time=00:01:59.28 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3576 fps=1.4 q=-0.0 size= 2413800kB time=00:01:59.31 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3577 fps=1.4 q=-0.0 size= 2414475kB time=00:01:59.35 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3578 fps=1.4 q=-0.0 size= 2415150kB time=00:01:59.38 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3579 fps=1.4 q=-0.0 size= 2415825kB time=00:01:59.41 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3580 fps=1.4 q=-0.0 size= 2416500kB time=00:01:59.45 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3581 fps=1.4 q=-0.0 size= 2417175kB time=00:01:59.48 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3582 fps=1.4 q=-0.0 size= 2417850kB time=00:01:59.51 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3583 fps=1.4 q=-0.0 size= 2418525kB time=00:01:59.55 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3584 fps=1.4 q=-0.0 size= 2419200kB time=00:01:59.58 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3585 fps=1.4 q=-0.0 size= 2419875kB time=00:01:59.61 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3586 fps=1.4 q=-0.0 size= 2420550kB time=00:01:59.65 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3587 fps=1.4 q=-0.0 size= 2421225kB time=00:01:59.68 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3588 fps=1.4 q=-0.0 size= 2421900kB time=00:01:59.71 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3589 fps=1.4 q=-0.0 size= 2422575kB time=00:01:59.75 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3590 fps=1.4 q=-0.0 size= 2423250kB time=00:01:59.78 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3591 fps=1.4 q=-0.0 size= 2423925kB time=00:01:59.81 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3592 fps=1.4 q=-0.0 size= 2424600kB time=00:01:59.85 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3593 fps=1.4 q=-0.0 size= 2425275kB time=00:01:59.88 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3594 fps=1.4 q=-0.0 size= 2425950kB time=00:01:59.91 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3595 fps=1.4 q=-0.0 size= 2426625kB time=00:01:59.95 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3596 fps=1.4 q=-0.0 size= 2427300kB time=00:01:59.98 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3597 fps=1.4 q=-0.0 size= 2427975kB time=00:02:00.01 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3598 fps=1.4 q=-0.0 size= 2428650kB time=00:02:00.05 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3599 fps=1.4 q=-0.0 size= 2429325kB time=00:02:00.08 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3600 fps=1.4 q=-0.0 size= 2430000kB time=00:02:00.12 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3601 fps=1.4 q=-0.0 size= 2430675kB time=00:02:00.15 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3602 fps=1.4 q=-0.0 size= 2431350kB time=00:02:00.18 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3603 fps=1.4 q=-0.0 size= 2432025kB time=00:02:00.22 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3604 fps=1.4 q=-0.0 size= 2432700kB time=00:02:00.25 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3604 fps=1.4 q=-0.0 size= 2432700kB time=00:02:00.25 bitrate=165722.3kbits/s speed=0.0464x    
frame= 3604 fps=1.4 q=-0.0 Lsize= 2432700kB time=00:02:00.25 bitrate=165722.3kbits/s speed=0.0464x    
video:2432700kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%

代码

import torch

import cv2
from data import BaseTransform,VOC_CLASSES as labelmap
from ssd import build_ssd
import imageio

def detect(frame,net,transform):
    height,width = frame.shape[:2]
    frame_t = transform(frame)[0]
    x = torch.from_numpy(frame_t).permute(2,1)
    # PyTorch 1.5.1
    # x = Variable(x.unsqueeze(0))
    # y = net(x)
    x = x.unsqueeze(0)
    with torch.no_grad():
        y = net(x)
    detections = y.data
    scale = torch.Tensor([width,height,width,height])
    # detections = [batch,number of classes,number of occurence,(score,x0,Y0,x1,y1)]
    for i in range(detections.size(1)):
        j = 0
        while detections[0,i,j,0] >= 0.3:
            pt = (detections[0,1:] * scale).numpy()
            cv2.rectangle(frame,(int(pt[0]),int(pt[1])),(int(pt[2]),int(pt[3])),(255,0),2)
            cv2.putText(frame,labelmap[i - 1],cv2.FONT_HERShey_SIMPLEX,2,255,255),cv2.LINE_AA)
            j += 1
    return frame

# Creating the SSD neural network
net = build_ssd('test')
net.load_state_dict(torch.load('ssd300_mAP_77.43_v2.pth',map_location = lambda storage,loc: storage))

# Creating the transformation
transform = BaseTransform(net.size,(104/256.0,117/256.0,123/256.0))

# Doing some Object Detection on a video
reader = imageio.get_reader('New Maserati Quattroporte Official Promo Comercial.-w4KifcavGQs.mp4')

while True:
    try:
        im = reader.get_next_data()
    except imageio.core.CannotReadFrameError:
        break
    else:
          fps = reader.get_Meta_data()['fps']
          writer = imageio.get_writer('output2.mp4',fps = fps)
          for i,frame in enumerate(reader):
              frame = detect(frame,net.eval(),transform)
              writer.append_data(frame)
              print(i)
writer.close()

需要额外的帮助然后Github link although SSD training not included

请帮助我是新来的,这个程序让我睡不着觉,即使每次都犯同样的错误,我做了很多改变。此外,如果您告诉我在 colab gpu 上运行该程序需要更改什么,这将是一个很大的帮助。谢谢!!!

解决方法

我遇到了类似的问题。原来这是因为视频文件没有正确上传到 colab 是这里的问题。尝试重新上传文件,然后重试。

如果这不能解决问题,请尝试通过一些在线工具更改视频 fps 和比特率。