Recherche avancée

Médias (1)

Mot : - Tags -/net art

Autres articles (104)

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

  • Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs

    12 avril 2011, par

    La manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
    Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.

  • Encodage et transformation en formats lisibles sur Internet

    10 avril 2011

    MediaSPIP transforme et ré-encode les documents mis en ligne afin de les rendre lisibles sur Internet et automatiquement utilisables sans intervention du créateur de contenu.
    Les vidéos sont automatiquement encodées dans les formats supportés par HTML5 : MP4, Ogv et WebM. La version "MP4" est également utilisée pour le lecteur flash de secours nécessaire aux anciens navigateurs.
    Les documents audios sont également ré-encodés dans les deux formats utilisables par HTML5 :MP3 et Ogg. La version "MP3" (...)

Sur d’autres sites (9611)

  • OpusError while using ffmpeg library in discord.py

    18 avril 2021, par The Assignment Nerd

    While playing a local file or youtube audio, I get OpusError: invalid argument error

    


    The play command looks like :

    


    # bot.py
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
from models import *
from discord.voice_client import VoiceClient
import logging
from config import *
import youtube_dl
from youtube_dl import YoutubeDL

@bot.command()
async def play(ctx):
    user=ctx.author
    voice_channel=user.voice.channel
    channel=None
    # only play music if user is in a voice channel
    if voice_channel:
        # grab user's voice channel
        channel=voice_channel.name
        await ctx.send('User is in channel: '+ channel)
        # create StreamPlayer
        vc = await voice_channel.connect()
        url="https://www.youtube.com/watch?v=AOeY-nDp7hI"
        YDL_OPTIONS = {'format': 'bestaudio', 'noplaylist':'True'}
        FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
        voice = discord.utils.get(bot.voice_clients, guild=ctx.guild)
        print(0)
        if not voice.is_playing():
            print("1")
            with YoutubeDL(YDL_OPTIONS) as ydl:
                info = ydl.extract_info(url, download=False)
                print(2)
            URL = info['formats'][0]['url']
            print(3)
            voice.play(discord.FFmpegPCMAudio(URL, **FFMPEG_OPTIONS))
            print(4)
            voice.is_playing()
            print("Strated playing")
        else:
            await ctx.send("Already playing song")
            return
    else:
        await ctx.send('User is not in a channel.')


    


    My error :

    


    0
1
[youtube] AOeY-nDp7hI: Downloading webpage
[youtube] Downloading just video AOeY-nDp7hI because of --no-playlist
2
3
Ignoring exception in command play:
Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.9/site-packages/discord/ext/commands/core.py", line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File "/Users/mohit/programming/discord/area-51-helper/main.py", line 115, in play
    voice.play(discord.FFmpegPCMAudio(URL, **FFMPEG_OPTIONS))
  File "/opt/homebrew/lib/python3.9/site-packages/discord/voice_client.py", line 564, in play
    self.encoder = opus.Encoder()
  File "/opt/homebrew/lib/python3.9/site-packages/discord/opus.py", line 291, in __init__
    self.set_fec(True)
  File "/opt/homebrew/lib/python3.9/site-packages/discord/opus.py", line 326, in set_fec
    _lib.opus_encoder_ctl(self._state, CTL_SET_FEC, 1 if enabled else 0)
  File "/opt/homebrew/lib/python3.9/site-packages/discord/opus.py", line 92, in _err_lt
    raise OpusError(result)
discord.opus.OpusError: invalid argument

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.9/site-packages/discord/ext/commands/bot.py", line 939, in invoke
    await ctx.command.invoke(ctx)
  File "/opt/homebrew/lib/python3.9/site-packages/discord/ext/commands/core.py", line 863, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/discord/ext/commands/core.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: OpusError: invalid argument


    


    I'm using these version

    


    discord.py==1.0.1
