Recherche avancée

Médias (17)

Mot : - Tags -/wired

Autres articles (65)

  • 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

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

Sur d’autres sites (10020)

  • SDL Audio - Plays only Static Noise

    30 avril 2016, par bcpermafrost

    Im having an issue with playing audio.

    Im new to the SDL World of things so im learning from a tutorial.

    http://dranger.com/ffmpeg/tutorial03.html

    As far as audio goes, i have exactly what he put down and didnt get the result he says I should get. In the end of the lesson he specifies that the audio should play normally. However all i get is excessively loud static noise. This leads me to believe that the packets arent being read correctly. However I have no idea how to debug or look for the issue.

    Here is my main loop for parsing the packets :

    while (av_read_frame(pFormatCtx, &packet) >= 0) {

            if (packet.stream_index == videoStream) {
                avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);

                if (frameFinished){

                    AVPicture pict;

                    pict.data[0] = yPlane;
                    pict.data[1] = uPlane;
                    pict.data[2] = vPlane;
                    pict.linesize[0] = pCodecCtx->width;
                    pict.linesize[1] = uvPitch;
                    pict.linesize[2] = uvPitch;

                    sws_scale(sws_ctx,
                        pFrame->data, pFrame->linesize,
                        0, pCodecCtx->height,
                        pict.data, pict.linesize);

                    //SDL_UnlockTexture(bmp);

                    SDL_UpdateYUVTexture(bmp, 0,
                        yPlane, pCodecCtx->width,
                        uPlane, uvPitch,
                        vPlane, uvPitch);


                    SDL_RenderClear(renderer);
                    SDL_RenderCopy(renderer, bmp, NULL, NULL);
                    SDL_RenderPresent(renderer);


                    av_free_packet(&packet);


                }

            }
            else if (packet.stream_index == audioStream) {
                packet_queue_put(&audioq, &packet);

            }
            else
                av_free_packet(&packet);



            SDL_PollEvent(&event);

            switch (event.type) {
            case SDL_QUIT:
                quit = 1;
                SDL_DestroyTexture(bmp);
                SDL_DestroyRenderer(renderer);
                SDL_DestroyWindow(screen);
                SDL_Quit();
                exit(0);
                break;
            default:
                break;

            }

        }

    this is my initialization of the audio device :

    aCodecCtxOrig = pFormatCtx->streams[audioStream]->codec;
       aCodec = avcodec_find_decoder(aCodecCtxOrig->codec_id);
       if (!aCodec) {
           fprintf(stderr, "Unsupported codec!\n");
           return -1;
       }

       // Copy context
       aCodecCtx = avcodec_alloc_context3(aCodec);
       if (avcodec_copy_context(aCodecCtx, aCodecCtxOrig) != 0) {
           fprintf(stderr, "Couldn't copy codec context");
           return -1; // Error copying codec context
       }


       wanted_spec.freq = aCodecCtx->sample_rate;
       wanted_spec.format = AUDIO_U16SYS;
       wanted_spec.channels = aCodecCtx->channels;
       wanted_spec.silence = 0;
       wanted_spec.samples = SDL_AUDIO_BUFFER_SIZE;
       wanted_spec.callback = audio_callback;
       wanted_spec.userdata = aCodecCtx;


       if (SDL_OpenAudio( &wanted_spec, &spec) < 0) {
           fprintf(stderr, "SDL_OpenAudio: %s\n", SDL_GetError());
           return -1;
       }

       avcodec_open2(aCodecCtx, aCodec, NULL);

       // audio_st = pFormatCtx->streams[index]
       packet_queue_init(&audioq);
       SDL_PauseAudio(0);

    The Call back (same as the tutorial) :|

    void audio_callback(void *userdata, Uint8 *stream, int len) {

       AVCodecContext *aCodecCtx = (AVCodecContext *)userdata;
       int len1, audio_size;

       static uint8_t audio_buf[(MAX_AUDIO_FRAME_SIZE * 3) / 2];
       static unsigned int audio_buf_size = 0;
       static unsigned int audio_buf_index = 0;

       while (len > 0) {
           if (audio_buf_index >= audio_buf_size) {
               /* We have already sent all our data; get more */
               audio_size = audio_decode_frame(aCodecCtx, audio_buf, sizeof(audio_buf));
               if (audio_size < 0) {
                   /* If error, output silence */
                   audio_buf_size = 1024; // arbitrary?
                   memset(audio_buf, 0, audio_buf_size);
               }
               else {
                   audio_buf_size = audio_size;
               }
               audio_buf_index = 0;
           }
           len1 = audio_buf_size - audio_buf_index;
           if (len1 > len)
               len1 = len;
           memcpy(stream, (uint8_t *)audio_buf + audio_buf_index, len1);
           len -= len1;
           stream += len1;
           audio_buf_index += len1;
       }
    }
  • Introducing MatomoCamp !

    24 juin 2021, par Ben Erskine — Community

    MatomoCamp is the first online event developed by and for the Matomo community.

    The key purpose of MatomoCamp is to encourage knowledge-sharing, it’s all about helping and learning from each other.

    When is MatomoCamp ?

    MatomoCamp will be held on November the 4th and November the 5th 2021 from 9 A.M. to 5 P.M. CET. 

    What is a Camp ?

    The term “Camp” comes from Barcamp, which is a self-organized informal non-conference. The event takes place online by using only Free software and Open Source technologies.

    Get involved

    The MatomoCamp is designed for people from the community to come on stage to introduce topics or share their expertise about Matomo Analytics.

    If you have something you would like to share or have a speaker in mind, please submit a proposal and get involved.

    Help shape the event

    A team of passionate volunteers are in full swing developing this event. In order to make this event as valuable as possible for the community, we need your help !

    If you would like to help out or have an idea to help shape the overall event, reach out to the organizers and share your ideas.

    More updates on MatomoCamp will follow soon.

  • FATE’s New Look

    4 août 2010, par Multimedia Mike — FATE Server

    The FATE main page exposes a lot of data. The manner in which it is presented has always been bounded by my extremely limited web development abilities. I wrestled with whether I should learn better web development skills first and allow that to inform any improved design, or focus on the more useful design and invest my web development learning time towards realizing that design.

    Fortunately, Mans solved this conundrum with an elegantly simple solution :



    The top of the page displays a status bar that illustrates — at a glance — how functional the codebase is. The web page source code identifies this as the failometer. It took me a few seconds to recognize what information that status bar was attempting to convey ; maybe it could use a succinct explanation.

    Mini-Book Review

    Before Mans took over, I thought about this problem quite a bit. I needed inspiration for creating a better FATE main page and aggregating a large amount of data in a useful, easily-digested form. Looking around the web, I see no shortage of methods for visualizing data. I could start shoehorning FATE data into available methods and see what works. But I thought it would be better to take a step back and think about the best way to organize the data. My first clue came awhile ago in the form of an xkcd comic : Blogofractal. Actually, the clue came from the mouseover text which recommended Edward Tufte’s "The Visual Display of Quantitative Information".



    I ordered this up and plowed through it. It’s an interesting read, to be sure. However, I think it illustrates what a book on multimedia and compression technology would look like if authored by yours truly— a book of technical curiosities from epochs past that discusses little in the way of modern practical application. Tufte’s book showed me lots of examples of infographics from decades and even centuries past, but I never concisely learned exactly how to present data such as FATE’s main page in a more useful form.

    Visualization Blog
    More recently, I discovered a blog called Flowing Data, authored by a statistics Ph.D. candidate who purportedly eats, sleeps, and breathes infographics. The post 11 Ways to Visualize Changes Over Time : A Guide offers a good starting point for creating useful data presentations.

    I still subscribe to and eagerly read Flowing Data. But I might not have as much use for data visualization now that Mans is on FATE duty.