VideoFileClip IndexError: list index out of range, OSError: MoviePy error: failed to read the duration of file
See original GitHub issueWe are recording videos from the browser with the following encoding ‘video/webm; codecs=“vp8, opus”’, then we upload these videos to an AWS S3 bucket. Our ML model works on these videos, and one of the models needs to extarct the audio and process it. Here is a code snapit for extracting the audio
import speech_recognition as sr
import moviepy.editor as me
from denoise2 import denoise
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import math
model_name = 'bert-base-nli-mean-tokens'
model = SentenceTransformer(model_name)
class recomm:
y = 0.0
def __init__(self, path, keywords):
video_clip = me.VideoFileClip(r"{}".format(path))
path2 = "y2.wav"
video_clip.audio.write_audiofile(r"{}".format(path2), nbytes=2)
recognizer = sr.Recognizer()
"""a = AudioSegment.from_wav(path2)
a = a + 5
a.export(path2, "wav")"""
audio_clip = sr.AudioFile("{}".format(path2))
with audio_clip as source:
audio_file = recognizer.record(source)
sent = []
result = ""
try:
result = recognizer.recognize_google(audio_file)
except sr.UnknownValueError:
print("Can not process audio ")
if not result:
self.y = 0
else:
print(result)
sent.append(result)
sent = sent + keywords
sent_vec3 = model.encode(sent)
x = cosine_similarity(
[sent_vec3[0]],
sent_vec3[1:]
)
for i in range(len(x)):
self.y = self.y + x[0][i]
self.y = (self.y / (len(sent) - 1)) * 1000.0
def res(self):
if self.y < 0:
self.y = 0
return self.y
And that’s the traceback, the error occurred at this line
video_clip = me.VideoFileClip(r"{}".format(path))
Traceback (most recent call last):
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/moviepy/video/io/ffmpeg_reader.py", line 286, in ffmpeg_parse_infos
match = re.findall("([0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9])", line)[0]
IndexError: list index out of range
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 90, in <module>
main()
File "main.py", line 85, in main
interviews_channel.start_consuming()
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 1865, in start_consuming
self._process_data_events(time_limit=None)
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 2026, in _process_data_events
self.connection.process_data_events(time_limit=time_limit)
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 833, in process_data_events
self._dispatch_channel_events()
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 567, in _dispatch_channel_events
impl_channel._get_cookie()._dispatch_events()
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 1492, in _dispatch_events
consumer_info.on_message_callback(self, evt.method,
File "main.py", line 79, in callback
processing(json.loads(body))
File "main.py", line 34, in processing
r = recomm(path, keywords)
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/recommendation.py", line 17, in _init_
video_clip = me.VideoFileClip(r"{}".format(path))
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/moviepy/video/io/VideoFileClip.py", line 88, in _init_
self.reader = FFMPEG_VideoReader(filename, pix_fmt=pix_fmt,
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/moviepy/video/io/ffmpeg_reader.py", line 35, in _init_
infos = ffmpeg_parse_infos(filename, print_infos, check_duration,
File "/home/medo/Dev/Smart-remotely-interviewing-system/backend/Process-interview/test/lib/python3.8/site-packages/moviepy/video/io/ffmpeg_reader.py", line 289, in ffmpeg_parse_infos
raise IOError(("MoviePy error: failed to read the duration of file %s.\n"
OSError: MoviePy error: failed to read the duration of file 74b74292-3642-486a-8319-255bb7e7da5a-1647363285285.webm.
Here are the file infos returned by ffmpeg:
ffmpeg version 4.2.2-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Input #0, matroska,webm, from '74b74292-3642-486a-8319-255bb7e7da5a-1647363285285.webm':
Metadata:
encoder : Chrome
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
Stream #0:1(eng): Video: vp8, yuv420p(progressive), 640x480, SAR 1:1 DAR 4:3, 29.42 fps, 29.42 tbr, 1k tbn, 1k tbc (default)
Metadata:
alpha_mode : 1
At least one output file must be specified
Specifications
- Python Version: 3.8.10
- Moviepy Version: 1.0.3
- Platform Name: Ubuntu
- Platform Version: 20.04 LTS
Issue Analytics
- State:
- Created 2 years ago
- Reactions:2
- Comments:6
Top Results From Across the Web
list index out of range, OSError: MoviePy error: failed to read ...
moviepy VideoFileClip IndexError : list index out of range, OSError: MoviePy error: failed to read the duration of file.
Read more >movie-py/Lobby - Gitter
VideoFileClip gets just the video but how can I get the audio and video? Tom Burrows ... n" OSError: MoviePy error: failed to...
Read more >Adding randomized video stimuli - Builder - PsychoPy Discourse
IndexError : list index out of range ... OSError: MoviePy error: failed to read the duration of file FINAL VIDSSS.xlsx.
Read more >CHANGELOG.md · Gitee 极速下载/moviepy - Gitee.com
MoviePy 是一个用于视频编辑的Python库:剪切,连接,标题插入,视频合成(也称为非 ... OSError: MoviePy error: failed to read the first frame of video file...
Read more >moviepy changelog - Awesome Python | LibHunt
New pix_fmt parameter in VideoFileClip , VideoClip.write_videofile() ... OSError: MoviePy error: failed to read the first frame of video file... would ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
@keikoro I have edited the issue.
@MedoOnlyOne Please edit your issue to include example code which causes this problem, thanks. (Code best be formatted using code formatting.)