ffmpeg==4.3.2
youtube_dl==2021.4.17


    


  • ffmpeg m4a/m4b/mp4 output file's "Time" value is incorrect when read into iTunes

    2 juin 2019, par PistoletPierre

    I’m using ffmpeg to convert audiobooks to m4a/m4b/mp4. All seems to work until trying to play them in iTunes. It plays in VLC, QuickTime, and MacOS’s Quicklook without issue.

    "So why are you posting here ? This isn’t an iTunes forum."

    I’m hoping this is iTunes being picky about file formats and that I can add some magic argument to my ffmpeg command and have it spit out something that iTunes can read.

    Below is the bash function I’m using to do the conversion. I’ve tried m4a/mp4/m4b as values for TEMP_FILE_EXTENSION and tried opening the intermediate file as well. It’s always the same corrupted "Time" value when you put it in iTunes.

    dedrm_audible () {
     # Check for AtomicParsley, ffmpeg, and 3 args
     if (! type AtomicParsley >/dev/null 2>/dev/null) || (! type ffmpeg >/dev/null 2>/dev/null) || [ ! $# -eq 3 ]; then
       echo "Usage:"
       echo "    dedrm_audible <path to="to"> <activation bytes="bytes"> <path to="to" output="output" file="file">"
       echo "    Note: AtomicParsley and ffmpeg must be in PATH variable"
       return
     fi
     local ORIGINAL_PWD="$(pwd)"
     local TEMP_DIR="/tmp/audible"
     local AUDIOBOOK_FILE="$1"
     local ACTIVATION_BYTES="$2"
     local OUTPUT_FILE="$3"
     local FULL_AUDIOBOOK_PATH="$(realpath "${AUDIOBOOK_FILE}")"
     local OUTPUT_PATH="$(realpath "${OUTPUT_FILE}")"
     local TEMP_FILE_EXTENSION="m4a"

     mkdir -p "${TEMP_DIR}"
     cd "${TEMP_DIR}"

     # Extract the book cover
     ffmpeg -activation_bytes "${ACTIVATION_BYTES}" -i "${FULL_AUDIOBOOK_PATH}" -vcodec copy artwork.png
     # Convert the audio
     ffmpeg -activation_bytes "${ACTIVATION_BYTES}" -i "${FULL_AUDIOBOOK_PATH}" -vn -c:a copy -v debug output.${TEMP_FILE_EXTENSION}
     # Add the cover to the new file
     AtomicParsley output.${TEMP_FILE_EXTENSION} --artwork artwork.png --overWrite

     # Put it where you want it and clean up
     cp output.${TEMP_FILE_EXTENSION} "${OUTPUT_PATH}"
     rm artwork.png
     rm output.${TEMP_FILE_EXTENSION}
     cd "${ORIGINAL_PWD}"
    }
    </path></activation></path>

    It goes off without a hitch. The new file is there waiting for me, with all the metadata including the cover when I do a "Get Info" or "Quick look" on it (I’m on MacOS). But when opening it and trying to play it in iTunes, the "time" field is way off and it immediately skips to the next song/audiobook in the queue.

    Attempts to convert it within iTunes fail immediately - too quickly to see what’s happening. The errors in the console simply say "Assert failure :" (with nothing after the colon).

    edit : Tommy answered the question. Here’s a working bash function :

    dedrm_audible () {
     # Check for AtomicParsley, ffmpeg, and 3 args
     if (! type AtomicParsley >/dev/null 2>/dev/null) || (! type ffmpeg >/dev/null 2>/dev/null) || [ ! $# -eq 3 ]; then
       echo "Usage:"
       echo "    dedrm_audible <path to="to"> <activation bytes="bytes"> <path to="to" output="output" file="file">"
       echo "    Note: AtomicParsley and ffmpeg must be in PATH variable"
       return
     fi
     local ORIGINAL_PWD="$(pwd)"
     local TEMP_DIR="/tmp/audible"
     local AUDIOBOOK_FILE="$1"
     local ACTIVATION_BYTES="$2"
     local OUTPUT_FILE="$3"
     # Alternative to realpath (since I read somewhere that it's not there by default on some systems): OUTPUT_PATH="$( cd "$( dirname "$OUTPUT_FILE" )" &amp;&amp; pwd )"
     local FULL_AUDIOBOOK_PATH="$(realpath "${AUDIOBOOK_FILE}")"
     local AUDIOBOOK_NAME="${$(basename "${FULL_AUDIOBOOK_PATH}")%.aax}.m4a"
     local OUTPUT_PATH="$(realpath "${OUTPUT_FILE}")"
     local TEMP_FILE_EXTENSION="m4a"

     mkdir -p "${TEMP_DIR}"
     cd "${TEMP_DIR}"

     cp "${FULL_AUDIOBOOK_PATH}" "${AUDIOBOOK_NAME}"

     # Extract the book cover
     ffmpeg -activation_bytes "${ACTIVATION_BYTES}" -i "${AUDIOBOOK_NAME}" -vcodec copy artwork.png
     # Convert the audio
     ffmpeg -activation_bytes "${ACTIVATION_BYTES}" -i "${AUDIOBOOK_NAME}" -vn -c:a copy -v debug output.${TEMP_FILE_EXTENSION}
     # Add the cover to the new file
     AtomicParsley output.${TEMP_FILE_EXTENSION} --artwork artwork.png --overWrite

     # Put it where you want it and clean up
     mv output.${TEMP_FILE_EXTENSION} "${OUTPUT_PATH}"
     rm artwork.png
     rm "${AUDIOBOOK_NAME}"
     cd "${ORIGINAL_PWD}"
    }
    </path></activation></path>
  • When I try to play my Music Discord Bot it doesn't play music

    1er juin 2020, par EthanDevelops

    When I try to play my Music Discord Bot it doesn't play music. It uses ytdl-core and ffmpeg&#xA;My code is :

    &#xA;&#xA;

    const Discord = require(&#x27;discord.js&#x27;);&#xA;const bot = new Discord.Client&#xA;&#xA;const ytdl = require("ytdl-core")&#xA;&#xA;&#xA;const token = &#x27;API TOKEN&#x27;&#xA;&#xA;const PREFIX = &#x27;?&#x27;;&#xA;&#xA;var version = &#x27;1.2&#x27;;&#xA;&#xA;var servers = {};&#xA;&#xA;bot.on(&#x27;ready&#x27;, () =>{&#xA;    console.log(&#x27;This bot is online!&#x27; &#x2B; version);&#xA;})&#xA;&#xA;bot.on(&#x27;message&#x27;, message => {&#xA;&#xA;    let args = message.content.substring(PREFIX.length).split(" ");&#xA;&#xA;    switch(args[0]){&#xA;        case &#x27;play&#x27;:&#xA;&#xA;            function play(connection, message){&#xA;                var server = servers[message.guild.id];&#xA;&#xA;                server.dispatcher = connection.play(ytdl(server.queue[0], {filter: "audioonly"}))&#xA;&#xA;                server.queue.shift();&#xA;&#xA;                server.dispatcher.on("end", function(){&#xA;                    if(server.queue[0]){&#xA;                        play(connection, message);&#xA;                    }else {&#xA;                        connection.disconnect();&#xA;                    }&#xA;                });&#xA;&#xA;&#xA;&#xA;            }&#xA;&#xA;&#xA;&#xA;            if(!args[1]){&#xA;                message.channel.send("You need to provide a link!")&#xA;                return;&#xA;            }&#xA;&#xA;            if(!message.member.voice.channel){&#xA;               message.channel.send("You must be in a Voice Channel to play the bot!")&#xA;               return;&#xA;            }&#xA;&#xA;            if(!servers[message.guild.id]) servers[message.guild.id] = {&#xA;                queue: []&#xA;            }&#xA;&#xA;            var server = servers[message.guild.id];&#xA;&#xA;            server.queue.push(args[1]);&#xA;&#xA;            if(!message.guild.voice) message.member.voice.channel.join().then(function(connection){&#xA;                play(connection, message);&#xA;            })&#xA;&#xA;        break;&#xA;    }&#xA;&#xA;&#xA;&#xA;    });&#xA;&#xA;&#xA;    bot.login(token);&#xA;

    &#xA;&#xA;

    Whenever I try to play a song this error happens :

    &#xA;&#xA;

    &#xA;

    (node:5180) UnhandledPromiseRejectionWarning : Error : FFmpeg/avconv not&#xA; found !&#xA; at Function.getInfo (C :\Users\picar\Desktop\DiscordMusicBot\node_modules\prism-media\src\core\FFmpeg.js:130:11)&#xA; at Function.create (C :\Users\picar\Desktop\DiscordMusicBot\node_modules\prism-media\src\core\FFmpeg.js:143:38)&#xA; at new FFmpeg (C :\Users\picar\Desktop\DiscordMusicBot\node_modules\prism-media\src\core\FFmpeg.js:44:27)&#xA; at AudioPlayer.playUnknown (C :\Users\picar\Desktop\DiscordMusicBot\node_modules\discord.js\src\client\voice\player\BasePlayer.js:47:20)&#xA; at VoiceConnection.play (C :\Users\picar\Desktop\DiscordMusicBot\node_modules\discord.js\src\client\voice\util\PlayInterface.js:71:28)&#xA; at play (C :\Users\picar\Desktop\DiscordMusicBot\index.js:29:48)&#xA; at C :\Users\picar\Desktop\DiscordMusicBot\index.js:66:17&#xA; at processTicksAndRejections (internal/process/task_queues.js:97:5)&#xA; (node:5180) UnhandledPromiseRejectionWarning : Unhandled promise rejection. This error originated either by throwing inside of an async&#xA; function without a catch block, or by rejecting a promise which was&#xA; not handled with .catch(). To terminate the node process on unhandled&#xA; promise rejection, use the CLI flag --unhandled-rejections=strict&#xA; (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode).&#xA; (rejection id : 1)&#xA; (node:5180) [DEP0018] DeprecationWarning : Unhandled promise rejections are deprecated. In the future, promise rejections that are&#xA; not handled will terminate the Node.js process with a non-zero exit&#xA; code

    &#xA;

    &#xA;&#xA;

    I'm getting very frustrated as the tutorial I'm watching is using a different version of everything !!! Please help.

    &#xA;