Recherche avancée

Médias (2)

Mot : - Tags -/doc2img

Autres articles (27)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

Sur d’autres sites (4437)

  • RecordRTC only recording stop after 1min

    2 novembre 2015, par Mick Jack

    I am using RecordRTC to record a webcam stream and using ffmpeg to convert the output into .mp4 recording of 1min video is fine and the browser merge both the audio and video into a single .mp4 however recording that is longer than 1min will encounter this error.

    error

    My Sample Code

    function setupNewBroadcastButtonClickHandler() {
               document.getElementById('broadcast-name').disabled = true;
               document.getElementById('setup-new-broadcast').disabled = true;
               //document.getElementById('save-video').disabled = true;
               captureUserMedia(function() {
                   var shared = 'video';
                   broadcastUI.createRoom({
                       roomName: (document.getElementById('broadcast-name') || {}).value || 'Anonymous',
                       isAudio: shared === 'audio'
                   });
               });
               hideUnnecessaryStuff();
           }

           var audioRecorder, videoRecorder, videoURL, connectionStream;
           function initRecorders(stream) {
               //document.getElementById('start-recording').disabled = false;
               document.getElementById('stop-recording').disabled = false;
               //document.getElementById('save-video').disabled = false;
               //document.getElementById('start-recording').onclick = function() {
                   this.disabled = true;
                   audioRecorder = RecordRTC(stream, {
                       recorderType: StereoAudioRecorder,
                       bufferSize: 16384,  // mandatory: if 720p output is forced. otherwise: optional
                       width: 1280, // optional---- to get 720p output
                       height: 720
                   });

                   videoRecorder = RecordRTC(stream, {
                       type: 'video',
                       frameInterval: 90
                   });

                   videoRecorder.initRecorder(function() {
                       audioRecorder.initRecorder(function() {
                           audioRecorder.startRecording();
                           videoRecorder.startRecording();
                       });
                   });
               //};

               document.getElementById('stop-recording').onclick = function() {
                   this.disabled = true;
                   //document.getElementById('start-recording').disabled = false;
                   //document.getElementById('save-video').disabled = false;
                   videoRecorder.stopRecording(function() {
                       audioRecorder.stopRecording(function() {
                           var audioBlob = audioRecorder.blob;
                           var videoBlob = videoRecorder.blob;

                           convertStreams(videoBlob, audioBlob);

                           // Generate video URL
                           //var video = document.createElement('video');
                           //video.src = URL.createObjectURL(videoBlob);
                           //videoURL = video.src;
                       });
                   });
                   stream.stop();
               };

               /*document.getElementById('save-video').onclick = function() {
                   this.disabled = true;          
                   downloadURI(videoURL, 'video.webm');    
               };*/
           }

           function captureUserMedia(callback) {
               var htmlElement = document.createElement('video');
               htmlElement.setAttribute('autoplay', true);
               htmlElement.setAttribute('controls', true);
               videosContainer.insertBefore(htmlElement, videosContainer.firstChild);

               var mediaConfig = {
                   video: htmlElement,
                   onsuccess: function(stream) {
                       config.attachStream = stream;
                       callback && callback();
                       //htmlElement.setAttribute('muted', true);
                       scaleVideos();
                       initRecorders(stream);
                   },
                   onerror: function() {
                       alert('unable to get access to your webcam');
                   }
               };
               getUserMedia(mediaConfig);
           }

           var broadcastUI = broadcast(config);

           /* UI specific */
           var videosContainer = document.getElementById('videos-container') || document.body;
           var setupNewBroadcast = document.getElementById('setup-new-broadcast');
           var roomsList = document.getElementById('rooms-list');

           var broadcastingOption = document.getElementById('broadcasting-option');

           if (setupNewBroadcast)
               setupNewBroadcast.onclick = setupNewBroadcastButtonClickHandler;

           function hideUnnecessaryStuff() {
               var visibleElements = document.getElementsByClassName('visible'),
                   length = visibleElements.length;
               for (var i = 0; i < length; i++) {
                   visibleElements[i].style.display = 'none';
               }
           }

           var workerPath = 'https://4dbefa02675a4cdb7fc25d009516b060a84a3b4b.googledrive.com/host/0B6GWd_dUUTT8WjhzNlloZmZtdzA/ffmpeg_asm.js';

           // HTML5 create a new thread to run merging and conversion at background
                   function processInWebWorker() {

                       var blob = URL.createObjectURL(new Blob(['importScripts("' + workerPath + '");var now = Date.now;function print(text) {postMessage({"type" : "stdout","data" : text});};onmessage = function(event) {var message = event.data;if (message.type === "command") {var Module = {print: print,printErr: print,files: message.files || [],arguments: message.arguments || [],TOTAL_MEMORY: message.TOTAL_MEMORY || false};postMessage({"type" : "start","data" : Module.arguments.join(" ")});postMessage({"type" : "stdout","data" : "Received command: " +Module.arguments.join(" ") +((Module.TOTAL_MEMORY) ? ".  Processing with " + Module.TOTAL_MEMORY + " bits." : "")});var time = now();var result = ffmpeg_run(Module);var totalTime = now() - time;postMessage({"type" : "stdout","data" : "Finished processing (took " + totalTime + "ms)"});postMessage({"type" : "done","data" : result,"time" : totalTime});}};postMessage({"type" : "ready"});'], {
                                   type: 'application/javascript'
                           }));
                            var worker = new Worker(blob);
                            URL.revokeObjectURL(blob);
                            return worker;
                     }
                   var worker;

                   function convertStreams(videoBlob, audioBlob) {
                       var vab;
                       var aab;
                       var buffersReady;
                       var workerReady;
                       var posted = false;
                       var fileReader1 = new FileReader();
                       fileReader1.onload = function() {
                           vab = this.result;
                           if (aab)
                               buffersReady = true;
                           if (buffersReady && workerReady && !posted)
                               postMessage();
                       };
                       var fileReader2 = new FileReader();
                       fileReader2.onload = function() {
                           aab = this.result;
                           if (vab)
                               buffersReady = true;
                           if (buffersReady && workerReady && !posted)
                               postMessage();
                       };
                       fileReader1.readAsArrayBuffer(videoBlob);
                       fileReader2.readAsArrayBuffer(audioBlob);
                       if (!worker) {
                           worker = processInWebWorker();
                       }
                       worker.onmessage = function(event) {
                           var message = event.data;
                           var message = event.data;
                           if (message.type == "ready") {
                               log('Start converting video and audio to mp4, please wait...');
                               workerReady = true;
                               if (buffersReady)
                                   postMessage();
                           } else if (message.type == "done") {

                               var result = message.data[0];
                               var blob = new Blob([result.data], {
                                   type: 'video/mp4'
                               });
                               log("Done converting. File will be downloaded");
                               document.getElementById('setup-new-broadcast').disabled = false;
                               var source = document.createElement('source');
                               source.src = URL.createObjectURL(blob);
                               source.type = 'video/mp4; codecs=mpeg4';
                               downloadURI(source.src, 'video.mp4');
                           }
                       };
                       var postMessage = function() {
                           posted = true;
                           worker.postMessage({
                               type: 'command',
                               arguments: [
                                   '-i', 'video.webm',
                                   '-i', 'audio.wav',
                                   '-c:v', 'mpeg4',
                                   '-c:a', 'vorbis',
                                   '-b:v', '6400k',
                                   '-b:a', '4800k',
                                   '-strict', 'experimental', 'output.mp4'
                               ],
                               files: [
                                   {
                                       data: new Uint8Array(vab),
                                       name: "video.webm"
                                   },
                                   {
                                       data: new Uint8Array(aab),
                                       name: "audio.wav"
                                   }
                               ]
                           });
                       };
                   }
  • ffmpeg : -copyts makes -t stop at timestamps, not duration

    30 juillet 2017, par arielCo

    From

    -t duration (input/output)

    When used as an input option (before -i), limit the duration of data read from the input file.

    When used as an output option (before an output url), stop writing the output after its duration reaches duration.

    So this should yield a 1-minute file with timestamps starting at 1:49, right ?

    ffmpeg -y -copyts -ss 1:49 -i ~/Videos/input.mkv -c copy -t 1:00 timing-1m49s.mkv
    ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers
     built with gcc 7 (SUSE Linux)
     configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --disable-openssl --enable-avresample --enable-libcdio --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libfreetype --enable-libgsm --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-netcdf --enable-vaapi --enable-vdpau --enable-libfdk_aac --enable-nonfree --enable-libmp3lame --enable-libtwolame --enable-libx264 --enable-libx265 --enable-libxvid
     libavutil      55. 58.100 / 55. 58.100
     libavcodec     57. 89.100 / 57. 89.100
     libavformat    57. 71.100 / 57. 71.100
     libavdevice    57.  6.100 / 57.  6.100
     libavfilter     6. 82.100 /  6. 82.100
     libavresample   3.  5.  0 /  3.  5.  0
     libswscale      4.  6.100 /  4.  6.100
     libswresample   2.  7.100 /  2.  7.100
     libpostproc    54.  5.100 / 54.  5.100
    Input #0, matroska,webm, from '/home/ariel/Videos/input.mkv':
     Metadata:
       encoder         : libebml v0.7.7 + libmatroska v0.8.0
       creation_time   : 2006-07-20T03:07:03.000000Z
     Duration: 00:23:57.06, start: 0.000000, bitrate: 1983 kb/s
       Stream #0:0: Video: h264 (High), yuv420p(progressive), 720x480, SAR 37:30 DAR 37:20, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
       Stream #0:1(eng): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s (default)
       Stream #0:2(jpn): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
       Stream #0:3(eng): Subtitle: dvd_subtitle, 720x480 (default)
       Metadata:
         title           : English Audio
       Stream #0:4(eng): Subtitle: dvd_subtitle, 720x480
       Metadata:
         title           : Japanese Audio
    Output #0, matroska, to 'timing-1m49s.mkv':
     Metadata:
       encoder         : Lavf57.71.100
       Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 720x480 [SAR 37:30 DAR 37:20], q=2-31, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc (default)
       Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 192 kb/s (default)
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
     Stream #0:1 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    frame=    0 fps=0.0 q=-1.0 Lsize=       1kB time=00:00:00.00 bitrate=N/A speed=   0x    
    video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

    Wrong. It outputs a file with no frames :

    -rwxrwx--- 1 root users 805 Jul 30 01:36 timing-1m49s.mkv

    I have to specify -t 1:49 or more, and e.g. -t 1:55 produces a 6-second file that starts at 0:00 and according to the metadata should last 1:55.

    I arrived at this point trying to extract a clip and add subtitles in the same command, but this minimal case looks to me contrary to the documentation.

  • Stop ffmpeg from concealing corrupt frames

    22 mai 2021, par Dominic Mason

    To those who know the answer...

    


    I've been piping ffmpeg to aomenc quite successfully. Problem is, I'm sometimes getting source files for ffmpeg with false I-frames. I've loaded the files into virtualdub, and got the same result. There are some dummy frames, usually fake I-frames in a few of the files I have. So obviously, I want ffmpeg to simply drop such frames. I added the -err_detect aggressive -fflags discardcorrupt flags, but ffmpeg isn't having it. At the front of one vid I have a false I frame, but instead of dropping it I get :

    


    [h264 @ 0000000002ab8c00] concealing 8160 DC, 8160 AC, 8160 MV errors in P frame


    


    The result is I have a grey colored frame at the front of the video. So, I've read the other answers. Is there any other way than discardcorrupt of forcing ffmpeg to automatically drop these frames, or do I have to manually remove them ? I'm using a windows build of ffmpeg from gyandev in case that matters, compiled about a month ago.