Recherche avancée

Médias (91)

Autres articles (37)

  • 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

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

  • Configuration spécifique pour PHP5

    4 février 2011, par

    PHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
    Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
    Modules spécifiques
    Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)

Sur d’autres sites (3397)

  • 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;

  • add custom ffmpeg avfilter in mlt [closed]

    5 février 2023, par Shivam gupta

    I created one custom filter under av filter and added it into ffmpeg.&#xA;I build the ffmpeg and in ffmpeg its working fine and visible in ffmpeg filter list.

    &#xA;

    Now I tried to build mlt with this custom ffmpeg. mlt build successfully.&#xA;I checked in mlt filters but it is not available.

    &#xA;

    On investigating I found in mlt there is no avfilter available which can take 2 videos as input.&#xA;As my filter also takes 2 videos as input and apply some filter and output one video that's why it's not available.

    &#xA;

    Now I want to know

    &#xA;

      &#xA;
    1. Why mlt is not supporting multiple input av filters ?
    2. &#xA;

    3. Where in code mlt restricted it.
    4. &#xA;

    5. What is the best way to add this filter ?
    6. &#xA;

    &#xA;

  • How to add progress bar to FFMPEG android

    18 novembre 2020, par sunil yadav

    I want add a progress bar during FFMPEG execution android.

    When i start FFMPEG command then progress bar start with percentage progress.

    &#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