Recherche avancée

Médias (0)

Mot : - Tags -/tags

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

Autres articles (27)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

  • 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

  • Configuration spécifique pour PHP5

    4 février 2011, par

    PHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
    Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
    Modules spécifiques
    Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)

Sur d’autres sites (6982)

  • Compile Shotdetect on CentOS 7

    14 septembre 2015, par BitLegacy01

    I’m migrating a service from a Debian server to a CentOS 7 one.

    The service needs the Shotdetect command (github , official site).

    I could not make it work on CentOS though I followed all steps :

    1. Compile ffmpeg compilation guide

      # ffmpeg
      ffmpeg version git-2015-08-21-7a806c6 Copyright (c) 2000-2015 the FFmpeg developers
       built with gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-9)
       configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --disable-libmp3lame --disable-libopus --disable-libvorbis --disable-libvpx --enable-libx264 --disable-libx265 --disable-lzma
       libavutil      54. 31.100 / 54. 31.100
       libavcodec     56. 58.100 / 56. 58.100
       libavformat    56. 40.101 / 56. 40.101
       libavdevice    56.  4.100 / 56.  4.100
       libavfilter     5. 36.100 /  5. 36.100
       libswscale      3.  1.101 /  3.  1.101
       libswresample   1.  2.101 /  1.  2.101
       libpostproc    53.  3.100 / 53.  3.100
      Hyper fast Audio and Video encoder
      usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
      1. Install needed packages

        # yum install gd-devel libxml2-devel libxslt-devel clang libvpx libvorbis
      2. Add pthread in the CMakeList file, in TARGET_LINK_LIBRARIES, because it throws an lpthread missing in linker error

      3. Compile Shotdetect

        # FFMPEG_DIR="/root/ffmpeg_build"  ./compile.sh cmd

    5.Lost in contemplation

    -- avformat library found: /root/ffmpeg_build/lib/libavformat.a
    -- avcodec library found: /root/ffmpeg_build/lib/libavcodec.a
    -- avutil library found: /root/ffmpeg_build/lib/libavutil.a
    -- swscale library found: /root/ffmpeg_build/lib/libswscale.a
    Found all FFmpeg libraries in /root/ffmpeg_build/lib/libavformat.a;/root/ffmpeg_build/lib/libavdevice.a;/root/ffmpeg_build/lib/libavcodec.a;/root/ffmpeg_build/lib/libavutil.a;/root/ffmpeg_build/lib/libswscale.a.
    -- Found GD: /usr/lib64/libgd.so
    Found libgd: /usr/lib64/libgd.so;/usr/lib64/libpng.so;/usr/lib64/libz.so;/usr/lib64/libjpeg.so in /usr/include
    Found libxml2: /usr/lib64/libxml2.so in /usr/include/libxml2
    Found libxslt: /usr/lib64/libxslt.so in /usr/include
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /root/Shotdetect-master/build
    [ 71%] Built target shotdetect
    Linking CXX executable shotdetect-cmd
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacdec.o): in the function « fdk_aac_decode_frame »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:323: undefined reference to « aacDecoder_Fill »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:329: undefined reference to « aacDecoder_DecodeFrame »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacdec.o): in the function « get_stream_info »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:88: undefined reference to « aacDecoder_GetStreamInfo »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacdec.o): in the function « fdk_aac_decode_close »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:201: undefined reference to « aacDecoder_Close »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacdec.o): in the function « fdk_aac_decode_init »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:214: undefined reference to « aacDecoder_Open »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:221: undefined reference to « aacDecoder_ConfigRaw »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:228: undefined reference to « aacDecoder_SetParam »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:252: undefined reference to « aacDecoder_SetParam »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:270: undefined reference to « aacDecoder_SetParam »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:277: undefined reference to « aacDecoder_SetParam »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:284: undefined reference to « aacDecoder_SetParam »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacdec.o):/root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:291: encore plus de références indéfinies suivent vers « aacDecoder_SetParam »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacdec.o): in the function « fdk_aac_decode_init »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:261: undefined reference to « aacDecoder_AncDataInit »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacdec.o): in the function « fdk_aac_decode_flush »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacdec.c:367: undefined reference to « aacDecoder_SetParam »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacenc.o): in the function « aac_encode_close »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:97: undefined reference to « aacEncClose »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacenc.o): in the function « aac_encode_frame »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:357: undefined reference to « aacEncEncode »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacenc.o): in the function « aac_encode_init »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:114: undefined reference to « aacEncOpen »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:123: undefined reference to « aacEncoder_SetParam »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:130: undefined reference to « aacEncoder_SetParam »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:138: undefined reference to « aacEncoder_SetParam »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:172: undefined reference to « aacEncoder_SetParam »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:179: undefined reference to « aacEncoder_SetParam »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacenc.o):/root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:197: encore plus de références indéfinies suivent vers « aacEncoder_SetParam »
    /root/ffmpeg_build/lib/libavcodec.a(libfdk-aacenc.o): in the function « aac_encode_init »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:276: undefined reference to « aacEncEncode »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libfdk-aacenc.c:282: undefined reference to « aacEncInfo »
    /root/ffmpeg_build/lib/libavcodec.a(libx264.o): in the function « X264_frame »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:260: undefined reference to « x264_picture_init »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:262: undefined reference to « x264_bit_depth »
    /root/ffmpeg_build/lib/libavcodec.a(libx264.o): in the function « reconfig_encoder »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:246: undefined reference to « x264_encoder_reconfig »
    /root/ffmpeg_build/lib/libavcodec.a(libx264.o): in the function « X264_frame »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:283: undefined reference to « x264_encoder_encode »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:289: undefined reference to « x264_encoder_delayed_frames »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:283: undefined reference to « x264_encoder_encode »
    /root/ffmpeg_build/lib/libavcodec.a(libx264.o): in the function « reconfig_encoder »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:173: undefined reference to « x264_encoder_reconfig »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:178: undefined reference to « x264_encoder_reconfig »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:185: undefined reference to « x264_encoder_reconfig »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:205: undefined reference to « x264_encoder_reconfig »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:211: undefined reference to « x264_encoder_reconfig »
    /root/ffmpeg_build/lib/libavcodec.a(libx264.o):/root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:191: encore plus de références indéfinies suivent vers « x264_encoder_reconfig »
    /root/ffmpeg_build/lib/libavcodec.a(libx264.o): in the function « X264_init_static »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:806: undefined reference to « x264_bit_depth »
    /root/ffmpeg_build/lib/libavcodec.a(libx264.o): in the function « X264_close »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:339: undefined reference to « x264_encoder_close »
    /root/ffmpeg_build/lib/libavcodec.a(libx264.o): in the function « X264_init »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:413: undefined reference to « x264_param_default »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:418: undefined reference to « x264_param_default_preset »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:440: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:470: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:514: undefined reference to « x264_levels »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:516: undefined reference to « x264_levels »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:540: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:541: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:542: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:543: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:601: undefined reference to « x264_param_apply_fastfirstpass »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:651: undefined reference to « x264_param_apply_profile »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:703: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:705: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:717: undefined reference to « x264_param_parse »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:735: undefined reference to « x264_encoder_open_148 »
    /root/ffmpeg_sources/ffmpeg/libavcodec/libx264.c:744: undefined reference to « x264_encoder_headers »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_decode_subpacket »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:379: undefined reference to « swr_is_initialized »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_decode_frame »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:220: undefined reference to « swr_is_initialized »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_init_resample »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:161: undefined reference to « swr_init »
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:167: undefined reference to « swr_convert »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_decode_frame »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:234: undefined reference to « swr_convert »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_flush_resample »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:115: undefined reference to « swr_convert »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_decode_subpacket »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:411: undefined reference to « swr_close »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_decode_flush »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:614: undefined reference to « swr_close »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_decode_close »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:638: undefined reference to « swr_free »
    /root/ffmpeg_build/lib/libavcodec.a(opusdec.o): in the function « opus_decode_init »:
    /root/ffmpeg_sources/ffmpeg/libavcodec/opusdec.c:705: undefined reference to « swr_alloc »
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[2]: *** [shotdetect-cmd] Error 1
    make[1]: *** [CMakeFiles/shotdetect-cmd.dir/all] Error 2
    make: *** [all] Error 2

    I’ve done a lot of research about the above errors but I didn’t find any clue.

    How to compile successfully Shotdetect on CentOS7 ?

    Thanks to tryp here is a working CMakelist file :

    # CMake integration by Christian Frisson
    cmake_minimum_required(VERSION 2.8)
    PROJECT(shotdetect)

    SET(CMAKE_C_COMPILER "/usr/bin/clang")
    SET(CMAKE_CXX_COMPILER "/usr/bin/clang++")
    SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")


    # Get git version information for automatic embedding in version string:

    include(GetGitRevisionDescription)
    get_git_head_revision(GIT_REFSPEC GIT_SHA1)
    # Take the first 12 characters of the SHA1 as short identifier:
    STRING(SUBSTRING ${GIT_SHA1} 0 11 GIT_SHA1_SHORT)
    configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.cc.in" "${CMAKE_CURRENT_BINARY_DIR}/version.cc" @ONLY)
    list(APPEND SOURCES "${CMAKE_CURRENT_BINARY_DIR}/version.cc" src/version.h)

    # Miscellaneous compilation options:

    OPTION(USE_WXWIDGETS "Compile GUI app with wxWidgets, otherwise commandline app" ON)
    OPTION(USE_POSTGRESQL "Compile with PostgreSQL support" OFF)

    # Dependency: pkg-config (required if cross-compiling with MXE)

    IF ( MINGW AND CMAKE_TOOLCHAIN_FILE)
       FIND_PACKAGE (PkgConfig)
       IF(NOT PKG_CONFIG_FOUND)
           MESSAGE(FATAL_ERROR "pkgconfig required for cross-compiling with MXE for windows")
       ENDIF()
       SET(PKG_CONFIG_EXECUTABLE ${PKG_CONFIG_EXECUTABLE} CACHE STRING "pkg-config")
    ENDIF()

    # Dependency: FFmpeg (required)

    FIND_PACKAGE( FFmpeg )
    IF ( MINGW AND CMAKE_TOOLCHAIN_FILE)
       PKG_CHECK_MODULES (FFMPEG_PKG REQUIRED libavcodec libavfilter libavutil libavdevice libavformat libavformat libswscale)
       IF (FFMPEG_PKG_FOUND)
           MESSAGE( "FFmpeg cflags found through pkg-config: ${FFMPEG_PKG_CFLAGS}" )
           MESSAGE( "FFmpeg ldflags found through pkg-config: ${FFMPEG_PKG_LDFLAGS}" )
           STRING(REGEX REPLACE ";" " " FFMPEG_PKG_CFLAGS "${FFMPEG_PKG_CFLAGS}")
           SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FFMPEG_PKG_CFLAGS}")
           SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FFMPEG_PKG_CFLAGS}")
           SET(FFMPEG_LIBRARIES ${FFMPEG_LIBRARY} ${FFMPEG_PKG_LDFLAGS})
           MESSAGE("FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES}")
       ELSE (FFMPEG_PKG_FOUND)
           MESSAGE( FATAL_ERROR "FFmpeg cflags/ldflags not found through pkg-config." )
       ENDIF (FFMPEG_PKG_FOUND)
    ENDIF()
    IF(FFMPEG_LIBAVFORMAT_FOUND)
       MESSAGE(STATUS "avformat library found: ${FFMPEG_LIBAVFORMAT_LIBRARIES}")
    ELSE()
       MESSAGE(STATUS "avformat library not found.")
    ENDIF()
    IF(FFMPEG_LIBAVCODEC_FOUND)
       MESSAGE(STATUS "avcodec library found: ${FFMPEG_LIBAVCODEC_LIBRARIES}")
    ELSE()
       MESSAGE(STATUS "avcodec library not found.")
    ENDIF()
    IF(FFMPEG_LIBAVUTIL_FOUND)
       MESSAGE(STATUS "avutil library found: ${FFMPEG_LIBAVUTIL_LIBRARIES}")
    ELSE()
       MESSAGE(STATUS "avutil library not found.")
    ENDIF()
    IF(FFMPEG_LIBSWSCALE_FOUND)
       MESSAGE(STATUS "swscale library found: ${FFMPEG_LIBSWSCALE_LIBRARIES}")
    ELSE()
       MESSAGE(STATUS "swscale library not found.")
    ENDIF()
    IF(FFMPEG_FOUND)
       INCLUDE_DIRECTORIES(${FFMPEG_INCLUDE_DIR} ${FFMPEG_INCLUDE_DIRS})
       SET(FFMPEG_LIBRARIES "${FFMPEG_LIBRARIES};/root/ffmpeg_build/lib/libswresample.a;/root/ffmpeg_build/lib/libx264.a;/lib64/libdl.so.2;/root/ffmpeg_build/lib/libfdk-aac.a;/root/ffmpeg_build/lib/libswresample.a")
       MESSAGE("Found all FFmpeg libraries in ${FFMPEG_LIBRARIES}.")
    ELSE()
       MESSAGE(FATAL_ERROR "Some FFmpeg libraries are missing.")
    ENDIF()

    # Dependency: GD (required)

    FIND_PACKAGE(GD REQUIRED)
    IF ( MINGW AND CMAKE_TOOLCHAIN_FILE)
       EXEC_PROGRAM(${CMAKE_FIND_ROOT_PATH}/bin/gdlib-config ARGS "--cflags" OUTPUT_VARIABLE GD_PKG_CFLAGS)
       EXEC_PROGRAM(${CMAKE_FIND_ROOT_PATH}/bin/gdlib-config ARGS "--libs" OUTPUT_VARIABLE GD_PKG_LDFLAGS)
       MESSAGE( "gd cflags found through gdlib-config: ${GD_PKG_CFLAGS}" )
       MESSAGE( "gd ldflags found through gdlib-config: ${GD_PKG_LDFLAGS}" )
       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GD_PKG_CFLAGS}")
       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GD_PKG_CFLAGS}")
       SET(GD_LIBRARIES ${GD_LIBRARY} ${GD_PKG_LDFLAGS})
       MESSAGE("GD_LIBRARIES ${GD_LIBRARIES}")
    ENDIF()
    IF(GD_FOUND)
       INCLUDE_DIRECTORIES(${GD_INCLUDE_DIR})
       MESSAGE("Found libgd: ${GD_LIBRARIES} in ${GD_INCLUDE_DIR}")
    ELSE()
       MESSAGE(FATAL_ERROR "Couldn't find libgd")
    ENDIF()

    # Dependency: libxml2 (required)

    FIND_PACKAGE(LibXml2 2.7 REQUIRED)
    IF ( MINGW AND CMAKE_TOOLCHAIN_FILE)
       PKG_CHECK_MODULES (LIBXML2_PKG REQUIRED libxml-2.0)
       IF (LIBXML2_PKG_FOUND)
           MESSAGE( "LibXml2 cflags found through pkg-config: ${LIBXML2_PKG_CFLAGS}" )
           MESSAGE( "LibXml2 ldflags found through pkg-config: ${LIBXML2_PKG_LDFLAGS}" )
           STRING(REGEX REPLACE ";" " " LIBXML2_PKG_CFLAGS "${LIBXML2_PKG_CFLAGS}")
           SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBXML2_PKG_CFLAGS}")
           SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBXML2_PKG_CFLAGS}")
           SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY} ${LIBXML2_PKG_LDFLAGS})
           MESSAGE("LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES}")
       ELSE (LIBXML2_PKG_FOUND)
           MESSAGE( FATAL_ERROR "LibXml2 cflags/ldflags not found through pkg-config." )
       ENDIF (LIBXML2_PKG_FOUND)
    ENDIF()
    IF(LIBXML2_FOUND)
       MESSAGE("Found libxml2: ${LIBXML2_LIBRARIES} in ${LIBXML2_INCLUDE_DIR}")
       INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
    ELSE()
       MESSAGE(FATAL_ERROR "Couldn't find libxml2")
    ENDIF()

    # Dependency: libxslt (required)

    FIND_PACKAGE(LibXslt REQUIRED)
    IF(LIBXSLT_FOUND)
       MESSAGE("Found libxslt: ${LIBXSLT_LIBRARIES} in ${LIBXSLT_INCLUDE_DIR}")
       INCLUDE_DIRECTORIES(${LIBXSLT_INCLUDE_DIR})
    ELSE()
       MESSAGE(FATAL_ERROR "Couldn't find libxslt")
    ENDIF()

    # Dependency: wxWidgets (optional)
    IF(USE_WXWIDGETS)
       FIND_PACKAGE(wxWidgets)# COMPONENTS core base)
       IF(wxWidgets_FOUND)
           MESSAGE("Found wxWidgets: ${wxWidgets_LIBRARIES} in ${wxWidgets_INCLUDE_DIRS}")
           INCLUDE_DIRECTORIES(${wxWidgets_INCLUDE_DIRS})
           ADD_DEFINITIONS(-DWXWIDGETS)
           INCLUDE("${wxWidgets_USE_FILE}")
       ELSE()
           MESSAGE(FATAL_ERROR "Couldn't find wxWidgets. Set USE_WXWIDGETS to OFF or install wxWidgets.")
       ENDIF()
    ENDIF()

    # Dependency: PostgreSQL (optional)
    IF(USE_POSTGRESQL)
       FIND_PACKAGE(PostgreSQL)
       IF(PostgreSQL_FOUND)
           MESSAGE("Found PostgreSQL: ${PostgreSQL_LIBRARIES} in ${PostgreSQL_INCLUDE_DIR}")
           INCLUDE_DIRECTORIES(${PostgreSQL_INCLUDE_DIR})
       ELSE()
           MESSAGE(FATAL_ERROR "Couldn't find PostgreSQL. Set USE_POSTGRESQL to OFF or install PostgreSQL.")
       ENDIF()
    ENDIF()

    # shotdetect

    SET(TARGET_NAME "shotdetect")
    INCLUDE_DIRECTORIES(.)

    # shotdetect library

    SET(${TARGET_NAME}_LIBRARY_SRCS src/film.cc src/graph.cc src/image.cc src/shot.cc src/xml.cc)
    SET(${TARGET_NAME}_LIBRARY_HDRS  src/film.h src/graph.h src/image.h src/shot.h src/xml.h)
    IF(USE_POSTGRESQL)
       SET(${TARGET_NAME}_LIBRARY_SRCS ${${TARGET_NAME}_LIBRARY_SRCS} src/bdd.cc)
       SET(${TARGET_NAME}_LIBRARY_HDRS ${${TARGET_NAME}_LIBRARY_HDRS} src/bdd.h)
    ENDIF()
    ADD_LIBRARY(${TARGET_NAME} ${${TARGET_NAME}_LIBRARY_SRCS} ${${TARGET_NAME}_LIBRARY_HDRS})
    TARGET_LINK_LIBRARIES(${TARGET_NAME} ${FFMPEG_LIBRARIES} ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${GD_LIBRARIES} "pthread" "m" "z")
    IF(USE_WXWIDGETS AND wxWidgets_FOUND)
       TARGET_LINK_LIBRARIES(${TARGET_NAME} ${wxWidgets_LIBRARIES})
    ENDIF()
    IF(USE_POSTGRESQL AND PostgreSQL_FOUND)
       TARGET_LINK_LIBRARIES(${TARGET_NAME} ${PostgreSQL_LIBRARY})
    ENDIF()

    # shotdetect application: gui or commandline

    IF(APPLE)
       SET(APP_TYPE "MACOSX_BUNDLE")
    ELSEIF(WIN32)
       SET(APP_TYPE "WIN32")
    ENDIF()

    IF(USE_WXWIDGETS AND wxWidgets_FOUND)
       LIST(APPEND ${TARGET_NAME}_GUI_SRCS src/main.cc src/ui/dialog_help.cc src/ui/dialog_shotdetect.cc src/ui/process_video_thread.cc)
       LIST(APPEND ${TARGET_NAME}_GUI_HDRS src/ui/dialog_help.h src/ui/dialog_shotdetect.h src/ui/process_video_thread.h)
       ADD_EXECUTABLE(${TARGET_NAME}-gui ${APP_TYPE} ${SOURCES} ${${TARGET_NAME}_GUI_SRCS} ${${TARGET_NAME}_GUI_HDRS})
       TARGET_LINK_LIBRARIES(${TARGET_NAME}-gui ${TARGET_NAME})
       # Make this target optional to install:
       SET(TARGETS_TO_INSTALL ${TARGET_NAME}-gui)
    ELSE()
       LIST(APPEND ${TARGET_NAME}_COMMANDLINE_SRCS src/commandline.cc)
       ADD_EXECUTABLE(${TARGET_NAME}-cmd ${SOURCES} ${${TARGET_NAME}_COMMANDLINE_SRCS})
       TARGET_LINK_LIBRARIES(${TARGET_NAME}-cmd ${TARGET_NAME})
       # Make this target optional to install:
       SET(TARGETS_TO_INSTALL ${TARGET_NAME}-cmd)
    ENDIF()


    # Routines for installing shotdetect.
    # Taken from official documentation (http://www.cmake.org/cmake/help/cmake2.6docs.html#command:install)
    install(
       TARGETS ${TARGETS_TO_INSTALL}
       RUNTIME DESTINATION bin
       LIBRARY DESTINATION lib
       ARCHIVE DESTINATION lib/static
    )

    the built binary will be in the built directory, you can move there and execute

    make install

    to make the binary system wide.

  • Piwik 2.1 — Massive Performance and Reliability Improvements

    4 mars 2014, par Benaka M. — Community, Development

    We are very excited to announce the immediate availability of Piwik v2.1.0 !

    Piwik 2.1 is the first release after our 2.0 release and it reflects the new direction Piwik is moving in : better performance, more reliability and a better overall open platform ! We also released more plugins on the marketplace as well as helped developers build exciting new plugins for Piwik.

    This 2.1.0 release contains several performance and reliability improvements to the archiving process and to the new device detection process introduced in Piwik 2.0. It also includes a new email report format (CSV), a new marketplace plugin and overall more than 80 improvements (source).

    Massive Performance Improvements to Archiving

    The biggest improvement this release brings to Piwik are the various performance improvements made to the Archiving Process. These improvements include the following :

    • The amount of memory used has been reduced in some cases by 80% or more ! What used to require 8GB of memory will now only require 1GB. Piwik engineers analysed Profiler XHProf reports of Piwik under high load and implemented several improvements to archiving.
    • The cron script you can setup to automatically process your reports will now create new processes to perform asynchronous archiving instead issuing CURL http requests. This change results in increases to the performance and reliability of the Archiving Process.

    Bug Fixes and Performance Improvements to Device Detection

    In Piwik 1.12 we introduced a new device detection feature that could detect much more information than what we used before. Piwik 2.1 includes several bug fixes and improvements to this feature (such as detecting dozens of new devices, brands and models for smartphones, tablets and other devices). To use this feature, go to “Settings” then “Plugins” then activate the DevicesDetection plugin.

    New Default MySQL Database Type (InnoDB)

    This change doesn’t affect our existing Piwik users, but it does reflect our commitment to performance and reliability. We’ve changed the default MySQL database type to be InnoDB instead of Myisam. This will allow new users to immediately gain the benefits in reliability offered by InnoDB.

    New Marketplace Plugin – HTTP Authentication

    We’re releasing a new plugin on the marketplace that will allow you to use the HTTP authentication services provided by your webserver. Learn more about this plugin on the marketplace.

    New Email Format for Scheduled Reports

    The last big change in this release is a new email report format. You can now get your email reports as CSV files as well as HTML and PDF reports.

    Other Improvements

    In addition to performance improvements and new plugins, this release contains a few other smaller improvements described below.

    Changing segments in the Embedded Dashboard

    The embedded dashboard is the powerful feature that lets you include the Piwik Dashboard without the top menu and Piwik branding, directly within your application !

    This dashboard will now include the segment selector allowing you to change the current segment and create new segments, just as you would in the normal dashboard view :

    Embedded Dashboard

    Multiple Super Users

    It’s now possible for your Piwik to have more than one Super User and for Super Users to have aliases :

    Super User Access

    Learn more in the User guide : Managing Super Users in Piwik.

    Smart App Banners for our Mobile Apps

    Finally, in accord with our commitment to providing great User Experience, we’ve added a smart banner to Piwik so users that view Piwik from a mobile device will be informed of our amazing (and free !) mobile apps (for both iOS and Android).

    Participate in Piwik

    Are you a talented developer or an experienced User Interface designer ? If you have some free time and if you want to contribute to one of the most awesome open source projects around, please get in touch with the Piwik team, or read this page to learn more ?

    Summary

    For the full list of changes in Piwik 2.1 check out the Changelog.

    Thank you to the core developers, all the beta testers and users, our official supporters, the translators & everyone who reported bugs or feature requests. Also thank you to the software we use, and the libraries we use.

    Many of the improvements in this release come from the efforts of Piwik PRO experts. If you are looking for help to make the most of your analytics data, contact Piwik PRO. Learn more about us here.

    If you like what you read, please tell your friends and colleagues or write on your website, blog, forums, stackoverflow, etc.

    Enjoy !

  • Piwik 2.1 — Massive Performance and Reliability Improvements

    4 mars 2014, par Benaka M. — Community, Development

    We are very excited to announce the immediate availability of Piwik v2.1.0 !

    Piwik 2.1 is the first release after our 2.0 release and it reflects the new direction Piwik is moving in : better performance, more reliability and a better overall open platform ! We also released more plugins on the marketplace as well as helped developers build exciting new plugins for Piwik.

    This 2.1.0 release contains several performance and reliability improvements to the archiving process and to the new device detection process introduced in Piwik 2.0. It also includes a new email report format (CSV), a new marketplace plugin and overall more than 80 improvements (source).

    Massive Performance Improvements to Archiving

    The biggest improvement this release brings to Piwik are the various performance improvements made to the Archiving Process. These improvements include the following :

    • The amount of memory used has been reduced in some cases by 80% or more ! What used to require 8GB of memory will now only require 1GB. Piwik engineers analysed Profiler XHProf reports of Piwik under high load and implemented several improvements to archiving.
    • The cron script you can setup to automatically process your reports will now create new processes to perform asynchronous archiving instead issuing CURL http requests. This change results in increases to the performance and reliability of the Archiving Process.

    Bug Fixes and Performance Improvements to Device Detection

    In Piwik 1.12 we introduced a new device detection feature that could detect much more information than what we used before. Piwik 2.1 includes several bug fixes and improvements to this feature (such as detecting dozens of new devices, brands and models for smartphones, tablets and other devices). To use this feature, go to “Settings” then “Plugins” then activate the DevicesDetection plugin.

    New Default MySQL Database Type (InnoDB)

    This change doesn’t affect our existing Piwik users, but it does reflect our commitment to performance and reliability. We’ve changed the default MySQL database type to be InnoDB instead of Myisam. This will allow new users to immediately gain the benefits in reliability offered by InnoDB.

    New Marketplace Plugin – HTTP Authentication

    We’re releasing a new plugin on the marketplace that will allow you to use the HTTP authentication services provided by your webserver. Learn more about this plugin on the marketplace.

    New Email Format for Scheduled Reports

    The last big change in this release is a new email report format. You can now get your email reports as CSV files as well as HTML and PDF reports.

    Other Improvements

    In addition to performance improvements and new plugins, this release contains a few other smaller improvements described below.

    Changing segments in the Embedded Dashboard

    The embedded dashboard is the powerful feature that lets you include the Piwik Dashboard without the top menu and Piwik branding, directly within your application !

    This dashboard will now include the segment selector allowing you to change the current segment and create new segments, just as you would in the normal dashboard view :

    Embedded Dashboard

    Multiple Super Users

    It’s now possible for your Piwik to have more than one Super User and for Super Users to have aliases :

    Super User Access

    Learn more in the User guide : Managing Super Users in Piwik.

    Smart App Banners for our Mobile Apps

    Finally, in accord with our commitment to providing great User Experience, we’ve added a smart banner to Piwik so users that view Piwik from a mobile device will be informed of our amazing (and free !) mobile apps (for both iOS and Android).

    Participate in Piwik

    Are you a talented developer or an experienced User Interface designer ? If you have some free time and if you want to contribute to one of the most awesome open source projects around, please get in touch with the Piwik team, or read this page to learn more ?

    Summary

    For the full list of changes in Piwik 2.1 check out the Changelog.

    Thank you to the core developers, all the beta testers and users, our official supporters, the translators & everyone who reported bugs or feature requests. Also thank you to the software we use, and the libraries we use.

    Many of the improvements in this release come from the efforts of Piwik PRO experts. If you are looking for help to make the most of your analytics data, contact Piwik PRO. Learn more about us here.

    If you like what you read, please tell your friends and colleagues or write on your website, blog, forums, stackoverflow, etc.

    Enjoy !