
Recherche avancée
Médias (1)
-
Revolution of Open-source and film making towards open film making
6 octobre 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (11)
-
Création définitive du canal
12 mars 2010, parLorsque votre demande est validée, vous pouvez alors procéder à la création proprement dite du canal. Chaque canal est un site à part entière placé sous votre responsabilité. Les administrateurs de la plateforme n’y ont aucun accès.
A la validation, vous recevez un email vous invitant donc à créer votre canal.
Pour ce faire il vous suffit de vous rendre à son adresse, dans notre exemple "http://votre_sous_domaine.mediaspip.net".
A ce moment là un mot de passe vous est demandé, il vous suffit d’y (...) -
Mise à disposition des fichiers
14 avril 2011, parPar défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...) -
Librairies et logiciels spécifiques aux médias
10 décembre 2010, parPour un fonctionnement correct et optimal, plusieurs choses sont à prendre en considération.
Il est important, après avoir installé apache2, mysql et php5, d’installer d’autres logiciels nécessaires dont les installations sont décrites dans les liens afférants. Un ensemble de librairies multimedias (x264, libtheora, libvpx) utilisées pour l’encodage et le décodage des vidéos et sons afin de supporter le plus grand nombre de fichiers possibles. Cf. : ce tutoriel ; FFMpeg avec le maximum de décodeurs et (...)
Sur d’autres sites (3477)
-
Problems transcoding GoToMeeting output using FFmpeg
20 avril 2014, par user3466413I’m having a nightmare of a time transcoding output from GoToMeeting, recorded using the latest OS X version, to something web-playable. No matter what settings I use, I end up with time syncing problems, at least with this particular recording.
The
.mov
file looks like this. Note that it’s variable framerate, and because it’s mostly just a screencast of a PowerPoint presentation with occasional mouse movement, the output should be VFR too to produce a small file yet still preserve occasional motion.$ ffmpeg -i original.mov
ffmpeg version N-58273-g18df75f Copyright (c) 2000-2013 the FFmpeg developers
built on Nov 19 2013 10:34:42 with Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libass --enable-libcelt --enable-libfaac --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-openssl --enable-libopus --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --prefix=/usr/local
libavutil 52. 53.100 / 52. 53.100
libavcodec 55. 43.101 / 55. 43.101
libavformat 55. 21.100 / 55. 21.100
libavdevice 55. 5.100 / 55. 5.100
libavfilter 3. 91.100 / 3. 91.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f822980a000] decoding for stream 0 failed
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'original.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2014-03-20 02:09:22
Duration: 03:08:26.72, start: 0.000000, bitrate: 75 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 1368x728 [SAR 1:1 DAR 171:91], 20 kb/s, 0.60 fps, 600 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2014-03-20 02:09:22
handler_name : Apple Alias Data Handler
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 47 kb/s (default)
Metadata:
creation_time : 2014-03-20 02:09:22
handler_name : Apple Alias Data Handler
Stream #0:2(eng): Data: none (rtp / 0x20707472), 6 kb/s
Metadata:
creation_time : 2014-03-20 02:09:22
handler_name : Apple Alias Data Handler
Stream #0:3(und): Data: none (rtp / 0x20707472), 0 kb/s
Metadata:
creation_time : 2014-03-20 02:09:22
handler_name : Apple Alias Data HandlerThe
.mov
file (which I unfortunately cannot publicly post) plays back properly in any application I use : VLC, Media Player Classic, and QuickTime. However, playing the transcoded output always exhibits the following symptoms :- Audio out of sync with what the video is showing, sometimes to the order of minutes off towards the end of this three hour recording
- In the case of Media Player Classic, clicking a spot on the timeline actually moves the playhead to a spot on the timeline near where I clicked, but not directly on it.
There are the arguments I’m using for a
.mp4
encoding that is playable in all browsers that support H.264. Note that this is on Windows but Linux exhibits the same problems.ffmpeg.exe -y -i original.mov -i watermark.png -filter_complex "[0:v] crop=1184:720:178:6,scale=1184:720,setsar=1/1; [0:v][1:v] overlay=1242:648 [0:v]" -vcodec libx264 -acodec libvo_aacenc -q:a 80 -crf 30 -ac 1 -ar 16000 -strict -2 -profile:v baseline -level 3 outout.mkv
The arguments, other than those that are self-explanatory or trivial :
-filter_complex
: Crop excess letterboxing/pillarboxing from the video and set the aspect ratio to 1:1 for square pixels (something Safari needed), then overlay a watermark from a PNG and resize the output to 720p-crf 30
: encode the video at constant quality, variable bitrate-ac 1 -ar 16000
: encode with mono audio at 16 KHz-strict -2 -profile:v baseline -level 3
: encode using FFmpeg’s "experimental" H.264 encoder using the Baseline level 3 profile for web compatibility
Note that yes, this goes to an MKV container initially because, for some reason, encoding directly to a
.mp4
container hangs FFmpeg. I then use-acodec copy -vcodec copy
to copy the audio and video streams directly into a.mp4
container. Finally I pass the output through MP4Box to interleave it so it can be progressively downloaded.When transcoding, FFmpeg does drop frames, which I suspect is related to the problem, with output like this :
FFmpeg: frame= 232 fps= 26 q=24.0 size= 5983kB time=00:32:44.57 bitrate= 24.9kbits/s dup=0 drop=1487
When I then later attempt to mux it into the
.mp4
container from this temporary.mkv
container, I get a flood of warnings like this :[mp4 @ 0297cd00] Non-monotonous DTS in output stream 0:0; previous: 6341306, current: 6007024; changing to 6341307. This may result in incorrect timestamps in the output file.
Now I wouldn’t be surprised if there is indeed some problem with the source file. However, if so, I need to definitively prove just how it’s broken.
Any thoughts ?
-
play video with secure link in laravel ffmpeg
1er mars 2023, par abc abcI convert my video file to m3u8 with ffmpeg and upload in download host.
I have no problem when I want to display Blade in Laravel without a secure link.


