
Advanced search
Medias (2)
-
GetID3 - Bloc informations de fichiers
9 April 2013, by
Updated: May 2013
Language: français
Type: Picture
-
GetID3 - Boutons supplémentaires
9 April 2013, by
Updated: April 2013
Language: français
Type: Picture
Other articles (111)
-
Le profil des utilisateurs
12 April 2011, byChaque 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 November 2010, byAccé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 (...) -
XMP PHP
13 May 2011, byDixit Wikipedia, XMP signifie :
Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)
On other websites (10729)
-
What are the APIs for hardware accelerated video decoding in phones?
11 January 2012, by cloudravenI have seen many smartphones coming with hardware accelerated video decoding supporting mpeg2 and h264, but unlike in desktop and laptop systems, it is not clear to me how to interact with the hardware acceleration.
For desktops/laptops there is DXVA, VDPAU and OpenMax.
Is any of those supported in Mobile phones? I think OpenMax is, but I am not sure of how widely supported it is.Is anyone familiar with what is usually used to write hardware accelerated media players and decoders for platforms like Snapdragon, Tegra 2 or Omap 4 running Android or Windows Phone?
I know that ffmpeg can be compiled for arm and I wonder what kind of hardware video acceleration it supports on that platform. -
How to add a token verification in url with Laravel when playing HLS videos?
31 March 2022, by PhilipI 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) && $video->play_url != '')
 <div class="col-12 mb-3 single-video">
 <video playsinline="playsinline" controls="controls" muted="muted">

 </video>
 <code class="echappe-js"><script> &#xA; var m3u8 = "{{ $video->play_url }}" &#xA; var token = &#x27;token_xxxxxxxx&#x27;&#xA; </script>


@endif



js file


This will play the video (with plyr player)


const player = new Plyr('#player');
if(typeof(m3u8) != "undefined" && m3u8 !== null){
 m3u8 = m3u8 + '?token=' + token
 console.log(m3u8,token)
 var video = document.getElementById('player');
 if(Hls.isSupported()) {
 var hls = new Hls();
 hls.loadSource(m3u8);
 hls.attachMedia(video);

 }else if (video.canPlayType('application/vnd.apple.mpegurl')) {
 video.src = m3u8;

 }

}



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.


public_path('m3u8') => storage_path('app/videos/m3u8'),



Route


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


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



Then in VideoController


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



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.


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.


add custom ffmpeg avfilter in mlt [closed]
I created one custom filter under av filter and added it into ffmpeg.
I build the ffmpeg and in ffmpeg its working fine and visible in ffmpeg filter list.


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


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


Now I want to know


- 

- Why mlt is not supporting multiple input av filters ?
- Where in code mlt restricted it.
- What is the best way to add this filter ?