Recherche avancée

Médias (1)

Mot : - Tags -/biomaping

Autres articles (82)

  • 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 (9967)

  • Unknown issue with Discord.js and ytdl, completely skips playing audio

    21 novembre 2017, par Gman0064

    One of the commands I have for my Discord bot is to play a predefined music clip in the current user’s voice channel. The bot can connect, but rather than playing the song, it instantaneously leaves. I’ve tried using both connection.playStream as well as connection.playFile, and both seem to return the same (lack of) output. Am I missing some sort of dependency or is my code just written incorrectly ? Any help would be greatly appreciated !

    const Discord = require('discord.js');
    const ytdl = require('ytdl-core');
    const client = new Discord.Client();
    const streamOptions = { seek: 0, volume: 1};

    client.on('ready', () => {
     console.log('Login Success');
    });

    client.on('message', message => {
     if (message.content === '$vaporwave') {
       if (!message.guild) return;
       if(message.member.voiceChannel) {
         message.member.voiceChannel.join().then(connection => {
           console.log("joined channel");
           //const stream = ytdl('https://www.youtube.com/watch?v=cU8HrO7XuiE', { filter : 'audioonly' });
           const dispatcher = connection.playFile('./mcp420.mp3');
           //const dispatcher = connection.playStream(stream, streamOptions);
           dispatcher.on("end", end => {
             console.log("left channel");
             message.member.voiceChannel.leave();
           });
         }).catch(err => console.log(err));
       }
     }
    });
    • NPM v4.6.1
    • Node.js v8.9.1
    • FFMPEG v3.2.8-1
  • How can I dynamically update metadata in audio output with libav so that updates appear in MPV ?

    9 mars, par Teddy

    My ultimate goal is to proxy an internet radio station and programmatically add metadata to it during the stream that can be displayed and updated in MPV, the media player playing the audio.

    


    The metadata I would like to add is primarily the song title, but ideally additional information including artist, composer, and album.

    


    I envision running the proxy program like this :

    


    $ curl https://example.com/stream.mp3 | ./proxy_add_metadata | mpv -


    


    or maybe this :

    


    $ ./proxy_add_metadata &amp;&#xA;#=> <output>&#xA;$ mpv <output>&#xA;</output></output>

    &#xA;

    How could I make song metadata updates dynamically over time using libav ?

    &#xA;

    I’m using FFmpeg version 7.1.

    &#xA;

    I first tried changing the metadata dictionary shortly before writing a frame with a few different container formats :

    &#xA;

    av_dict_set(&amp;output_ctx->metadata, "title", "Title 1", 0);&#xA;/* [...] */&#xA;av_interleaved_write_frame(output_ctx, packet);&#xA;

    &#xA;

    Setting metadata with av_dict_set(&amp;output_ctx->metadata, "title", "Title 1", 0); only appears to work when done before writing the output header.

    &#xA;

    My next idea was to try setting metadata in AVPacket side data, but I’m unclear which container formats support this for the kind of metadata I’m working with.

    &#xA;

    I’m open to any output media container format or FFmpeg-originated network stream.

    &#xA;

    It’s unclear to me whether the metadata should be written to a separate stream within the media container or whether it should be written as side data in the output packets.

    &#xA;

    If what I’m trying to do is impossible, please explain why.

    &#xA;

    What I have so far reads audio from standard input and writes it to standard output. The input audio can be assumed to be in MP3 format. Non-working sections for metadata updates are commented out.

    &#xA;

    /* proxy_add_metadata.c */&#xA;#include &#xA;&#xA;#include <libavformat></libavformat>avformat.h>&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;&#xA;int main() {&#xA;    int _err;&#xA;&#xA;    /* MP3 input */&#xA;    AVFormatContext *input_ctx = avformat_alloc_context();&#xA;    _err = avformat_open_input(&amp;input_ctx, "pipe:0", NULL, NULL);&#xA;    _err = avformat_find_stream_info(input_ctx, NULL);&#xA;&#xA;    AVFormatContext *output_ctx;&#xA;    _err = avformat_alloc_output_context2(&amp;output_ctx, NULL, "matroska", "pipe:1");&#xA;&#xA;    AVStream *input_stream = input_ctx->streams[0];&#xA;    AVStream *output_stream = avformat_new_stream(output_ctx, NULL);&#xA;&#xA;    _err = avcodec_parameters_copy(output_stream->codecpar, input_stream->codecpar);&#xA;    _err = avio_open(&amp;output_ctx->pb, "pipe:1", AVIO_FLAG_WRITE);&#xA;&#xA;    _err = avformat_write_header(output_ctx, NULL);&#xA;&#xA;    AVPacket *packet = av_packet_alloc();&#xA;&#xA;    /* Set up packet side data. */&#xA;    /*&#xA;    AVDictionary *packet_side_data_dict;&#xA;    av_dict_set(&amp;packet_side_data_dict, "title", "Title 1", 0);&#xA;&#xA;    size_t packet_side_data_size = 0;&#xA;    uint8_t *packet_side_data = av_packet_pack_dictionary(&#xA;        packet_side_data_dict,&#xA;        &amp;packet_side_data_size&#xA;    );&#xA;    av_dict_free(&amp;packet_side_data_dict);&#xA;    */&#xA;&#xA;    while (1) {&#xA;        _err = av_read_frame(input_ctx, packet);&#xA;        if (_err &lt; 0) {&#xA;            break;&#xA;        }&#xA;&#xA;        /* Can metadata updates be made here? */&#xA;&#xA;        /* Option 1: Attempt to write metadata to the container. */&#xA;        /*&#xA;        _err = av_dict_set(&amp;output_ctx->metadata, "title", "Title 1", 0);&#xA;        if (_err &lt; 0) {&#xA;            fprintf(stderr, "error: can&#x27;t set metadata title in stream: %s\n", av_err2str(_err));&#xA;            break;&#xA;        }&#xA;        */&#xA;&#xA;        /* Option 2: Attempt to write metadata to packet side data. */&#xA;        /*&#xA;        _err = av_packet_add_side_data(&#xA;            packet,&#xA;            AV_PKT_DATA_METADATA_UPDATE,&#xA;            packet_side_data,&#xA;            packet_side_data_size&#xA;        );&#xA;        if (_err &lt; 0) {&#xA;            fprintf(stderr, "error: can&#x27;t add side data to packet: %s\n", av_err2str(_err));&#xA;            break;&#xA;        }&#xA;        */&#xA;&#xA;        AVStream *input_stream = input_ctx->streams[packet->stream_index];&#xA;        AVStream *output_stream = output_ctx->streams[packet->stream_index];&#xA;&#xA;        av_packet_rescale_ts(packet, input_stream->time_base, output_stream->time_base);&#xA;        packet->pos = -1;&#xA;&#xA;        _err = av_interleaved_write_frame(output_ctx, packet);&#xA;        if (_err &lt; 0) {&#xA;            fprintf(stderr, "error: packet write: %s\n", av_err2str(_err));&#xA;            break;&#xA;        }&#xA;    }&#xA;&#xA;    av_write_trailer(output_ctx);&#xA;&#xA;    av_packet_free_side_data(packet);&#xA;    av_packet_free(&amp;packet);&#xA;&#xA;    avio_closep(&amp;output_ctx->pb);&#xA;    avformat_free_context(output_ctx);&#xA;&#xA;    avformat_close_input(&amp;input_ctx);&#xA;&#xA;    return 0;&#xA;}&#xA;

    &#xA;

    cc \&#xA;    -Wall \&#xA;    -g \&#xA;    -I/.../ffmpeg7/include \&#xA;    -o proxy_add_metadata \&#xA;    proxy_add_metadata.c \&#xA;    -L/.../ffmpeg7/lib -lavformat -lavcodec&#xA;

    &#xA;

    $ &lt; sample.mp3 ./proxy_add_metadata | mpv -&#xA;

    &#xA;

  • ffmpeg produced .wav reads only zeros with scipy.io.wavfile

    8 janvier 2015, par question_mark

    Hi everyone and thanks for reading.

    I wanted to do some analysis on a song using Python’s scipy.io.wavfile. Since I only have the song as .mp3 I converted the file to .wav using ffmpeg the following way :

    ffmpeg -i test.mp3 test.wav

    The .wav file plays perfectly well with vlc player, but wavfile shows only zeroes when reading it :

    from scipy.io import wavfile as wf

    data = wf.read("test.wav")
    C:\Program Files\Anaconda\lib\site-packages\scipy\io\wavfile.py:42: WavFileWarning: Unknown wave file format
     warnings.warn("Unknown wave file format", WavFileWarning)

    data
    (44100, array([[0, 0],
           [0, 0],
           [0, 0],
           ...,
           [0, 0],
           [0, 0],
           [0, 0]], dtype=int16))

    I tried getting the data with Python’s built-in wave module before to the same effect (only zeros).
    I am using the 64bit version of ffmpeg (ffmpeg-20140218-git-61d5970-win64-static).

    Any help is appreciated :-)

    Edit : Included .wav header and tried forcing ffmpeg output format

    I guess the header information of the .wav file is included here :

    ffmpeg -i .\test.wav
    Guessed Channel Layout for  Input Stream #0.0 : stereo
    Input #0, wav, from '.\test.wav':
     Metadata:
       artist          : Joe Cocker
       copyright       : (C) 1987 Capitol Records, Inc.
       date            : 1987
       genre           : Pop
       title           : Unchain My Heart
       album           : Unchain My Heart
       track           : 1/10
       encoder         : Lavf55.33.100
     Duration: 00:05:04.33, bitrate: 1411 kb/s
     Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s

    If I try to specify the ffmpeg output format explicitly for the .mp3 conversion :

    ffmpeg -i .\test.mp3 -f s16le -ar 44100 -ac 2 test.wav
    Input #0, mp3, from '.\test.mp3':
     Metadata:
       title           : Unchain My Heart
       artist          : Joe Cocker
       album           : Unchain My Heart
       genre           : Pop
       composer        : Bobby Sharp
       track           : 1/10
       disc            : 1/1
       album_artist    : Joe Cocker
       copyright       : (C) 1987 Capitol Records, Inc.
       date            : 1987
     Duration: 00:05:04.35, start: 0.025056, bitrate: 240 kb/s
       Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 235 kb/s
       Stream #0:1: Video: mjpeg, yuvj420p(pc), 600x600 [SAR 1:1 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
       Metadata:
         title           :
         comment         : Cover (front)
    Output #0, s16le, to 'test.wav':
     Metadata:
       title           : Unchain My Heart
       artist          : Joe Cocker
       album           : Unchain My Heart
       genre           : Pop
       composer        : Bobby Sharp
       track           : 1/10
       disc            : 1/1
       album_artist    : Joe Cocker
       copyright       : (C) 1987 Capitol Records, Inc.
       date            : 1987
       encoder         : Lavf55.33.100
       Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
    Stream mapping:
     Stream #0:0 -> #0:0 (mp3 -> pcm_s16le)
    Press [q] to stop, [?] for help
    video:0kB audio:52425kB subtitle:0 data:0 global headers:0kB muxing overhead 0.000000%
    size=   52425kB time=00:05:04.32 bitrate=1411.2kbits/s

    But in this case (forced format), both ffmpeg and wavfile are not able to read the file :

    ffmpeg -i .\test.wav
    .\test.wav: Invalid data found when processing input

    and

    data = wf.read("test2.wav")
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    in <module>()
    ----> 1 data = wf.read("test2.wav")

    C:\Program Files\Anaconda\lib\site-packages\scipy\io\wavfile.pyc in read(filename, mmap)
       152
       153     try:
    --> 154         fsize = _read_riff_chunk(fid)
       155         noc = 1
       156         bits = 8

    C:\Program Files\Anaconda\lib\site-packages\scipy\io\wavfile.pyc in _read_riff_chunk(fid)
        98         _big_endian = True
        99     elif str1 != b'RIFF':
    --> 100         raise ValueError("Not a WAV file.")
       101     if _big_endian:
       102         fmt = '>I'

    ValueError: Not a WAV file.
    </module>