Recherche avancée

Médias (0)

Mot : - Tags -/xmlrpc

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (56)

  • 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

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 is the first MediaSPIP stable release.
    Its official release date is June 21, 2013 and is announced here.
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

Sur d’autres sites (12529)

  • FFmpeg/libav : YUV420P to RGB conversion

    17 janvier 2014, par learner

    I am working with Video encoding-decoding based on online tutorials. In the encoding section, the dummy image created is in YUV420P format. I need it to be in RGB or BGR format. Any idea how to do this ??

    #include
    #include
    #include

    #ifdef HAVE_AV_CONFIG_H
    #undef HAVE_AV_CONFIG_H
    #endif

    #include "libavcodec/avcodec.h"
    #include "libavutil/mathematics.h"

    #define INBUF_SIZE 4096
    #define AUDIO_INBUF_SIZE 20480
    #define AUDIO_REFILL_THRESH 4096

    /*
    * Video encoding example
    */
    static void video_encode_example(const char *filename)
    {
        AVCodec *codec;
        AVCodecContext *c = NULL;
        int i, out_size, size, x, y, outbuf_size;
        FILE *f;
        AVFrame *picture;
        uint8_t *outbuf, *picture_buf;

        printf("Video encoding\n");

        /* find the mpeg1 video encoder */
        codec = avcodec_find_encoder(CODEC_ID_MPEG1VIDEO);
        if (!codec)
        {
            fprintf(stderr, "codec not found\n");
            exit(1);
        }

        c = avcodec_alloc_context();
        picture = avcodec_alloc_frame();

        /* put sample parameters */
        c->bit_rate = 400000;
        /* resolution must be a multiple of two */
        c->width = 352;
        c->height = 288;
        /* frames per second */
        c->time_base= (AVRational){1,25};
        c->gop_size = 10; /* emit one intra frame every ten frames */
        c->max_b_frames=1;
        c->pix_fmt = PIX_FMT_YUV420P;

        /* open it */
        if (avcodec_open(c, codec) < 0)
        {
            fprintf(stderr, "could not open codec\n");
            exit(1);
        }

        f = fopen(filename, "wb");
        if (!f)
        {
            fprintf(stderr, "could not open file! %s\n", filename);
            exit(1);
        }

        /* alloc image and output buffer */
        outbuf_size = 100000;
        outbuf = malloc(outbuf_size);
        size = c->width * c->height;
        picture_buf = malloc((size * 3) / 2); /* size for YUV 420 */

        picture->data[0] = picture_buf;
        picture->data[1] = picture->data[0] + size;
        picture->data[2] = picture->data[1] + size / 4;
        picture->linesize[0] = c->width;
        picture->linesize[1] = c->width / 2;
        picture->linesize[2] = c->width / 2;

        /* encode 1 second of video */
        for(i=0; i<25; i++)
        {
            fflush(stdout);
            /* prepare a dummy image */
            /* Y */
            for(y=0; y < c->height; y++)
            {
                for(x=0; x < c->width; x++)
                {
                    picture->data[0][y * picture->linesize[0] + x] = x + y + i * 3;
                }
            }

            /* Cb and Cr */
            for(y=0; y < c->height/2; y++)
            {
                for(x=0; x < c->width/2; x++)
                {
                    picture->data[1][y * picture->linesize[1] + x] = 128 + y + i * 2;
                    picture->data[2][y * picture->linesize[2] + x] = 64 + x + i * 5;
                }
            }

            /* encode the image */
            out_size = avcodec_encode_video(c, outbuf, outbuf_size, picture);
            printf("encoding frame %3d (size=%5d)\n", i, out_size);
            fwrite(outbuf, 1, out_size, f);
        }

        /* get the delayed frames */
        for(; out_size; i++)
        {
            fflush(stdout);

            out_size = avcodec_encode_video(c, outbuf, outbuf_size, NULL);
            printf("write frame %3d (size=%5d)\n", i, out_size);
            fwrite(outbuf, 1, out_size, f);
        }

        /* add sequence end code to have a real mpeg file */
        outbuf[0] = 0x00;
        outbuf[1] = 0x00;
        outbuf[2] = 0x01;
        outbuf[3] = 0xb7;
        fwrite(outbuf, 1, 4, f);
        fclose(f);
        free(picture_buf);
        free(outbuf);

        avcodec_close(c);
        av_free(c);
        av_free(picture);
        printf("\n");
    }

    /*
     * Video decoding example
     */

    static void pgm_save(unsigned char *buf, int wrap, int xsize, int ysize,
                         char *filename)
    {
        FILE *f;
        int i;

        f=fopen(filename,"w");
        fprintf(f,"P5\n%d %d\n%d\n",xsize,ysize,255);
        for(i=0; i* set end of buffer to 0 (this ensures that no overreading happens for damaged mpeg streams) */
        memset(inbuf + INBUF_SIZE, 0, FF_INPUT_BUFFER_PADDING_SIZE);

        printf("Video decoding\n");

        /* find the mpeg1 video decoder */
        codec = avcodec_find_decoder(CODEC_ID_MPEG1VIDEO);
        if (!codec) {
            fprintf(stderr, "codec not found\n");
            exit(1);
        }

        c = avcodec_alloc_context();
        picture = avcodec_alloc_frame();

        if(codec->capabilities&CODEC_CAP_TRUNCATED)
            c->flags|= CODEC_FLAG_TRUNCATED; /* we do not send complete frames */

        /* For some codecs, such as msmpeg4 and mpeg4, width and height
           MUST be initialized there because this information is not
           available in the bitstream. */

        /* open it */
        if (avcodec_open(c, codec) < 0) {
            fprintf(stderr, "could not open codec\n");
            exit(1);
        }

        /* the codec gives us the frame size, in samples */

        f = fopen(filename, "rb");
        if (!f) {
            fprintf(stderr, "could not open file! %s\n", filename);
            exit(1);
        }

        frame = 0;
        for(;;) {
            avpkt.size = fread(inbuf, 1, INBUF_SIZE, f);
            if (avpkt.size == 0)
                break;

            /* NOTE1: some codecs are stream based (mpegvideo, mpegaudio)
               and this is the only method to use them because you cannot
               know the compressed data size before analysing it.

               BUT some other codecs (msmpeg4, mpeg4) are inherently frame
               based, so you must call them with all the data for one
               frame exactly. You must also initialize 'width' and
               'height' before initializing them. */

            /* NOTE2: some codecs allow the raw parameters (frame size,
               sample rate) to be changed at any frame. We handle this, so
               you should also take care of it */

            /* here, we use a stream based decoder (mpeg1video), so we
               feed decoder and see if it could decode a frame */

            avpkt.data = inbuf;
            while (avpkt.size > 0)
            {
                len = avcodec_decode_video2(c, picture, &got_picture, &avpkt);
                if (len < 0)
                {
                    fprintf(stderr, "Error while decoding frame %d\n", frame);
                    exit(1);
                }
                if (got_picture)
                {
                    printf("saving frame %3d\n", frame);
                    fflush(stdout);

                    /* the picture is allocated by the decoder. no need to
                       free it */
                    snprintf(buf, sizeof(buf), outfilename, frame);
                    pgm_save(picture->data[0], picture->linesize[0],
                             c->width, c->height, buf);
                    frame++;
                }
                avpkt.size -= len;
                avpkt.data += len;
            }
        }

        /* some codecs, such as MPEG, transmit the I and P frame with a
           latency of one frame. You must do the following to have a
           chance to get the last frame of the video */

        avpkt.data = NULL;
        avpkt.size = 0;
        len = avcodec_decode_video2(c, picture, &got_picture, &avpkt);
        if (got_picture)
        {
            printf("saving last frame %3d\n", frame);
            fflush(stdout);

            /* the picture is allocated by the decoder. no need to
               free it */
            snprintf(buf, sizeof(buf), outfilename, frame);
            pgm_save(picture->data[0], picture->linesize[0],
                     c->width, c->height, buf);
            frame++;
        }

        fclose(f);

        avcodec_close(c);
        av_free(c);
        av_free(picture);
        printf("\n");
    }

    int main(int argc, char **argv)
    {
        const char *filename;

        /* must be called before using avcodec lib */
        avcodec_init();

        /* register all the codecs */
        avcodec_register_all();

        if (argc <= 1)
        {
            video_encode_example("asdf.mpg");
            filename = "asdf.mpg";
        }
        else
        {
            filename = argv[1];
        }

        video_decode_example("%d.pgm", filename);

        return 0;
    }

    I tried with PIX_FMT_RGB24 and changing each channel accordingly. For this, I declared another :

    AVFrame *pictureRGB ; and then : pictureRGB = avcodec_alloc_frame() ;

    for(y=0; y < c->height; y++)
    {
        for(x=0; x < c->width; x++)
        {
             pictureRGB ->data[0][y * pictureRGB ->linesize[0] + x] = x + y + i * 3;
             pictureRGB ->data[1][y * pictureRGB ->linesize[1] + x] = x + y + i * 3;
             pictureRGB ->data[2][y * pictureRGB ->linesize[2] + x] = x + y + i * 3;
        }
    }

    But it gives errors ! I am totally new to this library. Is it possible to directly encode as a RGB dummy image rather than as YUV420P. Anybody out there with sound knowledge in this area ??? Thanks in advance !

  • Compress video with ffmpeg4android library

    30 mars 2015, par Huy Tower

    I tried to follow ffmpeg4android library, and I get the problem when compressing the video, as the Log image below.

    I use intent to transfer to Compressing Media class,

    Intent intent = new Intent(this, CompressingMedia.class);
    intent.putExtra("file_path", mLlItems.get(0).getPath());
    startActivity(intent);

    This is the class was transfered to :

    public class CompressingMedia extends BaseWizard {

    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       Intent intent = getIntent();

       Log.d(Prefs.TAG, "path " + intent.getExtras().getString("file_path"));
       // /storage/emulated/0/DCIM/Camera/VID_20140312_090612.mp4

       String command = "ffmpeg -y -i " + intent.getExtras().getString("file_path") +
               " -strict experimental -s 320x240 -r 15 -aspect 3:4 -ab 12288 -vcodec mpeg4 -b 2097152 -sample_fmt s16 /sdcard/out.mp4";

       // if you want to change the default work location (/sdcard/videokit/) use the uncomment the below method.
       // It must be defined before calling the copyLicenseAndDemoFilesFromAssetsToSDIfNeeded method,
       // in order for this method to copy the assets to the correct location.
               //      setWorkingFolder("/sdcard/videokit/");

       // this will copy the license file and the demo video file.
       // to the videokit work folder location.
       // without the license file the library will not work.
       copyLicenseAndDemoFilesFromAssetsToSDIfNeeded();

       commandStr = command;
       setCommand(commandStr);

       runTranscoing();
       }
    }

    Although I received the notification Transcoding Successfully, but it looks like the capacity of file after compressing is always be 0. (the log in the bottom of images)

    I don’t know the result as image below is good or not, I can not get the expected result - The video was compressed totally successfully.

    Someone know why after compressing the file is always be 0, please tell me. Thanks.

    This is the Log Cat :

    03-13 14:49:45.655 : I/ActivityManager(6065) : Timeline :
    Activity_launch_request id:app.cloudstringers time:38212359

    03-13 14:49:45.665 : V/Home(6065) : Global ID is 000400010007 ;Sell is 3

    03-13 14:49:45.770 : D/ffmpeg4android(6065) : path
    /storage/emulated/0/videokit/out.mp4

    03-13 14:49:45.770 : I/ffmpeg4android(6065) : workingFolderPath :
    /sdcard/videokit/

    03-13 14:49:45.775 : D/ffmpeg4android(6065) : Working directory exists,
    not coping assests (license file and demo videos)

    03-13 14:49:45.785 : D/ffmpeg4android(6065) : output directory exists.

    03-13 14:49:45.785 : I/ffmpeg4android(6065) : Command is set

    03-13 14:49:45.785 : I/ffmpeg4android(6065) : set
    remoteNotificationIconId : 0

    03-13 14:49:45.785 : D/ffmpeg4android(6065) : Client Cannot unbind -
    service not bound

    03-13 14:49:45.785 : D/ffmpeg4android(6065) : Client stopService()

    03-13 14:49:45.790 : W/ContextImpl(6065) : Implicit intents with
    startService are not safe : Intent
    act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge

    android.content.ContextWrapper.stopService:499
    com.netcompss.ffmpeg4android_client.BaseWizard.stopService:451
    com.netcompss.ffmpeg4android_client.BaseWizard.runTranscoing:285

    03-13 14:49:45.795 : I/ffmpeg4android(6065) :
     !!!!!!!!!!!!!!!!!!services.size() : 1

    03-13 14:49:45.795 : I/ffmpeg4android(6065) : putting Base categoty

    03-13 14:49:45.810 : D/ffmpeg4android(6065) : started :
    com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge

    03-13 14:49:45.810 : D/ffmpeg4android(6065) : Client startService()

    03-13 14:49:45.810 : D/ffmpeg4android(6065) : bindService() called

    03-13 14:49:45.815 : W/ContextImpl(6065) : Implicit intents with
    startService are not safe : Intent
    act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge

    android.content.ContextWrapper.bindService:517
    com.netcompss.ffmpeg4android_client.BaseWizard.bindService:462
    com.netcompss.ffmpeg4android_client.BaseWizard.runTranscoing:288

    03-13 14:49:45.820 : D/ffmpeg4android(6065) : Client bindService()

    03-13 14:49:45.935 : I/ffmpeg4android(6616) : =======service onCreate() :
    Stopping forground (to overcome 2.3.x bug)

    03-13 14:49:45.935 : I/ffmpeg4android(6616) : =======service
    onBind()=======

    03-13 14:49:45.940 : I/ffmpeg4android(6616) : ===onStartCommand called

    03-13 14:49:45.940 : I/ffmpeg4android(6616) : ===onStartCommand cat :
    Base

    03-13 14:49:45.940 : D/ffmpeg4android(6616) : onStartCommand,
    START_STICKY, base Command

    03-13 14:49:45.955 : I/ffmpeg4android(6616) : get
    remoteNotificationIconId : 0

    03-13 14:49:45.955 : I/ffmpeg4android(6616) : notifIcon is set

    03-13 14:49:45.955 : I/ffmpeg4android(6616) : Start RemoteService with
    notification id : 5326

    03-13 14:49:45.965 : I/ffmpeg4android(6616) : Run called.

    03-13 14:49:45.965 : D/ffmpeg4android(6616) : Sleeping, waiting for
    command

    03-13 14:49:45.970 : D/ffmpeg4android(6065) : Client
    onServiceConnected()

    03-13 14:49:45.970 : I/ffmpeg4android(6065) : invokeService called

    03-13 14:49:45.970 : I/Videokit(6065) : licenseCheck in path :
    /sdcard/videokit

    03-13 14:49:45.970 : I/Videokit(6065) : isLicExistsComplex...

    03-13 14:49:45.970 : I/Videokit(6065) : trying to open
    /sdcard/videokit/ffmpeglicense.lic

    03-13 14:49:45.970 : I/Videokit(6065) : license file found...

    03-13 14:49:45.970 : I/Videokit(6065) : time decoded : 1394535283

    03-13 14:49:45.970 : I/Videokit(6065) : timeStrDec 1394535283 is a valid
    number.

    03-13 14:49:45.970 : I/Videokit(6065) : time diff : 161702

    03-13 14:49:45.970 : I/Videokit(6065) : You used 1 of your 15 trial
    days.

    03-13 14:49:45.970 : I/ffmpeg4android(6065) : setting remote
    notification info

    03-13 14:49:45.970 : D/ffmpeg4android(6616) : command items num : 21

    03-13 14:49:45.970 : D/ffmpeg4android(6616) : command : ffmpeg -y -i
    /storage/emulated/0/videokit/out.mp4 -strict experimental -s 320x240
    -r 15 -aspect 3:4 -ab 12288 -vcodec mpeg4 -b 2097152 -sample_fmt s16 /sdcard/out.mp4

    03-13 14:49:45.970 : D/ffmpeg4android(6616) : workingFolder from remote :
    /sdcard/videokit

    03-13 14:49:45.970 : D/ffmpeg4android(6065) : deleteing :
    /sdcard/videokit/vk.log isdeleted : true

    03-13 14:49:45.975 : D/ffmpeg4android(6065) : deleteing :
    /sdcard/videokit/ffmpeg4android.log isdeleted : false

    03-13 14:49:45.975 : D/ffmpeg4android(6065) : deleteing :
    /sdcard/videokit/videokit.log isdeleted : true

    03-13 14:49:45.980 : D/ffmpeg4android(6065) : Client invokeService()

    03-13 14:49:45.980 : D/ffmpeg4android(6065) : Acquire wake lock

    03-13 14:49:46.265 : D/ffmpeg4android(6616) : Sleeping, waiting for
    command

    03-13 14:49:46.295 : D/ffmpeg4android(6065) : TranscodeBackground
    doInBackground started

    03-13 14:49:46.295 : I/ffmpeg4android(6616) : =======remote service
    runTranscoding ======

    03-13 14:49:46.340 : V/HomeAsync(6065) : TOTAL_SPACE is
    1 ;AVAILABLE_SPACE is 0.451

    03-13 14:49:46.345 : I/ActivityManager(6065) : Timeline : Activity_idle
    id : android.os.BinderProxy@423deed8 time:38213045

    03-13 14:49:46.345 : I/ActivityManager(6065) : Timeline : Activity_idle
    id : android.os.BinderProxy@420323a0 time:38213045

    03-13 14:49:46.565 : D/dalvikvm(6616) : Trying to load lib
    /data/app-lib/app.cloudstringers-2/libvideokit.so 0x41b285f0

    03-13 14:49:46.570 : D/dalvikvm(6616) : Added shared lib
    /data/app-lib/app.cloudstringers-2/libvideokit.so 0x41b285f0

    03-13 14:49:46.570 : I/Videokit(6616) : Loading native library compiled
    at 21:59:53 Oct 23 2013

    03-13 14:49:46.575 : I/ffmpeg4android(6616) : ===============Running
    command from thread path : /sdcard/videokit

    03-13 14:49:46.575 : I/Videokit(6616) : vk ffmpeg sdcardPath :
    /sdcard/videokit

    03-13 14:49:46.575 : I/Videokit(6616) : licenseCheck in path :
    /sdcard/videokit

    03-13 14:49:46.575 : I/Videokit(6616) : isLicExistsComplex...

    03-13 14:49:46.575 : I/Videokit(6616) : trying to open
    /sdcard/videokit/ffmpeglicense.lic

    03-13 14:49:46.575 : I/Videokit(6616) : license file found...

    03-13 14:49:46.575 : I/ffmpeg4android(6616) :
    =======ProgressBackgroundRemote doInBackground=========

    03-13 14:49:46.575 : I/Videokit(6616) : time decoded : 1394535283

    03-13 14:49:46.575 : I/Videokit(6616) : timeStrDec 1394535283 is a valid
    number.

    03-13 14:49:46.575 : I/Videokit(6616) : time diff : 161703

    03-13 14:49:46.575 : I/Videokit(6616) : You used 1 of your 15 trial
    days.

    03-13 14:49:46.575 : D/Videokit(6616) : license check rc : 0

    03-13 14:49:46.575 : D/Videokit(6616) : run() called verion 2.0

    03-13 14:49:46.575 : D/Videokit(6616) : run passing off to main()

    03-13 14:49:46.800 : D/ffmpeg4android(6065) : onServiceDisconnected

    03-13 14:49:48.640 : I/ffmpeg4android(6065) : Got real duration :
    00:00:07.78

    03-13 14:49:48.640 : I/ffmpeg4android(6065) : ==== getting
    currentVkLogSize from VK

    03-13 14:49:48.640 : D/ffmpeg4android(6065) : currentVkLogSize : 5751

    03-13 14:49:48.645 : I/ffmpeg4android(6065) : No ffmpeg4android_log
    file, using vk log

    03-13 14:49:48.645 : I/line(6065) : _rate, rate, width or height

    03-13 14:49:48.650 : I/line(6065) : Statistics : 0 seeks, 0 writeouts

    03-13 14:49:48.650 : I/line(6065) : Statistics : 72873 bytes read, 2
    seeks

    03-13 14:49:48.650 : D/ffmpeg4android(6065) : currentTimeStr : exit

    03-13 14:49:48.650 : D/ffmpeg4android(6065) : ============Found one of
    the exit tokens in the log============

    03-13 14:49:48.650 : I/ffmpeg4android(6065) : onProgressUpdate : 100

    03-13 14:49:48.650 : D/ffmpeg4android(6065) : Releasing wake lock

    03-13 14:49:48.650 : D/ffmpeg4android(6065) : TranscodeBackground
    onPostExecute

    03-13 14:49:48.700 : D/ffmpeg4android(6065) : /sdcard/videokit/null
    length in bytes : 0

    03-13 14:49:48.700 : D/ffmpeg4android(6065) : showNotifications

    03-13 14:49:48.700 : W/ffmpeg4android(6065) : output file is not set use
    the setOutputFilePath method to set the full output file path

    03-13 14:49:48.705 : I/ffmpeg4android(6065) : FFMPEG finished.

    03-13 14:49:48.710 : D/ffmpeg4android(6065) : releaseService()

    03-13 14:49:48.710 : D/ffmpeg4android(6065) : Client stopService()

    03-13 14:49:48.710 : W/ContextImpl(6065) : Implicit intents with
    startService are not safe : Intent
    act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge

    android.content.ContextWrapper.stopService:499
    com.netcompss.ffmpeg4android_client.BaseWizard.stopService:451
    com.netcompss.ffmpeg4android_client.BaseWizard.handleServiceFinished:513

  • FFMpeg -re flag and segmenter. If end of file is reached, wait ?

    17 mars 2014, par user2901994

    This question is similar to

    Keep FFMPEG running and waiting for new image files to encode and stream

    FFMpeg's -re flag tells FFMpeg to "read input at native frame rate". This allows me to continuously append to the end of an audio file, as FFMpeg's segmenter runs, continuing to segment the file that is being appended to (for HLS).

    Is there a way to get FFMpeg to wait, instead of exit, even it it reaches the end of the input file ? If say, latency causes FFMpeg to catch up with my appending to the end of the file ?