Recherche avancée

Médias (39)

Mot : - Tags -/audio

Autres articles (59)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans 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 (...)

Sur d’autres sites (10130)

  • ffpmeg vs ffprobe performance

    5 octobre 2023, par Thomas

    I wanted to try extracting frames at scene changes with ffmpeg, vs. getting the frame numbers with ffprobe and extracting them later.

    



    But I had a surprise : ffprobe seems to be much slower than ffmpeg, while ffmpeg is taking the frames, resizing and saving them as well.

    



    ffmpeg command line :

    



    ffmpeg -hide_banner -y -i d:/test/m/long.mkv -vf "select=gt(scene\,0.4), showinfo, scale=320:-1, tile=12x200" -vsync 0 thumbnails%03d.png


    



    this takes : 488 seconds

    



    ffprobe command line :

    



    ffprobe -show_frames -of compact=p=0 -f lavfi "movie=/test/m/long.mkv,select=gt(scene\,.4)"


    



    this takes : 899 seconds

    



    I am missing something ?

    


  • ffmpeg+php Add Music to video

    19 septembre 2013, par user2792392

    Dear Sir i create this code for simple video convert from one to another.
    i want to add more feature like
    ffmpeg+php Add Music to video

    how to do it ??
    convert request to begin encoding the video, and status request that retrieves
    * the current encoding status so the progress bar can be updated.
    *
    * The $outfile variable should be changed to an input value, but is set this way
    * for now for testing purposes.
    *
    * @ver 0.1
    */
    require 'config.php' ;
    require 'functions.php' ;

    //<<-- CHECK FOR ERRORS -->>//
    $type       = _chkVal('type', '');
    $fkey       = _chkVal('fkey', '');
    $infile     = _chkVal('filename', '');
    $outfile    = 'testing.mp4';
    $params     = _chkVal('params', '');

    // Check Request Type
    $validTypes = array('convert', 'status');

    if( !in_array($type, $validTypes) )
       json_response(array('fkey' => $fkey, 'msg' => 'Invalid process type!'), true);

    // $fkey will always be 8 characters.
    // It's created with PHP's hash() function using 'crc32' algorithm in index.php
    if( strlen($fkey) != 8 )
       json_response(array_merge(array('fkey' => '', 'msg' => 'Invalid fkey given!')), true);

    // Filename should be at least 5 (1 character + 4 character extension. EX : i.mp4)
    if( $type == 'convert' && ( strlen($infile) < 5) )
       json_response(array('fkey' => $fkey, 'msg' => 'Invalid input filename given!'), true);

    // Filename should be at least 5 (1 character + 4 character extension. EX : i.mp4)
    if( $type == 'convert' && ( strlen($outfile) < 5) )
       json_response(array('fkey' => $fkey, 'msg' => 'Invalid output filename given!'), true);

    if( $type == 'convert' && (strlen($params) < 1) )
       json_response(array('fkey' => $fkey, 'msg' => 'Invalid parameters given!'), true);

    //<<-- END OF ERROR CHECK -->>//


    $ffmpegConvert = new ffmpegConvert($fkey);


    //<<-- PROCESS REQUEST -->>//

    // Start the video conversion
    if( $type == 'convert' )
    {
       $ffmpegConvert->exec( $infile, $outfile, $params, $fkey );
       // Add 2 second delay to give the server time to start writing the status log,
       // otherwise $ffmpegConvert->jsonStatus() will trigger an error...
       sleep(2);
       $ffmpegConvert->jsonStatus();
    }

    // Check on video conversion progress
    if( $_POST['type'] == 'status' )
    {
       $ffmpegConvert->jsonStatus();
    }

    //<<-- END OF PROCESS REQUEST -->>//

    // Shouldn't get to this, but if so, let's send a message for debugging reasons....
    json_response(array('msg' => 'Unhandled request type!'), true);
  • How to make a basic youtube music bot work with searching titles instead of the URL

    21 janvier 2021, par Brandon

    Hello so i've followed this tutorial and added this code to my current bot to make it have a music bot function. Im wondering how to make the following code work with the youtube search function, for example right now I have to do !play URL but I would also like to be able to do !play name of song then the bot will search and play the most matched song.

    



    I am new to javascript but I know I shouldn't be looking for handouts, but some help would be appreciated.

    



    const Discord = require("discord.js");
const { prefix, token } = require("./config.json");
const ytdl = require("ytdl-core");

const client = new Discord.Client();

const queue = new Map();

client.once("ready", () => {
  console.log("Ready!");
});

client.once("reconnecting", () => {
  console.log("Reconnecting!");
});

client.once("disconnect", () => {
  console.log("Disconnect!");
});

client.on("message", async message => {
  if (message.author.bot) return;
  if (!message.content.startsWith(prefix)) return;

  const serverQueue = queue.get(message.guild.id);

  if (message.content.startsWith(`${prefix}play`)) {
    execute(message, serverQueue);
    return;
  } else if (message.content.startsWith(`${prefix}skip`)) {
    skip(message, serverQueue);
    return;
  } else if (message.content.startsWith(`${prefix}stop`)) {
    stop(message, serverQueue);
    return;
  } else {
    message.channel.send("You need to enter a valid command!");
  }
});

async function execute(message, serverQueue) {
  const args = message.content.split(" ");

  const voiceChannel = message.member.voice.channel;
  if (!voiceChannel)
    return message.channel.send(
      "You need to be in a voice channel to play music!"
    );
  const permissions = voiceChannel.permissionsFor(message.client.user);
  if (!permissions.has("CONNECT") || !permissions.has("SPEAK")) {
    return message.channel.send(
      "I need the permissions to join and speak in your voice channel!"
    );
  }

  const songInfo = await ytdl.getInfo(args[1]);
  const song = {
    title: songInfo.title,
    url: songInfo.video_url
  };

  if (!serverQueue) {
    const queueContruct = {
      textChannel: message.channel,
      voiceChannel: voiceChannel,
      connection: null,
      songs: [],
      volume: 5,
      playing: true
    };

    queue.set(message.guild.id, queueContruct);

    queueContruct.songs.push(song);

    try {
      var connection = await voiceChannel.join();
      queueContruct.connection = connection;
      play(message.guild, queueContruct.songs[0]);
    } catch (err) {
      console.log(err);
      queue.delete(message.guild.id);
      return message.channel.send(err);
    }
  } else {
    serverQueue.songs.push(song);
    return message.channel.send(`${song.title} has been added to the queue!`);
  }
}

function skip(message, serverQueue) {
  if (!message.member.voice.channel)
    return message.channel.send(
      "You have to be in a voice channel to stop the music!"
    );
  if (!serverQueue)
    return message.channel.send("There is no song that I could skip!");
  serverQueue.connection.dispatcher.end();
}

function stop(message, serverQueue) {
  if (!message.member.voice.channel)
    return message.channel.send(
      "You have to be in a voice channel to stop the music!"
    );
  serverQueue.songs = [];
  serverQueue.connection.dispatcher.end();
}

function play(guild, song) {
  const serverQueue = queue.get(guild.id);
  if (!song) {
    serverQueue.voiceChannel.leave();
    queue.delete(guild.id);
    return;
  }

  const dispatcher = serverQueue.connection
    .play(ytdl(song.url))
    .on("finish", () => {
      serverQueue.songs.shift();
      play(guild, serverQueue.songs[0]);
    })
    .on("error", error => console.error(error));
  dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
  serverQueue.textChannel.send(`Start playing: **${song.title}**`);
}

client.login(token);