Recherche avancée

Médias (1)

Mot : - Tags -/swfupload

Autres articles (99)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

Sur d’autres sites (11162)

  • how to use crop filter twice in ffmpeg

    1er mars 2015, par user1502679

    I want to use crop filter in two different locations, for example top left + bottom right and to merge them, how can I do this ?

    I want to use the code once, not to make with two independent crops and merge after that.

    EDIT : an image : http://alexvorn.com/wp-content/uploads/2013/07/ffmpeg-multiple-crop.png

  • Why ffmpeg command results in blank video ?

    17 juillet 2013, par kheya

    I am trying to conver mov file to H264 encoded mp4
    Same command converts another mov file just fine.

    But fails for a particular mov file. Original video is 29.6MB after conversion I get 966KB

    I get the sound and duration right. But all the frames are black even though original video is fine.

    Here is the command :

    ffmpeg -i file3.mov -movflags +faststart -vcodec libx264 -preset slow -crf 20 -vf -threads 0 -acodec libvo_aacenc -b:a 128k "file3.mp4"

    Here is the result of ffmpeg -i : >ffmpeg.exe -i file3.mov

    ffmpeg version N-54691-g7f4a1fd Copyright (c) 2000-2013 the FFmpeg developers
     built on Jul 12 2013 16:31:48 with gcc 4.7.3 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
    isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
    le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
    e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
    ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
    ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
    eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
    amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
    enable-libxvid --enable-zlib
     libavutil      52. 39.100 / 52. 39.100
     libavcodec     55. 18.102 / 55. 18.102
     libavformat    55. 12.102 / 55. 12.102
     libavdevice    55.  3.100 / 55.  3.100
     libavfilter     3. 80.101 /  3. 80.101
     libswscale      2.  3.100 /  2.  3.100
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  3.100 / 52.  3.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00000000003077e0] sample aspect ratio already set to
    118:81, ignoring 'pasp' atom (10000:7031)
    Guessed Channel Layout for  Input Stream #0.1 : stereo
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file3.mov':
     Metadata:
       creation_time   : 2009-02-12 01:19:22
     Duration: 00:00:08.00, start: 0.000000, bitrate: 30338 kb/s
       Stream #0:0(eng): Video: dvvideo (dvpp / 0x70707664), yuv411p, 720x576 [SAR
    64:45 DAR 16:9], 28800 kb/s, SAR 118:81 DAR 295:162, 25 fps, 25 tbr, 600 tbn, 25
    tbc
       Metadata:
         creation_time   : 2009-02-12 01:19:22
         handler_name    : Apple Alias Data Handler
       Stream #0:1(eng): Audio: pcm_s16be (twos / 0x736F7774), 48000 Hz, stereo, s1
    6, 1536 kb/s
       Metadata:
         creation_time   : 2009-02-12 01:19:22
         handler_name    : Apple Alias Data Handler

    During conversion here is what I see (nothing unusual or no errors) :

    ffmpeg version N-54691-g7f4a1fd Copyright (c) 2000-2013 the FFmpeg developers
     built on Jul 12 2013 16:31:48 with gcc 4.7.3 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
    isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
    le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
    e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
    ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
    ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
    eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
    amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
    enable-libxvid --enable-zlib
     libavutil      52. 39.100 / 52. 39.100
     libavcodec     55. 18.102 / 55. 18.102
     libavformat    55. 12.102 / 55. 12.102
     libavdevice    55.  3.100 / 55.  3.100
     libavfilter     3. 80.101 /  3. 80.101
     libswscale      2.  3.100 /  2.  3.100
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  3.100 / 52.  3.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00000000024aafe0] sample aspect ratio already set to
    118:81, ignoring 'pasp' atom (10000:7031)
    Guessed Channel Layout for  Input Stream #0.1 : stereo
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file3.mov':
     Metadata:
       creation_time   : 2009-02-12 01:19:22
     Duration: 00:00:08.00, start: 0.000000, bitrate: 30338 kb/s
       Stream #0:0(eng): Video: dvvideo (dvpp / 0x70707664), yuv411p, 720x576 [SAR
    64:45 DAR 16:9], 28800 kb/s, SAR 118:81 DAR 295:162, 25 fps, 25 tbr, 600 tbn, 25
    tbc
       Metadata:
         creation_time   : 2009-02-12 01:19:22
         handler_name    : Apple Alias Data Handler
       Stream #0:1(eng): Audio: pcm_s16be (twos / 0x736F7774), 48000 Hz, stereo, s1
    6, 1536 kb/s
       Metadata:
         creation_time   : 2009-02-12 01:19:22
         handler_name    : Apple Alias Data Handler
    No pixel format specified, yuv422p for H.264 encoding chosen.
    Use -pix_fmt yuv420p for compatibility with outdated media players.
    [libx264 @ 0000000000347340] using SAR=118/81
    [libx264 @ 0000000000347340] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
    AVX
    [libx264 @ 0000000000347340] profile High 4:2:2, level 2.1, 4:2:2 8-bit
    [libx264 @ 0000000000347340] 264 - core 133 r2334 a3ac64b - H.264/MPEG-4 AVC cod
    ec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 r
    ef=5 deblock=1:0:0 analyse=0x3:0x113 me=umh subme=8 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_pski
    p=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 deci
    mate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_
    adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=2
    5 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=crf mbtree=1 crf=20.0 qcomp=0.6
    0 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'file4a.mp4':
     Metadata:
       encoder         : Lavf55.12.102
       Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 4
    80x320 [SAR 118:81 DAR 59:27], q=-1--1, 12800 tbn, 25 tbc
       Metadata:
         creation_time   : 2009-02-12 01:19:22
         handler_name    : Apple Alias Data Handler
       Stream #0:1(eng): Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 48000
    Hz, stereo, s16, 128 kb/s
       Metadata:
         creation_time   : 2009-02-12 01:19:22
         handler_name    : Apple Alias Data Handler
    Stream mapping:
     Stream #0:0 -> #0:0 (dvvideo -> libx264)
     Stream #0:1 -> #0:1 (pcm_s16be -> libvo_aacenc)
    Press [q] to stop, [?] for help
    [swscaler @ 00000000024b0740] Warning: data is not aligned! This can lead to a s
    peedloss
    frame=   78 fps=0.0 q=25.0 size=     128kB time=00:00:02.14 bitrate= 487.8kbits/
    frame=  113 fps=109 q=25.0 size=     272kB time=00:00:04.27 bitrate= 520.9kbits/
    frame=  145 fps= 94 q=25.0 size=     399kB time=00:00:05.36 bitrate= 609.2kbits/
    frame=  182 fps= 89 q=25.0 size=     571kB time=00:00:06.45 bitrate= 725.0kbits/
    Starting second pass: moving header on top of the file
    frame=  200 fps= 70 q=-1.0 Lsize=     965kB time=00:00:08.00 bitrate= 987.2kbits
    /s
    video:832kB audio:126kB subtitle:0 global headers:0kB muxing overhead 0.755121%
    [libx264 @ 0000000000347340] frame I:1     Avg QP:21.14  size: 39885
    [libx264 @ 0000000000347340] frame P:50    Avg QP:21.80  size:  7412
    [libx264 @ 0000000000347340] frame B:149   Avg QP:26.25  size:  2960
    [libx264 @ 0000000000347340] consecutive B-frames:  0.5%  0.0%  1.5% 98.0%
    [libx264 @ 0000000000347340] mb I  I16..4: 13.7% 46.7% 39.7%
    [libx264 @ 0000000000347340] mb P  I16..4:  0.5% 19.7%  3.8%  P16..4: 32.8% 11.9
    % 14.1%  0.0%  0.0%    skip:17.1%
    [libx264 @ 0000000000347340] mb B  I16..4:  0.0%  5.1%  1.3%  B16..8: 14.4%  9.2
    %  2.9%  direct: 7.3%  skip:59.8%  L0:42.8% L1:38.3% BI:19.0%
    [libx264 @ 0000000000347340] 8x8 transform intra:79.4% inter:71.7%
    [libx264 @ 0000000000347340] direct mvs  spatial:97.3% temporal:2.7%
    [libx264 @ 0000000000347340] coded y,uvDC,uvAC intra: 92.8% 80.1% 26.3% inter: 2
    4.2% 28.8% 8.1%
    [libx264 @ 0000000000347340] i16 v,h,dc,p: 64% 17%  3% 16%
    [libx264 @ 0000000000347340] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  1% 33%  4%  3%  8%
    2% 35%  2% 11%
    [libx264 @ 0000000000347340] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:  3% 23%  5%  4% 11%
    5% 33%  4% 13%
    [libx264 @ 0000000000347340] i8c dc,h,v,p: 38% 40% 14%  8%
    [libx264 @ 0000000000347340] Weighted P-Frames: Y:2.0% UV:0.0%
    [libx264 @ 0000000000347340] ref P L0: 39.9% 10.0% 25.6%  8.7% 15.3%  0.6%
    [libx264 @ 0000000000347340] ref B L0: 76.9% 15.1%  5.7%  2.3%
    [libx264 @ 0000000000347340] ref B L1: 96.3%  3.7%
    [libx264 @ 0000000000347340] kb/s:851.49
  • How to concat mp4 files using libffmpeg in c program ?

    1er août 2013, par chichien

    I know ffmpeg command line is easy, but how to programmatically implement? I'm not good at this,here is some code from internet, it is used to convert .mp4 to .ts,and i made some changes,but the audio stream problem persists:

    #include
    #include
    #include
    #include

    #include "libavformat/avformat.h"
    #include "libavcodec/avcodec.h"
    #include "libavutil/avutil.h"
    #include "libavutil/rational.h"
    #include "libavdevice/avdevice.h"
    #include "libavutil/mathematics.h"
    #include "libswscale/swscale.h"

    static AVStream* add_output_stream(AVFormatContext* output_format_context, AVStream* input_stream)
    {

       AVCodecContext* input_codec_context = NULL;
       AVCodecContext* output_codec_context = NULL;

       AVStream* output_stream = NULL;
       output_stream = av_new_stream(output_format_context, 0);
       if (!output_stream)
       {
           printf("Call av_new_stream function failed\n");
           return NULL;
       }

       input_codec_context = input_stream->codec;
       output_codec_context = output_stream->codec;

       output_codec_context->codec_id = input_codec_context->codec_id;
       output_codec_context->codec_type = input_codec_context->codec_type;
       output_codec_context->codec_tag = input_codec_context->codec_tag;
       output_codec_context->bit_rate = input_codec_context->bit_rate;
       output_codec_context->extradata = input_codec_context->extradata;
       output_codec_context->extradata_size = input_codec_context->extradata_size;

       if (av_q2d(input_codec_context->time_base) * input_codec_context->ticks_per_frame > av_q2d(input_stream->time_base) && av_q2d(input_stream->time_base) < 1.0 / 1000)
       {
           output_codec_context->time_base = input_codec_context->time_base;
           output_codec_context->time_base.num *= input_codec_context->ticks_per_frame;
       }
       else
       {
           output_codec_context->time_base = input_stream->time_base;
       }
       switch (input_codec_context->codec_type)
       {
       case AVMEDIA_TYPE_AUDIO:
           output_codec_context->channel_layout = input_codec_context->channel_layout;
           output_codec_context->sample_rate = input_codec_context->sample_rate;
           output_codec_context->channels = input_codec_context->channels;
           output_codec_context->frame_size = input_codec_context->frame_size;
           if ((input_codec_context->block_align == 1 && input_codec_context->codec_id == CODEC_ID_MP3) || input_codec_context->codec_id == CODEC_ID_AC3)
           {
               output_codec_context->block_align = 0;
           }
           else
           {
               output_codec_context->block_align = input_codec_context->block_align;
           }
           break;
       case AVMEDIA_TYPE_VIDEO:
           output_codec_context->pix_fmt = input_codec_context->pix_fmt;
           output_codec_context->width = input_codec_context->width;
           output_codec_context->height = input_codec_context->height;
           output_codec_context->has_b_frames = input_codec_context->has_b_frames;
           if (output_format_context->oformat->flags & AVFMT_GLOBALHEADER)
           {
               output_codec_context->flags |= CODEC_FLAG_GLOBAL_HEADER;
           }
           break;
       default:
           break;
       }

       return output_stream;
    }

    //[[** from ffmpeg.c
    static void write_frame(AVFormatContext *s, AVPacket *pkt, AVCodecContext *avctx, AVBitStreamFilterContext *bsfc){
       int ret;

       while(bsfc){
           AVPacket new_pkt= *pkt;
           int a= av_bitstream_filter_filter(bsfc, avctx, NULL,
                                             &new_pkt.data, &new_pkt.size,
                                             pkt->data, pkt->size,
                                             pkt->flags & AV_PKT_FLAG_KEY);
           if(a>0){
               av_free_packet(pkt);
               new_pkt.destruct= av_destruct_packet;
           } else if(a<0){
               fprintf(stderr, "%s failed for stream %d, codec %s\n",
                       bsfc->filter->name, pkt->stream_index,
                       avctx->codec ? avctx->codec->name : "copy");
               //print_error("", a);
               //if (exit_on_error)
               //    ffmpeg_exit(1);
           }
           *pkt= new_pkt;

           bsfc= bsfc->next;
       }

       ret= av_interleaved_write_frame(s, pkt);
       if(ret < 0){
           //print_error("av_interleaved_write_frame()", ret);
           fprintf(stderr, "av_interleaved_write_frame(%d)\n", ret);
           exit(1);
       }
    }
    //]]**

    int main(int argc, char* argv[])
    {

       const char* input;
       const char* output;
       const char* output_prefix = NULL;
       char* segment_duration_check = 0;
       const char* index = NULL;
       char* tmp_index = NULL;
       const char* http_prefix = NULL;
       long max_tsfiles = NULL;
       double prev_segment_time = 0;
       double segment_duration = 0;

       AVInputFormat* ifmt = NULL;
       AVOutputFormat* ofmt = NULL;
       AVFormatContext* ic = NULL;
       AVFormatContext* oc = NULL;
       AVStream* video_st = NULL;
       AVStream* audio_st = NULL;
       AVCodec* codec = NULL;
       AVDictionary* pAVDictionary = NULL;

       long frame_count = 0;

       if (argc != 3) {
           fprintf(stderr, "Usage: %s inputfile outputfile\n", argv[0]);
           exit(1);
       }

       input = argv[1];
       output = argv[2];

       av_register_all();

       char szError[256] = {0};
       int nRet = avformat_open_input(&ic, input, ifmt, &pAVDictionary);
       if (nRet != 0)
       {
           av_strerror(nRet, szError, 256);
           printf(szError);
           printf("\n");
           printf("Call avformat_open_input function failed!\n");
           return 0;
       }

       if (av_find_stream_info(ic) < 0)
       {
           printf("Call av_find_stream_info function failed!\n");
           return 0;
       }

       ofmt = av_guess_format("mpegts", NULL, NULL);
       if (!ofmt)
       {
           printf("Call av_guess_format function failed!\n");
           return 0;
       }

       oc = avformat_alloc_context();
       if (!oc)
       {
           printf("Call av_guess_format function failed!\n");
           return 0;
       }
       oc->oformat = ofmt;

       int video_index = -1, audio_index = -1;
       for (unsigned int i = 0; i < ic->nb_streams && (video_index < 0 || audio_index < 0); i++)
       {
           switch (ic->streams[i]->codec->codec_type)
           {
           case AVMEDIA_TYPE_VIDEO:
               video_index = i;
               ic->streams[i]->discard = AVDISCARD_NONE;
               video_st = add_output_stream(oc, ic->streams[i]);
               break;
           case AVMEDIA_TYPE_AUDIO:
               audio_index = i;
               ic->streams[i]->discard = AVDISCARD_NONE;
               audio_st = add_output_stream(oc, ic->streams[i]);
               break;
           default:
               ic->streams[i]->discard = AVDISCARD_ALL;
               break;
           }
       }
       codec = avcodec_find_decoder(video_st->codec->codec_id);
       if (codec == NULL)
       {
           printf("Call avcodec_find_decoder function failed!\n");
           return 0;
       }

       if (avcodec_open(video_st->codec, codec) < 0)
       {
           printf("Call avcodec_open function failed !\n");
           return 0;
       }

       if (avio_open(&oc->pb, output, AVIO_FLAG_WRITE) < 0)
       {
           return 0;
       }

       if (avformat_write_header(oc, &pAVDictionary))
       {
           printf("Call avformat_write_header function failed.\n");
           return 0;
       }

       //[[++
       AVBitStreamFilterContext *bsfc = av_bitstream_filter_init("h264_mp4toannexb");
       //AVBitStreamFilterContext *absfc = av_bitstream_filter_init("aac_adtstoasc");
       if (!bsfc) {
           fprintf(stderr, "bsf init error!\n");
           return -1;
       }
       //]]++

       int decode_done = 0;
       do
       {
           double segment_time = 0;
           AVPacket packet;

           decode_done = av_read_frame(ic, &packet);
           if (decode_done < 0)
               break;

           if (av_dup_packet(&packet) < 0)
           {
               printf("Call av_dup_packet function failed\n");
               av_free_packet(&packet);
               break;
           }

           //[[**
           if (packet.stream_index == audio_index) {
               segment_time = (double)audio_st->pts.val * audio_st->time_base.num / audio_st->time_base.den;
               nRet = av_interleaved_write_frame(oc, &packet);  
           } else if (packet.stream_index == video_index) {
               if (packet.flags & AV_PKT_FLAG_KEY) {
                   segment_time = (double)video_st->pts.val * video_st->time_base.num / video_st->time_base.den;
               } else {
                   segment_time = prev_segment_time;
               }
               //nRet = av_interleaved_write_frame(oc, &packet);  
               write_frame(oc, &packet, video_st->codec, bsfc);
           }
           //]]**

           if (nRet < 0)
           {
               printf("Call av_interleaved_write_frame function failed: %d\n", nRet);
           }
           else if (nRet > 0)
           {
               printf("End of stream requested\n");
               av_free_packet(&packet);
               break;
           }
           av_free_packet(&packet);
           frame_count++;
       }while(!decode_done);

       av_write_trailer(oc);
       printf("frame_count = %d\n", frame_count);

       av_bitstream_filter_close(bsfc);  
       avcodec_close(video_st->codec);
       for(unsigned int k = 0; k < oc->nb_streams; k++)
       {
           av_freep(&oc->streams[k]->codec);
           av_freep(&oc->streams[k]);
       }
       av_free(oc);
       //getchar();
       return 0;
    }

    Compile this code, to got an executable file named muxts, and then :

    $ ./muxts vid1.mp4 vid1.ts

    No error message printed,but the audio stream was unsynchronized and noise。Check the .ts file using ffmpeg :

    $ ffmpeg -i vid1.ts
    ffmpeg version 0.8.14-tessus, Copyright (c) 2000-2013 the FFmpeg developers
     built on Jul 29 2013 17:05:18 with llvm_gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
     configuration: --prefix=/usr/local --arch=x86_64 --as=yasm --extra-version=tessus --enable-gpl --enable-nonfree --enable-version3 --disable-ffplay --enable-libvorbis --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-bzlib --enable-zlib --enable-postproc --enable-filters --enable-runtime-cpudetect --enable-debug=3 --disable-optimizations
     libavutil    51.  9. 1 / 51.  9. 1
     libavcodec   53.  8. 0 / 53.  8. 0
     libavformat  53.  5. 0 / 53.  5. 0
     libavdevice  53.  1. 1 / 53.  1. 1
     libavfilter   2. 23. 0 /  2. 23. 0
     libswscale    2.  0. 0 /  2.  0. 0
     libpostproc  51.  2. 0 / 51.  2. 0

    Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 90000.00 (180000/2)
    Input #0, mpegts, from 'vid1.ts':
     Duration: 00:00:03.75, start: 0.000000, bitrate: 3656 kb/s
     Program 1
       Metadata:
         service_name    : Service01
         service_provider: FFmpeg
       Stream #0.0[0x100]: Video: h264 (Baseline), yuv420p, 640x480, 90k tbr, 90k tbn, 180k tbc
       Stream #0.1[0x101]: Audio: aac, 48000 Hz, mono, s16, 190 kb/s
    At least one output file must be specified

    What should i do ?

    If this issue fixed , how can i concat multi .ts files into single .mp4 file ?