Now, I am asking my friends to help me display those videos using a safe link, something like this link :




I did it myself without a secure link and got the output.
These are the routes I defined :


Route::get('/video/secret/{key}', function ($key) {
 return Storage::disk('secrets')->download('29/' . $key);
})->name('video.key');
 
Route::get('/video/{playlist}', function ($playlist) {
 return FFMpeg::dynamicHLSPlaylist()
 ->fromDisk('static')
 ->open("stream/video/29/{$playlist}")
 ->setKeyUrlResolver(function ($key) {
 return route('video.key', ['key' => $key]);
 })
 ->setMediaUrlResolver(function ($mediaFilename) {
 return Storage::disk('static')->url("stream/video/29/{$mediaFilename}");
 })
 ->setPlaylistUrlResolver(function ($playlistFilename) {
 return route('video.playlist', ['playlist' => $playlistFilename]);
 });
})->name('video.playlist');



This is the source of the video :


<code class="echappe-js"><script src="https://cdn.rawgit.com/video-dev/hls.js/18bb552/dist/hls.min.js"></script>

<script>&#xA; document.addEventListener(&#x27;DOMContentLoaded&#x27;, () => {&#xA; const source = "{{ route(&#x27;video.playlist&#x27;, [&#x27;playlist&#x27; => &#x27;29.m3u8&#x27;]) }}";&#xA; const video = document.querySelector(&#x27;#video&#x27;);&#xA; &#xA; const defaultOptions = {};&#xA; &#xA; if (!Hls.isSupported()) {&#xA; video.src = source;&#xA; var player = new Plyr(video, defaultOptions);&#xA; } else {&#xA; // For more Hls.js options, see https://github.com/dailymotion/hls.js&#xA; const hls = new Hls();&#xA; hls.loadSource(source);&#xA; &#xA; // From the m3u8 playlist, hls parses the manifest and returns&#xA; // all available video qualities. This is important, in this approach,&#xA; // we will have one source on the Plyr player.&#xA; hls.on(Hls.Events.MANIFEST_PARSED, function (event, data) {&#xA; &#xA; // Transform available levels into an array of integers (height values).&#xA; const availableQualities = hls.levels.map((l) => l.height)&#xA; availableQualities.unshift(0) //prepend 0 to quality array&#xA; &#xA; // Add new qualities to option&#xA; defaultOptions.quality = {&#xA; default: 0, //Default - AUTO&#xA; options: availableQualities,&#xA; forced: true,&#xA; onChange: (e) => updateQuality(e),&#xA; }&#xA; // Add Auto Label&#xA; defaultOptions.i18n = {&#xA; qualityLabel: {&#xA; 0: &#x27;Auto&#x27;,&#xA; },&#xA; }&#xA; &#xA; hls.on(Hls.Events.LEVEL_SWITCHED, function (event, data) {&#xA; var span = document.querySelector(".plyr__menu__container [data-plyr=&#x27;quality&#x27;][value=&#x27;0&#x27;] span")&#xA; if (hls.autoLevelEnabled) {&#xA; span.innerHTML = `AUTO (${hls.levels[data.level].height}p)`&#xA; } else {&#xA; span.innerHTML = `AUTO`&#xA; }&#xA; })&#xA; &#xA; // Initialize new Plyr player with quality options&#xA; var player = new Plyr(video, defaultOptions);&#xA; });&#xA; &#xA; hls.attachMedia(video);&#xA; window.hls = hls;&#xA; }&#xA; &#xA; function updateQuality(newQuality) {&#xA; if (newQuality === 0) {&#xA; window.hls.currentLevel = -1; //Enable AUTO quality if option.value = 0&#xA; } else {&#xA; window.hls.levels.forEach((level, levelIndex) => {&#xA; if (level.height === newQuality) {&#xA; console.log("Found quality match with " &#x2B; newQuality);&#xA; window.hls.currentLevel = levelIndex;&#xA; }&#xA; });&#xA; }&#xA; }&#xA; });&#xA; </script>



But these work without secure links and signatures.
I want to create a secure link using token, signature and expires for each part of the video.
It means to close the direct access on the download host and to access the video files only through Laravel.
Thank you if anyone knows how to help.


Something similar to the following link to display the video :




-
Layer black & white video over background so black pixels are transparent in FFMPEG
4 février 2018, par Dan WeaverI’m trying to blend a video containing black and white animated text over a static background image. I can successfully blend them but no matter what blend mode I use I can’t get the effect I want.
I’m looking for an effect similar to Photoshop’s ’Add’ blend mode where the color values of each pixel are added together. This results in no change where the top layer (video) has black pixels, effectively making the black background appear transparent.
This is what I’m trying to achieve :
ffmpeg -i text.mp4 -loop 1 -i image.jpg \
-filter_complex 'blend=all_mode=addition' -t 1 result.mp4I tried all the modes of the
blend
filter but none of them produce this effect. I thought Addition would be the one to work but the resulting video has a pink tint. Maybe there is some mismatch between color channels ?How can I get the result I’m looking for ?