Recherche avancée

Médias (3)

Mot : - Tags -/collection

Autres articles (73)

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

Sur d’autres sites (7814)

  • Speech recognition with python-telegram-bot without downloading an audio file

    25 juin 2022, par linz

    I'm developing a telegram bot in which the user sends a voice message, the bot transcribes it and sends back what was said in text.
For that I am using the python-telegram-bot library and the speech_recognition library with the google engine.
My problem is, the voice messages sent by the users are .mp3, however in order to transcribe them i need to convert them to .wav. In order to do that I have to download the file sent to the bot.
Is there a way to avoid that ? I understand this is not an efficient and a safe way to do this since many active users at once will result in race conditions and takes a lot of space.

    


    
def voice_handler(update, context):
    bot = context.bot
    file = bot.getFile(update.message.voice.file_id)
    file.download('voice.mp3')
    filename = "voice.wav"
    
    # convert mp3 to wav file
    subprocess.call(['ffmpeg', '-i', 'voice.mp3',
                         'voice.wav', '-y'])

    # initialize the recognizer
    r = sr.Recognizer()
    
    # open the file
    with sr.AudioFile(filename) as source:
    
        # listen for the data (load audio to memory)
        audio_data = r.record(source)
        # recognize (convert from speech to text)
        text = r.recognize_google(audio_data, language='ar-AR')
        
        
def main() -> None:
    updater.dispatcher.add_handler(MessageHandler(Filters.voice, voice_handler)) 



    


  • 'C' program to pipeout audio file to FFMPEG and generate Video file

    9 mai 2017, par soflow

    I am attempting to write a short ’C’ program which reads in an Audio file using FFMPEG, processes that file using a ’C’ program, and then outputs a file via FFMEPG, which combines the new, modified audio together with a Video representation using the FFMPEG showwaves filter.

    At present the program attempts to do the following :-

    i) Read in an audio file, using pipein thorugh FFMPEG
    ii) Process the audio file using a portion of the ’C’ program
    iii) Pipeout the modified audio to FFMPEG, and generate a file using the ’showwaves’ filter in FFMEPG to create an MP4 file with audio and video.

    The following code run form the ommand line in FFMPEG generates the Audio/Video MP4 I want to create :-

    ffmpeg -y -f s16le -ar 44100 -ac 1 -i 12345678.wav  -i 12345678.wav  -filter_complex  "[0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]" -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  12345678.mp4

    "

    This code generates a processed audio file, and outputs it to a .wav file as required :-

    #include
    #include
    #include

    void main()
    {
    // Launch two instances of FFmpeg, one to read the original WAV
    // file and another to write the modified WAV file. In each case,
    // data passes between this program and FFmpeg through a pipe.
    FILE *pipein;
    FILE *pipeout;
    pipein  = popen("ffmpeg -i 12345678.wav -f s16le -ac 1 -", "r");
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i - out.wav", "w");

    // Read, modify and write one sample at a time
    int16_t sample;
    int count, n=0;
    while(1)
    {
       count = fread(&sample, 2, 1, pipein); // read one 2-byte sample
       if (count != 1) break;
       ++n;
       sample = sample * sin(n * 5.0 * 2*M_PI / 44100.0);
       fwrite(&sample, 2, 1, pipeout);
    }

    // Close input and output pipes
    pclose(pipein);    
    pclose(pipeout);
    }

    (This code borrowed from ted Burke’s excellent post here)

    I have made an attempt as shown below, but this is not working :-

    #include
    #include
    #include

    void main()
    {
    // Launch two instances of FFmpeg, one to read the original WAV
    // file and another to write the modified WAV file. In each case,
    // data passes between this program and FFmpeg through a pipe.
    FILE *pipein;
    FILE *pipeout;
    pipein  = popen("ffmpeg -i 12345678.wav -f s16le -ac 1 -", "r");
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i 12345678.wav  -i
    12345678.wav  -filter_complex  "
    [0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]"
    -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -
    codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  
    12345678.mp4
    ", "w");


    // Read, modify and write one sample at a time
    int16_t sample;
    int count, n=0;
    while(1)
    {
       count = fread(&sample, 2, 1, pipein); // read one 2-byte sample
       if (count != 1) break;
       ++n;
       sample = sample * sin(n * 5.0 * 2*M_PI / 44100.0);
       fwrite(&sample, 2, 1, pipeout);
    }

    // Close input and output pipes
    pclose(pipein);    
    pclose(pipeout);
    }    

    Ideally someone can suggest an improved version of the pipeout command above - alternately another process to achieve this would be interesting

    * EDIT *

    Thanks to @Mulvya, the revised pipeout line is now :-

    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i -  -filter_complex  "[0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]" -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  12345678.mp4

    ", "w") ;

    On compiling with gcc I get the following error messages :-

    avtovid2.c: In function \u2018main\u2019:

    wavtovid2.c:13:83: error: expected \u2018]\u2019 before \u2018:\u2019
    token
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i -  -
    filter_complex  "
    [0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]"
    -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -
    codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  
    12345678.mp4

    ^
    wavtovid2.c:13:86: error: expected \u2018)\u2019 before
    \u2018showwaves\u2019
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i -  -
    filter_complex  "
    [0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]"
    -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -
    codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  
    12345678.mp4

    ^
    wavtovid2.c:13:98: error: invalid suffix "x720" on integer constant
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i -  -
    filter_complex  "
    [0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]"
    -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -
    codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  
    12345678.mp4

    ^
    wavtovid2.c:13:153: warning: missing terminating " character
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i -  -
    filter_complex  "
    [0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]"
    -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -
    codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  
    12345678.mp4

    ^
    wavtovid2.c:13:86: error: missing terminating " character
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i -  -
    filter_complex  "
    [0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]"
    -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -
    codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  
    12345678.mp4

    ^
    wavtovid2.c:14:6: warning: missing terminating " character
    ", "w");
     ^
    wavtovid2.c:14:1: error: missing terminating " character
    ", "w");
    ^
    wavtovid2.c:13:21: warning: passing argument 1 of \u2018popen\u2019 makes
    pointer from integer without a cast
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i -  -
    filter_complex  "
    [0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]"
    -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -
    codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  
    12345678.mp4
                    ^
    In file included from wavtovid2.c:1:0:
    /usr/include/stdio.h:872:14: note: expected \u2018const char *\u2019 but
    argument is of type \u2018char\u2019
    extern FILE *popen (const char *__command, const char *__modes) __wur;
             ^
    wavtovid2.c:13:15: error: too few arguments to function \u2018popen\u2019
    pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i -  -
    filter_complex  "
    [0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" -map "[v]"
    -map 1:a:0 -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -
    codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart  
    12345678.mp4
              ^
    In file included from wavtovid2.c:1:0:
    /usr/include/stdio.h:872:14: note: declared here
    extern FILE *popen (const char *__command, const char *__modes) __wur;
             ^
    wavtovid2.c:32:1: error: expected \u2018;\u2019 before \u2018}\u2019
    token
    }
  • file : Add an option for following a file that is being written

    5 février 2015, par Martin Storsjö
    file : Add an option for following a file that is being written
    

    Using this requires setting the rw_timeout option to make it
    terminate, alternatively using the interrupt callback (if used via
    the API).

    Signed-off-by : Martin Storsjö <martin@martin.st>

    • [DBH] doc/protocols.texi
    • [DBH] libavformat/file.c
    • [DBH] libavformat/version.h