Recherche avancée

Médias (16)

Mot : - Tags -/mp3

Autres articles (112)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

  • 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

Sur d’autres sites (9146)

  • icecast2, nodejs, ffmpeg, radio, ogg

    25 juillet 2024, par Uximy

    I have a problem which is that when I start icecast server on ubuntu and not only on ubuntu but also on windows regardless of the operating system, when I first go to the radio station in icecast2 http://localhost:8000/radio the music plays but after restarting the page in the browser, the player stops loading, I tried the solution with nocache in the browser in the address bar, nothing helps, I looked at many users configs, they did not encounter such problems, I will leave my config below, I also wrote a code on nodejs I will also leave it below, the problem plays the same that if I go to a direct icecast link, what I will do through the node js code + ffmpeg, also about the logs, nothing outputs even a hint of any error that is related to this problem

    


    Config IceCast :

    


    <icecast>&#xA;    <location>Earth</location>&#xA;    <admin>icemaster@localhost</admin>&#xA;    <hostname>localhost</hostname>&#xA;&#xA;    <limits>&#xA;        <clients>100</clients>&#xA;        <sources>10</sources>&#xA;        524288&#xA;        60&#xA;        30&#xA;        10&#xA;        1&#xA;        65536&#xA;    </limits>&#xA;&#xA;    <authentication>&#xA;        hackme&#xA;        hackme&#xA;        admin&#xA;        hackme&#xA;    </authentication>&#xA;&#xA;    &#xA;        <port>8000</port>&#xA;        0.0.0.0&#xA;    &#xA;    &#xA;    &#xA;        <port>8443</port>&#xA;        0.0.0.0&#xA;        <ssl>1</ssl>&#xA;    &#xA;&#xA;    &#xA;        <header value="*"></header>&#xA;        <header value="Origin, X-Requested-With, Content-Type, Accept"></header>&#xA;        <header value="GET, POST, OPTIONS"></header>&#xA;        <header value="no-cache, no-store, must-revalidate"></header>&#xA;        <header value="no-cache"></header>&#xA;        <header value="0"></header>&#xA;    &#xA;&#xA;    &#xA;    <mount type="normal">&#xA;        /radio&#xA;        <password>mypassword</password>&#xA;        <public>1</public>&#xA;        100&#xA;        Anime Vibes&#xA;        Anime Vibes&#xA;        <genre>various</genre>&#xA;        audio/ogg&#xA;        65536&#xA;        &#xA;        &#xA;            <header value="*"></header>&#xA;            <header value="Origin, X-Requested-With, Content-Type, Accept"></header>&#xA;            <header value="GET, POST, OPTIONS"></header>&#xA;            <header value="no-cache, no-store, must-revalidate"></header>&#xA;            <header value="no-cache"></header>&#xA;            <header value="0"></header>&#xA;        &#xA;    </mount>&#xA;&#xA;    <fileserve>1</fileserve>&#xA;&#xA;    <paths>&#xA;        <logdir>/var/log/icecast2</logdir>&#xA;        <webroot>/etc/icecast2/web</webroot>&#xA;        <adminroot>/etc/icecast2/admin</adminroot>&#xA;       &#xA;        <alias source="/" destination="/status.xsl"></alias>&#xA;        &#xA;        /etc/icecast2/cert/icecast.pem&#xA;        &#xA;    </paths>&#xA;&#xA;    <logging>&#xA;        <accesslog>access.log</accesslog>&#xA;        <errorlog>error.log</errorlog>&#xA;        <playlistlog>playlist.log</playlistlog>&#xA;        <loglevel>1</loglevel> &#xA;        <logsize>10000</logsize> &#xA;        <logarchive>1</logarchive>&#xA;    </logging>&#xA;</icecast>&#xA;

    &#xA;

    Code Node.js :

    &#xA;

    const express = require(&#x27;express&#x27;);&#xA;const { spawn } = require(&#x27;child_process&#x27;);&#xA;const path = require(&#x27;path&#x27;);&#xA;const fs = require(&#x27;fs&#x27;);&#xA;const https = require(&#x27;https&#x27;);&#xA;const app = express();&#xA;const port = 3000;&#xA;&#xA;const privateKey = fs.readFileSync(&#x27;./cert/privateKey.key&#x27;, &#x27;utf8&#x27;);&#xA;const certificate = fs.readFileSync(&#x27;./cert/certificate.crt&#x27;, &#x27;utf8&#x27;);&#xA;&#xA;const credentials = {&#xA;    key: privateKey,&#xA;    cert: certificate&#xA;};&#xA;&#xA;app.use(express.static(path.join(__dirname)));&#xA;&#xA;// Check if playlist file exists&#xA;const playlistPath = path.join(__dirname, &#x27;playlist.txt&#x27;);&#xA;if (!fs.existsSync(playlistPath)) {&#xA;    console.error(&#x27;Playlist file does not exist&#x27;);&#xA;    process.exit(1);&#xA;}&#xA;&#xA;console.log(`Playlist path: ${playlistPath}`);&#xA;&#xA;// Start FFmpeg process to create continuous stream from playlist&#xA;const ffmpegProcess = spawn(&#x27;ffmpeg&#x27;, [&#xA;    &#x27;-re&#x27;,&#xA;    &#x27;-f&#x27;, &#x27;concat&#x27;,&#xA;    &#x27;-safe&#x27;, &#x27;0&#x27;,&#xA;    &#x27;-protocol_whitelist&#x27;, &#x27;file,http,https,tcp,tls&#x27;,&#xA;    &#x27;-i&#x27;, playlistPath,&#xA;    &#x27;-c:a&#x27;, &#x27;libvorbis&#x27;,&#xA;    &#x27;-f&#x27;, &#x27;ogg&#x27;,&#xA;    &#x27;-tls&#x27;, &#x27;1&#x27;,&#xA;    &#x27;icecast://source:mypassword@localhost:8443/radio&#x27;&#xA;]);&#xA;&#xA;ffmpegProcess.stdout.on(&#x27;data&#x27;, (data) => {&#xA;    console.log(`FFmpeg stdout: ${data}`);&#xA;});&#xA;&#xA;ffmpegProcess.stderr.on(&#x27;data&#x27;, (data) => {&#xA;    console.error(`FFmpeg stderr: ${data}`);&#xA;});&#xA;&#xA;ffmpegProcess.on(&#x27;close&#x27;, (code) => {&#xA;    console.log(`FFmpeg process exited with code ${code}`);&#xA;});&#xA;&#xA;app.get(&#x27;/radio&#x27;, (req, res) => {&#xA;    res.setHeader(&#x27;Content-Type&#x27;, &#x27;audio/ogg&#x27;);&#xA;    res.setHeader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;);&#xA;&#xA;    const requestOptions = {&#xA;        hostname: &#x27;localhost&#x27;,&#xA;        port: 8443,&#xA;        path: &#x27;/radio&#x27;,&#xA;        method: &#x27;GET&#x27;,&#xA;        headers: {&#xA;            &#x27;Accept&#x27;: &#x27;audio/ogg&#x27;&#xA;        },&#xA;        rejectUnauthorized: false&#xA;    };&#xA;&#xA;    const request = https.request(requestOptions, (response) => {&#xA;        response.pipe(res);&#xA;&#xA;        response.on(&#x27;end&#x27;, () => {&#xA;            res.end();&#xA;        });&#xA;    });&#xA;&#xA;    request.on(&#x27;error&#x27;, (err) => {&#xA;        console.error(`Request error: ${err.message}`);&#xA;        res.status(500).send(&#x27;Internal Server Error&#x27;);&#xA;    });&#xA;&#xA;    request.end();&#xA;});&#xA;https.globalAgent.options.ca = [certificate];&#xA;// Create HTTPS server&#xA;const httpsServer = https.createServer(credentials, app);&#xA;&#xA;httpsServer.listen(port, () => {&#xA;    console.log(`Server is running at https://localhost:${port}`);&#xA;});&#xA;

    &#xA;

    I hope for your help and any advice, thanks in advance

    &#xA;

  • create bar type wave forms using ffmpeg

    8 juillet 2016, par Ashish Joshi

    i am trying to create wave forms from mp3 using ffmpeg.
    i have successfully created waveforms like below

    enter image description here

    now i am having troubles with generating like below sample image...

    enter image description here

    the code i am using to generate vertical line is provided below...

    while (!feof($handle) &amp;&amp; $data_point &lt; $data_size) {
               if ($data_point++ % DETAIL == 0) {
                   $bytes = array();

                   // get number of bytes depending on bitrate
                   for ($i = 0; $i &lt; $byte; $i++) {
                       $bytes[$i] = fgetc($handle);
                   }

                   switch ($byte) {
                   // get value for 8-bit wav
                   case 1:
                       $data = findValues($bytes[0], $bytes[1]);
                       break;
                   // get value for 16-bit wav
                   case 2:
                       if (ord($bytes[1]) &amp; 128) {
                           $temp = 0;
                       } else {
                           $temp = 128;
                       }

                       $temp = chr((ord($bytes[1]) &amp; 100) + $temp);
                       $data = floor(findValues($bytes[0], $temp) / 256);
                       break;
                   }

                   // skip bytes for memory optimization
                   fseek($handle, $ratio, SEEK_CUR);

                   // draw this data point
                   // relative value based on height of image being generated
                   // data values can range between 0 and 255
                   $v = (int) ($data / 255 * $height);

                   // don't print flat values on the canvas if not necessary
                   if (!($v / $height == 0.5 &amp;&amp; !$draw_flat))
                   // draw the line on the image using the $v value and centering it vertically on the canvas
                   {
                       imageline($img,
                           // x1
                           (int) ($data_point / DETAIL),
                           // y1: height of the image minus $v as a percentage of the height for the wave amplitude
                           $height * $wav - $v,
                           // x2
                           (int) ($data_point / DETAIL),
                           // y2: same as y1, but from the bottom of the image
                           $height * $wav - ($height - $v), imagecolorallocate($img, $r, $g, $b));
                   }

                   imageline($img1,
                       // x1
                       (int) ($data_point / DETAIL),
                       // y1: height of the image minus $v as a percentage of the height for the wave amplitude
                       $height * $wav - $v,
                       // x2
                       (int) ($data_point / DETAIL),
                       // y2: same as y1, but from the bottom of the image
                       $height * $wav - ($height - $v), imagecolorallocate($img1, $r1, $g1, $b1));

               }

    any help is appreciated...

  • Anomalie #4562 : Suite #4468 : Unification des CSS pour les boutons et les icônes

    9 octobre 2020

    Ouais, une légère-subtile-discrète bordure en bas, ça reste raisonnable. J’ai essayé dans l’inspecteur, c’est pas mal, pourquoi pas.

    Il va quand même me falloir plus de lectures pour me faire une idée sur l’argument qui dit que sans ça les gens auraient du mal à identifier les boutons. Même dans les exemples de theming de material - c’est un peu eux qui ont remis au goût du jour les ombres portées et l’idée de relief et de strates verticales - ils donnent des exemples de boutons flat : https://material.io/design/material-theming/overview.html#material-theming
    Donc ça me semble pas être un horizon indépassable :p

    Concernant la couleur de base, à un moment j’hésitais à partir sur la couleur de l’utilisateur, la version claire.
    D’ailleurs vous noterez que c’est celle utilisée pour les boutons des formulaires, comme .boutons a déjà un fond de couleur claire j’ai fait une exception pour eux. Mais c’est bien des boutons de base, pas la variante .principal.
    Mais bon, j’étais pas convaincu, je préfèrerais quand même arriver à faire fonctionner le gris clair dans toutes les situations.
    Dans Bootstrap, Semantic-ui et cie, les boutons de base sont également gris clairs.

    Pour SVP je vais poursuivre dans les tickets liés du coup, sinon on va s’éparpiller.
    Juste @marcimat, le truc que je propose c’est ni plus ni moins que la maquette de rasta. C’est même moins d’ailleurs. Et j’ai rien de spécial à ajouter en plus.