Recherche avancée

Médias (91)

Autres articles (22)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

Sur d’autres sites (4863)

  • iPhone - A problem with decoding H264 using ffmpeg

    25 mars 2012, par HAPPY_TIGER

    I am working with ffmpeg to decode H264 stream from server.

    I referenced DecoderWrapper from http://github.com/dropcam/dropcam_for_iphone.

    I compiled it successfully, but I don't know how use it.

    Here are the function that has problem.

    - (id)initWithCodec:(enum VideoCodecType)codecType
            colorSpace:(enum VideoColorSpace)colorSpace
                 width:(int)width
                height:(int)height
           privateData:(NSData*)privateData {
       if(self = [super init]) {

           codec = avcodec_find_decoder(CODEC_ID_H264);
           codecCtx = avcodec_alloc_context();

           // Note: for H.264 RTSP streams, the width and height are usually not specified (width and height are 0).  
           // These fields will become filled in once the first frame is decoded and the SPS is processed.
           codecCtx->width = width;
           codecCtx->height = height;

           codecCtx->extradata = av_malloc([privateData length]);
           codecCtx->extradata_size = [privateData length];
           [privateData getBytes:codecCtx->extradata length:codecCtx->extradata_size];
           codecCtx->pix_fmt = PIX_FMT_YUV420P;
    #ifdef SHOW_DEBUG_MV
           codecCtx->debug_mv = 0xFF;
    #endif

           srcFrame = avcodec_alloc_frame();
           dstFrame = avcodec_alloc_frame();

           int res = avcodec_open(codecCtx, codec);
           if (res < 0)
           {
               NSLog(@"Failed to initialize decoder");
           }
       }

       return self;    
    }

    What is the privateData parameter of this function ? I don't know how to set the parameter...

    Now avcodec_decode_video2 returns -1 ;

    The framedata is coming successfully.

    How solve this problem.

    Thanks a lot.

  • ffmpeg got black and white video when encoding flv

    17 décembre 2012, par samyou

    i searched the site and got a post :
    getting black and white image after encoding
    but i got no answer.

    don't know how but it is all black and white.

    hear is the init code :

    JNIEXPORT jboolean JNICALL Java_sam_flvmuxer_SamRTMPNative_nativeInitMuxerAndStart(
       JNIEnv *env, jclass jcls, jstring outfile, jint inwidth, jint inheight,
       jint fps) {
    audioOutBuffer = malloc(AUDIO_OUT_BUFFER_SIZE);
    videoOutBuffer = malloc(VIDEO_OUT_BUFFER_SIZE);
    VIDEO_WIDTH = inwidth;
    VIDEO_HEIGHT = inheight;
    av_log_set_callback(samffmpeglogback);
    av_register_all();
    char *filepath = (*env)->GetStringUTFChars(env, outfile, 0);
    JNILOG("file path is %s",filepath);
    avformat_alloc_output_context2(&avFormatContext, NULL, NULL, filepath);
    if (!avFormatContext) {
       JNILOG("avformat_alloc_output_context2 with filepath failed");
       return JNI_FALSE;
    }
    AVOutputFormat *fmt = avFormatContext->oformat;
    //fmt->video_codec = VIDEO_CODEC_ID;
    ////init video
    avVideoStream = avformat_new_stream(avFormatContext, NULL );
    if (!avVideoStream) {
       (*env)->ReleaseStringUTFChars(env, outfile, filepath);
       return 0;
    }

    AVCodec *videocodec = avcodec_find_encoder(VIDEO_CODEC_ID);
    if (!videocodec) {
       JNILOG("avcodec_find_encoder error");
       return JNI_FALSE;
    }
    avcodec_get_context_defaults3(avVideoStream->codec, videocodec);

    AVCodecContext *avVideoCodecContext = avVideoStream->codec;
    avVideoCodecContext->codec_type = AVMEDIA_TYPE_VIDEO;
    avVideoCodecContext->codec_id = VIDEO_CODEC_ID;
    avVideoCodecContext->width = inwidth;
    avVideoCodecContext->height = inheight;
    avVideoCodecContext->time_base.den = fps;
    avVideoCodecContext->time_base.num = 1;
    avVideoCodecContext->gop_size = 10;
    avVideoCodecContext->pix_fmt = PIX_FMT_YUV420P;
    JNILOG("bitrate befort set = %d",avVideoCodecContext->bit_rate);
    avVideoCodecContext->bit_rate = 600000;


    if (fmt->flags & AVFMT_GLOBALHEADER)
       avVideoCodecContext->flags |= CODEC_FLAG_GLOBAL_HEADER;

    av_dump_format(avFormatContext,0,filepath,1);
    if(avcodec_open2(avVideoCodecContext,videocodec,NULL)<0)
    {
       JNILOG("video avcodec_open2 failed");
       (*env)->ReleaseStringUTFChars(env, outfile, filepath);
       return JNI_FALSE;
    }



    ///////
    /* open the output file, if needed */
    if (!(fmt->flags & AVFMT_NOFILE)) {
       if ((avio_open(&avFormatContext->pb, filepath, AVIO_FLAG_WRITE)) < 0) {
           JNILOG("Could not open file!");
           (*env)->ReleaseStringUTFChars(env, outfile, filepath);
           return 0;
       }
    }
    if (avformat_write_header(avFormatContext, NULL ) < 0) {
       JNILOG("Could not avformat_write_header!");
       (*env)->ReleaseStringUTFChars(env, outfile, filepath);
       return 0;
    }
    (*env)->ReleaseStringUTFChars(env, outfile, filepath);
    YUVFrame = avcodec_alloc_frame();
    JNILOG("ffmpeg every thing inited");
    return JNI_TRUE;
    }

    and encode code looks like below :

    avpicture_fill((AVPicture *)YUVFrame,framedata,PIX_FMT_YUV420P,VIDEO_WIDTH,VIDEO_HEIGHT);
       ///打印data 分量!!!!
       AVPacket pkt;
       av_init_packet(&pkt);
       pkt.data = videoOutBuffer;
       pkt.size = VIDEO_OUT_BUFFER_SIZE;
       int gotpkt = 0;
       avcodec_encode_video2(avVideoStream->codec,&pkt,YUVFrame,&gotpkt);
       if (gotpkt > 0) {
           JNILOG("encoded size=%d,gotpktflag=%d",pkt.size,gotpkt);
           pkt.stream_index = avVideoStream->index;
           pkt.flags |= AV_PKT_FLAG_KEY;
           pkt.pts = timestamp;
           while (pkt.pts <= lastVideoPts) {
               pkt.pts++;
           }
           lastVideoPts = pkt.pts;
           if (av_interleaved_write_frame(avFormatContext, &pkt) < 0) {
               JNILOG("av_interleaved_write_frame failed");
           }
       }

    someone please help me with this problem^^

  • How to Replace Duplicate Frames in a Video with Black Frames using ffmpeg ?

    21 mars 2021, par Yam Shargil

    I'm trying to trim all "no action, no movement" frames out of my screen recording. Some of my screen recordings are really long (like 100 hours long).

    


    I found this :
How to Simply Remove Duplicate Frames from a Video using ffmpeg

    


    ffmpeg -i in.mp4 -vf
"select='if(gt(scene,0.01),st(1,t),lte(t-ld(1),1))',setpts=N/FRAME_RATE/TB"
trimmed.mp4


    


    I don't want to lose any important frames, so for testing the threshold purposes, I want to replace (not remove) all the "no action" frames with black frames.

    


    That's my best shot so far, not my proudest work :

    


    ffmpeg -i in.mp4 -vf "select='if(gt(scene,0.01),st(1,t),lte(t-ld(1),1))',drawbox=color=black:t=fill" out.mp4