
Recherche avancée
Autres articles (103)
-
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 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 (...) -
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 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 (...) -
Amélioration de la version de base
13 septembre 2013Jolie 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 (...)
Sur d’autres sites (11794)
-
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,...
-
Resize videos and keep codecs using PHP-FFMpeg
30 décembre 2019, par tmp_hallenserI’m trying to resize a couple of videos (with different codecs) using PHP-FFMpeg. The official documentation gives the following example (see https://github.com/PHP-FFMpeg/PHP-FFMpeg)
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('video.mpg');
$video
->filters()
->resize(new FFMpeg\Coordinate\Dimension(320, 240))
->synchronize();
$video
->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
->save('frame.jpg');
$video
->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4')
->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv')
->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');Since I don’t want to specify the codec (take the same as the source file), I was trying to create a copy-format and use this format instead for the
save
command.class MOVFormat extends FFMpeg\Format\Video\DefaultVideo
{
public function __construct($audioCodec = 'copy', $videoCodec = 'copy')
{
$this
->setAudioCodec($audioCodec)
->setVideoCodec($videoCodec);
}
public function supportBFrames()
{
return false;
}
public function getAvailableAudioCodecs()
{
return ['copy'];
}
public function getAvailableVideoCodecs()
{
return ['copy'];
}
}This results in
Filtergraph '[in]scale=320:240 [out]' was defined for video output stream 0:0 but codec copy was selected.
andFiltering and streamcopy cannot be used together.
Technically, it should be possible to resize without specifying the codec if I look at this reply : https://superuser.com/a/624564
Any help is appreciated !