
Recherche avancée
Médias (91)
-
DJ Z-trip - Victory Lap : The Obama Mix Pt. 2
15 septembre 2011
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Matmos - Action at a Distance
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
DJ Dolores - Oslodum 2004 (includes (cc) sample of “Oslodum” by Gilberto Gil)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Danger Mouse & Jemini - What U Sittin’ On ? (starring Cee Lo and Tha Alkaholiks)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Cornelius - Wataridori 2
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Rapture - Sister Saviour (Blackstrobe Remix)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (93)
-
La sauvegarde automatique de canaux SPIP
1er avril 2010, parDans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...) -
Les notifications de la ferme
1er décembre 2010, parAfin d’assurer une gestion correcte de la ferme, il est nécessaire de notifier plusieurs choses lors d’actions spécifiques à la fois à l’utilisateur mais également à l’ensemble des administrateurs de la ferme.
Les notifications de changement de statut
Lors d’un changement de statut d’une instance, l’ensemble des administrateurs de la ferme doivent être notifiés de cette modification ainsi que l’utilisateur administrateur de l’instance.
À la demande d’un canal
Passage au statut "publie"
Passage au (...) -
ANNEXE : Les plugins utilisés spécifiquement pour la ferme
5 mars 2010, parLe site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)
Sur d’autres sites (7652)
-
How to fix ffmpeg,js length error in react-js project | fix error in react project
19 février 2024, par X3R0I've tried to import the ffmpeg js library into my react-typescript project, I can't really update my project's
react
version orreact-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"
 }
}




-
FFMPEG Audio decode and draw waveform
7 avril 2016, par HarisI 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 ofuint16_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,...
-
Matomo’s 2021 Year in Review
13 décembre 2021, par erin — Community