Recherche avancée

Médias (1)

Mot : - Tags -/blender

Autres articles (89)

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

  • 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 (6218)

  • Merge remote-tracking branch 'XhmikosR/master'

    12 mars 2013, par brandonaaron
    Merge remote-tracking branch 'XhmikosR/master'
  • Merge pull request #37 from adunkman/master

    12 mars 2013, par brandonaaron
    Merge pull request #37 from adunkman/master
    

    Updated README to point to Github pages

  • Convert .m4a to PCM using libavcodec

    17 décembre 2013, par gmcc051

    I'm trying to convert a .m4a file to raw PCM file so that I can play it back in Audacity.

    According to the AVCodecContext it is a 44100 Hz track using the sample format AV_SAMPLE_FMT_FLTP which, to my understanding, when decodeded using avcodec_decode_audio4, I should get two arrays of floating point values (one for each channel).

    I'm unsure of the significance of the AVCodecContext's bits_per_coded_sample = 16

    Unfortunately Audacity plays the result back as if I have the original track is mixed in with some white noise.

    Here is some sample code of what I've been done. Note that I've also added a case for a track that uses signed 16bit non-interleaved data (sample_format = AC_SAMPLE_FMT_S16P), which Audacity plays back fine.

    int AudioDecoder::decode(std::string path)
    {
     const char* input_filename=path.c_str();

     av_register_all();

     AVFormatContext* container=avformat_alloc_context();
     if(avformat_open_input(&container,input_filename,NULL,NULL)<0){
       printf("Could not open file");
     }

     if(avformat_find_stream_info(container, NULL)<0){
         printf("Could not find file info");
     }
     av_dump_format(container,0,input_filename,false);

     int stream_id=-1;
     int i;
     for(i=0;inb_streams;i++){
       if(container->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO){
           stream_id=i;
           break;
       }
     }
     if(stream_id==-1){
       printf("Could not find Audio Stream");
     }

     AVDictionary *metadata=container->metadata;
     AVCodecContext *ctx=container->streams[stream_id]->codec;
     AVCodec *codec=avcodec_find_decoder(ctx->codec_id);

     if(codec==NULL){
       printf("cannot find codec!");
     }

     if(avcodec_open2(ctx,codec,NULL)<0){
        printf("Codec cannot be found");
     }

     AVSampleFormat sfmt = ctx->sample_fmt;

     AVPacket packet;
     av_init_packet(&packet);
     AVFrame *frame = avcodec_alloc_frame();

     int buffer_size = AVCODEC_MAX_AUDIO_FRAME_SIZE+ FF_INPUT_BUFFER_PADDING_SIZE;;
     uint8_t buffer[buffer_size];
     packet.data=buffer;
     packet.size =buffer_size;

     FILE *outfile = fopen("test.raw", "wb");

     int len;
     int frameFinished=0;

     while(av_read_frame(container,&packet) >= 0)
     {
         if(packet.stream_index==stream_id)
         {
           //printf("Audio Frame read \n");
           int len=avcodec_decode_audio4(ctx, frame, &frameFinished, &packet);

           if(frameFinished)
           {      
             if (sfmt==AV_SAMPLE_FMT_S16P)
             { // Audacity: 16bit PCM little endian stereo
               int16_t* ptr_l = (int16_t*)frame->extended_data[0];
               int16_t* ptr_r = (int16_t*)frame->extended_data[1];
               for (int i=0; inb_samples; i++)
               {
                 fwrite(ptr_l++, sizeof(int16_t), 1, outfile);
                 fwrite(ptr_r++, sizeof(int16_t), 1, outfile);
               }
             }
             else if (sfmt==AV_SAMPLE_FMT_FLTP)
             { //Audacity: big endian 32bit stereo start offset 7 (but has noise)
               float* ptr_l = (float*)frame->extended_data[0];
               float* ptr_r = (float*)frame->extended_data[1];
               for (int i=0; inb_samples; i++)
               {
                   fwrite(ptr_l++, sizeof(float), 1, outfile);
                   fwrite(ptr_r++, sizeof(float), 1, outfile);
                }
              }            
           }
       }
    }
    fclose(outfile);
    av_close_input_file(container);
    return 0;  

    }

    I'm hoping I've just done a naive conversion (most/less significant bit issues), but at present I've been unable to figure it out. Note that Audacity can only import RAW float data if its 32bit or 64 bit float (big or little endian).

    Thanks for any insight.