
Recherche avancée
Médias (91)
-
GetID3 - Boutons supplémentaires
9 avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
-
Core Media Video
4 avril 2013, par
Mis à jour : Juin 2013
Langue : français
Type : Video
-
The pirate bay depuis la Belgique
1er avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
-
Exemple de boutons d’action pour une collection collaborative
27 février 2013, par
Mis à jour : Mars 2013
Langue : français
Type : Image
-
Exemple de boutons d’action pour une collection personnelle
27 février 2013, par
Mis à jour : Février 2013
Langue : English
Type : Image
Autres articles (81)
-
Support de tous types de médias
10 avril 2011Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)
-
List of compatible distributions
26 avril 2011, parThe table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...) -
Automated installation script of MediaSPIP
25 avril 2011, parTo overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
The documentation of the use of this installation script is available here.
The code of this (...)
Sur d’autres sites (11947)
-
Core : Use :disabled selector to match disabled elements
12 mai 2015, par weitzhandlerCore : Use :disabled selector to match disabled elements
This also applies to elements that are inside a fieldset with a disabled
attribute, causing an inherited disabled state. Only matching the disabled
attribute directly won’t capture that.Closes #1474
-
Problems accessing codecs with ggplot and gganimate
19 décembre 2016, par noLongerRandomUsing gganimate. Can’t figure out how to properly access functionality of ffmpeg, specifically I want to change the codec I’m using in the video file I’m outputting.
# load packages
library(ggplot)
library(animation)
library(gganimate)
# Here's my data.frame
myDf <- data.frame(
year = c(1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014),
bottom50 = c(0.195, 0.191, 0.187, 0.192, 0.196, 0.205, 0.207, 0.210, 0.209, 0.204, 0.203, 0.204, 0.205, 0.203, 0.202, 0.200, 0.200, 0.201, 0.199, 0.195, 0.190, 0.183, 0.179, 0.179, 0.177, 0.172, 0.169, 0.169, 0.168, 0.166, 0.158, 0.159, 0.158, 0.154, 0.151, 0.148, 0.149, 0.148, 0.146, 0.149, 0.148, 0.145, 0.142, 0.138, 0.135, 0.137, 0.137, 0.136, 0.130, 0.127, 0.123, 0.127, 0.125), top1 = c(0.126, 0.127, 0.129, 0.128, 0.126, 0.123, 0.122, 0.115, 0.110, 0.111, 0.111, 0.109, 0.106, 0.105, 0.105, 0.107, 0.108, 0.111, 0.107, 0.110, 0.112, 0.115, 0.125, 0.125, 0.122, 0.133, 0.149, 0.145, 0.145, 0.139, 0.150, 0.146, 0.147, 0.153, 0.160, 0.166, 0.169, 0.177, 0.183, 0.173, 0.171, 0.172, 0.183, 0.194, 0.201, 0.199, 0.195, 0.185, 0.198, 0.196, 0.208, 0.196, 0.202)
)
#Basic plot
p <- ggplot(myDf, aes(x = year, y = bottom50, frame = year)) +
geom_line(color = "dodgerblue") +
geom_line(aes(y = top1), color = "darkred")The non-animated version gets me what I want :
And I get an animation version output to video with :
gganimate(p, interval = .1, title_frame = FALSE, "income.mp4")
That’s fine, but I want to change some the output parameters, specifically : alter the dimensions, the frame rate, and use a different codec.
# change some of the options
ani.options(ani.height = 1080, ani.width = 1920,
interval = 0.04166667, other.opts = "-vcodec qtrle -f mov")
# re-animate
gganimate(p, title_frame = FALSE, "income.mov")That gives me the following error :
Error in animation_saver(saver, filename) :
Don't know how to save animation of type movI’m using ’.mov’ as my file extension because I’m trying to change to the Animation codec (so it’s no longer a .mp4 wrapper). I’ve got ffmpeg installed, so this is probably a syntax issue. But the documentation isn’t very clear here ; gganimate doesn’t have any documentation on changing codecs (or outputting any video besides an mp4), and the animation package is light on specifics as well.
-
Discord bot transmitting audio not working
24 avril 2024, par R5B3NBBthis discord bot is supposed to join the users voice channel and play music, everything works except for it not transmitting audio. from what I can gather the error is happening somewhere between it playing the audio file and it being transmitted. any helps appreciated and I'm sure it's not on the discord bot side since I gave it admin permissions and it still didn't work.
should also be mentioned that im not a veteran when it comes to JavaScript so if the error s obvious sorry.


