Recherche avancée

Médias (10)

Mot : - Tags -/wav

Autres articles (65)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

Sur d’autres sites (12912)

  • ffmpeg errors out with Error initializing output stream 0:0 for the setting `-profile:v main`

    17 octobre 2020, par Vishwasa Navada K

    We are using ffmpeg for generating HSL streaming files (.m3u8, .ts) from multiple type of input video and audio like avi, mp4, mp3, mkv, m4a etc. We are trying to encode everything into h264 streams to support modern browsers. But we are facing issues in converting few videos of type avi and mp4 (not all). Below is the ffmpeg command (it's using ffmpeg fluent on NodeJS).

    


    ffmpeg(fileName)
  .outputOptions([
    '-c:v h264',
    '-profile:v main',
    `-vf scale=1280:-2`,
    '-hls_list_size 0',
    '-start_number 0',
    '-hls_time 10',
    '-loglevel error',
  ])
  .output(output_file_path)


    


    When we try to run this with some set of specific avi and mp4 samples, it errors out saying
Error: ffmpeg exited with code 1: Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height.

    


    I tried changing few commands (like providing crf value) and tried to run them, The only time it successfully converted converted them was when I removed the output option -profile:v main. I am not sure about the reason behind it.

    


    I ran ffprobe to get the information from the videos that were not able to generate streams. I have them uploaded to gist here : https://gist.github.com/vishwasnavadak/91b5c978e2a3cb7a7c7a2bb505487263

    


    Is there something I am missing ? What is the reason for it to error out when -profile:v main option is present ?

    


  • Reading mp3 file using ffmpeg caues memory leaks, even after freeing it in main

    12 août 2020, par leonardltk1

    i am continuously reading mp3 files and processing them, but the memory keeps getting build up even though i freed it.

    


    At the bottom read_audio_mp3(), they are already freeing some variable.
why do i still face a memory build up and how do i deal with it ?

    


    following this code : https://rodic.fr/blog/libavcodec-tutorial-decode-audio-file/, i read mp3 using this function

    


        int read_audio_mp3(string filePath_str, const int sample_rate, 
      double** output_buffer, int &AUDIO_DURATION){
      const char* path = filePath_str.c_str();

      /* Reads the file header and stores information about the file format. */
        AVFormatContext* format = avformat_alloc_context();
        if (avformat_open_input(&format, path, NULL, NULL) != 0) {
            fprintf(stderr, "Could not open file '%s'\n", path);
            return -1;
        }

      /* Check out the stream information in the file. */
        if (avformat_find_stream_info(format, NULL) < 0) {
            fprintf(stderr, "Could not retrieve stream info from file '%s'\n", path);
            return -1;
        }

      /* find an audio stream. */
        int stream_index =- 1;
        for (unsigned i=0; inb_streams; i++) {
          if (format->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
            stream_index = i;
            break;
          }
        }
        if (stream_index == -1) {
            fprintf(stderr, "Could not retrieve audio stream from file '%s'\n", path);
            return -1;
        }
        AVStream* stream = format->streams[stream_index];

      // find & open codec
        AVCodecContext* codec = stream->codec;
        if (avcodec_open2(codec, avcodec_find_decoder(codec->codec_id), NULL) < 0) {
            fprintf(stderr, "Failed to open decoder for stream #%u in file '%s'\n", stream_index, path);
            return -1;
        }

      // prepare resampler
        struct SwrContext* swr = swr_alloc();
        av_opt_set_int(swr, "in_channel_count",  codec->channels, 0);
        av_opt_set_int(swr, "out_channel_count", 1, 0);
        av_opt_set_int(swr, "in_channel_layout",  codec->channel_layout, 0);
        av_opt_set_int(swr, "out_channel_layout", AV_CH_LAYOUT_MONO, 0);
        av_opt_set_int(swr, "in_sample_rate", codec->sample_rate, 0);
        av_opt_set_int(swr, "out_sample_rate", sample_rate, 0);
        av_opt_set_sample_fmt(swr, "in_sample_fmt",  codec->sample_fmt, 0);
        av_opt_set_sample_fmt(swr, "out_sample_fmt", AV_SAMPLE_FMT_DBL,  0);
        swr_init(swr);
        if (!swr_is_initialized(swr)) {
            fprintf(stderr, "Resampler has not been properly initialized\n");
            return -1;
        }

      /* Allocate an audio frame. */
        AVPacket packet;
        av_init_packet(&packet);
        AVFrame* frame = av_frame_alloc();
        if (!frame) {
          fprintf(stderr, "Error allocating the frame\n");
          return -1;
        }

      // iterate through frames
        *output_buffer = NULL;
        AUDIO_DURATION = 0;
        while (av_read_frame(format, &packet) >= 0) {
          // decode one frame
            int gotFrame;
            if (avcodec_decode_audio4(codec, frame, &gotFrame, &packet) < 0) {
              // free packet
                av_free_packet(&packet);
                break;
            }
            if (!gotFrame) {
              // free packet
                av_free_packet(&packet);
                continue;
            }
          // resample frames
            double* buffer;
            av_samples_alloc((uint8_t**) &buffer, NULL, 1, frame->nb_samples, AV_SAMPLE_FMT_DBL, 0);
            int frame_count = swr_convert(swr, (uint8_t**) &buffer, frame->nb_samples, (const uint8_t**) frame->data, frame->nb_samples);
          // append resampled frames to output_buffer
            *output_buffer = (double*) realloc(*output_buffer,
             (AUDIO_DURATION + frame->nb_samples) * sizeof(double));
            memcpy(*output_buffer + AUDIO_DURATION, buffer, frame_count * sizeof(double));
            AUDIO_DURATION += frame_count;
          // free buffer & packet
            av_free_packet(&packet);
            av_free( buffer );
        }

      // clean up
        av_frame_free(&frame);
        swr_free(&swr);
        avcodec_close(codec);
        avformat_free_context(format);

      return 0;
    }


    


    Main Script : MemoryLeak.cpp

    


        // imports&#xA;      #include <fstream>&#xA;      #include &#xA;      #include &#xA;      #include &#xA;      #include &#xA;      #include <iostream>&#xA;      #include <sstream>&#xA;      #include <vector>&#xA;      #include <sys></sys>time.h> &#xA;      extern "C"&#xA;      {&#xA;      #include <libavutil></libavutil>opt.h>&#xA;      #include <libavcodec></libavcodec>avcodec.h>&#xA;      #include <libavformat></libavformat>avformat.h>&#xA;      #include <libswresample></libswresample>swresample.h>&#xA;      }&#xA;      using namespace std;&#xA;&#xA;    int main (int argc, char ** argv) {&#xA;      string wavpath = argv[1];&#xA;      printf("wavpath=%s\n", wavpath.c_str());&#xA;&#xA;      printf("\n==== Params =====\n");&#xA;      // Init&#xA;        int AUDIO_DURATION;&#xA;        int sample_rate = 8000;&#xA;        av_register_all();&#xA;&#xA;      printf("\n==== Reading MP3 =====\n");&#xA;        while (true) {&#xA;            // Read mp3&#xA;              double* buffer;&#xA;              if (read_audio_mp3(wavpath, sample_rate, &amp;buffer, AUDIO_DURATION) != 0) {&#xA;                printf("Cannot read %s\n", wavpath.c_str());&#xA;                continue;&#xA;              }&#xA;&#xA;            /* &#xA;              Process the buffer for down stream tasks.&#xA;            */&#xA;&#xA;            // Freeing the buffer&#xA;            free(buffer);&#xA;        }&#xA;&#xA;      return 0 ;&#xA;    }&#xA;</vector></sstream></iostream></fstream>

    &#xA;

    Compiling

    &#xA;

        g&#x2B;&#x2B; -o ./MemoryLeak.out -Ofast -Wall -Wextra \&#xA;        -std=c&#x2B;&#x2B;11 "./MemoryLeak.cpp" \&#xA;        -lavformat -lavcodec -lavutil -lswresample&#xA;

    &#xA;

    Running, by right my input an argument wav.scp that reads text file of all the mp3s.&#xA;But for easy to replicate purpose, i only read 1 file song.mp3 in and i keep re-reading it

    &#xA;

    ./MemoryLeak.out song.mp3&#xA;

    &#xA;

    Why do i know i have memory leaks ?

    &#xA;

      &#xA;
    1. I was running up 32 jobs in parallel for 14 million files, and when i wake up in the morning, they were abruptly killed.
    2. &#xA;

    3. I run htop and i monitor the progress when i re-run it, and i saw that the VIRT & RES & Mem are continuously increasing.
    4. &#xA;

    &#xA;

    &#xA;

    Edit 1 :&#xA;My setup :

    &#xA;

    &#xA;

    ffmpeg version 2.8.15-0ubuntu0.16.04.1&#xA;built with gcc 5.4.0&#xA;

    &#xA;

  • libavcodec/jpeg2000dec : Add check when done with main header markers

    21 juillet 2020, par Gautam Ramakrishnan
    libavcodec/jpeg2000dec : Add check when done with main header markers
    

    This patch sets a flag when the processing of the
    main header is complete.

    Signed-off-by : Michael Niedermayer <michael@niedermayer.cc>

    • [DH] libavcodec/jpeg2000dec.c