Recherche avancée

Médias (1)

Mot : - Tags -/net art

Autres articles (84)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

Sur d’autres sites (11962)

  • Anyway to get current playtime of a song ?

    2 décembre 2019, par Blue Lightning

    So this is the basic voice that I’m currently using to play music through my bot. I’m streaming the audio (using the stream async function) opposed to downloading it local. Anyway I can get the current playtime of the song that is being played ?

    So whenever someone plays a song, they can, whenever they want, see how much of the song they played through already.

    import asyncio

    import discord
    import youtube_dl

    from discord.ext import commands

    # Suppress noise about console usage from errors
    youtube_dl.utils.bug_reports_message = lambda: ''


    ytdl_format_options = {
       'format': 'bestaudio/best',
       'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s',
       'restrictfilenames': True,
       'noplaylist': True,
       'nocheckcertificate': True,
       'ignoreerrors': False,
       'logtostderr': False,
       'quiet': True,
       'no_warnings': True,
       'default_search': 'auto',
       'source_address': '0.0.0.0'
    }

    ffmpeg_options = {
       'options': '-vn'
    }

    ytdl = youtube_dl.YoutubeDL(ytdl_format_options)


    class YTDLSource(discord.PCMVolumeTransformer):
       def __init__(self, source, *, data, volume=0.5):
           super().__init__(source, volume)

           self.data = data

           self.title = data.get('title')
           self.url = data.get('url')

       @classmethod
       async def from_url(cls, url, *, loop=None, stream=False):
           loop = loop or asyncio.get_event_loop()
           data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=not stream))

           if 'entries' in data:
               # take first item from a playlist
               data = data['entries'][0]

           filename = data['url'] if stream else ytdl.prepare_filename(data)
           return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data)


    class Music(commands.Cog):
       def __init__(self, bot):
           self.bot = bot

       @commands.command()
       async def join(self, ctx, *, channel: discord.VoiceChannel):
           """Joins a voice channel"""

           if ctx.voice_client is not None:
               return await ctx.voice_client.move_to(channel)

           await channel.connect()

       @commands.command()
       async def stream(self, ctx, *, url):
           """Streams from a url (same as yt, but doesn't predownload)"""

           async with ctx.typing():
               player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True)
               ctx.voice_client.play(player, after=lambda e: print('Player error: %s' % e) if e else None)

           await ctx.send('Now playing: {}'.format(player.title))

       @commands.command()
       async def volume(self, ctx, volume: int):
           """Changes the player's volume"""

           if ctx.voice_client is None:
               return await ctx.send("Not connected to a voice channel.")

           ctx.voice_client.source.volume = volume / 100
           await ctx.send("Changed volume to {}%".format(volume))

       @commands.command()
       async def stop(self, ctx):
           """Stops and disconnects the bot from voice"""

           await ctx.voice_client.disconnect()

       @play.before_invoke
       @yt.before_invoke
       @stream.before_invoke
       async def ensure_voice(self, ctx):
           if ctx.voice_client is None:
               if ctx.author.voice:
                   await ctx.author.voice.channel.connect()
               else:
                   await ctx.send("You are not connected to a voice channel.")
                   raise commands.CommandError("Author not connected to a voice channel.")
           elif ctx.voice_client.is_playing():
               ctx.voice_client.stop()

    bot = commands.Bot(command_prefix=commands.when_mentioned_or("!"),
                      description='Relatively simple music bot example')

    @bot.event
    async def on_ready():
       print('Logged in as {0} ({0.id})'.format(bot.user))
       print('------')

    bot.add_cog(Music(bot))
    bot.run('token')
  • Superimpose audio track on plot animation

    17 février 2023, par Antoine101

    I plot a matrix in a standard matplotlib figure with imshow. Each matrix is the result of a signal processing calculation on a time signal snapshot (0.2s). I plot each snapshot one after the other (the signal is several seconds long) in a loop and record the animation with FFMPegWriter, setting the FPS so that it matches real time. The output is an MP4 file.

    


    Now, I'd like to add a soundtrack on top of it, of the time signal that was used to calculate the matrices.

    


    How would you do that ? I scrolled a lot but didn't find any suitable solution.
Any idea of libraries or packages ?

    


    Many thanks in advance.

    


  • Announcing the World’s Worst VP8 Encoder

    5 octobre 2010, par Multimedia Mike — Outlandish Brainstorms, VP8

    I wanted to see if I could write an extremely basic VP8 encoder. It turned out to be one of the hardest endeavors I have ever attempted (and arguably one of the least successful).

    Results
    I started with the Big Buck Bunny title image :



    And this is the best encoding that this experiment could yield :



    Squint hard enough and you can totally make out the logo. Pretty silly effort, I know. It should also be noted that the resultant .webm file holding that single 400×225 image was 191324 bytes. When FFmpeg decoded it to a PNG, it was only 187200 bytes.

    The Story
    Remember my post about a naive SVQ1 encoder ? Long story short, I set out to do the same thing with VP8. (I wanted to the same thing with VP3/Theora for years. But take a good look at what it would entail to create even the most basic bitstream. As involved as VP8 may be, its bitstream is absolutely trivial compared to VP3/Theora.)

    With the naive SVQ1 encoder, the goal was to create a minimally compliant SVQ1 encoded bitstream. For this exercise, I similarly hypothesized what it would take to create the most basic, syntactically correct VP8 bitstream with the least amount of effort. These are the overall steps I came up with :

    • Intra-only
    • Create a basic bitstream header that disables any extra features (no modification of default tables)
    • Use a static quantizer
    • Use intra 16×16 coding for each macroblock
    • Use vertical prediction for the 16×16 intra coding

    For coding each macroblock :

    • Subtract vertical predictor from each row
    • Perform forward transform on each 4×4 sub block
    • Perform forward WHT on luma plane DCT coefficients
    • Pack the coefficients into the bitstream via the Boolean encoder

    It all sounds so simple. But, like I said in the SVQ1 post, it’s all very much like carefully bootstrapping a program to run on a particular CPU, and the VP8 decoder serves as the CPU. I’m confident that I have the bitstream encoding correct because, at the very least, the decoder agrees precisely with the encoder about the numbers represented by those 0s and 1s.

    What’s Wrong ?
    Compromises were made for the sake of getting some vaguely recognizable image encoded in a minimally valid manner. One big stumbling block is that I couldn’t seem to encode an end of block (EOB) condition correctly. I then realized that it’s perfectly valid to just encode a lot of zero coefficients rather than signaling EOB. An encoding travesty, I know, and likely one reason that the resulting filesize is so huge.

    More drama occurred when I hit my first block that had all zeros. There were complications in that situation that I couldn’t seem to avoid. So I forced the first AC coefficient to be 1 in that case. Hey, the decoder liked it.

    As for the generally weird look of the decoded image, I’m thinking that could either be : A) an artifact of forcing 16×16 vertical prediction or ; or B) a mistake in the way that I transformed and predicted stuff before sending it to the decoder. The smart money is on a combination of both A and B.

    Then again, as the SVQ1 experiment demonstrated, I shouldn’t expect extraordinary visual quality when setting the bar this low (i.e., just getting some bag of bits that doesn’t make the decoder barf).