Recherche avancée

Médias (91)

Autres articles (57)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • 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

  • Le plugin : Podcasts.

    14 juillet 2010, par

    Le problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
    Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
    Types de fichiers supportés dans les flux
    Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...)

Sur d’autres sites (11519)

  • how to use the command line of ffmpeg on android ?

    3 septembre 2013, par user1329261

    i want use the ffmpeg to crop video on android ,can any one show me some examples ?
    I had searched a lot on google,found some projects,but non of them could be use

  • I wonder why logcat says "NO SUCH A FILE OR DIRECTORY(2)"

    22 septembre 2013, par autoexebat

    I wanna play audio on Android with ffmpeg.
    But when I run this project, error has occurred

    what should I do ?

    java SIDE

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import android.app.Activity;
    import android.media.AudioFormat;
    import android.media.AudioManager;
    import android.media.AudioTrack;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.os.SystemClock;

    public class FFmpegBasic extends Activity
    {
       private AudioTrack track;
       private FileOutputStream os;
       /** Called when the activity is first created. */
       @Override
       public void onCreate(Bundle savedInstanceState)
       {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
           createEngine();

           int bufSize = AudioTrack.getMinBufferSize(44100,
                                                     AudioFormat.CHANNEL_CONFIGURATION_STEREO,
                                                     AudioFormat.ENCODING_PCM_16BIT);


           track = new AudioTrack(AudioManager.STREAM_MUSIC,
                                  44100,
                                  AudioFormat.CHANNEL_CONFIGURATION_STEREO,
                                  AudioFormat.ENCODING_PCM_16BIT,
                                  bufSize,
                                  AudioTrack.MODE_STREAM);

           byte[] bytes = new byte[bufSize];

           try {
               os = new FileOutputStream("/sdcard/a.out",false);
           } catch (FileNotFoundException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }

           String result = "/mnt/sdcard/Wildlife.mp3";
           loadFile(result,bytes);

           try {
               os.close();
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
       }

       void playSound(byte[] buf, int size) {  
           if(track.getPlayState()!=AudioTrack.PLAYSTATE_PLAYING)
               track.play();
           track.write(buf, 0, size);

           try {
               os.write(buf,0,size);
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
       }


       private native void createEngine();
       private native void loadFile(String file, byte[] array);

       /** Load jni .so on initialization*/
       static {
            System.loadLibrary("avutil");
            System.loadLibrary("avcore");
            System.loadLibrary("avcodec");
            System.loadLibrary("avformat");
            System.loadLibrary("avdevice");
            System.loadLibrary("swscale");
            System.loadLibrary("avfilter");
            System.loadLibrary("ffmpeg");
            System.loadLibrary("basicplayer");
       }
    }

    c SIDE


    #include
    #include
    #include
    #include <android></android>log.h>

    #include "libavcodec/avcodec.h"
    #include "libavformat/avformat.h"
    #include "avcodec.h"
    #include "avformat.h"




    void Java_net_jbong_FFmpegBasic_FFmpegBasic_createEngine(JNIEnv* env, jclass clazz)
       {
           //avcodec_init();

           av_register_all();


       }

    void Java_net_jbong_FFmpegBasic_FFmpegBasic_loadFile(JNIEnv* env, jobject obj, jstring file, jbyteArray array)
    {

       AVFormatContext *gFormatCtx = NULL;
       AVCodecContext *gAudioCodecCtx = NULL;
       AVCodec *gAudioCodec = NULL;
       int gAudioStreamIdx = -1;
       char *gAudioBuffer = NULL;
       int i, outsize = 0;
       AVPacket packet;
       const char *str;
       str = (*env)->GetStringUTFChars(env, file, NULL);
       jclass cls = (*env)->GetObjectClass(env, obj);
       jmethodID play = (*env)->GetMethodID(env, cls, "playSound", "([BI)V");

       if (gFormatCtx != NULL)
           return -1;
       if (av_open_input_file(&amp;gFormatCtx,str,NULL,0,NULL)!=0)
           return -2;
       if (av_find_stream_info(gFormatCtx) &lt; 0)
           return -3;

       for(i=0; inb_streams; i++)
       {
           if(gFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO)
           {
               gAudioStreamIdx = i;
               break;
           }
       }

       if (gAudioStreamIdx == -1)
           return -4;
       gAudioCodecCtx = gFormatCtx->streams[gAudioStreamIdx]->codec;
       gAudioCodec = avcodec_find_decoder(gAudioCodecCtx->codec_id);

       if (gAudioCodec == NULL)
           return -5;

       if (avcodec_open(gAudioCodecCtx, gAudioCodec)&lt;0)
           return -6;


       gAudioBuffer = (char *)av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE *2);
       int decode = 0;

       while (av_read_frame(gFormatCtx, &amp;packet) >= 0)
       {
        if (gFormatCtx-> streams[packet.stream_index]->codec->codec_type == AVMEDIA_TYPE_AUDIO)
        {
            int data_size = AVCODEC_MAX_AUDIO_FRAME_SIZE * 8;
            gAudioBuffer = (char *)av_malloc(data_size);
            int size=packet.size;
            while(size > 0)
            {
             int len = avcodec_decode_audio3(gAudioCodecCtx,
               (short *) gAudioBuffer, &amp;data_size, &amp;packet);
             if (data_size > 0)
             {
                       jbyte *bytes = (*env)->GetByteArrayElements(env, array, NULL);
                          memcpy(bytes + decode, (int16_t *)gAudioBuffer, size);
                          (*env)->ReleaseByteArrayElements(env, array, bytes, 0);
                          (*env)->CallVoidMethod(env, obj, play, array, data_size);
                          decode += size;
                          size -= len;

             }
            }
        }
        av_free_packet(&amp;packet);
       }

       av_close_input_file(gFormatCtx);
       return 0;
    }

    Why my android logcat show me this message ?
    "error opening trace file : No such file or directory (2)"

  • Crossdevice encoding static file to stream in browser using FFMPEG (segmented h264 ?)

    20 mars 2014, par Vprnl

    I'm building a mediacenter application in NodeJS which is going pretty ok.
    (you can check it out on Github : https://github.com/jansmolders86/mediacenterjs )

    I'm using FFMPEG to transcode local (static) movies to a stream which I then send to the browser.

    At first I used h264 with Flash which worked in browsers, but I really need it to work on Android an iOS (so no Flash) and preferably working on a Raspberry Pi.

    But getting it to play on all devices is driving me absolutely insane !

    I have all these bits of the puzzle I've gathered from countless hours reading articles, tutorials and stack overflow posts, which led me to the conclusion that I need to produce the following :

    • Use video codec H264 to transcode to MP4
    • Move the moovatom '-movflags' to make a MP4 streamable
    • Segment the stream so Apple can play the stream as well.

    But getting nowhere with this. Every time I produce a series of FFMPEG settings that either don't work, or work on some devices rather than all.

    Some of my failed attempt where :

    My flash attempt -> Main problem (not running in IOS) :

       &#39;-y&#39;,&#39;-ss 0&#39;,&#39;-b 800k&#39;,&#39;-vcodec libx264&#39;,&#39;-acodec mp3&#39;\
       &#39;-ab 128&#39;,&#39;-ar 44100&#39;,&#39;-bufsize 62000&#39;, &#39;-maxrate 620k&#39;\
       metaDuration,tDuration,&#39;-f flv

    my HLS attempt -> Main problem (not running in browser) :

           &#39;-r 15&#39;,&#39;-b:v 128k&#39;,&#39;-c:v libx264&#39;,&#39;-x264opts level=41&#39;\
           &#39;-threads 4&#39;,&#39;-s 640x480&#39;,&#39;-map 0:v&#39;,&#39;-map 0:a:0&#39;,&#39;-c:a mp3&#39;\
           &#39;-b:a 160000&#39;,&#39;-ac 2&#39;,&#39;-f hls&#39;,&#39;-hls_time 10&#39;,&#39;-hls_list_size 6&#39;\
           &#39;-hls_wrap 18&#39;,&#39;-start_number 1&#39;

    My MP4 attempt -> Main problem (duration is shortened and the later part of the video is speeding by)

          &#39;-y&#39;,&#39;-ss 0&#39;,&#39;-b 800k&#39;,&#39;-vcodec libx264&#39;,&#39;-acodec mp3&#39;\
          &#39;-ab 128&#39;,&#39;-ar 44100&#39;,&#39;-bufsize 62000&#39;, &#39;-maxrate 620k&#39;\
          metaDuration,tDuration,&#39;-f mp4&#39;,&#39;-movflags&#39;,&#39;frag_keyframe+empty_moov&#39;

    Second MP4 attempt : -> Main problem (duration is shortened and the later part of the video is speeding by)

       &#39;-y&#39;,&#39;-vcodec libx264&#39;,&#39;-pix_fmt yuv420p&#39;,&#39;-b 1200k&#39;,&#39;-flags +loop+mv4&#39;\
       &#39;-cmp 256&#39;,&#39;-partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8&#39;\
       &#39;-me_method hex&#39;,&#39;-subq 7&#39;,&#39;-trellis 1&#39;,&#39;-refs 5&#39;,&#39;-bf 3&#39;,&#39;-coder 1&#39;\
       &#39;-me_range 16&#39;,&#39;-g 150&#39;,&#39;-keyint_min 25&#39;,&#39;-sc_threshold 40&#39;\
       &#39;-i_qfactor 0.71&#39;,&#39;-acodec mp3&#39;,&#39;-qmin 10&#39;,&#39;-qdiff 4&#39;,&#39;-qmax 51&#39;\
       &#39;-ab 128k&#39;,&#39;-ar 44100&#39;,&#39;-threads 2&#39;,&#39;-f mp4&#39;,&#39;-movflags&#39;,&#39;frag_keyframe+empty_moov&#39;])

    Here is an example of the FFMPEG log running with these settings :

           file conversion error ffmpeg version N-52458-gaa96439 Copyright (c) 2000-2013 the FFmpeg developers
             built on Apr 24 2013 22:19:32 with gcc 4.8.0 (GCC)
             configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --e
           nable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable
           -libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --ena
           ble-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwola
           me --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enabl
           e-libxvid --enable-zlib
             libavutil      52. 27.101 / 52. 27.101
             libavcodec     55.  6.100 / 55.  6.100
             libavformat    55.  3.100 / 55.  3.100
             libavdevice    55.  0.100 / 55.  0.100
             libavfilter     3. 60.101 /  3. 60.101
             libswscale      2.  2.100 /  2.  2.100
             libswresample   0. 17.102 /  0. 17.102
             libpostproc    52.  3.100 / 52.  3.100
           [avi @ 02427900] non-interleaved AVI
           Guessed Channel Layout for  Input Stream #0.1 : mono
           Input #0, avi, from &#39;C:/temp/the avengers.avi&#39;:
             Duration: 00:00:34.00, start: 0.000000, bitrate: 1433 kb/s
               Stream #0:0: Video: cinepak (cvid / 0x64697663), rgb24, 320x240, 15 tbr, 15 tbn, 15 tbc
               Stream #0:1: Audio: pcm_u8 ([1][0][0][0] / 0x0001), 22050 Hz, mono, u8, 176 kb/s
           Please use -b:a or -b:v, -b is ambiguous
           [libx264 @ 02527c60] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
           [libx264 @ 02527c60] profile High, level 2.0
           [libx264 @ 02527c60] 264 - core 130 r2274 c832fe9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x26
           4.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x3:0x133 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=2 lookahead_threads=1 sliced_th
           reads=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 we
           ightb=1 open_gop=0 weightp=2 keyint=150 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=120
           0 ratetol=1.0 qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 ip_ratio=1.41 aq=1:1.00
           Output #0, mp4, to &#39;pipe:1&#39;:
             Metadata:
               encoder         : Lavf55.3.100
               Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 320x240, q=10-51, 1200 kb/s, 15360 tbn, 15 tbc
               Stream #0:1: Audio: mp3 (i[0][0][0] / 0x0069), 44100 Hz, mono, s16p, 128 kb/s
           Stream mapping:
             Stream #0:0 -> #0:0 (cinepak -> libx264)
             Stream #0:1 -> #0:1 (pcm_u8 -> libmp3lame)
           Press [q] to stop, [?] for help
           frame=  106 fps=0.0 q=10.0 size=       1kB time=00:00:06.94 bitrate=   1.4kbits/s
           frame=  150 fps=149 q=14.0 size=       1kB time=00:00:09.87 bitrate=   1.0kbits/s
           frame=  191 fps=126 q=16.0 size=       1kB time=00:00:12.61 bitrate=   0.8kbits/s
           frame=  244 fps=121 q=16.0 size=    2262kB time=00:00:16.14 bitrate=1147.6kbits/s
           frame=  303 fps=120 q=14.0 size=    2262kB time=00:00:20.08 bitrate= 922.2kbits/s
           frame=  354 fps=117 q=15.0 size=    3035kB time=00:00:23.48 bitrate=1058.6kbits/s
           frame=  402 fps=113 q=15.0 size=    3035kB time=00:00:26.67 bitrate= 932.1kbits/s
           frame=  459 fps=113 q=16.0 size=    4041kB time=00:00:30.43 bitrate=1087.7kbits/s
           frame=  510 fps=103 q=2686559.0 Lsize=    5755kB time=00:00:33.93 bitrate=1389.3kbits/s

           video:5211kB audio:531kB subtitle:0 global headers:0kB muxing overhead 0.235111%
           [libx264 @ 02527c60] frame I:6     Avg QP:10.55  size: 25921
           [libx264 @ 02527c60] frame P:245   Avg QP:12.15  size: 14543
           [libx264 @ 02527c60] frame B:259   Avg QP:15.55  size:  6242
           [libx264 @ 02527c60] consecutive B-frames:  6.1% 73.7% 14.7%  5.5%
           [libx264 @ 02527c60] mb I  I16..4: 19.9%  6.2% 73.9%
           [libx264 @ 02527c60] mb P  I16..4:  6.0%  0.2% 12.0%  P16..4: 35.4%  9.6% 16.3%  7.0%  5.6%    skip: 7.8%
           [libx264 @ 02527c60] mb B  I16..4:  0.7%  0.0%  4.3%  B16..8: 27.6% 17.2% 17.0%  direct:17.3%  skip:15.9%  L0:39.4% L1:43.2%
           BI:17.4%
           [libx264 @ 02527c60] final ratefactor: 11.41
           [libx264 @ 02527c60] 8x8 transform intra:1.6% inter:4.0%
           [libx264 @ 02527c60] coded y,uvDC,uvAC intra: 93.0% 97.0% 94.9% inter: 58.4% 58.7% 50.6%
           [libx264 @ 02527c60] i16 v,h,dc,p: 15% 26% 54%  5%
           [libx264 @ 02527c60] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 17% 39%  4%  4%  3%  1%  6%  9%
           [libx264 @ 02527c60] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 34% 21%  4%  2%  2%  2%  2%  5%
           [libx264 @ 02527c60] i8c dc,h,v,p: 51% 24% 19%  6%
           [libx264 @ 02527c60] Weighted P-Frames: Y:4.1% UV:1.2%
           [libx264 @ 02527c60] ref P L0: 68.2%  9.8% 11.0%  5.6%  4.6%  0.8%  0.0%
           [libx264 @ 02527c60] ref B L0: 87.7%  8.0%  3.9%  0.4%
           [libx264 @ 02527c60] ref B L1: 97.8%  2.2%
           [libx264 @ 02527c60] kb/s:1255.36

    Lastly this is my node code fireing up FFMPEG. (I use the module Fluent-ffmpeg : https://github.com/schaermu/node-fluent-ffmpeg )

       var proc = new ffmpeg({ source: movie, nolog: true, timeout:15000})                        
           .addOptions([&#39;-r 15&#39;,&#39;-b:v 128k&#39;,&#39;-c:v libx264&#39;,&#39;-x264opts level=41&#39;,&#39;-threads 4&#39;,&#39;-s 640x480&#39;,&#39;-map 0:v&#39;,&#39;-map 0:a:0&#39;,&#39;-c:a mp3&#39;,&#39;-b:a 160000&#39;,&#39;-ac 2&#39;,&#39;-f hls&#39;,&#39;-hls_time 10&#39;,&#39;-hls_list_size 6&#39;,&#39;-hls_wrap 18&#39;,&#39;-start_number 1 stream.m3u8&#39;])
           .writeToStream(res, function(retcode, error){
               if (!error){
                   console.log(&#39;file has been converted succesfully&#39;,retcode .green);
               }else{
                   console.log(&#39;file conversion error&#39;,error .red);
               }
           });

    So to conclude this very long and code heavy question :

    I hope this does not come off as a lazy request, but could someone show/explain to me which FFMPEG settings could/should work on all platforms (modern browsers, Android and iOS) producing a stream of a static file which I can send to a HTML5 player.

    [EDIT] what I need if a generic option isn't available

    And if this is not possible as some posts might suggest, I would love to see a set of FFMPEG settings that get's the job done properly as far as mp4 streaming is concerned. (e.g encoding a streamable mp4).

    The streaming mp4 needs the following

    • A shifted moovAtom
    • It needs to be h264

    Thanks very much for your help !