Recherche avancée

Médias (1)

Mot : - Tags -/punk

Autres articles (71)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

Sur d’autres sites (12107)

  • Pydub FFMPEG issue [closed]

    14 janvier, par Nikolai van den Hoven

    I am attempting to use FFMPEG with Pydub to create a program that chops .mp3 files into different words, each contained in their own .mp3 file, but when I run the script I am getting the following error :

    


    PS C:\Users\nik> & C:/Users/nik/AppData/Local/Microsoft/WindowsApps/python3.12.exe "d:/Python/Word Splitter.py"
C:\Users\nik\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pydub\utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
  warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)


    


    This is the code I am using.

    


    import os
from pydub import AudioSegment
from pydub.silence import split_on_silence
import speech_recognition as sr
AudioSegment.ffmpeg = r"D:\Python\ffmpeg\bin\ffmpeg.exe"
def mp3_to_words(mp3_file, output_folder):
    # Ensure output folder exists
    os.makedirs(output_folder, exist_ok=True)

    # Load MP3 file
    print("Loading audio file...")
    audio = AudioSegment.from_mp3(mp3_file)

    # Split audio into chunks using silence detection
    print("Splitting audio into chunks...")
    chunks = split_on_silence(
        audio,
        min_silence_len=200,  # Minimum silence duration in ms to consider as a split point
        silence_thresh=audio.dBFS - 14,  # Silence threshold relative to average loudness
        keep_silence=100  # Retain some silence in chunks
    )

    recognizer = sr.Recognizer()

    for i, chunk in enumerate(chunks):
        print(f"Processing chunk {i + 1}/{len(chunks)}...")

        # Save the chunk temporarily
        temp_file = os.path.join(output_folder, f"chunk_{i}.wav")
        chunk.export(temp_file, format="wav")

        # Recognize words in the chunk
        with sr.AudioFile(temp_file) as source:
            audio_data = recognizer.record(source)
            try:
                text = recognizer.recognize_google(audio_data)
                words = text.split()

                # Export each word as its own MP3
                word_start = 0
                for j, word in enumerate(words):
                    word_duration = len(chunk) // len(words)  # Approximate duration per word
                    word_audio = chunk[word_start:word_start + word_duration]
                    word_file = os.path.join(output_folder, f"word_{i}_{j}.mp3")
                    word_audio.export(word_file, format="mp3")
                    word_start += word_duration

            except sr.UnknownValueError:
                print(f"Could not understand chunk {i + 1}.")
            except sr.RequestError as e:
                print(f"Could not request results; {e}")

        # Clean up temporary file
        os.remove(temp_file)

    print(f"Processed {len(chunks)} chunks. Word MP3s saved in {output_folder}.")

if __name__ == "__main__":
    input_file = input("Enter the path to the MP3 file: ").strip()
    output_dir = input("Enter the output folder path: ").strip()

    mp3_to_words(input_file, output_dir)


    


    I have added the Base FFMPEG folder and the bin folder within it to Windows PATH
My PATH variable on Windows 11,
But it does not show up in the variable when I typed PATH into cmd

    


  • ffmpeg is making my audio and video frozen and I don't know why

    17 avril 2024, par Sdpro

    I'm using bunjs runtime to execute ffmpeg as terminal code but I don't know if my code is typescript code is wrong or ffmpeg is wrong
and I'm using json file to get the clips correctly

    


        let videos = 0;
    let stepsTrim = "";
    let concatInputs = "";

    for (let i = 0; i < 40; i++) {
        if (unwantedWords[i].keepORdelete === true) {
            stepsTrim += `[0:v]trim=0:${
                unwantedWords[i].start
            },setpts=PTS[v${i}];[0:a]atrim=0:${
                unwantedWords[i].start
            },asetpts=PTS-STARTPTS[a${i}];[0:v]trim=${unwantedWords[i].start}:${
                unwantedWords[i].end
            },setpts=PTS[v${unwantedWords.length + i + 1}];[0:a]atrim=${
                unwantedWords[i].start
            }:${unwantedWords[i].end},asetpts=PTS-STARTPTS[a${
                unwantedWords.length + i + 1
            }];`;

            concatInputs += `[v${i}][a${i}][v${unwantedWords.length + i + 1}][a${
                unwantedWords.length + i + 1
            }]`;
            videos += 2; 
        }
    }

    stepsTrim = stepsTrim.slice(0, -1);

    await $`ffmpeg -hide_banner -i ${videoRequirements.output} -filter_complex "${stepsTrim},${concatInputs} concat=n=${videos}:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" -c:v libopenh264 -preset slow -c:a mp3 -vsync 1 -y ${removedUnwantedWords}/fastAf.mp4`;


    


    at the end after everything was done :

    


    warning
