Recherche avancée

Médias (3)

Mot : - Tags -/image

Autres articles (103)

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

  • Formulaire personnalisable

    21 juin 2013, par

    Cette page présente les champs disponibles dans le formulaire de publication d’un média et il indique les différents champs qu’on peut ajouter. Formulaire de création d’un Media
    Dans le cas d’un document de type média, les champs proposés par défaut sont : Texte Activer/Désactiver le forum ( on peut désactiver l’invite au commentaire pour chaque article ) Licence Ajout/suppression d’auteurs Tags
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire. (...)

  • Qu’est ce qu’un masque de formulaire

    13 juin 2013, par

    Un masque de formulaire consiste en la personnalisation du formulaire de mise en ligne des médias, rubriques, actualités, éditoriaux et liens vers des sites.
    Chaque formulaire de publication d’objet peut donc être personnalisé.
    Pour accéder à la personnalisation des champs de formulaires, il est nécessaire d’aller dans l’administration de votre MediaSPIP puis de sélectionner "Configuration des masques de formulaires".
    Sélectionnez ensuite le formulaire à modifier en cliquant sur sont type d’objet. (...)

Sur d’autres sites (3924)

  • How to create a video from image buffers using fluent-ffmpeg ?

    23 juin 2016, par Zacky Pickholz

    I’ve been trying to create a slideshow from a series of images using nodejs + fluent-ffmpeg, however it is not working well or consistently. ffmpeg occasionally emits "Error : ffmpeg exited with code 1 : pipe:0 : Invalid data found when processing input", and in case an eventual video (mp4) is created it seems to be missing images/frames.

    The process is as follows : images are loaded into memory, transformed resized to same dimensions using lwip, written sequentially into a passthrough stream, which is fed to ffmpeg as input.

    Relevant code snippets :

    var lwip = require('lwip');
    var ffmpeg = require('fluent-ffmpeg');
    var stream = require('stream');
    var imagesStream = new stream.PassThrough();

    ...

    image.batch()
               .contain(options.video.width, options.video.height, 'lanczos')
               .toBuffer(options.frames.format, {quality: 100}, (err, buffer) => {
                   if (err) {
                       throw ('error convering image to buffer. ' + err);
                   }
                   imagesStream.write(buffer, 'utf8');
                   resolve();
               });

    ...

       ffmpeg(imagesStream)
           .inputOptions('-framerate 1/' + options.frames.secsPerImage)
           .input(path.join(AUDIO_ROOT, options.audio.track))
           .save(path.join(path.join(OUTPUT_FOLDER, `${options.video.output.prefix}${timestamp}.${options.video.output.format}`)))
           .size(`${options.video.width}x${options.video.height}`)
           .on('start', () => {
               console.log('creating the clip now...')
           })
           .on('progress', (progress) => {
               var progPercent = Math.round(100 * progress.frames / (numImages * options.frames.secsPerImage * 25));
               progPercent = Math.min(progPercent, 100);
               console.log(`processing: ${progPercent}% done`)
           })
           .on('stderr', (line) => {
               console.error('ffmpeg error: ' + line);
           })
           .on('error', (error) => {
               reject('ffmpeg transcoding error: ' + error);
           })
           .on('end', () => {
               console.log('done!');
               resolve(true);
           })
           .run();

    And here is the output :

    "C:\Program Files (x86)\JetBrains\WebStorm 2016.1.1\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" vm2.js
    image count: 18
    image count: 6
    creating the clip now...
    ffmpeg error: ffmpeg version N-80335-gcb46b78 Copyright (c) 2000-2016 the FFmpeg developers
    ffmpeg error:   built with gcc 5.4.0 (GCC)
    ffmpeg error:   configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
    ffmpeg error:   libavutil      55. 24.100 / 55. 24.100
    ffmpeg error:   libavcodec     57. 46.100 / 57. 46.100
    ffmpeg error:   libavformat    57. 38.100 / 57. 38.100
    ffmpeg error:   libavdevice    57.  0.101 / 57.  0.101
    ffmpeg error:   libavfilter     6. 46.101 /  6. 46.101
    ffmpeg error:   libswscale      4.  1.100 /  4.  1.100
    ffmpeg error:   libswresample   2.  1.100 /  2.  1.100
    ffmpeg error:   libpostproc    54.  0.100 / 54.  0.100
    creating the clip now...
    ffmpeg error: ffmpeg version N-80335-gcb46b78 Copyright (c) 2000-2016 the FFmpeg developers
    ffmpeg error:   built with gcc 5.4.0 (GCC)
    ffmpeg error:   configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
    ffmpeg error:   libavutil      55. 24.100 / 55. 24.100
    ffmpeg error:   libavcodec     57. 46.100 / 57. 46.100
    ffmpeg error:   libavformat    57. 38.100 / 57. 38.100
    ffmpeg error:   libavdevice    57.  0.101 / 57.  0.101
    ffmpeg error:   libavfilter     6. 46.101 /  6. 46.101
    ffmpeg error:   libswscale      4.  1.100 /  4.  1.100
    ffmpeg error:   libswresample   2.  1.100 /  2.  1.100
    ffmpeg error:   libpostproc    54.  0.100 / 54.  0.100
    ffmpeg error: pipe:0: Invalid data found when processing input
    ffmpeg error:
    an error has occurred: ffmpeg transcoding error: Error: ffmpeg exited with code 1: pipe:0: Invalid data found when processing input

    ffmpeg error: [jpeg_pipe @ 0000000000308fe0] Format jpeg_pipe detected only with low score of 6, misdetection possible!
    ffmpeg error: Input #0, jpeg_pipe, from 'pipe:0':
    ffmpeg error:   Duration: N/A, bitrate: N/A
    ffmpeg error:     Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1920x1080 [SAR 1:1 DAR 16:9], 0.33 tbr, 0.33 tbn, 0.33 tbc
    ffmpeg error: [mp3 @ 0000000002fa0720] Estimating duration from bitrate, this may be inaccurate
    ffmpeg error: Input #1, mp3, from 'audio\avicii.mp3':
    ffmpeg error:   Metadata:
    ffmpeg error:     album           : True
    ffmpeg error:     genre           : House
    ffmpeg error:     copyright       : ℗ 2013 Avicii Music AB, / PRMD under exclusive license to Universal Music AB
    ffmpeg error:     encoded_by      : Oz
    ffmpeg error:     title           : Wake Me Up
    ffmpeg error:     artist          : Avicii
    ffmpeg error:     album_artist    : Avicii
    ffmpeg error:     disc            : 1/1
    ffmpeg error:     track           : 1/12
    ffmpeg error:     TYER            : 2013-09-13T07:00:00Z
    ffmpeg error:   Duration: 00:04:09.73, start: 0.000000, bitrate: 321 kb/s
    ffmpeg error:     Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
    ffmpeg error:     Stream #1:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 600x600 [SAR 305:305 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
    ffmpeg error:     Metadata:
    ffmpeg error:       comment         : Cover (front)
    ffmpeg error: No pixel format specified, yuvj420p for H.264 encoding chosen.
    ffmpeg error: Use -pix_fmt yuv420p for compatibility with outdated media players.
    ffmpeg error: [libx264 @ 000000000030e860] using SAR=1/1
    ffmpeg error: [libx264 @ 000000000030e860] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
    ffmpeg error: [libx264 @ 000000000030e860] profile High, level 4.0
    ffmpeg error: [libx264 @ 000000000030e860] 264 - core 148 r2694 3b70645 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    ffmpeg error: [mp4 @ 0000000002ec6980] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
    ffmpeg error:     Last message repeated 1 times
    ffmpeg error: Output #0, mp4, to 'output\clip_2016-06-22_06-17-25.mp4':
    ffmpeg error:   Metadata:
    ffmpeg error:     encoder         : Lavf57.38.100
    ffmpeg error:     Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 25 tbc
    ffmpeg error:     Metadata:
    ffmpeg error:       encoder         : Lavc57.46.100 libx264
    ffmpeg error:     Side data:
    ffmpeg error:       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    ffmpeg error:     Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s
    ffmpeg error:     Metadata:
    ffmpeg error:       encoder         : Lavc57.46.100 aac
    ffmpeg error: Stream mapping:
    ffmpeg error:   Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
    ffmpeg error:   Stream #1:0 -> #0:1 (mp3 (native) -> aac (native))
    ffmpeg error: frame=   75 fps=0.0 q=28.0 size=       0kB time=00:00:00.64 bitrate=   0.6kbits/s dup=74 drop=0 speed=1.09x    
    processing: 17% done
    ffmpeg error: frame=  150 fps= 97 q=28.0 size=     371kB time=00:00:03.64 bitrate= 835.6kbits/s dup=148 drop=0 speed=2.35x    
    processing: 33% done
    processing: 33% done
    ffmpeg error: frame=  150 fps= 73 q=28.0 size=     879kB time=00:00:07.36 bitrate= 977.8kbits/s dup=148 drop=0 speed= 3.6x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 59 q=28.0 size=     952kB time=00:00:18.36 bitrate= 424.7kbits/s dup=148 drop=0 speed=7.21x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 49 q=28.0 size=    1190kB time=00:00:32.99 bitrate= 295.3kbits/s dup=148 drop=0 speed=10.8x    
    ffmpeg error: frame=  150 fps= 42 q=28.0 size=    1409kB time=00:00:46.64 bitrate= 247.4kbits/s dup=148 drop=0 speed=13.1x    
    processing: 33% done
    processing: 33% done
    ffmpeg error: frame=  150 fps= 37 q=28.0 size=    1628kB time=00:01:00.30 bitrate= 221.1kbits/s dup=148 drop=0 speed=14.9x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 33 q=28.0 size=    1878kB time=00:01:15.83 bitrate= 202.8kbits/s dup=148 drop=0 speed=16.7x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 30 q=28.0 size=    2130kB time=00:01:31.64 bitrate= 190.4kbits/s dup=148 drop=0 speed=18.2x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 27 q=28.0 size=    2375kB time=00:01:47.18 bitrate= 181.5kbits/s dup=148 drop=0 speed=19.3x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 25 q=28.0 size=    2626kB time=00:02:03.15 bitrate= 174.7kbits/s dup=148 drop=0 speed=20.4x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 23 q=28.0 size=    2832kB time=00:02:16.20 bitrate= 170.3kbits/s dup=148 drop=0 speed=20.8x    
    ffmpeg error: frame=  150 fps= 21 q=28.0 size=    3063kB time=00:02:30.34 bitrate= 166.9kbits/s dup=148 drop=0 speed=21.3x    
    processing: 33% done
    processing: 33% done
    ffmpeg error: frame=  150 fps= 20 q=28.0 size=    3298kB time=00:02:44.93 bitrate= 163.8kbits/s dup=148 drop=0 speed=21.8x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 19 q=28.0 size=    3522kB time=00:02:58.93 bitrate= 161.3kbits/s dup=148 drop=0 speed=22.2x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 18 q=28.0 size=    3792kB time=00:03:15.83 bitrate= 158.6kbits/s dup=148 drop=0 speed=22.9x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 17 q=28.0 size=    4035kB time=00:03:31.11 bitrate= 156.6kbits/s dup=148 drop=0 speed=23.3x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 16 q=28.0 size=    4294kB time=00:03:47.62 bitrate= 154.5kbits/s dup=148 drop=0 speed=23.8x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 15 q=28.0 size=    4566kB time=00:04:04.87 bitrate= 152.7kbits/s dup=148 drop=0 speed=24.4x    
    processing: 33% done
    ffmpeg error: frame=  150 fps= 14 q=-1.0 Lsize=    4851kB time=00:04:09.73 bitrate= 159.1kbits/s dup=148 drop=0 speed=23.6x    
    ffmpeg error: video:826kB audio:3978kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.967442%
    ffmpeg error: [libx264 @ 000000000030e860] frame I:2     Avg QP:14.53  size:414604
    ffmpeg error: [libx264 @ 000000000030e860] frame P:38    Avg QP:16.59  size:   222
    ffmpeg error: [libx264 @ 000000000030e860] frame B:110   Avg QP:12.67  size:    69
    ffmpeg error: [libx264 @ 000000000030e860] consecutive B-frames:  1.3%  2.7%  0.0% 96.0%
    ffmpeg error: [libx264 @ 000000000030e860] mb I  I16..4: 25.5% 49.4% 25.1%
    ffmpeg error: [libx264 @ 000000000030e860] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.7%  0.0%  0.0%  0.0%  0.0%    skip:99.2%
    ffmpeg error: [libx264 @ 000000000030e860] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.0%  0.0%  0.0%  direct: 0.0%  skip:100.0%  L0: 1.2% L1:98.8% BI: 0.0%
    ffmpeg error: [libx264 @ 000000000030e860] 8x8 transform intra:49.4% inter:92.1%
    ffmpeg error: [libx264 @ 000000000030e860] coded y,uvDC,uvAC intra: 74.2% 73.7% 69.0% inter: 0.0% 0.2% 0.0%
    ffmpeg error: [libx264 @ 000000000030e860] i16 v,h,dc,p: 97%  0%  2%  1%
    ffmpeg error: [libx264 @ 000000000030e860] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 19% 15%  7%  9%  7% 10%  7% 13%
    ffmpeg error: [libx264 @ 000000000030e860] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 21%  8%  8% 11%  9% 12%  7% 13%
    ffmpeg error: [libx264 @ 000000000030e860] i8c dc,h,v,p: 55% 19% 16% 10%
    ffmpeg error: [libx264 @ 000000000030e860] Weighted P-Frames: Y:0.0% UV:0.0%
    ffmpeg error: [libx264 @ 000000000030e860] ref P L0: 95.4%  0.6%  3.1%  0.9%
    ffmpeg error: [libx264 @ 000000000030e860] ref B L1: 98.8%  1.2%
    ffmpeg error: [libx264 @ 000000000030e860] kb/s:1127.01
    ffmpeg error: [aac @ 0000000002ecc880] Qavg: 541.237
    ffmpeg error:
    done!
  • FFmpegFrameGrabber and FFmpegFrameRecorder Audio Issue

    20 août 2015, par Sheheryar Chagani

    I am compress an existing camera recorded video using FFmpegframerecorder and ffmpegFrameGrabber.

    The issue is that its audio is not occurring after compression.

    Please note that I am using googlecode.javacv along with javacpp and armeabi in lib folder.

    Below is the code which I have used.

    public void compressVideo(String filePath)

       FrameGrabber grabber = new FFmpegFrameGrabber(filePath);
       grabber.start();
       fileoutput = filePath.replace("trimmed", "compressed");
       // recorder.setAudioCodec(grabber.get);
       FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(fileoutput, 480,
               480, grabber.getAudioChannels());
       recorder.setFrameRate(grabber.getFrameRate());
       recorder.setSampleRate(grabber.getSampleRate());
       recorder.setSampleFormat(grabber.getSampleFormat());
       recorder.setFormat(grabber.getFormat());
       // recorder.setPixelFormat(grabber.getPixelFormat());

       recorder.start();
       Frame frame;
       int count = 0;
       while ((frame = grabber.grabFrame()) != null) {
           if (frame.image != null) {
               publishProgress(count);
               count++;
               IplImage rotateImage = rotate(frame.image, 90);
               IplImage cropImage = resizeImage(rotateImage, 480, 480, true);
               frame.image = cropImage;
               recorder.record(frame);
               if (rotateImage != null)
                   opencv_core.cvReleaseImage(rotateImage);
               if (cropImage != null)
                   opencv_core.cvReleaseImage(cropImage);
           } else {
               recorder.record(frame);
           }

       }
       recorder.stop();
       grabber.stop();
       recorder.release();
       grabber.release();
    }

    IplImage resizeImage(IplImage origImg, int newWidth, int newHeight,
           boolean keepAspectRatio) {

       IplImage outImg;
       int origWidth = 0;
       int origHeight = 0;
       if (origImg != null) {
           origWidth = origImg.width();
           origHeight = origImg.height();
       }
       if (newWidth <= 0 || newHeight <= 0 || origImg == null
               || origWidth <= 0 || origHeight <= 0) {
           // cerr << "ERROR: Bad desired image size of " << newWidth
           // << "x" << newHeight << " in resizeImage().\n";
           return null;
       }

       if (keepAspectRatio) {
           // Resize the image without changing its aspect ratio,
           // by cropping off the edges and enlarging the middle section.
           CvRect r;
           // input aspect ratio
           float origAspect = (origWidth / (float) origHeight);
           // output aspect ratio
           float newAspect = (newWidth / (float) newHeight);
           // crop width to be origHeight * newAspect
           if (origAspect > newAspect) {
               int tw = (origHeight * newWidth) / newHeight;
               // System.out.println((origWidth - tw) / 2+" "+)
               r = opencv_core.cvRect((origWidth - tw) / 2, 0, tw, origHeight);
           } else { // crop height to be origWidth / newAspect
               int th = (origWidth * newHeight) / newWidth;
               r = opencv_core.cvRect(0, (origHeight - th) / 2, origWidth, th);
           }
           IplImage croppedImg = cropImage(origImg, r);

           // Call this function again, with the new aspect ratio image.
           // Will do a scaled image resize with the correct aspect ratio.
           outImg = resizeImage(croppedImg, newWidth, newHeight, false);
           opencv_core.cvReleaseImage(croppedImg);

       } else {

           // Scale the image to the new dimensions,
           // even if the aspect ratio will be changed.
           outImg = opencv_core.cvCreateImage(
                   opencv_core.cvSize(newWidth, newHeight), origImg.depth(),
                   origImg.nChannels());
           if (newWidth > origImg.width() && newHeight > origImg.height()) {
               // Make the image larger
               opencv_core.cvResetImageROI((IplImage) origImg);
               // CV_INTER_LINEAR: good at enlarging.
               // CV_INTER_CUBIC: good at enlarging.
               cvResize(origImg, outImg, CV_INTER_LINEAR);
           } else {
               // Make the image smaller
               opencv_core.cvResetImageROI((IplImage) origImg);
               // CV_INTER_AREA: good at shrinking (decimation) only.
               cvResize(origImg, outImg, CV_INTER_AREA);
           }

       }
       return outImg;
    }

    // Returns a new image that is a cropped version (rectangular cut-out)
    // of the original image.
    IplImage cropImage(IplImage img, CvRect region) {
       IplImage imageCropped;
       opencv_core.CvSize size = new CvSize();

       if (img.width() <= 0 || img.height() <= 0 || region.width() <= 0
               || region.height() <= 0) {
           // cerr << "ERROR in cropImage(): invalid dimensions." << endl;
           return null;
       }

       if (img.depth() != opencv_core.IPL_DEPTH_8U) {
           // cerr << "ERROR in cropImage(): image depth is not 8." << endl;
           return null;
       }

       // Set the desired region of interest.
       opencv_core.cvSetImageROI((IplImage) img, region);
       // Copy region of interest into a new iplImage and return it.
       size.width(region.width());
       size.height(region.height());
       imageCropped = opencv_core.cvCreateImage(size,
               opencv_core.IPL_DEPTH_8U, img.nChannels());
       opencv_core.cvCopy(img, imageCropped); // Copy just the region.

       return imageCropped;
    }

    public IplImage rotate(IplImage image, double angle) {
       IplImage copy = opencv_core.cvCloneImage(image);

       IplImage rotatedImage = opencv_core.cvCreateImage(
               opencv_core.cvGetSize(copy), copy.depth(), copy.nChannels());
       CvMat mapMatrix = opencv_core.cvCreateMat(2, 3, opencv_core.CV_32FC1);

       // Define Mid Point
       CvPoint2D32f centerPoint = new CvPoint2D32f();
       centerPoint.x(copy.width() / 2);
       centerPoint.y(copy.height() / 2);

       // Get Rotational Matrix
       opencv_imgproc.cv2DRotationMatrix(centerPoint, angle, 1.0, mapMatrix);

       // Rotate the Image
       opencv_imgproc.cvWarpAffine(copy, rotatedImage, mapMatrix,
               opencv_imgproc.CV_INTER_CUBIC
                       + opencv_imgproc.CV_WARP_FILL_OUTLIERS,
               opencv_core.cvScalarAll(170));
       opencv_core.cvReleaseImage(copy);
       opencv_core.cvReleaseMat(mapMatrix);
       return rotatedImage;
    }

    I am rotating the video frame and then resizing the frame image.

    The code was working fine 3 days ago but not suddenly it started messing up.

  • Processing time for adding an overlay to video using ffmpeg is too long in Android

    23 septembre 2015, par Abhimanyu

    I am working on an app in which I am using android-ffmpeg-java library. I am using filter_complex to add a video overlay on static image but processing time it is taking is too long.
    Can you please suggest any other library that could help me or how can i improvise the current code

    public Clip createOverlayVideo (String backGroungImagePath,String fiveSecsGifVideoPath , String outputPath, int x,int y,int bgwidth,int bgHeight,ShellCallback sc) throws Exception
       {

           Log.d("FfmpegController", "Width " + bgwidth);
           Log.d("FfmpegController", "Height " + bgHeight);
           Clip result = new Clip ();
           ArrayList<string> cmd = new ArrayList<string>();
           cmd = new ArrayList<string>();
           cmd.add(mFfmpegBin);

           cmd.add("-y");

           cmd.add("-loop");
           cmd.add("1");

           cmd.add(Argument.FRAMERATE);
           cmd.add("25" );
           //-profile:v high -preset slow -b:v 500k

           cmd.add("-i");
           cmd.add(backGroungImagePath);

           Log.e("X and Y value ==== ", "overlayAdditionOnImageConvertToVideo" + x + "   y == " + y);

           cmd.add("-i");
           cmd.add(fiveSecsGifVideoPath);

           cmd.add("-filter_complex");


           //change x and y coordinate to 0 if x or y coordinate is neg
           if(x&lt;0)
               x = 0;
           if (y &lt; 0)
               y = 0;
           //cmd.add("\"");
           cmd.add("[0:v]scale=" + bgwidth + ":" + bgHeight + "[scaled];[scaled][1:v]overlay=" + x + ":" + y);
           //cmd.add("\"");
           Log.d("", "Command    " + "[0:v]scale=" + bgwidth + ":" + bgHeight + "[scaled];[scaled][1:v]overlay=" + x + ":" + y);
           Log.d("value", "Overlay command [0:v][1:v]overlay=" + x + ":" + y);

           cmd.add("-shortest");

           cmd.add("-t");
           cmd.add("5");


           cmd.add("-c:a");
           cmd.add("copy");

           cmd.add("-b:a");
           cmd.add("128k");

           cmd.add(Argument.FRAMERATE);
           cmd.add("25" );

           cmd.add("-preset");
           cmd.add("ultrafast");

           /*cmd.add("-b:v");
           cmd.add("512k");

           cmd.add("-minrate");
           cmd.add("512k");

           cmd.add("-maxrate");
           cmd.add("512k");

           cmd.add("-bufsize");
           cmd.add("512k");

           cmd.add("-f");
           cmd.add("mp4");*/

           cmd.add("-y");

           result.path = outputPath;


           cmd.add(new File(result.path).getCanonicalPath());
           Log.d("FFMPEG", "createOverlayVideo Command " + cmd);
           execFFMPEG(cmd, sc);

           return result;
       }
    </string></string></string>