Recherche avancée

Médias (0)

Mot : - Tags -/flash

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

Autres articles (94)

  • 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 (...)

  • 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 autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (7252)

  • ffmpeg Undefined referance to several swr functions [duplicate]

    21 mai 2022, par user19068953

    I'm trying to staticly link ffmpeg to my project, i downloaded the ffmpeg source files from a github repo because it had pre writen cmake files, which i needed for this exact problem but it changed nothing (https://github.com/Pawday/ffmpeg-cmake). I edited the file a little and posted it below, and added them to lib/ffmpeg in my project directory. I first ran ./configure, then ran make, then make install like the install guide suggested. Then i ran cmake . followed by make. It compiled just fine and i ran a test without any errors :

    


    extern "C"{&#xA;    #include <libavcodec></libavcodec>avcodec.h>&#xA;}&#xA;&#xA;#include <iostream>&#xA;int main(int argc, char* argv[]) {&#xA;    if (argc &lt; 2) {&#xA;        std::cout &lt;&lt; "provide a filename" &lt;&lt; std::endl;&#xA;        return -1;&#xA;        AVPacket *pkt = av_packet_alloc();&#xA;    }&#xA;}&#xA;</iostream>

    &#xA;

    I was following the examples that ffmpeg provides, so i added this :

    &#xA;

    const AVCodec *codec = avcodec_find_decoder(AV_CODEC_ID_MPEG1VIDEO);&#xA;

    &#xA;

    But now i have this huge error :

    &#xA;

    /usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function &#xA;&#xA;`opus_decode_subpacket&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:346: undefined reference to `swr_is_initialized&#x27;&#xA;/usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function `opus_decode_frame&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:188: undefined reference to `swr_is_initialized&#x27;&#xA;/usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function `opus_init_resample&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:136: undefined reference to `swr_init&#x27;&#xA;/usr/bin/ld: /home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:142: undefined reference to `swr_convert&#x27;&#xA;/usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function `opus_decode_frame&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:202: undefined reference to `swr_convert&#x27;&#xA;/usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function `opus_flush_resample&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:90: undefined reference to `swr_convert&#x27;&#xA;/usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function `opus_decode_subpacket&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:379: undefined reference to `swr_close&#x27;&#xA;/usr/bin/ld: /home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:346: undefined reference to `swr_is_initialized&#x27;&#xA;/usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function `opus_decode_flush&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:582: undefined reference to `swr_close&#x27;&#xA;/usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function `opus_decode_close&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:607: undefined reference to `swr_free&#x27;&#xA;/usr/bin/ld: /usr/local/lib/libavcodec.a(opusdec.o): in function `opus_decode_init&#x27;:&#xA;/home/t/Desktop/Code/lib/ffmpeg/libavcodec/opusdec.c:660: undefined reference to `swr_alloc&#x27;&#xA;collect2: error: ld returned 1 exit status&#xA;make[2]: *** [CMakeFiles/Interview.dir/build.make:122: bin/Interview] Error 1&#xA;make[1]: *** [CMakeFiles/Makefile2:420: CMakeFiles/Interview.dir/all] Error 2&#xA;make: *** [Makefile:84: all] Error 2&#xA;

    &#xA;

    I find some questions with similar issues to no avail :

    &#xA;

    FFmpeg seems to be version conflict&#xA;Linking libavcodec and libavformat : Undefined references

    &#xA;

    NOTE : previously i tried downloading ffmpeg with home-brew and pkg-config maybe that is causing an error, but my guess is my cmake file is faulty.

    &#xA;

    project/CMakeLists :

    &#xA;

    cmake_minimum_required(VERSION 3.14)&#xA;&#xA;project(Interview C CXX)&#xA;set(CMAKE_CXX_STANDARD 14)&#xA;&#xA;SET( EXECUTABLE_OUTPUT_PATH ${dir}/bin )&#xA;set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin )&#xA;set( CMAKE_C_FLAGS "-lswresample")&#xA;&#xA;add_subdirectory(lib/ffmpeg)&#xA;&#xA;add_definitions(-DGL_SILENCE_DEPRECATION)&#xA;&#xA;list(APPEND SOURCES&#xA;    src/main.cpp&#xA;    src/vipch.h&#xA;    src/VideoDecoder.cpp&#xA;    src/VideoDecoder.h&#xA;    src/Application.cpp&#xA;    src/Application.h&#xA;    #src/OpenGLRenderer.cpp&#xA;    #src/OpenGLRenderer.h&#xA;    #src/Layer.h&#xA;    #src/Layer.cpp&#xA;)&#xA;&#xA;find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h)&#xA;find_library(AVCODEC_LIBRARY avcodec)&#xA;&#xA;find_path(AVFORMAT_INCLUDE_DIR libavformat/avformat.h)&#xA;find_library(AVFORMAT_LIBRARY avformat)&#xA;&#xA;find_path(AVDEVICE_INCLUDE_DIR libavdevice/avdevice.h)&#xA;find_library(AVDEVICE_LIBRARY avdevice)&#xA;&#xA;find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h)&#xA;find_library(AVCODEC_LIBRARY avcodec)&#xA;&#xA;set(THREADS_PREFER_PTHREAD_FLAG ON)&#xA;find_package(Threads REQUIRED)&#xA;&#xA;add_executable(Interview src/main.cpp src/Application.cpp src/Application.h ${SOURCES})&#xA;&#xA;target_link_libraries(Interview PRIVATE Threads::Threads)&#xA;&#xA;if(APPLE)&#xA;    list(APPEND EXTRA_LIBS&#xA;        "-framework OpenGL"&#xA;    )&#xA;&#xA;    configure_file(&#xA;        ${CMAKE_CURRENT_SOURCE_DIR}/assets/MacOSXBundleInfo.plist.in&#xA;        ${CMAKE_CURRENT_BINARY_DIR}/assets/MacOSXBundleInfo.plist&#xA;    )&#xA;&#xA;    set_target_properties(Interview PROPERTIES&#xA;        MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/assets/MacOSXBundleInfo.plist&#xA;    )&#xA;&#xA;elseif(WIN32)&#xA;    list(APPEND EXTRA_LIBS&#xA;        "-lglu32 -lopengl32"&#xA;    )&#xA;    set(CMAKE_EXE_LINKER_FLAGS "-std=gnu99 -static -static-libgcc -static-libstdc&#x2B;&#x2B; -mwindows")&#xA;&#xA;endif()&#xA;&#xA;list(APPEND EXTRA_LIBS&#xA;"-lGL -lGLU -lX11 -lz -lva -lswresample"&#xA;)&#xA;&#xA;find_package(OpenGL REQUIRED)&#xA;find_package(GLEW REQUIRED)&#xA;&#xA;#target_link_libraries(Interview ${CORELIBS})&#xA;&#xA;&#xA;target_include_directories(Interview PRIVATE &#xA;    ${AVCODEC_INCLUDE_DIR} &#xA;    ${AVFORMAT_INCLUDE_DIR}&#xA;    ${AVUTIL_INCLUDE_DIR}&#xA;    ${AVDEVICE_INCLUDE_DIR} &#xA;    ${OPENGL_INCLUDE_DIR}&#xA;    ${GLEW_INCLUDE_DIRS}&#xA;)&#xA;&#xA;target_link_libraries(Interview PRIVATE &#xA;    ${AVCODEC_LIBRARY} &#xA;    ${AVFORMAT_LIBRARY} &#xA;    ${AVUTIL_LIBRARY} &#xA;    ${AVDEVICE_LIBRARY} &#xA;    ${OPENGL_LIBRARY}&#xA;    ${GLEW_LIBRARIES}&#xA;)&#xA;

    &#xA;

    NOTE : i previously had a really similar error with pthread but with some fixes to cmake and installing pthread i fixed it.

    &#xA;

    project/lib/ffmpeg/CMakeLists :

    &#xA;

    cmake_minimum_required(VERSION 3.15)&#xA;&#xA;project(FFMPEG C CXX)&#xA;&#xA;add_library(ffmpeg_config INTERFACE)&#xA;&#xA;#TODO:[cmake] COMMON DEFINES (config.h)&#xA;# create list with all that and then pick required from that list in each target&#xA;target_compile_definitions(ffmpeg_config INTERFACE FFMPEG_CONFIGURATION="")&#xA;target_compile_definitions(ffmpeg_config INTERFACE FFMPEG_DATADIR="")&#xA;target_compile_definitions(ffmpeg_config INTERFACE AVCONV_DATADIR="")&#xA;target_compile_definitions(ffmpeg_config INTERFACE FFMPEG_LICENSE="")&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE CC_IDENT="")&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_THREADS=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_PTHREADS=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_W32THREADS=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_OS2THREADS=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_ISNAN=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_MMXEXT=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_MMX2=HAVE_MMXEXT)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_MMX2=HAVE_MMXEXT)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_MMX_INLINE=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_MMX=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_AV_CONFIG_H=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_ALTIVEC=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_MMXEXT_INLINE=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_NEON=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_AMD3DNOW_INLINE=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_X86ASM=0)&#xA;if(WIN32)&#xA;    target_compile_definitions(ffmpeg_config INTERFACE HAVE_MKSTEMP=0)&#xA;else()&#xA;    target_compile_definitions(ffmpeg_config INTERFACE HAVE_MKSTEMP=1)&#xA;endif()&#xA;&#xA;&#xA;#TODO:[cmake] detect each function and set to 0 if missing (they are in math.h)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_CBRT=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_CBRTF=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_COPYSIGN=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_ERF=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_HYPOT=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_RINT=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_LRINT=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_LRINTF=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_ROUND=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_ROUNDF=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_TRUNC=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE HAVE_TRUNCF=1)&#xA;&#xA;&#xA;target_link_libraries(ffmpeg_config INTERFACE ffmpeg_compat)&#xA;&#xA;include (TestBigEndian)&#xA;TEST_BIG_ENDIAN(IS_BIG_ENDIAN)&#xA;if(IS_BIG_ENDIAN)&#xA;    target_compile_definitions(ffmpeg_config INTERFACE HAVE_BIGENDIAN=1)&#xA;else()&#xA;    target_compile_definitions(ffmpeg_config INTERFACE HAVE_BIGENDIAN=0)&#xA;endif()&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE av_restrict=)&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_THIS_YEAR=2021)&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_MEMORY_POISONING=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_FRAME_THREAD_ENCODER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_MEMORY_POISONING=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_GRAY=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_ERROR_RESILIENCE=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_MPEGVIDEODEC=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_SMALL=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_H264_D3D11VA_HWACCEL=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_H264_DXVA2_HWACCEL=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_H264_NVDEC_HWACCEL=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_H264_VAAPI_HWACCEL=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_H264_VIDEOTOOLBOX_HWACCEL=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_H264_VDPAU_HWACCEL=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_NETWORK=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_XVMC=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_FORMAT_FILTER=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_PNG_DECODER=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_APNG_DECODER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_INFLATE_WRAPPER=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_DEFLATE_WRAPPER=1)&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_AVUTIL=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_AVCODEC=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_AVFORMAT=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_AVDEVICE=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_SWSCALE=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_SWRESAMPLE=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_POSTPROC=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_AVFILTER=1)&#xA;&#xA;&#xA;&#xA;#CONFIG MUXERS&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_H264_MUXER=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE2_MUXER=1)&#xA;&#xA;#CONFIG DEMUXERS&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE2_DEMUXER=1)&#xA;&#xA;# look at the end of libavformat/img2dec.c file&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_BMP_PIPE_DEMUXER=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_CRI_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_DDS_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_DPX_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_EXR_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_GEM_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_GIF_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_J2K_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_JPEG_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PAM_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PBM_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PCX_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PGM_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PGX_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PICTOR_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PNG_PIPE_DEMUXER=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PPM_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_PSD_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_QDRAW_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_SGI_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_SVG_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_TIFF_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_WEBP_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_XBM_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_XPM_PIPE_DEMUXER=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_IMAGE_XWD_PIPE_DEMUXER=0)&#xA;&#xA;&#xA;#CONFIG PROTOCOLS&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_FILE_PROTOCOL=1)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_PIPE_PROTOCOL=1)&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_ZLIB=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE CONFIG_SWSCALE_ALPHA=0)&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_X86_32=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_X86_64=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_AARCH64=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_ARM=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_PPC=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_X86=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_MIPS=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_ALPHA=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_LOONGARCH=0)&#xA;target_compile_definitions(ffmpeg_config INTERFACE ARCH_LOONGARCH64=0)&#xA;&#xA;target_compile_definitions(ffmpeg_config INTERFACE SWS_MAX_FILTER_SIZE=256)&#xA;&#xA;#_________________________WARNINGS__________________________________________&#xA;#TODO[cmake]: set it for all targets individually or remove for WARNING HELL&#xA;if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")&#xA;    add_compile_options("-w")&#xA;endif()&#xA;&#xA;if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")&#xA;    add_compile_options("-w")&#xA;endif()&#xA;&#xA;if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")&#xA;    cmake_policy(SET CMP0092 NEW) #cmake disable std MSVC warnings in CMAKE_C_FLAGS&#xA;    #CMAKE_DEPFILE_FLAGS_C var in windows contains only /showIncludes and produce include tree&#xA;    set(CMAKE_DEPFILE_FLAGS_C "") #erase it&#xA;    add_compile_options("/w")&#xA;endif()&#xA;&#xA;file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/include/config.h "//cmake config will define all that")&#xA;target_include_directories(ffmpeg_config INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/include)&#xA;&#xA;#TODO[cmake]: resolve config_components.h&#xA;file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/include/config_components.h "//")&#xA;target_include_directories(ffmpeg_config INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/include)&#xA;&#xA;add_subdirectory(compat)&#xA;add_subdirectory(libavutil)&#xA;add_subdirectory(libavcodec)&#xA;add_subdirectory(libavformat)&#xA;add_subdirectory(libavdevice)&#xA;add_subdirectory(libavfilter)&#xA;add_subdirectory(libswresample)&#xA;add_subdirectory(libswscale)&#xA;add_subdirectory(libpostproc)&#xA;&#xA;add_subdirectory(fftools)&#xA;&#xA;add_subdirectory(doc/examples)&#xA;&#xA;&#xA;find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h)&#xA;find_library(AVCODEC_LIBRARY avcodec)&#xA;&#xA;find_path(AVFORMAT_INCLUDE_DIR libavformat/avformat.h)&#xA;find_library(AVFORMAT_LIBRARY avformat)&#xA;&#xA;find_path(AVDEVICE_INCLUDE_DIR libavdevice/avdevice.h)&#xA;find_library(AVDEVICE_LIBRARY avdevice)&#xA;&#xA;find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h)&#xA;find_library(AVCODEC_LIBRARY avcodec)&#xA;&#xA;if(APPLE)&#xA;    list(APPEND EXTRA_LIBS&#xA;        "-framework OpenGL"&#xA;    )&#xA;&#xA;    configure_file(&#xA;        ${CMAKE_CURRENT_SOURCE_DIR}/assets/MacOSXBundleInfo.plist.in&#xA;        ${CMAKE_CURRENT_BINARY_DIR}/assets/MacOSXBundleInfo.plist&#xA;    )&#xA;&#xA;    set_target_properties(FFMPEG PROPERTIES&#xA;        MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/assets/MacOSXBundleInfo.plist&#xA;    )&#xA;&#xA;elseif(WIN32)&#xA;    list(APPEND EXTRA_LIBS&#xA;        "-lglu32 -lopengl32"&#xA;    )&#xA;    set(CMAKE_EXE_LINKER_FLAGS "-std=gnu99 -static -static-libgcc -static-libstdc&#x2B;&#x2B; -mwindows")&#xA;else()&#xA;    list(APPEND EXTRA_LIBS&#xA;        "-lGL -lGLU -lX11"&#xA;    )&#xA;endif()&#xA;&#xA;&#xA;#target_link_libraries(Interview ${CORELIBS})&#xA;&#xA;set( CMAKE_C_FLAGS "-lswresample")&#xA;&#xA;list(APPEND EXTRA_LIBS&#xA;"-lGL -lGLU -lX11 -lz -lva -lswresample"&#xA;)&#xA;&#xA;target_include_directories(ffmpeg_config INTERFACE&#xA;    ${AVCODEC_INCLUDE_DIR} &#xA;    ${AVFORMAT_INCLUDE_DIR}&#xA;    ${AVUTIL_INCLUDE_DIR}&#xA;    ${AVDEVICE_INCLUDE_DIR} &#xA;    ${OPENGL_INCLUDE_DIR}&#xA;    ${GLEW_INCLUDE_DIRS}&#xA;)&#xA;&#xA;target_link_libraries(ffmpeg_config INTERFACE&#xA;    ${AVCODEC_LIBRARY} &#xA;    ${AVFORMAT_LIBRARY} &#xA;    ${AVUTIL_LIBRARY} &#xA;    ${AVDEVICE_LIBRARY} &#xA;    ${OPENGL_LIBRARY}&#xA;    ${GLEW_LIBRARIES}&#xA;)&#xA;

    &#xA;

    Ubuntu 22.04, cmake 3.16.3, ffmpeg version git-2022-05-20-cb47f66

    &#xA;

  • Stream image from Android with FFMPEG

    9 février 2023, par xnok

    I'm currently receiving images from an external source as byte array and I would like to send it as raw video format via ffmpeg to a stream URL, where I have a RTSP server that receives RTSP streams (a similar unanswered question). However, I haven't worked with FFMPEG in Java, so i can't find an example on how to do it. I have a callback that copies the image bytes to a byte array as follows :

    &#xA;

            public class MainActivity extends Activity {&#xA;            final String rtmp_url = "rtmp://192.168.0.12:1935/live/test";&#xA;            private int PREVIEW_WIDTH = 384;&#xA;            private int PREVIEW_HEIGHT = 292;&#xA;            private String TAG = "MainActivity";&#xA;            String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);&#xA;            final String command[] = {ffmpeg,&#xA;                            "-y",  //Add "-re" for simulated readtime streaming.&#xA;                            "-f", "rawvideo",&#xA;                            "-vcodec", "rawvideo",&#xA;                            "-pix_fmt", "bgr24",&#xA;                            "-s", (Integer.toString(PREVIEW_WIDTH) &#x2B; "x" &#x2B; Integer.toString(PREVIEW_HEIGHT)),&#xA;                            "-r", "10",&#xA;                            "-i", "pipe:",&#xA;                            "-c:v", "libx264",&#xA;                            "-pix_fmt", "yuv420p",&#xA;                            "-preset", "ultrafast",&#xA;                            "-f", "flv",&#xA;                            rtmp_url};&#xA;            &#xA;      private UVCCamera mUVCCamera;&#xA;&#xA;public void handleStartPreview(Object surface) throws InterruptedException, IOException {&#xA;    Log.e(TAG, "handleStartPreview:mUVCCamera" &#x2B; mUVCCamera &#x2B; " mIsPreviewing:");&#xA;    if ((mUVCCamera == null)) return;&#xA;    Log.e(TAG, "handleStartPreview2 ");&#xA;    try {&#xA;        mUVCCamera.setPreviewSize(mWidth, mHeight, 1, 26, 0, UVCCamera.DEFAULT_BANDWIDTH, 0);&#xA;        Log.e(TAG, "handleStartPreview3 mWidth: " &#x2B; mWidth &#x2B; "mHeight:" &#x2B; mHeight);&#xA;    } catch (IllegalArgumentException e) {&#xA;        try {&#xA;            // fallback to YUV mode&#xA;            mUVCCamera.setPreviewSize(mWidth, mHeight, 1, 26, UVCCamera.DEFAULT_PREVIEW_MODE, UVCCamera.DEFAULT_BANDWIDTH, 0);&#xA;            Log.e(TAG, "handleStartPreview4");&#xA;        } catch (IllegalArgumentException e1) {&#xA;            callOnError(e1);&#xA;            return;&#xA;        }&#xA;    }&#xA;    Log.e(TAG, "handleStartPreview: startPreview1");&#xA;    int result = mUVCCamera.startPreview();&#xA;    mUVCCamera.setFrameCallback(mIFrameCallback, UVCCamera.PIXEL_FORMAT_RGBX);&#xA;    mUVCCamera.startCapture();&#xA;    Toast.makeText(MainActivity.this,"Camera Started",Toast.LENGTH_SHORT).show();&#xA;    ProcessBuilder pb = new ProcessBuilder(command);&#xA;    pb.redirectErrorStream(true);&#xA;    Process process = pb.start();&#xA;    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));&#xA;    OutputStream writer = process.getOutputStream();&#xA;    byte img[] = new byte[192*108*3];&#xA;    for (int i = 0; i &lt; 10; i&#x2B;&#x2B;)&#xA;    {&#xA;        for (int y = 0; y &lt; 108; y&#x2B;&#x2B;)&#xA;        {&#xA;            for (int x = 0; x &lt; 192; x&#x2B;&#x2B;)&#xA;            {&#xA;                byte r = (byte)((x * y &#x2B; i) % 255);&#xA;                byte g = (byte)((x * y &#x2B; i*10) % 255);&#xA;                byte b = (byte)((x * y &#x2B; i*20) % 255);&#xA;                img[(y*192 &#x2B; x)*3] = b;&#xA;                img[(y*192 &#x2B; x)*3&#x2B;1] = g;&#xA;                img[(y*192 &#x2B; x)*3&#x2B;2] = r;&#xA;            }&#xA;        }&#xA;&#xA;        writer.write(img);&#xA;    }&#xA;&#xA;    writer.close();&#xA;    String line;&#xA;    while ((line = reader.readLine()) != null)&#xA;    {&#xA;        System.out.println(line);&#xA;    }&#xA;&#xA;    process.waitFor();&#xA;}&#xA;public static void buildRawFrame(Mat img, int i)&#xA;{&#xA;    int p = img.cols() / 60;&#xA;    img.setTo(new Scalar(60, 60, 60));&#xA;    String text = Integer.toString(i&#x2B;1);&#xA;    int font = Imgproc.FONT_HERSHEY_SIMPLEX;&#xA;    Point pos = new Point(img.cols()/2-p*10*(text.length()), img.rows()/2&#x2B;p*10);&#xA;    Imgproc.putText(img, text, pos, font, p, new Scalar(255, 30, 30), p*2);  //Blue number&#xA;}&#xA;

    &#xA;

    Additionally : Android Camera Capture using FFmpeg

    &#xA;

    uses ffmpeg to capture frame by frame from native android camera and instead of pushing it via RTMP, they used to generate a video file as output. Although how the image was passed via ffmpeg was not informed.

    &#xA;

    frameData is my byte array and I'd like to know how can I write the necessary ffmpeg commands using ProcessBuilder to send an image via RTSP using ffmpeg for a given URL.

    &#xA;

    An example of what I am trying to do, In Python 3 I could easily do it by doing :

    &#xA;

    import cv2&#xA;import numpy as np&#xA;import socket&#xA;import sys&#xA;import pickle&#xA;import struct&#xA;import subprocess&#xA;&#xA;fps = 25&#xA;width = 224&#xA;height = 224&#xA;rtmp_url = &#x27;rtmp://192.168.0.13:1935/live/test&#x27;&#xA;    &#xA;    &#xA;    &#xA;    command = [&#x27;ffmpeg&#x27;,&#xA;               &#x27;-y&#x27;,&#xA;               &#x27;-f&#x27;, &#x27;rawvideo&#x27;,&#xA;               &#x27;-vcodec&#x27;, &#x27;rawvideo&#x27;,&#xA;               &#x27;-pix_fmt&#x27;, &#x27;bgr24&#x27;,&#xA;               &#x27;-s&#x27;, "{}x{}".format(width, height),&#xA;               &#x27;-r&#x27;, str(fps),&#xA;               &#x27;-i&#x27;, &#x27;-&#x27;,&#xA;               &#x27;-c:v&#x27;, &#x27;libx264&#x27;,&#xA;               &#x27;-pix_fmt&#x27;, &#x27;yuv420p&#x27;,&#xA;               &#x27;-preset&#x27;, &#x27;ultrafast&#x27;,&#xA;               &#x27;-f&#x27;, &#x27;flv&#x27;,&#xA;               rtmp_url]&#xA;    &#xA;    p = subprocess.Popen(command, stdin=subprocess.PIPE)&#xA;    &#xA;    while(True):&#xA;        frame = np.random.randint([255], size=(224, 224, 3))&#xA;        frame = frame.astype(np.uint8)&#xA;        p.stdin.write(frame.tobytes())&#xA;

    &#xA;

    I would like to do the same thing in Android

    &#xA;

    Update : I can reproduce @Rotem 's answer on Netbeans although, in Android I am getting NullPointer exception error when trying to execute pb.start().

    &#xA;

        Process: com.infiRay.XthermMini, PID: 32089&#xA;    java.lang.NullPointerException&#xA;        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1012)&#xA;        at com.infiRay.XthermMini.MainActivity.handleStartPreview(MainActivity.java:512)&#xA;        at com.infiRay.XthermMini.MainActivity.startPreview(MainActivity.java:563)&#xA;        at com.infiRay.XthermMini.MainActivity.access$1000(MainActivity.java:49)&#xA;        at com.infiRay.XthermMini.MainActivity$3.onConnect(MainActivity.java:316)&#xA;        at com.serenegiant.usb.USBMonitor$3.run(USBMonitor.java:620)&#xA;        at android.os.Handler.handleCallback(Handler.java:938)&#xA;        at android.os.Handler.dispatchMessage(Handler.java:99)&#xA;        at android.os.Looper.loopOnce(Looper.java:226)&#xA;        at android.os.Looper.loop(Looper.java:313)&#xA;        at android.os.HandlerThread.run(HandlerThread.java:67)&#xA;2022-06-02 11:47:20.300 32089-1049/com.infiRay.XthermMini E/libUVCCamera: [1049*UVCPreviewIR.cpp:505:uvc_preview_frame_callback]:receive err data&#xA;2022-06-02 11:47:20.304 32089-1049/com.infiRay.XthermMini E/libUVCCamera: [1049*UVCPreviewIR.cpp:505:uvc_preview_frame_callback]:receive err data&#xA;2022-06-02 11:47:20.304 32089-1049/com.infiRay.XthermMini E/libUVCCamera: [1049*UVCPreviewIR.cpp:505:uvc_preview_frame_callback]:receive err data&#xA;2022-06-02 11:47:20.308 32089-1049/com.infiRay.XthermMini E/libUVCCamera: [1049*UVCPreviewIR.cpp:505:uvc_preview_frame_callback]:receive err data&#xA;2022-06-02 11:47:20.312 32089-32089/com.infiRay.XthermMini E/MainActivity: onPause:&#xA;2022-06-02 11:47:20.314 32089-32581/com.infiRay.XthermMini I/Process: Sending signal. PID: 32089 SIG: 9&#xA;

    &#xA;

  • How to send libmmpeg AVPacket through WebRTC (using libdatachannel)

    29 mars 2022, par mike

    I'm encoding a video frame with the ffmpeg libraries, generating an AVPacket with compressed data.

    &#xA;

    Thanks to some recent advice here on S/O, I am trying to send that frame over a network using the WebRTC library libdatachannel, specifically by adapting the example here :

    &#xA;

    https://github.com/paullouisageneau/libdatachannel/tree/master/examples/streamer

    &#xA;

    I am seeing problems inside h264rtppacketizer.cpp (part of the library, not the example) which are almost certainly to do with how I'm providing the sample data.&#xA;(I don't think that this is anything to do with libdatachannel specifically, it will be an issue with what I'm sending)

    &#xA;

    The example code reads each encoded frame from a file, and populates a sample by setting the content of the file to the contents of the file :

    &#xA;

    sample = *reinterpret_cast *>(&amp;fileContents);

    &#xA;

    sample is just a std::vector<byte>;</byte>

    &#xA;

    I have naively copied the contents of an AVPacket->data pointer into the sample vector :

    &#xA;

    sample.resize(pkt->size);&#xA;memcpy(sample.data(), pkt->data, pkt->size * sizeof(std::byte));    &#xA;

    &#xA;

    but the packetizer is falling over when trying to get length values out of that data.&#xA;Specifically, in the following code, the first iteration gets a length of 1, but the second, looking up index 5, gives 1119887324. This is way too big for my data, which is only 3526 bytes (the whole frame is a single colour so likely to be small once encoded) :

    &#xA;

    while (index &lt; message->size()) {&#xA;assert(index &#x2B; 4 &lt; message->size());&#xA;auto lengthPtr = (uint32_t *)(message->data() &#x2B; index);&#xA;uint32_t length = ntohl(*lengthPtr);&#xA;auto naluStartIndex = index &#x2B; 4;&#xA;auto naluEndIndex = naluStartIndex &#x2B; length;&#xA;assert(naluEndIndex &lt;= message->size());    &#xA;        &#xA;auto begin = message->begin() &#x2B; naluStartIndex;&#xA;auto end = message->begin() &#x2B; naluEndIndex;&#xA;nalus->push_back(std::make_shared<nalunit>(begin, end));&#xA;index = naluEndIndex;&#xA;}&#xA;</nalunit>

    &#xA;

    Here is a dump of

    &#xA;

    uint32_t length = ntohl(*lengthPtr);&#xA;

    &#xA;

    for the first few elements of the message (*lengthPtr in parentheses) :

    &#xA;

    [2022-03-29 15:12:01.182] [info] index 0: 1  (16777216)&#xA;[2022-03-29 15:12:01.183] [info] index 1: 359  (1728118784)&#xA;[2022-03-29 15:12:01.184] [info] index 2: 91970  (1114046720)&#xA;[2022-03-29 15:12:01.186] [info] index 3: 23544512  (3225577217)&#xA;[2022-03-29 15:12:01.186] [info] index 4: 1732427807  (532693607)&#xA;[2022-03-29 15:12:01.187] [info] index 5: 1119887324  (3693068354)&#xA;[2022-03-29 15:12:01.188] [info] index 6: 3223313413  (98312128)&#xA;[2022-03-29 15:12:01.188] [info] index 7: 534512896  (384031)&#xA;[2022-03-29 15:12:01.188] [info] index 8: 3691315291  (1526728156)&#xA;[2022-03-29 15:12:01.189] [info] index 9: 83909537  (2707095557)&#xA;[2022-03-29 15:12:01.189] [info] index 10: 6004992  (10574592)&#xA;[2022-03-29 15:12:01.190] [info] index 11: 1537277952  (41307)&#xA;[2022-03-29 15:12:01.190] [info] index 12: 2701131779  (50331809)&#xA;[2022-03-29 15:12:01.192] [info] index 13: 768  (196608)&#xA;

    &#xA;

    (I know I should post a complete sample, I am working on it)

    &#xA;

      &#xA;
    • I am fairly sure I am just missing something basic. E.g. am I supposed to do something with the AVPacket side_data, does AVPacket have or miss some header info ?

      &#xA;

    • &#xA;

    • If I just fwrite the pkt->data for a single frame to disk, I can read the codec information with ffprobe :

      &#xA;

    • &#xA;

    &#xA;

    Input #0, h264, from &#x27;encodedOut.h264&#x27;:&#xA;Duration: N/A, bitrate: N/A&#xA;Stream #0:0: Video: h264 (Constrained Baseline), yuv420p(progressive), 1280x720, 30 tbr, 1200k tbn&#xA;

    &#xA;

      &#xA;
    • whereas the same for the example input files (again a single frame) gives the following :
    • &#xA;

    &#xA;

    [h264 @ 000001c88d1135c0] Format h264 detected only with low score of 1, misdetection possible!&#xA;[h264 @ 000001c88f337400] missing picture in access unit with size 85306&#xA;[extract_extradata @ 000001c88d11ee40] No start code is found.&#xA;sample-0.h264: Invalid data found when processing input&#xA;

    &#xA;