const { Client, GatewayIntentBits, SlashCommandBuilder, MessageEmbed } = require("discord.js");
const { joinVoiceChannel, createAudioPlayer, NoSubscriberBehavior, createAudioResource } = require('@discordjs/voice');
const { token } = require("./config.json");
const fs = require('fs');

const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildMessageReactions] });

client.once("ready", () => {
 console.log("Bot active.");

 const ping = new SlashCommandBuilder()
 .setName('ping')
 .setDescription('Replies with pong!');

 const hello = new SlashCommandBuilder()
 .setName('hello')
 .setDescription('Says hello!')
 .addUserOption(option =>
 option
 .setName('user')
 .setDescription('The user to say hi to')
 .setRequired(false)
 );

 const echo = new SlashCommandBuilder()
 .setName('echo')
 .setDescription("Echo's a message")
 .addStringOption(option =>
 option
 .setName('text')
 .setDescription('The text to repeat')
 .setRequired(true)
 );

 const mata = new SlashCommandBuilder()
 .setName('mata')
 .setDescription('Green, ma-ta is here!');

 const eddy = new SlashCommandBuilder()
 .setName('eddy')
 .setDescription('Original reggae music!')
 .addStringOption(option =>
 option
 .setName('local_audio')
 .setDescription('Provide the name of the local audio file')
 .setRequired(true)
 );

 const disconnect = new SlashCommandBuilder()
 .setName('disconnect')
 .setDescription('Disconnects the bot from the voice channel');

 const commands = [ping, hello, echo, mata, eddy, disconnect];

 commands.forEach(command => client.guilds.cache.forEach(guild => guild.commands.create(command)));


});

client.on('interactionCreate', async interaction => {
 console.log("Interaction received.");
 
 if (!interaction.isCommand()) {
 console.log("Not a command interaction.");
 return;
 }

 const { commandName, options, member, guild } = interaction;
 console.log("Command name:", commandName);

 if (commandName === 'ping') {
 console.log("Ping command executed.");
 await interaction.reply("Pong!");
 } else if (commandName === 'hello') {
 console.log("Hello command executed.");
 let user = options.getUser('user') || member.user;
 await interaction.reply(`Hello ${user.username}!`);
 } else if (commandName === 'echo') {
 console.log("Echo command executed.");
 const text = options.getString('text');
 await interaction.reply(text);
 } else if (commandName === 'mata') {
 console.log("Mata command executed.");
 const embed = new MessageEmbed()
 .setColor('#00FF00')
 .setTitle('This is mata!')
 .setDescription('She is very ugly!')
 .setImage('https://scottbarrykaufman.com/wp-content/uploads/2011/08/pig-ugly-woman-fat-face.jpg');

 await interaction.reply({ embeds: [embed] });
 } else if (commandName === 'eddy') {
 console.log("Eddy command executed.");

 const voiceChannel = member.voice.channel;
 if (!voiceChannel) {
 await interaction.reply("You need to be in a voice channel to use this command.");
 return;
 }

 const connection = joinVoiceChannel({
 channelId: voiceChannel.id,
 guildId: guild.id,
 adapterCreator: guild.voiceAdapterCreator,
 });

 connection.on('stateChange', (state) => {
 console.log(`Connection state changed to ${state.status}`);
 });

 connection.on('error', (error) => {
 console.error('Connection error:', error);
 });

 const localAudioFile = options.getString('local_audio');
 const filePath = `./audio/Gorillaz.mp3`;

 console.log("File path:", filePath);

 if (!fs.existsSync(filePath)) {
 console.log("File does not exist.");
 await interaction.reply("The specified local audio file does not exist.");
 return;
 }

 const audioPlayer = createAudioPlayer({
 behaviors: {
 noSubscriber: NoSubscriberBehavior.Pause,
 },
 });

 const stream = fs.createReadStream(filePath);
 const resource = createAudioResource(stream);
 audioPlayer.play(resource);

 connection.subscribe(audioPlayer);

 console.log("Audio playback started.");
 await interaction.reply("Now playing audio in your voice channel!");
 } else if (commandName === 'disconnect') {
 console.log("Disconnect command executed.");
 const voiceChannel = member.voice.channel;

 if (!voiceChannel) {
 await interaction.reply("The bot is not in a voice channel.");
 return;
 }

 const connection = joinVoiceChannel({
 channelId: voiceChannel.id,
 guildId: guild.id,
 adapterCreator: guild.voiceAdapterCreator,
 });

 connection.on('stateChange', (state) => {
 console.log(`Connection state changed to ${state.status}`);
 });

 connection.on('error', (error) => {
 console.error('Connection error:', error);
 });

 if (connection) {
 connection.destroy();
 console.log("Disconnected from the voice channel.");
 }
 }
});

client.login(token);