
Recherche avancée
Autres articles (57)
-
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ; -
Création définitive du canal
12 mars 2010, parLorsque votre demande est validée, vous pouvez alors procéder à la création proprement dite du canal. Chaque canal est un site à part entière placé sous votre responsabilité. Les administrateurs de la plateforme n’y ont aucun accès.
A la validation, vous recevez un email vous invitant donc à créer votre canal.
Pour ce faire il vous suffit de vous rendre à son adresse, dans notre exemple "http://votre_sous_domaine.mediaspip.net".
A ce moment là un mot de passe vous est demandé, il vous suffit d’y (...) -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (10024)
-
Are there any libraries on adding effect to audio, like phone, inner monologue, or sounds like a man/woman ? [closed]
6 mars, par MathewI'm trying to apply different audio effects, such as making audio sound like a phone call. Below is my current approach. As you can see, I'm using multiple filters and simple algorithms to achieve this effect, but the output quality isn't ideal.


Since I need to implement many sound effects/filters, are there any ready-to-use libraries that could help ?


I've looked into FFmpeg filters and noticed mentions of LADSPA/LV2 plugins. Are these viable solutions ? Any other suggestions would be greatly appreciated.


public static void applySceneEffect(String inputPath, String outputPath, int sceneType) {
 LOGGER.info("apply scene effect {} to {}", sceneType, inputPath);

 try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputPath);
 FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputPath, grabber.getAudioChannels())) {

 grabber.setOption("vn", ""); 
 grabber.start();

 
 recorder.setAudioCodec(avcodec.AV_CODEC_ID_PCM_S16LE); 
 recorder.setSampleRate(grabber.getSampleRate());
 recorder.setAudioChannels(grabber.getAudioChannels());
 recorder.setAudioBitrate(grabber.getAudioBitrate());
 recorder.setFormat("wav"); 


 String audioFilter = String.join(",",
 "aresample=8000", 
 "highpass=f=300, lowpass=f=3400", 
 "acompressor=threshold=-15dB:ratio=4:attack=10:release=100", 
 "volume=1.5", 
 "aecho=0.9:0.4:10:0.6"
 );

 FFmpegFrameFilter f1 = new FFmpegFrameFilter(audioFilter, grabber.getAudioChannels());
 f1.setSampleRate(grabber.getSampleRate());
 f1.start();

 recorder.start();

 Random random = new Random();
 double noiseLevel = 0.02; 

 
 while (true) {
 var frame = grabber.grabFrame(true, false, true, true);
 if (frame == null) {
 break;
 }

 ShortBuffer audioBuffer = (ShortBuffer) frame.samples[0];
 short[] audioData = new short[audioBuffer.remaining()];
 audioBuffer.get(audioData);

 applyElectricNoise(audioData, grabber.getSampleRate());

 audioData = applyDistortion(audioData, 1.5, 30000);

 audioBuffer.rewind();
 audioBuffer.put(audioData);
 audioBuffer.flip();


 f1.push(frame); 
 Frame filteredFrame;
 while ((filteredFrame = f1.pull()) != null) {
 recorder.record(filteredFrame); 
 }
 }

 recorder.stop();
 recorder.release();
 grabber.stop();
 grabber.release();
 } catch (FrameGrabber.Exception | FrameRecorder.Exception | FFmpegFrameFilter.Exception e) {
 throw new RuntimeException(e);
 }
}


private static final double NOISE_LEVEL = 0.005; 
private static final int NOISE_FREQUENCY = 60; 

public static void applyElectricNoise(short[] audioData, int sampleRate) {
 Random random = new Random();

 
 for (int i = 0; i < audioData.length; i++) {
 double noise = Math.sin(2 * Math.PI * NOISE_FREQUENCY * i / sampleRate);

 double electricNoise = random.nextGaussian() * NOISE_LEVEL * Short.MAX_VALUE + noise;

 audioData[i] = (short) Math.max(Math.min(audioData[i] + electricNoise, Short.MAX_VALUE), Short.MIN_VALUE); 
 }
}

