Recherche avancée

Médias (1)

Mot : - Tags -/copyleft

Autres articles (44)

  • 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

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

  • Les statuts des instances de mutualisation

    13 mars 2010, par

    Pour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
    Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...)

Sur d’autres sites (8645)

  • I can't compile ffmpeg, don't know how to install sdl2 properly

    11 mai 2019, par woopwoop399

    I’m compiling ffmpeg, on windows, with mingw-w64, and I need SDL2 so that the ffplay in ffmpeg compiles. I installed mingw-w64 using the web installer, I installed msys (to run the ./configure that comes with ffmpeg) using the all in one package provided by mingw-w64. I installed SDL2 by downloading dev binaries from their site and running make native in msys.

    So, it seems SDL2 isn’t installed properly or something.

    Here is the problematic part in ./configure :

    if enabled sdl2; then
       echo "SDL2-1"
       SDL2_CONFIG="${cross_prefix}sdl2-config"
       test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 2.1.0" SDL_events.h SDL_PollEvent
       echo "SDL2-2"
       if disabled sdl2 && "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
           echo "SDL2-3"
           sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
           sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
           echo "SDL2-config ${SDL2_CONFIG}"
           echo "SDL2-cflags ${sdl2_cflags}"
           echo "SDL2-libs ${sdl2_extralibs}"
           test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
           echo "SDL2-4" &&
           test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
           echo "SDL2-5" &&
           check_func_headers SDL_events.h SDL_PollEvent $sdl2_extralibs $sdl2_cflags &&
           echo "SDL2-6-final" &&
               enable sdl2
       fi
       if test $target_os = "mingw32"; then
           sdl2_extralibs=$(filter_out '-mwindows' $sdl2_extralibs)
       fi
    fi

    This is the result of it, it never gets to SDL2-6-final and enable sdl2

    SDL2-1
    SDL2-2
    SDL2-3
    SDL2-config sdl2-config
    SDL2-cflags -I/usr/include/SDL2 -Dmain=SDL_main
    SDL2-libs -L/usr/lib -lmingw32 -lSDL2main -lSDL2 -mwindows
    SDL2-4
    SDL2-5

    This is the sdl2 installation log :

    User@NEW-PC /c/Users/User/Downloads/games/compilers/SDL2-2.0.9
    $ make native
    make install-package arch=i686-w64-mingw32 prefix=/usr
    make[1]: Entering directory `/c/Users/User/Downloads/games/compilers/SDL2-2.0.9'
    `bin/sdl2-config' -> `/usr/bin/sdl2-config'
    `bin/SDL2.dll' -> `/usr/bin/SDL2.dll'
    `include' -> `/usr/include'
    `include/SDL2' -> `/usr/include/SDL2'
    `include/SDL2/begin_code.h' -> `/usr/include/SDL2/begin_code.h'
    `include/SDL2/close_code.h' -> `/usr/include/SDL2/close_code.h'
    `include/SDL2/SDL.h' -> `/usr/include/SDL2/SDL.h'
    `include/SDL2/SDL_assert.h' -> `/usr/include/SDL2/SDL_assert.h'
    `include/SDL2/SDL_atomic.h' -> `/usr/include/SDL2/SDL_atomic.h'
    `include/SDL2/SDL_audio.h' -> `/usr/include/SDL2/SDL_audio.h'
    `include/SDL2/SDL_bits.h' -> `/usr/include/SDL2/SDL_bits.h'
    `include/SDL2/SDL_blendmode.h' -> `/usr/include/SDL2/SDL_blendmode.h'
    `include/SDL2/SDL_clipboard.h' -> `/usr/include/SDL2/SDL_clipboard.h'
    `include/SDL2/SDL_config.h' -> `/usr/include/SDL2/SDL_config.h'
    `include/SDL2/SDL_cpuinfo.h' -> `/usr/include/SDL2/SDL_cpuinfo.h'
    `include/SDL2/SDL_egl.h' -> `/usr/include/SDL2/SDL_egl.h'
    `include/SDL2/SDL_endian.h' -> `/usr/include/SDL2/SDL_endian.h'
    `include/SDL2/SDL_error.h' -> `/usr/include/SDL2/SDL_error.h'
    `include/SDL2/SDL_events.h' -> `/usr/include/SDL2/SDL_events.h'
    `include/SDL2/SDL_filesystem.h' -> `/usr/include/SDL2/SDL_filesystem.h'
    `include/SDL2/SDL_gamecontroller.h' -> `/usr/include/SDL2/SDL_gamecontroller.h'
    `include/SDL2/SDL_gesture.h' -> `/usr/include/SDL2/SDL_gesture.h'
    `include/SDL2/SDL_haptic.h' -> `/usr/include/SDL2/SDL_haptic.h'
    `include/SDL2/SDL_hints.h' -> `/usr/include/SDL2/SDL_hints.h'
    `include/SDL2/SDL_joystick.h' -> `/usr/include/SDL2/SDL_joystick.h'
    `include/SDL2/SDL_keyboard.h' -> `/usr/include/SDL2/SDL_keyboard.h'
    `include/SDL2/SDL_keycode.h' -> `/usr/include/SDL2/SDL_keycode.h'
    `include/SDL2/SDL_loadso.h' -> `/usr/include/SDL2/SDL_loadso.h'
    `include/SDL2/SDL_log.h' -> `/usr/include/SDL2/SDL_log.h'
    `include/SDL2/SDL_main.h' -> `/usr/include/SDL2/SDL_main.h'
    `include/SDL2/SDL_messagebox.h' -> `/usr/include/SDL2/SDL_messagebox.h'
    `include/SDL2/SDL_mouse.h' -> `/usr/include/SDL2/SDL_mouse.h'
    `include/SDL2/SDL_mutex.h' -> `/usr/include/SDL2/SDL_mutex.h'
    `include/SDL2/SDL_name.h' -> `/usr/include/SDL2/SDL_name.h'
    `include/SDL2/SDL_opengl.h' -> `/usr/include/SDL2/SDL_opengl.h'
    `include/SDL2/SDL_opengles.h' -> `/usr/include/SDL2/SDL_opengles.h'
    `include/SDL2/SDL_opengles2.h' -> `/usr/include/SDL2/SDL_opengles2.h'
    `include/SDL2/SDL_opengles2_gl2.h' -> `/usr/include/SDL2/SDL_opengles2_gl2.h'
    `include/SDL2/SDL_opengles2_gl2ext.h' -> `/usr/include/SDL2/SDL_opengles2_gl2ext.h'
    `include/SDL2/SDL_opengles2_gl2platform.h' -> `/usr/include/SDL2/SDL_opengles2_gl2platform.h'
    `include/SDL2/SDL_opengles2_khrplatform.h' -> `/usr/include/SDL2/SDL_opengles2_khrplatform.h'
    `include/SDL2/SDL_opengl_glext.h' -> `/usr/include/SDL2/SDL_opengl_glext.h'
    `include/SDL2/SDL_pixels.h' -> `/usr/include/SDL2/SDL_pixels.h'
    `include/SDL2/SDL_platform.h' -> `/usr/include/SDL2/SDL_platform.h'
    `include/SDL2/SDL_power.h' -> `/usr/include/SDL2/SDL_power.h'
    `include/SDL2/SDL_quit.h' -> `/usr/include/SDL2/SDL_quit.h'
    `include/SDL2/SDL_rect.h' -> `/usr/include/SDL2/SDL_rect.h'
    `include/SDL2/SDL_render.h' -> `/usr/include/SDL2/SDL_render.h'
    `include/SDL2/SDL_revision.h' -> `/usr/include/SDL2/SDL_revision.h'
    `include/SDL2/SDL_rwops.h' -> `/usr/include/SDL2/SDL_rwops.h'
    `include/SDL2/SDL_scancode.h' -> `/usr/include/SDL2/SDL_scancode.h'
    `include/SDL2/SDL_sensor.h' -> `/usr/include/SDL2/SDL_sensor.h'
    `include/SDL2/SDL_shape.h' -> `/usr/include/SDL2/SDL_shape.h'
    `include/SDL2/SDL_stdinc.h' -> `/usr/include/SDL2/SDL_stdinc.h'
    `include/SDL2/SDL_surface.h' -> `/usr/include/SDL2/SDL_surface.h'
    `include/SDL2/SDL_system.h' -> `/usr/include/SDL2/SDL_system.h'
    `include/SDL2/SDL_syswm.h' -> `/usr/include/SDL2/SDL_syswm.h'
    `include/SDL2/SDL_test.h' -> `/usr/include/SDL2/SDL_test.h'
    `include/SDL2/SDL_test_assert.h' -> `/usr/include/SDL2/SDL_test_assert.h'
    `include/SDL2/SDL_test_common.h' -> `/usr/include/SDL2/SDL_test_common.h'
    `include/SDL2/SDL_test_compare.h' -> `/usr/include/SDL2/SDL_test_compare.h'
    `include/SDL2/SDL_test_crc32.h' -> `/usr/include/SDL2/SDL_test_crc32.h'
    `include/SDL2/SDL_test_font.h' -> `/usr/include/SDL2/SDL_test_font.h'
    `include/SDL2/SDL_test_fuzzer.h' -> `/usr/include/SDL2/SDL_test_fuzzer.h'
    `include/SDL2/SDL_test_harness.h' -> `/usr/include/SDL2/SDL_test_harness.h'
    `include/SDL2/SDL_test_images.h' -> `/usr/include/SDL2/SDL_test_images.h'
    `include/SDL2/SDL_test_log.h' -> `/usr/include/SDL2/SDL_test_log.h'
    `include/SDL2/SDL_test_md5.h' -> `/usr/include/SDL2/SDL_test_md5.h'
    `include/SDL2/SDL_test_memory.h' -> `/usr/include/SDL2/SDL_test_memory.h'
    `include/SDL2/SDL_test_random.h' -> `/usr/include/SDL2/SDL_test_random.h'
    `include/SDL2/SDL_thread.h' -> `/usr/include/SDL2/SDL_thread.h'
    `include/SDL2/SDL_timer.h' -> `/usr/include/SDL2/SDL_timer.h'
    `include/SDL2/SDL_touch.h' -> `/usr/include/SDL2/SDL_touch.h'
    `include/SDL2/SDL_types.h' -> `/usr/include/SDL2/SDL_types.h'
    `include/SDL2/SDL_version.h' -> `/usr/include/SDL2/SDL_version.h'
    `include/SDL2/SDL_video.h' -> `/usr/include/SDL2/SDL_video.h'
    `include/SDL2/SDL_vulkan.h' -> `/usr/include/SDL2/SDL_vulkan.h'
    `lib/cmake' -> `/usr/lib/cmake'
    `lib/cmake/SDL2' -> `/usr/lib/cmake/SDL2'
    `lib/cmake/SDL2/sdl2-config.cmake' -> `/usr/lib/cmake/SDL2/sdl2-config.cmake'
    `lib/libSDL2.a' -> `/usr/lib/libSDL2.a'
    `lib/libSDL2.dll.a' -> `/usr/lib/libSDL2.dll.a'
    `lib/libSDL2.la' -> `/usr/lib/libSDL2.la'
    `lib/libSDL2main.a' -> `/usr/lib/libSDL2main.a'
    `lib/libSDL2main.la' -> `/usr/lib/libSDL2main.la'
    `lib/libSDL2_test.a' -> `/usr/lib/libSDL2_test.a'
    `lib/libSDL2_test.la' -> `/usr/lib/libSDL2_test.la'
    `lib/pkgconfig' -> `/usr/lib/pkgconfig'
    `lib/pkgconfig/sdl2.pc' -> `/usr/lib/pkgconfig/sdl2.pc'
    `share/aclocal/sdl2.m4' -> `/usr/share/aclocal/sdl2.m4'
    make[1]: Leaving directory `/c/Users/User/Downloads/games/compilers/SDL2-2.0.9'

    And this is what happens when I just comment out that last check in ./configure and enable sdl2 anyway :

    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2main.a when searching for -lSDL2main

    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.dll.a when searching for -lSDL2

    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2

    I tried using msys2 instead, it compiles, but the debugger there doesn’t work for some reason. I need to run the source code of ffmpeg in debugger to have a chance of understanding anything there. I need to use the combination of codeblocks and gdb, and programs compiled with msys2 use weird pathnames like /c/bla/bla/bla/main.c, and codeblocks is righteously weirded out by that. The mingw-w64 uses more sane pathnames, I just checked that.

    Checked ffbuild/config.log, the problem is here :

    `c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2`

    More in full :

    test_pkg_config sdl2 sdl2 >= 2.0.1 sdl2 < 2.1.0 SDL_events.h SDL_PollEvent
    pkg-config --exists --print-errors sdl2 >= 2.0.1 sdl2 < 2.1.0
    check_func_headers SDL_events.h SDL_PollEvent -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib -lmingw32 -lSDL2main -lSDL2
    test_ld cc -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib -lmingw32 -lSDL2main -lSDL2
    test_cc -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib
    BEGIN /tmp/ffconf.atBoPojc/test.c
       1   #include
       2   #include
       3   long check_SDL_PollEvent(void) { return (long) SDL_PollEvent; }
       4   int main(void) { int ret = 0;
       5    ret |= ((intptr_t)check_SDL_PollEvent) & 0xFFFF;
       6   return ret; }
    END /tmp/ffconf.atBoPojc/test.c
    gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 -D__printf__=__gnu_printf__ -D_WIN32_WINNT=0x0600 -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c11 -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib -c -o /tmp/ffconf.atBoPojc/test.o /tmp/ffconf.atBoPojc/test.c
    C:/Users/User/AppData/Local/Temp/ffconf.atBoPojc/test.c: In function 'check_SDL_PollEvent':
    C:/Users/User/AppData/Local/Temp/ffconf.atBoPojc/test.c:3:41: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
    long check_SDL_PollEvent(void) { return (long) SDL_PollEvent; }
                                            ^
    gcc -Wl,--nxcompat,--dynamicbase -Wl,--high-entropy-va -Wl,--as-needed -Wl,--image-base,0x140000000 -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib -o /tmp/ffconf.atBoPojc/test.exe /tmp/ffconf.atBoPojc/test.o -lmingw32 -lSDL2main -lSDL2
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2main.a when searching for -lSDL2main
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib\libSDL2main.a when searching for -lSDL2main
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2main.a when searching for -lSDL2main
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2main
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.dll.a when searching for -lSDL2
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.a when searching for -lSDL2
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib\libSDL2.a when searching for -lSDL2
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.dll.a when searching for -lSDL2
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.a when searching for -lSDL2
    c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2
    collect2.exe: error: ld returned 1 exit status

    Okay, I managed to compile. I removed the sdl libraries from C:/msys/lib, and added them to C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\lib

  • EXC_BAD_ACCESS at avformat_find_stream_info in FFMPEG

    27 décembre 2018, par Mubin Mall

    I achieved IP Camera streaming using ffmpeg with the help of this library : https://github.com/kolyvan/kxmovie also I am recording IPCamera streaming coming and same is done using ffmpeg.

    Now I am facing one issue as soon as I add R5ProStreaming.framework in project and run application in real device application is getting crashed at if (avformat_find_stream_info(formatCtx, NULL) < 0) here.
    And when I remove that framework and move it to trash and run again then all working fine.

    - (kxMovieError) openInput: (NSString *) path
    {
       AVFormatContext *formatCtx = NULL;

       if (_interruptCallback) {

           formatCtx = avformat_alloc_context();
           if (!formatCtx)
               return kxMovieErrorOpenFile;

           AVIOInterruptCB cb = {interrupt_callback, (__bridge void *)(self)};
           formatCtx->interrupt_callback = cb;
       }
       AVDictionary *opts = 0;
    //
       av_dict_set(&opts, "rtsp_transport", "tcp", 0);

       if (avformat_open_input(&formatCtx, [path cStringUsingEncoding: NSUTF8StringEncoding], NULL,  &opts) < 0) {
           av_log(NULL, AV_LOG_ERROR, "Couldn't open file\n");
           return kxMovieErrorStreamInfoNotFound;


       }
           if (avformat_open_input(&formatCtx, [path cStringUsingEncoding: NSUTF8StringEncoding], NULL, NULL) < 0) {

           if (formatCtx)
               avformat_free_context(formatCtx);
           return kxMovieErrorOpenFile;
       }

       //-----APP IS GETTING CRASHED HERE AND GIVING EXC_BAD_ACCESS---//
       if (avformat_find_stream_info(formatCtx, NULL) < 0)
       {
           avformat_close_input(&formatCtx);
           return kxMovieErrorStreamInfoNotFound;
       }
    //
       av_dump_format(formatCtx, 0, [path.lastPathComponent cStringUsingEncoding: NSUTF8StringEncoding], false);

       _formatCtx = formatCtx;

       inputFormatCtx = _formatCtx;
       NSString *filePath = [[NSBundle mainBundle] pathForResource:@"newdemo" ofType:@".mov"];

       if (filePath)
       {
           NSLog(@"%s - %d # File found", __PRETTY_FUNCTION__, __LINE__);
       }
       else
       {
           NSLog(@"%s - %d # File NOT found", __PRETTY_FUNCTION__, __LINE__);
       }

       /*
        *  av_find_input_format(const char *short_name)
        *
        *  Find AVInputFormat based on the short name of the input format.
        */
       AVInputFormat *inputFormat = av_find_input_format([@"mpeg" UTF8String]);

       if (inputFormat)
       {
           NSLog(@"%s - %d # inputFormat identifed", __PRETTY_FUNCTION__, __LINE__);
       }
       else
       {
           NSLog(@"%s - %d # inputFormat NOT identifed", __PRETTY_FUNCTION__, __LINE__) ;
       }

       const char *utf8FilePath = [filePath UTF8String];
       NSLog(@"%s - %d # utf8FilePath = %s", __PRETTY_FUNCTION__, __LINE__, utf8FilePath);

       /*
        *  avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options)
        *
        *  Open an input stream and read the header. The codecs are not opened.
        */
       int openInputValue =0;
       NSLog(@"%s - %d # openInputValue = %d", __PRETTY_FUNCTION__, __LINE__, openInputValue);

       if (openInputValue == 0)
       {
           NSLog(@"%s - %d # Can open the file", __PRETTY_FUNCTION__, __LINE__);
       }
       else
       {
           NSLog(@"%s - %d # Cannot open the file", __PRETTY_FUNCTION__, __LINE__);
           avformat_close_input(&inputFormatCtx);
       }

       /*
        *  Read packets of a media file to get stream information.
        *
        *  avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
        */
       //    int streamInfoValue = avformat_find_stream_info(inputFormatCtx, NULL);
       //    NSLog(@"%s - %d # streamInfoValue = %d", __PRETTY_FUNCTION__, __LINE__, streamInfoValue);
       //
       //    if (streamInfoValue < 0)
       //    {
       //        NSLog(@"%s - %d # streamInfoValue Error", __PRETTY_FUNCTION__, __LINE__);
       //        avformat_close_input(&inputFormatCtx);
       //    }

       /*
        *  nb_streams : Number of Audio and Video streams of the input file
        */

       NSUInteger inputStreamCount = inputFormatCtx->nb_streams;
       NSLog(@"%s - %d # inputStreamCount = %lu", __PRETTY_FUNCTION__, __LINE__, (unsigned long)inputStreamCount);

       for(unsigned int i = 0; istreams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
           {
               NSLog(@"%s - %d # Found Video Stream", __PRETTY_FUNCTION__, __LINE__);
               inputVideoStreamIndex = i;
               inputVideoStream = inputFormatCtx->streams[i];
           }

           if(inputFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO)
           {
               NSLog(@"%s - %d # Found Audio Stream", __PRETTY_FUNCTION__, __LINE__);
               inputAudioStreamIndex = i;
               inputAudioStream = inputFormatCtx->streams[i];
           }
       }

       if(inputVideoStreamIndex == -1 && inputAudioStreamIndex == -1)
       {
           NSLog(@"%s - %d # Have not found any Video or Audio stream", __PRETTY_FUNCTION__, __LINE__);
       }

       /*
        *  Finding duration of the stream
        */
       if(inputFormatCtx->duration == AV_NOPTS_VALUE)
       {
           NSLog(@"%s - %d # Undefined timestamp value", __PRETTY_FUNCTION__, __LINE__);

           if(_videoStream != -1 && inputFormatCtx->streams[_videoStream])
           {
               //            if(inputFormatCtx->streams[_videoStream]->duration != AV_NOPTS_VALUE)
               //            {
               inputEndtimeInt64 = (inputFormatCtx->streams[_videoStream]->duration)/(inputFormatCtx->streams[_videoStream]->time_base.den/inputFormatCtx->streams[_videoStream]->time_base.num);
               //            }
               //            else
               //            {
               //                inputEndtimeInt64 = (inputFormatCtx->duration)/(AV_TIME_BASE);
               //
               //            }
           }
           else if(_audioStream != -1 && inputFormatCtx->streams[_audioStream])
           {
               //            if(inputFormatCtx->streams[_audioStream]->duration != AV_NOPTS_VALUE)
               //            {
               inputEndtimeInt64 = (inputFormatCtx->streams[_audioStream]->duration)/(AV_TIME_BASE);
               //            }
               //            else
               //            {
               //                inputEndtimeInt64 = (inputFormatCtx->duration)/(AV_TIME_BASE);
               //
               //            }
           }
       }
       else
       {
           NSLog(@"%s - %d # Defined timestamp value", __PRETTY_FUNCTION__, __LINE__);

           inputEndtimeInt64 = (inputFormatCtx->duration)/(AV_TIME_BASE);
       }
       NSLog(@"%s - %d # inputEndtimeInt64 = %lld", __PRETTY_FUNCTION__, __LINE__, inputEndtimeInt64);

       /*
        *  Finding out the frame rate
        */
       if(_videoStream != -1 && inputFormatCtx->streams[_videoStream])
       {

           framesPerSec =  (inputFormatCtx->streams[_videoStream]->r_frame_rate.num)/ (inputFormatCtx->streams[_videoStream]->r_frame_rate.den);
       }
       else
       {
           framesPerSec = 24;
       }

       numberOfFrames = framesPerSec * (int) inputEndtimeInt64;
       NSLog(@"%s - %d # numberOfFrames = %d", __PRETTY_FUNCTION__, __LINE__, numberOfFrames);


       /*
        *  Seek to timestamp ts.
        *
        *  avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags)
        */

       if(avformat_seek_file(inputFormatCtx, inputAudioStreamIndex, INT64_MIN, outputStartTimeInt64, INT64_MAX, AVSEEK_FLAG_FRAME) < 0)
       {
           NSLog(@"%s - %d # Seek OK", __PRETTY_FUNCTION__, __LINE__);
       }
       else
       {
           NSLog(@"%s - %d # Seek ERROR", __PRETTY_FUNCTION__, __LINE__);
       }

       /*
        *  Creating output file path1
        */

    //    NSString * timestamp = [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];
    //    
    //    NSArray *directoryPathsArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    //    NSString *documentsDirectory = [directoryPathsArray objectAtIndex:0];
    //    NSString *outputFilePath = [NSString stringWithFormat:@"%@/%@.mov",documentsDirectory,timestamp]; // Not working if we replace .avi with .mp4

       NSString* filename = [NSString stringWithFormat:@"IPCamera%d.mov", _currentFile];
       NSString* outputFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:filename];
       _url = [NSURL fileURLWithPath:outputFilePath];

       /*
        *  Return the output format in the list of registered output formats
        *  which best matches the provided parameters, or return NULL if
        *  there is no match.
        *
        *  av_guess_format(const char *short_name, const char *filename, const char *mime_type)
        */
       outputFormat = av_guess_format(NULL, [outputFilePath UTF8String], NULL);

       NSLog(@"%s - %d # outputFormat->name = %s", __PRETTY_FUNCTION__, __LINE__, outputFormat->name);

       if(outputFormat == NULL)
       {
           NSLog(@"%s - %d # outputFormat == NULL", __PRETTY_FUNCTION__, __LINE__);
       }
       else
       {
           /*
            *  Allocate an AVFormatContext.
            */
           outputContext = avformat_alloc_context();

           if(outputContext)
           {
               outputContext->oformat = outputFormat;      // The output container format.

               snprintf(outputContext->filename, sizeof(outputContext->filename), "%s", [outputFilePath UTF8String]);
           }
           else
           {
               NSLog(@"%s - %d # outputContext == NULL", __PRETTY_FUNCTION__, __LINE__);
           }
       }

       outputVideoCodec = outputAudioCodec = NULL;

       /*
        *  video_codec = default video codec
        */
       if(outputFormat->video_codec != AV_CODEC_ID_NONE && inputVideoStream != NULL)
       {
           /*
            *  Find a registered encoder with a matching codec ID.
            *
            *  avcodec_find_encoder(enum AVCodecID id)
            */
           outputVideoCodec = avcodec_find_encoder(outputFormat->video_codec);

           if(NULL == outputVideoCodec)
           {
               NSLog(@"%s - %d # Could Not Find Vid Encoder", __PRETTY_FUNCTION__, __LINE__);
           }
           else
           {
               NSLog(@"%s - %d # Found Out Vid Encoder", __PRETTY_FUNCTION__, __LINE__);

               /*
                *  Add a new stream to a media file.
                *
                *  avformat_new_stream(AVFormatContext *s, const AVCodec *c)
                */
               outputVideoStream = avformat_new_stream(outputContext, outputVideoCodec);

               if(NULL == outputVideoStream)
               {
                   NSLog(@"%s - %d # Failed to Allocate Output Vid Strm", __PRETTY_FUNCTION__, __LINE__);
               }
               else
               {
                   NSLog(@"%s - %d # Allocated Video Stream", __PRETTY_FUNCTION__, __LINE__);

                   /*
                    *  Copy the settings of the source AVCodecContext into the destination AVCodecContext.
                    *
                    *  avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src)
                    */

                   if(avcodec_copy_context(outputVideoStream->codec, inputFormatCtx->streams[inputVideoStreamIndex]->codec) != 0)
                   {
                       NSLog(@"%s - %d # Failed to Copy Context", __PRETTY_FUNCTION__, __LINE__);
                   }
                   else
                   {
                       AVStream *st = _formatCtx->streams[_videoStream];
                       outputVideoStream->sample_aspect_ratio.den = outputVideoStream->codec->sample_aspect_ratio.den;     // denominator
                       outputVideoStream->sample_aspect_ratio.num = st->codec->sample_aspect_ratio.num;    // numerator
                       NSLog(@"%s - %d # Copied Context 1", __PRETTY_FUNCTION__, __LINE__);
                       outputVideoStream->codec->codec_id = st->codec->codec_id;
                       outputVideoStream->codec->time_base.num = st->codec->time_base.num;
                       outputVideoStream->codec->time_base.den = STREAM_FRAME_RATE;
                       outputVideoStream->time_base.num = st->time_base.num;
                       outputVideoStream->time_base.den =  st->time_base.den;
                       outputVideoStream->r_frame_rate.num =st->r_frame_rate.num;
                       outputVideoStream->nb_frames = STREAM_NB_FRAMES;
                       outputVideoStream->r_frame_rate.den = st->r_frame_rate.den;
                       outputVideoStream->avg_frame_rate.den = st->avg_frame_rate.num;
                       outputVideoStream->avg_frame_rate.num = st->avg_frame_rate.num;
    //                  outputVideoStream->duration = st->duration;
                   }
               }
           }
       }

       if(outputFormat->audio_codec != AV_CODEC_ID_NONE && inputAudioStream != NULL)
       {
           outputAudioCodec = avcodec_find_encoder(outputFormat->audio_codec);

           if(NULL == outputAudioCodec)
           {
               NSLog(@"%s - %d # Could Not Find Out Aud Encoder", __PRETTY_FUNCTION__, __LINE__);
           }
           else
           {
               NSLog(@"%s - %d # Found Out Aud Encoder", __PRETTY_FUNCTION__, __LINE__);

               outputAudioStream = avformat_new_stream(outputContext, outputAudioCodec);

               if(NULL == outputAudioStream)
               {
                   NSLog(@"%s - %d # Failed to Allocate Out Vid Strm", __PRETTY_FUNCTION__, __LINE__);
               }
               else
               {
                   if(avcodec_copy_context(outputAudioStream->codec, inputFormatCtx->streams[inputAudioStreamIndex]->codec) != 0)
                   {
                       NSLog(@"%s - %d # Failed to Copy Context", __PRETTY_FUNCTION__, __LINE__);
                   }
                   else
                   {
                       //                    AVStream *st = _formatCtx->streams[_audioStream];

                       NSLog(@"%s - %d # Copied Context 2", __PRETTY_FUNCTION__, __LINE__);
                       outputAudioStream->codec->codec_id = inputAudioStream->codec->codec_id;
                       outputAudioStream->codec->codec_tag = 0;
                       //                    outputAudioStream->pts = inputAudioStream->pts;
    //                    outputAudioStream->duration = inputAudioStream->duration;
                       outputAudioStream->time_base.num = inputAudioStream->time_base.num;
                       outputAudioStream->time_base.den = inputAudioStream->time_base.den;
                   }
               }
           }
       }

       if (!(outputFormat->flags & AVFMT_NOFILE))
       {
           /*
            *  Create and initialize a AVIOContext for accessing the resource indicated by url.
            *
            *  avio_open2(AVIOContext **s, const char *url, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options)
            */
           if (avio_open2(&outputContext->pb, [outputFilePath UTF8String], AVIO_FLAG_WRITE, NULL, NULL) < 0)
           {
               NSLog(@"%s - %d # Could Not Open File", __PRETTY_FUNCTION__, __LINE__);
           }
       }

       /* Write the stream header, if any. */
       /*
        *  Allocate the stream private data and write the stream header to an output media file.
        *
        *  avformat_write_header(AVFormatContext *s, AVDictionary **options);
        */
       if (avformat_write_header(outputContext, NULL) < 0)
       {
           NSLog(@"%s - %d # Error Occurred While Writing Header", __PRETTY_FUNCTION__, __LINE__);
       }
       else
       {
           NSLog(@"%s - %d # Written Output header", __PRETTY_FUNCTION__, __LINE__);

           initDone = true;
       }

       return kxMovieErrorNone;
    }

    More over I contacted Red5Pro team and asked them regarding that along with video demo. They replied me like this

    What’s most likely happening is that the version of FFMPEG that’s being loaded by that project is incompatible with the customized version of it that’s embedded in our SDK, and some duplicate definition error is causing the wrong version to be loaded. It could also be any number of conflicts between one of the libraries in that project with the SDK, or one of the support libraries that the sdk requires ( I have to assume that since it compiled, that you did add the libraries listed in step four here : https://www.red5pro.com/docs/streaming/ios.html#project-setup ) and if that’s the case, I don’t know of a good way to correct the issue as chasing down individual third-party libraries that raise incompatibilities with our SDKs to correct them is beyond the reach of our team. (edited)

    Can anybody have idea where to look ?

    Thanks

  • Revision 93109 : Compat PHP7 (peut être pas encore suffisant). La structure foreach ...

    23 novembre 2015, par marcimat@… — Log

    Compat PHP7 (peut être pas encore suffisant).
    La structure foreach change de comportement et s’applique par défaut sur une copie du tableau passé.
    Si on modifie le tableau dans le foreach… bien celui d’origine n’est pas affecté. Pour retrouver
    le comportement d’avant dans ces cas là, il faut passer la valeur par référence.
    cf.
    https://wiki.php.net/rfc/php7_foreach
    http://php.net/manual/fr/migration70.incompatible.php