Recherche avancée

Médias (2)

Mot : - Tags -/media

Autres articles (60)

  • MediaSPIP Core : La Configuration

    9 novembre 2010, par

    MediaSPIP Core fournit par défaut trois pages différentes de configuration (ces pages utilisent le plugin de configuration CFG pour fonctionner) : une page spécifique à la configuration générale du squelettes ; une page spécifique à la configuration de la page d’accueil du site ; une page spécifique à la configuration des secteurs ;
    Il fournit également une page supplémentaire qui n’apparait que lorsque certains plugins sont activés permettant de contrôler l’affichage et les fonctionnalités spécifiques (...)

  • Les vidéos

    21 avril 2011, par

    Comme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
    Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
    Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

Sur d’autres sites (8021)

  • FFMPEG Audio decode and draw waveform

    7 avril 2016, par Haris

    I am trying to decode the audio and draw the waveform using ffmpeg, and the input audio data is AV_SAMPLE_FMT_S16P, basically I am following the tutorial here, and the audio is playing fine with libao. Now I need to plot the waveform using decoded data, currently I am writing left and right channel to separate csv file and plotting on excel. But the waveform is something different from the waveform shown in Audacity using the same audio clip. When I analyzed the value written on csv most of the values are close to maximum of uint16_t(65535), but there are some other lower values, but majority is high peak.

    Here is the source code,

       const char* input_filename="/home/user/Music/Clip.mp3";
       av_register_all();
       AVFormatContext* container=avformat_alloc_context();
       if(avformat_open_input(&container,input_filename,NULL,NULL)<0){
           endApp("Could not open file");
       }

       if(avformat_find_stream_info(container, NULL)<0){
           endApp("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){
           endApp("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){
           endApp("cannot find codec!");
       }

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



       AVPacket packet;
       av_init_packet(&packet);

       //AVFrame *frame=avcodec_alloc_frame();
       AVFrame *frame=av_frame_alloc();

       int buffer_size=AVCODEC_MAX_AUDIO_FRAME_SIZE+ FF_INPUT_BUFFER_PADDING_SIZE;

       // MSVC can't do variable size allocations on stack, ohgodwhy
       uint8_t *buffer = new uint8_t[buffer_size];
       packet.data=buffer;
       packet.size =buffer_size;

       int frameFinished=0;

       int plane_size;

       ofstream fileCh1,fileCh2;
       fileCh1.open ("ch1.csv");
       fileCh2.open ("ch2.csv");

       AVSampleFormat sfmt=ctx->sample_fmt;

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

           if(packet.stream_index==stream_id){
               int len=avcodec_decode_audio4(ctx,frame,&frameFinished,&packet);
               int data_size = av_samples_get_buffer_size(&plane_size, ctx->channels,
                                                   frame->nb_samples,
                                                   ctx->sample_fmt, 1);


               if(frameFinished){
                   int write_p=0;
                   // QTime t;
                   switch (sfmt){

                       case AV_SAMPLE_FMT_S16P:

                           for (int nb=0;nbsizeof(uint16_t);nb++){
                               for (int ch = 0; ch < ctx->channels; ch++) {
                                   if(ch==0)
                                       fileCh1 <<((uint16_t *) frame->extended_data[ch])[nb]<<"\n";
                                   else if(ch==1)
                                       fileCh2 <<((uint16_t *) frame->extended_data[ch])[nb]<<"\n";
                               }
                           }

                           break;

                   }
               } else {
                   DBG("frame failed");
               }
           }


           av_free_packet(&packet);
       }
       fileCh1.close();
       fileCh2.close();
       avcodec_close(ctx);
       avformat_close_input(&container);
       delete buffer;
       return 0;

    Edit :

    I have attached the waveform image draw using opencv, here I scaled the sample value to 0-255 range, and took value 127 as 0(Y-axis). Now for each sample draw line from (x,127) to (x,sample value) where x=1,2,3,...

    enter image description here

  • How to fix ffmpeg,js length error in react-js project | fix error in react project

    19 février 2024, par X3R0

    I've tried to import the ffmpeg js library into my react-typescript project, I can't really update my project's react version or react-scripts due to the current code base.

    


    Error

    


    ./node_modules/@ffmpeg/ffmpeg/dist/umd/ffmpeg.js
TypeError: REDACTED_PROJECT_ROOT\node_modules\@ffmpeg\ffmpeg\dist\umd\ffmpeg.js: Cannot read properties of undefined (reading 'length')


    


    Code

    


    import React, { useEffect, useRef, useState } from 'react';
import { FFmpeg } from '@ffmpeg/ffmpeg';

/* MORE CODE HERE */

const ffmpeg = new FFmpeg();
const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd';
const coreURL = `${baseURL}/ffmpeg-core.js`;
const wasmURL = `${baseURL}/ffmpeg-core.wasm`;
const coreData = await fromURLToBlob(coreURL);
const wasmData = await fromURLToBlob(wasmURL);
const coreBlob = new Blob([coreData], { type: "text/javascript"});
const wasmBlob = new Blob([wasmData], { type: "application/wasm"});
await ffmpeg.load({
    coreURL: fromBlobToURL(coreBlob),
    wasmURL: fromBlobToURL(wasmBlob),
});       

/* MORE CODE HERE */


    


    Versions

    


    npm v8.19.4
node v16.20.2


    


    tsconfig.json

    


    {
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx"
  },
  "include": [
    "src"
  ]
}



    


    package.json

    


    {
  "name": "frontend",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@emotion/react": "^11.10.4",
    "@emotion/styled": "^11.10.4",
    "@ffmpeg/ffmpeg": "^0.12.10",
    "@material-ui/core": "^4.12.3",
    "@mui/base": "^5.0.0-beta.36",
    "@mui/icons-material": "^5.10.3",
    "@mui/material": "^5.15.10",
    "@mui/x-data-grid": "^6.19.2",
    "@mui/x-data-grid-pro": "^6.19.2",
    "@reduxjs/toolkit": "^1.8.5",
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "@toast-ui/editor": "^3.1.3",
    "@toast-ui/react-editor": "^3.1.3",
    "@types/jest": "^29.0.1",
    "@types/node": "^18.7.17",
    "@types/react": "^17.0.49",
    "@types/react-dom": "^18.0.6",
    "@zalando/oauth2-client-js": "^0.0.18",
    "ajv": "^8.12.0",
    "ajv-errors": "^3.0.0",
    "apexcharts": "^3.28.1",
    "arraybuffer-concat": "^0.0.1",
    "axios": "^1.4.0",
    "base64-blob": "^1.4.1",
    "bootstrap": "^5.1.1",
    "datetime-diff": "^0.2.1",
    "fuzzy-time": "^1.0.7",
    "jquery": "^3.6.0",
    "jso": "^4.1.1",
    "luxon": "^2.3.0",
    "pretty-bytes": "^5.6.0",
    "react": "^17.0.2",
    "react-apexcharts": "^1.3.9",
    "react-beautiful-dnd": "^13.1.0",
    "react-bootstrap": "^2.0.0-rc.0",
    "react-dom": "^17.0.2",
    "react-export-excel": "^0.5.3",
    "react-facebook": "^9.0.12",
    "react-helmet": "^6.1.0",
    "react-icons": "^4.3.1",
    "react-media-recorder": "^1.6.6",
    "react-notifications": "^1.7.2",
    "react-pages": "^0.4.4",
    "react-redux": "^7.2.8",
    "react-router": "^5.2.1",
    "react-router-dom": "^5.2.1",
    "react-scripts": "4.0.3",
    "react-toastify": "^8.0.2",
    "react-tooltip": "^4.2.21",
    "react-webcam": "^6.0.0",
    "recharts": "^2.1.8",
    "redux": "^4.2.0",
    "redux-thunk": "^2.4.1",
    "typescript": "^4.8.3",
    "web-vitals": "^1.1.2",
    "website-popup": "^3.0.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "set NODE_OPTIONS=--max-old-space-size=4096 && react-scripts build --GENERATE_SOURCEMAP=false",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6"
  }
}



    


  • avcodec/nvenc : include nvEncodeAPI v7 SDK header

    27 août 2016, par Timo Rothenpieler
    avcodec/nvenc : include nvEncodeAPI v7 SDK header
    

    As Nvidia has put the most recent Video Codec SDK behind a double
    registration wall, of which one needs manual approval of a lenghty
    application, bundling this header saves everyone trying to use NVENC
    from that headache.

    The header is still MIT licensed and thus fine to bundle with ffmpeg.

    Not bundling this header would get ffmpeg stuck at SDK v6, which is
    still freely available, holding back future development of the NVENC
    encoder.

    • [DH] compat/nvenc/nvEncodeAPI.h
    • [DH] configure
    • [DH] libavcodec/nvenc.h
    • [DH] tests/ref/fate/source