Recherche avancée

Médias (1)

Mot : - Tags -/censure

Autres articles (78)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Sélection de projets utilisant MediaSPIP

    29 avril 2011, par

    Les exemples cités ci-dessous sont des éléments représentatifs d’usages spécifiques de MediaSPIP pour certains projets.
    Vous pensez avoir un site "remarquable" réalisé avec MediaSPIP ? Faites le nous savoir ici.
    Ferme MediaSPIP @ Infini
    L’Association Infini développe des activités d’accueil, de point d’accès internet, de formation, de conduite de projets innovants dans le domaine des Technologies de l’Information et de la Communication, et l’hébergement de sites. Elle joue en la matière un rôle unique (...)

Sur d’autres sites (6798)

  • With apulsator in ffempeg - How do I make so one side does not completely become silent ?

    3 avril 2022, par corgrath

    I am trying to learn more about signal processing and the apulsator effect in ffmpeg.

    


    http://ffmpeg.org/ffmpeg-filters.html#apulsator

    


    With the most default example :

    


    ffmpeg -y -i input.mp3 -af "apulsator=hz=0.0625:timing=hz:mode=sine" output.mp3

    


    You can clearly hear that the sound travels from left to right and then back to left, as expected.

    


    However, I am trying to understand how/if it is possible that sound volume does not completely becomes silent, but perhaps 10% of the volume, while the other side gets 90%.

    


    What I am trying to achieve is that one side does not completely becomes silent.

    


    If this cannot be achieved solely by the apulsator settings, what other effects or ways can I achieve this using ffmpeg ?

    


    Any advice is appreciated !

    


  • How to add a token verification in url with Laravel when playing HLS videos ?

    31 mars 2022, par Philip

    I have been playing with Laravel and FFMPEG for few weeks but got stuck. Hope someone could help here. Thank you in advanced.

    


    Background

    


    I have a video website build with Laravel 9. I use FFMPEG to convert uploaded MP4 to HLS with laravel-ffmpeg package. AES encryption is applied. Then I store the converted m3u8 playlist, key and ts file in Storage path with symlinks created to public folder. I stored the path in database and call it in view file. I use plyr + hls.js to play the video. Everything is working fine.

    


    However, I would like to further protect my videos from being played by other website. I blocked the cross domain access in Nginx but seem it only check the referrer which could be faked. I can see many video websites that their m3u8 path contains a token parameter :

    


    https://some-domain.com/videos/index.m3u8?token=abc123456


    


    I am trying to do the same but stuck.

    


    These are my Laravel files

    


    VideoController

    


    This will convert mp4 to m3u8 , key, ts files and save to database

    


    FFMpeg::fromDisk('videos')
    ->open($queue->path)
    ->exportForHLS()
    ->withRotatingEncryptionKey(function($filename,$content) use($queue){
        Storage::disk('videos')->put('m3u8/'.$queue->video->slug.'/'.$filename, $content);
    })
    ->setSegmentLength(10) // optional
    ->setKeyFrameInterval(48) // optional
    ->onProgress(function ($percentage, $remaining, $rate) use($queue){
        $queue->update([
            'is_processing'=>true,
            'percentage'=>$percentage,
            'remaining'=>$remaining,
            'rate'=>$rate,
        ]);
    })
    ->addFormat($resolution_720)
    ->save($m3u8_path);


    


    blade file

    


    This will show the m3u8 playlist path and pass to js file

    


    @if (isset($video->play_url)  &amp;&amp; $video->play_url != &#x27;&#x27;)&#xA;    <div class="col-12 mb-3 single-video">&#xA;        <video playsinline="playsinline" controls="controls" muted="muted">&#xA;&#xA;        </video>&#xA;        <code class="echappe-js">&lt;script&gt; &amp;#xA;            var m3u8 = &quot;{{ $video-&gt;play_url }}&quot; &amp;#xA;            var token = &amp;#x27;token_xxxxxxxx&amp;#x27;&amp;#xA;        &lt;/script&gt;&#xA;    

    &#xA;@endif&#xA;

    &#xA;

    js file

    &#xA;

    This will play the video (with plyr player)

    &#xA;

    const player = new Plyr(&#x27;#player&#x27;);&#xA;if(typeof(m3u8) != "undefined" &amp;&amp; m3u8 !== null){&#xA;    m3u8 =  m3u8 &#x2B; &#x27;?token=&#x27; &#x2B; token&#xA;    console.log(m3u8,token)&#xA;    var video = document.getElementById(&#x27;player&#x27;);&#xA;    if(Hls.isSupported()) {&#xA;        var hls = new Hls();&#xA;        hls.loadSource(m3u8);&#xA;        hls.attachMedia(video);&#xA;&#xA;    }else if (video.canPlayType(&#x27;application/vnd.apple.mpegurl&#x27;)) {&#xA;        video.src = m3u8;&#xA;&#xA;    }&#xA;&#xA;}&#xA;

    &#xA;

    If I remove "token" from the above code. The video plays fine. But now I could like to check if the token valid before returning the file. I remove the symlink to prevent direct access to the file.

    &#xA;

    public_path(&#x27;m3u8&#x27;) => storage_path(&#x27;app/videos/m3u8&#x27;),&#xA;

    &#xA;

    Route

    &#xA;

    in web.php, I added few routes to check the token

    &#xA;

        Route::get(&#x27;/m3u8/{slug}/{filename}.m3u8&#x27;, [VideoController::class, &#x27;get_m3u8&#x27;])->name(&#x27;video.m3u8&#x27;);&#xA;    Route::get(&#x27;/m3u8/{slug}/{filename}.ts&#x27;, [VideoController::class, &#x27;get_ts&#x27;])->name(&#x27;video.ts&#x27;);&#xA;    Route::get(&#x27;/m3u8/{slug}/{filename}.key&#x27;, [VideoController::class, &#x27;get_key&#x27;])->name(&#x27;video.key&#x27;);&#xA;

    &#xA;

    Then in VideoController

    &#xA;

    public function get_m3u8(Request $request ,$slug ,$filename)&#xA;{&#xA;        if($request->token == 123){&#xA;            return response()->file(storage_path(&#x27;app/videos/m3u8/&#x27;.$slug.&#x27;/&#x27;.$filename .&#x27;.m3u8&#x27;),[&#xA;                &#x27;Content-Type&#x27; => &#x27;application/x-mpegURL&#x27;,&#xA;            ]);&#xA;        }else{&#xA;            return abort(&#x27;403&#x27;);&#xA;        }&#xA;}&#xA;

    &#xA;

    But the video cannot be played. Because when loading index.m3u8, it loads index_0_1200.m3u8 next and then load the rest of ts files which all do not contain the token. But I cannot add to token duration the conversion from mp4 to hls because in actually case the token will be dynamic such as adding timestamp.

    &#xA;

    Please advise. Thank you. My final aim is to prevent other from using the m3u8 playlist and key files to play my ts files. It will consume a lot of bandwidth.

    &#xA;

  • Video Seek Scroll (60FPS)

    9 avril 2022, par Enijar

    Trying to achieve an effect of seeking through a video when the page is scrolled. This has been achieved by exporting all frames of the video to JPEG images, pre-loading the images, and rendering them to a canvas. However, this approach uses a lot of bandwidth and takes a long time to load on slow networks.

    &#xA;

    Trying to achieve the same effect by rendering a video to a canvas does not play as smoothly as the image-based approach.

    &#xA;

    Here is a working demo with the video-based approach :

    &#xA;

    https://codesandbox.io/s/infallible-chaum-grvi0r?file=/index.html

    &#xA;

    Since HTMLMediaElement.fastSeek() doesn't have widespread browser coverage, how can one achieve a realtime playback rate of 30-60 FPS ?

    &#xA;

    Here is the relevant code for the effect (see CSB link above for the full code) :

    &#xA;

    const video = document.querySelector("video");&#xA;const canvas = document.querySelector("canvas");&#xA;const ctx = canvas.getContext("2d");&#xA;&#xA;(function tick() {&#xA;  requestAnimationFrame(tick);&#xA;&#xA;  const { scrollHeight, clientHeight, scrollTop } = document.body;&#xA;  const maxScroll = scrollHeight - clientHeight;&#xA;  const scrollProgress = scrollTop / maxScroll;&#xA;&#xA;  canvas.width = document.body.clientWidth;&#xA;  canvas.height = document.body.clientHeight;&#xA;&#xA;  // This is the line that causes the issue&#xA;  video.currentTime = video.duration * scrollProgress;&#xA;&#xA;  ctx.clearRect(0, 0, canvas.width, canvas.height);&#xA;  ctx.drawImage(video, 0, 0, canvas.width, canvas.height);&#xA;})();&#xA;

    &#xA;

  • Boussole SPIP

    SPIP.net-La documentation officielle et téléchargement de (...) SPIP Code-La documentation du code de SPIP Programmer SPIP-La documentation pour développer avec (...) Traduire SPIP-Espace de traduction de SPIP et de ses (...) Plugins SPIP-L'annuaire des plugins SPIP SPIP-Contrib-L'espace des contributions à SPIP Forge SPIP-L'espace de développement de SPIP et de ses (...) Discuter sur SPIP-Les nouveaux forums de la communauté (...) SPIP Party-L'agenda des apéros et autres rencontres (...) Médias SPIP-La médiathèque de SPIP SPIP Syntaxe-Tester l'édition de texte dans SPIP