public static short[] applyTremolo(short[] audioData, int sampleRate, double frequency, double depth) {
 double phase = 0.0;
 double phaseIncrement = 2 * Math.PI * frequency / sampleRate;

 for (int i = 0; i < audioData.length; i++) {
 double modulator = 1.0 - depth + depth * Math.sin(phase); 
 audioData[i] = (short) (audioData[i] * modulator);

 phase += phaseIncrement;
 if (phase > 2 * Math.PI) {
 phase -= 2 * Math.PI;
 }
 }
 return audioData;
}

public static short[] applyDistortion(short[] audioData, double gain, double threshold) {
 for (int i = 0; i < audioData.length; i++) {
 double sample = audioData[i] * gain;

 if (sample > threshold) {
 sample = threshold;
 } else if (sample < -threshold) {
 sample = -threshold;
 }

 audioData[i] = (short) sample;
 }
 return audioData;
}



-
Cannot play audio from a link using a Discord Bot
2 mars 2020, par GuilhermeffableI’m trying to code a bot so me and my friends can hear the local radio on our Discord Server but I’m having this error.
This is part of my code, it’s the play.js file that handles the playback stuff.
module.exports = (client,message) => {
const voiceChannel = message.member.voiceChannel;
const idChannel = voiceChannel.id;
console.log(idChannel)
//vê se o user está numa sala de voz
if(!voiceChannel) {
return message.channel.send("Precisas de estar num voice channel para usar este comando.")
}
const permissions = voiceChannel.permissionsFor(message.client.user);
//vê se tem permissões para entrar na sala
if(!permissions.has('CONNECT') || !permissions.has('SPEAK')) {
return message.channel.send("Não tenho permissões para entrar nessa sala.")
}
voiceChannel.join()
.then(connection => {
console.log("Successfully connected.");
connection.playStream('http://centova.radios.pt:8401/stream.mp3/1')
}).catch(e =>{
console.error(e);
});}
And this is the error I’m getting :
TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received an instance of
Object
at validateString (internal/validators.js:117:11)
at normalizeSpawnArguments (child_process.js:406:3)
at Object.spawn (child_process.js:542:16)
at new FfmpegProcess (C:\Users\guilh\desktop\BOT\orbitalbot\node_modules\prism-media\src\transcoders\ffmpeg\FfmpegProcess.js:14:33)
at FfmpegTranscoder.transcode (C:\Users\guilh\desktop\BOT\orbitalbot\node_modules\prism-media\src\transcoders\ffmpeg\Ffmpeg.js:34:18)
at MediaTranscoder.transcode (C:\Users\guilh\desktop\BOT\orbitalbot\node_modules\prism-media\src\transcoders\MediaTranscoder.js:27:31)
at Prism.transcode (C:\Users\guilh\desktop\BOT\orbitalbot\node_modules\prism-media\src\Prism.js:13:28)
at AudioPlayer.playUnknownStream (C:\Users\guilh\desktop\BOT\orbitalbot\node_modules\discord.js\src\client\voice\player\AudioPlayer.js:97:35)
at VoiceConnection.playStream (C:\Users\guilh\desktop\BOT\orbitalbot\node_modules\discord.js\src\client\voice\VoiceConnection.js:546:24)
at C:\Users\guilh\desktop\BOT\orbitalbot\commands\play.js:24:24 {
code: 'ERR_INVALID_ARG_TYPE' -
Evolution #4727 : Des pictos / icônes symboliques pour tout le monde
12 avril 2021, par nicod _Les fontes d’icônes c’est pas top, c’est un peu déprécié aujourd’hui, ça pose pas mal de problèmes.
Mais si ça devait être utilisé, il faudrait des<span class="icone truc"></span>
plutôt que des<i class="spicon_truc"></i>
Et les gros fichiers de sprites svg, ça diminue le nombre de hits, c’est sûr, mais charger plusieurs centaines de Ko de Sprites pour afficher 3 icônes, c’est peut être beaucoup.
Et c’est la misère à mettre à jour sans outil spécialisé qui regénère tout le code, et vérifier que ça ne casse pas des choses...