Recherche avancée

Médias (91)

Autres articles (81)

  • Support de tous types de médias

    10 avril 2011

    Contrairement à 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, par

    The 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, par

    To 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 weitzhandler
    Core : 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 noLongerRandom

    Using 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 :

    enter image description here

    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 mov

    I’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 R5B3NBB

    this 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);