Recherche avancée

Médias (1)

Mot : - Tags -/publicité

Autres articles (48)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • 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

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

Sur d’autres sites (7902)

  • Encode video using ffmpeg from javacv on Android causes native code crash

    13 décembre 2012, par gtcompscientist

    NOTE : I have updated this since originally asking the question to reflect some of what I have learned about loading live camera images into the ffmpeg libraries.

    I am using ffmpeg from javacv compiled for Android to encode/decode video for my application. (Note that originally, I was trying to use ffmpeg-java, but it has some incompatible libraries)

    Original problem : The problem that I've run into is that I am currently getting each frame as a Bitmap (just a plain android.graphics.Bitmap) and I can't figure out how to stuff that into the encoder.

    Solution in javacv's ffmpeg : Use avpicture_fill(), the format from Android is supposedly YUV420P, though I can't verify this until my encoder issues (below) are fixed.

    avcodec.avpicture_fill((AVPicture)mFrame, picPointer, avutil.PIX_FMT_YUV420P, VIDEO_WIDTH, VIDEO_HEIGHT)

    Problem Now : The line that is supposed to actually encode the data crashes the thread. I get a big native code stack trace that I'm unable to understand. Does anybody have a suggestion ?

    Here is the code that I am using to instantiate all the ffmpeg libraries :

       avcodec.avcodec_register_all();
       avcodec.avcodec_init();
       avformat.av_register_all();

       mCodec = avcodec.avcodec_find_encoder(avcodec.CODEC_ID_H263);
       if (mCodec == null)
       {
           Logging.Log("Unable to find encoder.");
           return;
       }
       Logging.Log("Found encoder.");

       mCodecCtx = avcodec.avcodec_alloc_context();
       mCodecCtx.bit_rate(300000);
       mCodecCtx.codec(mCodec);
       mCodecCtx.width(VIDEO_WIDTH);
       mCodecCtx.height(VIDEO_HEIGHT);
       mCodecCtx.pix_fmt(avutil.PIX_FMT_YUV420P);
       mCodecCtx.codec_id(avcodec.CODEC_ID_H263);
       mCodecCtx.codec_type(avutil.AVMEDIA_TYPE_VIDEO);
       AVRational ratio = new AVRational();
       ratio.num(1);
       ratio.den(30);
       mCodecCtx.time_base(ratio);
       mCodecCtx.coder_type(1);
       mCodecCtx.flags(mCodecCtx.flags() | avcodec.CODEC_FLAG_LOOP_FILTER);
       mCodecCtx.me_cmp(avcodec.FF_LOSS_CHROMA);
       mCodecCtx.me_method(avcodec.ME_HEX);
       mCodecCtx.me_subpel_quality(6);
       mCodecCtx.me_range(16);
       mCodecCtx.gop_size(30);
       mCodecCtx.keyint_min(10);
       mCodecCtx.scenechange_threshold(40);
       mCodecCtx.i_quant_factor((float) 0.71);
       mCodecCtx.b_frame_strategy(1);
       mCodecCtx.qcompress((float) 0.6);
       mCodecCtx.qmin(10);
       mCodecCtx.qmax(51);
       mCodecCtx.max_qdiff(4);
       mCodecCtx.max_b_frames(1);
       mCodecCtx.refs(2);
       mCodecCtx.directpred(3);
       mCodecCtx.trellis(1);
       mCodecCtx.flags2(mCodecCtx.flags2() | avcodec.CODEC_FLAG2_BPYRAMID | avcodec.CODEC_FLAG2_WPRED | avcodec.CODEC_FLAG2_8X8DCT | avcodec.CODEC_FLAG2_FASTPSKIP);

       if (avcodec.avcodec_open(mCodecCtx, mCodec) == 0)
       {
           Logging.Log("Unable to open encoder.");
           return;
       }
       Logging.Log("Encoder opened.");

       mFrameSize = avcodec.avpicture_get_size(avutil.PIX_FMT_YUV420P, VIDEO_WIDTH, VIDEO_HEIGHT);
       Logging.Log("Frame size - '" + mFrameSize + "'.");
       //mPic = new AVPicture(mPicSize);
       mFrame = avcodec.avcodec_alloc_frame();
       if (mFrame == null)
       {
           Logging.Log("Unable to alloc frame.");
       }

    This is what I want to be able to execute next :

       BytePointer picPointer = new BytePointer(data);
       int bBuffSize = mFrameSize;

       BytePointer bBuffer = new BytePointer(bBuffSize);

       int picSize = 0;
       if ((picSize = avcodec.avpicture_fill((AVPicture)mFrame, picPointer, avutil.PIX_FMT_YUV420P, VIDEO_WIDTH, VIDEO_HEIGHT)) <= 0)
       {
           Logging.Log("Couldn't convert preview to AVPicture (" + picSize + ")");
           return;
       }
       Logging.Log("Converted preview to AVPicture (" + picSize + ")");

       VCAP_Package vPackage = new VCAP_Package();

       if (mCodecCtx.isNull())
       {
           Logging.Log("Codec Context is null!");
       }

       //encode the image
       int size = avcodec.avcodec_encode_video(mCodecCtx, bBuffer, bBuffSize, mFrame);

       int totalSize = 0;
       while (size >= 0)
       {
           totalSize += size;
           Logging.Log("Encoded '" + size + "' bytes.");
           //Get any delayed frames
           size = avcodec.avcodec_encode_video(mCodecCtx, bBuffer, bBuffSize, null);
       }
       Logging.Log("Finished encoding. (" + totalSize + ")");

    But, as of now, I don't know how to put the Bitmap into the right piece or if I have that setup correctly.

    A few notes about the code :
    - VIDEO_WIDTH = 352
    - VIDEO_HEIGHT = 288
    - VIDEO_FPS = 30 ;

  • Video alignment error with ffmpeg in android system

    18 juillet 2012, par hyy

    I am using ffmeg to encode yuv pics to MPEG4 video file.The yuv420sp pics were got from camera preview(my android 2.3 phone). And I secondly use sws_scale change them to yuv420p.
    After the encoding the MPEG4 video has not the same image position. A
    percent of the right vertical part of the video has moved to the left side
    of the video. Does anyone know why is this happening ?

  • How to record video using ffmpeg on android ?

    21 septembre 2012, par Junaid

    I want to create a video using ffmpeg by taking byte[] data from Android Camera. Now the problem is i don't have much knowledge about ffmpeg. So i need some documentation on ffmpeg. I will appreciate if anyone can provide some useful tutorial / sample code / example on ffmpeg and how it works , how it can be used to create video programmatically, Thanks.