[vost#0:0/libopenh264 @ 0x558f80ea1dc0] More than 1000 frames duplicated.9kbits/s dup=110 drop=1 speed=0.831x    
[out_0_0 @ 0x558f8100a880] 100 buffers queued in out_0_0, something may be wrong. dup=1064 drop=1 speed=1.43x    
[out_0_1 @ 0x558f8100af80] 100 buffers queued in out_0_1, something may be wrong.
[out_0_1 @ 0x558f8100af80] 1000 buffers queued in out_0_1, something may be wrong.
I can't figure out why ffmpeg is sometimes making the audio + video work and sometimes not
[enter image description here](https://i.stack.imgur.com/PicaA.png)


    


    [
  {
    "word": "Hello",
    "id": 0,
    "keepORdelete": false,
    "start": 0,
    "end": 9.06
  },
  {
    "word": "guys,",
    "id": 1,
    "keepORdelete": false,
    "start": 9.06,
    "end": 10.2
  },
  {
    "word": "there",
    "id": 2,
    "keepORdelete": false,
    "start": 11.76,
    "end": 12.06
  },
...


    


    I have tried commands from many types of ffmpeg commands changing the code and I can't seem to get the audio and video right

    


  • Getting Error message Unknown encoder 'libx264' , any help appreciated

    16 janvier 2022, par Alex.Foster

    I am trying to compress videos files to a target size within python using ffmpeg-python for an A level project as part of my coursework, I keep getting this error saying it doesn't know the encoder. Not sure what I'm meant to do as this is literally an entirely new space to me. Am I meant to have installed the codec or something, or is there an alternative I can use ?

    


    import os, ffmpeg
##import section:this part is where I import all of the modules I will use
import  tkinter
import shutil
from tkinter import filedialog
import os


def fileSelect():                                                                           #start of fileSelect function
    global startingLocation                                                                 #declares startingLocation as global variable
    global originalName                                                                     #declares originalName as global variable
    global fileType                                                                         #declares fileType as global variable
    startingLocation = filedialog.askopenfilename(initialdir="/", title="Select file",      #tkinter function that opens file explorer, lets user select file saves the file path as a variable
                    filetypes=(("video files", "*.mp4"),("images", "*.jpg*")))
    originalName = os.path.basename(startingLocation)                                       #os function that gets the actaul file name from the path string
    print (originalName)                                                                    #print statement to check if originalName has been found
    fileType = startingLocation.split('.')                                                  #splits original name where any full stop in found and saves array as variable
    fileType = fileType[-1]                                                                 #changes variable to have the str value of the final item in the array; the file type
    fileType = '.' + fileType                                                               #adds fullstop to the start of the file type so i dont have to repeatedly do it
    print (fileType)                                                                        #print statement to check file type is found correctly

def outputSelect():                                                                         #start of outputSelect function
     global outputLocation                                                                  #declares outputLocation as global variable
     outputLocation = filedialog.askdirectory(initialdir="/", title="Select folder")        #tkinter function that opens file explorer, lets the user select of folder as saves the folder path as a variable

def fileNewName():                                                                          #start of fileNewName function
    global customName                                                                       #declares customName as global variable
    customName = input("Enter the end name of your file")                                   #simple code assigning user input to the custom name vairable
    customName = customName + fileType                                                      #add the fileType onto the end of the custom name

def compress():                                                                             #start of compress function
    fileSelect()                                                                            #calls the fileSelect function
    outputSelect()                                                                          #calls the outputSelect function
    fileNewName()
    global src
    global dst                                                                           #calls the fileNewName function
    src = startingLocation                                                                  #assigns startingLocation str as src, so the shutil module is able to use it in a cleaner way
    dst = outputLocation                                                                    #assigns outputLocation dst as src, so the shutil module is able to use it in a cleaner way
    shutil.copy(src, dst)                                                                   #shutil command that copies the file from src to dst
    src = outputLocation + '/' + originalName                                               #reassigns src as the location of the file copy
    dst = outputLocation + '/' + customName                                                 #reassigns dst as the location of the file copy but with a new name
    shutil.move(src,dst)


def compress_video(video_full_path, output_file_name, target_size):
    # Reference: https://en.wikipedia.org/wiki/Bit_rate#Encoding_bit_rate
    min_audio_bitrate = 32000
    max_audio_bitrate = 256000

    probe = ffmpeg.probe(video_full_path)
    # Video duration, in s.
    duration = float(probe['format']['duration'])
    # Audio bitrate, in bps.
    audio_bitrate = float(next((s for s in probe['streams'] if s['codec_type'] == 'audio'), None)['bit_rate'])
    # Target total bitrate, in bps.
    target_total_bitrate = (target_size * 1024 * 8) / (1.073741824 * duration)

    # Target audio bitrate, in bps
    if 10 * audio_bitrate > target_total_bitrate:
        audio_bitrate = target_total_bitrate / 10
        if audio_bitrate < min_audio_bitrate < target_total_bitrate:
            audio_bitrate = min_audio_bitrate
        elif audio_bitrate > max_audio_bitrate:
            audio_bitrate = max_audio_bitrate
    # Target video bitrate, in bps.
    video_bitrate = target_total_bitrate - audio_bitrate

    i = ffmpeg.input(video_full_path)
    ffmpeg.output(i, os.devnull,
                  **{'c:v': 'libx264', 'b:v': video_bitrate, 'pass': 1, 'f': 'mp4'}
                  ).overwrite_output().run()
    ffmpeg.output(i, output_file_name,
                  **{'c:v': 'libx264', 'b:v': video_bitrate, 'pass': 2, 'c:a': 'aac', 'b:a': audio_bitrate}
                  ).overwrite_output().run()

compress()
compress_video(dst, outputLocation, 3 * 1000)