Zulko / moviepy

Video editing with Python
https://zulko.github.io/moviepy/
MIT License
12.07k stars 1.51k forks source link

AudioClip.iter_chunks(160) is chunking into [159, 160, 160, ..., 160] #2174

Open FlyDogDaDa opened 1 month ago

FlyDogDaDa commented 1 month ago

Expected Behavior

MoviePy: 1.0.3
len(mono_chunk)=160
len(mono_chunk)=160
len(mono_chunk)=160

Actual Behavior

MoviePy: 1.0.3
len(mono_chunk)=159
len(mono_chunk)=160
len(mono_chunk)=160

Steps to Reproduce the Problem

import numpy as np
from moviepy import version
from moviepy.editor import VideoFileClip, AudioClip

print("MoviePy:", version.__version__)

def VAD(original_audio: AudioClip):

    audio = original_audio.copy()  # Copy an audio for local editing
    audio.set_fps(16000)  # Set sampling rate
    chunk_size = 160  # 16000 * 10 // 1000

    i = 0  # Counter used only for testing
    for audio_chunk in original_audio.iter_chunks(chunk_size):
        # Convert to mono 16-bits PCM
        mono_chunk = np.mean(audio_chunk, 1).astype(dtype=np.int16)

        # Print content length
        print(f"{len(mono_chunk)=}")

        if i == 3:  # I only took out 3 for testing.
            break  # stop loop
        i += 1  # Count up the counter

# You can change to other videos. ^_^
video = VideoFileClip(
    "videos\\【spooky's jump scare】 威猛蛾老大要來幫忙打鬼了!!!!! ft. @EvaEmolaCh.mp4"
)
VAD(video.audio)

Specifications