Recherche avancée

Médias (21)

Mot : - Tags -/Nine Inch Nails

Autres articles (41)

  • 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 tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • Emballe Médias : Mettre en ligne simplement des documents

    29 octobre 2010, par

    Le plugin emballe médias a été développé principalement pour la distribution mediaSPIP mais est également utilisé dans d’autres projets proches comme géodiversité par exemple. Plugins nécessaires et compatibles
    Pour fonctionner ce plugin nécessite que d’autres plugins soient installés : CFG Saisies SPIP Bonux Diogène swfupload jqueryui
    D’autres plugins peuvent être utilisés en complément afin d’améliorer ses capacités : Ancres douces Légendes photo_infos spipmotion (...)

Sur d’autres sites (7465)

  • Is there any problem in my FFMPEG encoder client code ?

    29 janvier 2024, par kyhnz

    I am trying to write code have function of capture video stream, encode as hevc265 and send to server as UDP :

    


    // There can some unnecessary library imports, rule 1: If it is ok, don&#x27;t touch it!&#xA;&#xA;#include <iostream>&#xA;#include <sys></sys>types.h>&#xA;#include &#xA;#include <cstring>&#xA;#include <sys></sys>socket.h>&#xA;#include <arpa></arpa>inet.h>&#xA;#include <netinet></netinet>in.h> &#xA;#include <string>&#xA;#include <cstdlib>&#xA;#include <cstdio>&#xA;&#xA;extern "C"&#xA;{&#xA;#include <libavutil></libavutil>frame.h>&#xA;#include <libavdevice></libavdevice>avdevice.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavutil></libavutil>imgutils.h>&#xA;#include <libavcodec></libavcodec>packet.h>&#xA;#include <libavcodec></libavcodec>codec_id.h>&#xA;#include <libavutil></libavutil>error.h>&#xA;#include <libavutil></libavutil>error.h>&#xA;#include <libavutil></libavutil>opt.h>&#xA;}&#xA;&#xA;#define PORT 9999&#xA;#define IP_ADDRESS "127.0.0.1"&#xA;&#xA;using namespace std;&#xA;&#xA;int main(){&#xA;    const int width = 1080;&#xA;    const int height = 720;&#xA;    const int fps = 18; &#xA;    const auto resulation = "1080x720";&#xA;    const auto device = "/dev/video0";&#xA;    const auto format = "v4l2";&#xA;    const AVCodecID codec_id = AV_CODEC_ID_H265;&#xA;&#xA;    avdevice_register_all();&#xA;    avformat_network_init();&#xA;    AVFormatContext *formatContext = nullptr;&#xA;&#xA;    AVDictionary *format_opts = nullptr;&#xA;    av_dict_set(&amp;format_opts, "framerate", "18", 0);;&#xA;    av_dict_set(&amp;format_opts, "video_size", resulation, 0);&#xA;    &#xA;    const AVInputFormat *inputFormat = av_find_input_format(format);&#xA;    if (!inputFormat)&#xA;    {&#xA;        cerr &lt;&lt; "Unknown input format: " &lt;&lt; format &lt;&lt; endl;&#xA;        return 1;&#xA;    }&#xA;    cout &lt;&lt; "Input format: "&lt;&lt; format &lt;&lt; endl;&#xA;&#xA;    const AVCodec *codec = avcodec_find_encoder(codec_id);&#xA;    if (!codec) {&#xA;        cerr &lt;&lt; "Codec can&#x27;t find "&lt;&lt; codec_id &lt;&lt; endl;&#xA;        return 1;&#xA;    }&#xA;    cout &lt;&lt; "Found codec: "&lt;&lt; codec_id &lt;&lt; endl;&#xA;&#xA;    AVCodecContext *avctx = avcodec_alloc_context3(codec);&#xA;    if (!avctx) {&#xA;        cerr &lt;&lt; "Error: Could not create encoder!" &lt;&lt; endl;&#xA;        return 1;&#xA;    }&#xA;    cout &lt;&lt; "Create encoder. " &lt;&lt; endl;&#xA;&#xA;&#xA;    avctx->bit_rate = 1000000;&#xA;    avctx->width = width; &#xA;    avctx->height = height; &#xA;    avctx->pix_fmt = AV_PIX_FMT_YUV420P; &#xA;    avctx->time_base = (AVRational){1, fps};&#xA;    avctx->framerate = (AVRational){fps, 1};&#xA;    avctx->gop_size = fps*2;&#xA;    avctx->refs = 3;&#xA;&#xA;    av_opt_set(avctx->priv_data, "preset", "medium", 0);&#xA;    av_opt_set(avctx->priv_data, "crf", "18", 0);&#xA;    av_opt_set(avctx->priv_data, "tune", "zerolatency", 0);&#xA;&#xA;    if (avcodec_open2(avctx, codec, nullptr) &lt; 0) {&#xA;        cerr &lt;&lt; "Error: Couldn&#x27;t open codec" &lt;&lt; endl;&#xA;        return 1;&#xA;    }&#xA;    cout &lt;&lt; "Open codec succesfully." &lt;&lt; endl;&#xA;&#xA;    int open_input = avformat_open_input(&amp;formatContext, device,&#xA;                                            const_cast<avinputformat>(inputFormat), &amp;format_opts);&#xA;    if (open_input != 0)&#xA;    {&#xA;        cerr &lt;&lt; "Device cant open " &lt;&lt; device &lt;&lt; endl;&#xA;        return 1;&#xA;    }&#xA;    cout &lt;&lt; "Device active: " &lt;&lt; device &lt;width = avctx->width;&#xA;    frame->height = avctx->height;&#xA;    frame->format = avctx->pix_fmt;&#xA;&#xA;    if(av_frame_get_buffer(frame, 0) != 0){&#xA;        cerr &lt;&lt; "Error: video frame " &lt;&lt; endl;&#xA;        return 1;&#xA;    }cout &lt;&lt; "Video frame has been created." &lt;&lt; endl;&#xA;&#xA;    if(av_frame_make_writable(frame) != 0){&#xA;        cerr &lt;&lt; "Error: frame is not writable" &lt;&lt; endl;&#xA;        return 1;&#xA;    }&#xA;&#xA;    AVPacket *packet= av_packet_alloc();&#xA;    if (!packet) {&#xA;        cerr &lt;&lt; "error: has not been created packet" &lt;&lt; endl;&#xA;    }&#xA;&#xA;    av_dump_format(formatContext, 0, device, 0);&#xA;    av_dict_free(&amp;format_opts);&#xA;    &#xA;    int socket_client = socket(AF_INET, SOCK_DGRAM, 0);&#xA;    if (socket_client == -1) {&#xA;        cerr &lt;&lt; "Error: socket!" &lt;&lt; endl;&#xA;        exit(EXIT_FAILURE);&#xA;    }&#xA;    cout &lt;&lt; "Socket has been created" &lt;&lt; endl;&#xA;&#xA;    struct sockaddr_in serverAddr = {0};&#xA;    serverAddr.sin_family = AF_INET;&#xA;    serverAddr.sin_port = htons(PORT);&#xA;    serverAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);&#xA;&#xA;    while (true) {&#xA;        if (av_read_frame(formatContext, packet) != 0) {&#xA;            cerr &lt;&lt; "Error" &lt;&lt; endl;&#xA;            av_packet_unref(packet);&#xA;            continue;&#xA;        }&#xA;&#xA;        frame->data[7] = packet->data; &#xA;        frame->linesize[7] = packet->size;&#xA;&#xA;        if (avcodec_send_frame(avctx, frame) != 0){&#xA;            cerr &lt;&lt; "Error: Frame sending is missing ---> "&lt;&lt; &amp;av_strerror &lt;&lt; endl;&#xA;            av_packet_unref(packet);&#xA;            continue;&#xA;        }&#xA;&#xA;        if (avcodec_receive_packet(avctx, packet) != 0){&#xA;            cerr &lt;&lt; "Error: Packet giving is missing! ---> " &lt;&lt; &amp;av_strerror &lt;&lt; endl;&#xA;            av_packet_unref(packet);&#xA;            continue;&#xA;        }&#xA;&#xA;        ssize_t snd = sendto(socket_client, packet->data, packet->size,&#xA;                            MSG_CONFIRM, (struct sockaddr *)&amp;serverAddr,&#xA;                            sizeof(serverAddr));&#xA;&#xA;        if(snd == -1){&#xA;            cerr &lt;&lt; "Error: Data sending failed !" &lt;&lt; endl;&#xA;            av_packet_unref(packet);&#xA;            continue;&#xA;        }else {&#xA;            cout &lt;&lt; "Data sending succesfully" &lt;&lt; endl;&#xA;        }&#xA;&#xA;        av_packet_unref(packet);&#xA;        av_frame_unref(frame);&#xA;    }&#xA;&#xA;    av_frame_free(&amp;frame);&#xA;    av_packet_free(&amp;packet);&#xA;    close(socket_client);&#xA;    avformat_free_context(formatContext);&#xA;    avformat_close_input(&amp;formatContext);&#xA;    avformat_network_deinit();&#xA;&#xA;    return 0;&#xA;}&#xA;</avinputformat></cstdio></cstdlib></string></cstring></iostream>

    &#xA;

    There is such an output, I do not understand the reason yet :

    &#xA;

    [video4linux2,v4l2 @ 0x643732e80b40] The V4L2 driver changed the video from 1080x720 to 1280x720&#xA;[video4linux2,v4l2 @ 0x643732e80b40] The V4L2 driver changed the video from 1280x720 to 640x480&#xA;[video4linux2,v4l2 @ 0x643732e80b40] The driver changed the time per frame from 1/18 to 1/30&#xA;

    &#xA;

    Is there any problem in my encoder client code ?

    &#xA;

    In addition, i can't send datas to server.

    &#xA;

  • Motion : Raspian webcam Unable to find a compatible palette format

    25 juin 2018, par mrtumnus

    I am trying to get a Creative Live ! Motion webcam working on a Raspberry Pi 3 B+. fswebcam and motion both give an error, "Unable to find a compatible palette format". ffmpeg, on the other hand, is able to easily capture video from the webcam.

    Device info :

    $ lsusb
    Bus 001 Device 004: ID 041e:4041 Creative Technology, Ltd Webcam Live! Motion`

    $ v4l2-ctl --all
    Driver Info (not using libv4l2):
       Driver name   : sq930x
       Card type     : Creative WebCam Live! Motion
       Bus info      : usb-3f980000.usb-1.2
       Driver version: 4.14.34
       Capabilities  : 0x85200001
               Video Capture
               Read/Write
               Streaming
               Extended Pix Format
               Device Capabilities
       Device Caps   : 0x05200001
               Video Capture
               Read/Write
               Streaming
               Extended Pix Format
    Priority: 2
    Video input : 0 (sq930x: ok)
    Format Video Capture:
       Width/Height      : 640/480
       Pixel Format      : 'RGGB'
       Field             : None
       Bytes per Line    : 640
       Size Image        : 307200
       Colorspace        : sRGB
       Transfer Function : Default
       YCbCr/HSV Encoding: Default
       Quantization      : Default
       Flags             :
    Streaming Parameters Video Capture:
       Frames per second: invalid (0/0)
       Read buffers     : 2

    User Controls

                      exposure (int)    : min=1 max=4095 step=1 default=854 value=854
                          gain (int)    : min=1 max=255 step=1 default=141 value=141

    Log of motion failure to open device :

    $ cat /var/log/motion/motion.log
    [0:motion] [NTC] [ALL] [Jun 24 16:16:42] motion_startup: Using log type (ALL) log level (NTC)
    [0:motion] [NTC] [ENC] [Jun 24 16:16:42] ffmpeg_init: ffmpeg libavcodec version 57.48.101 libavformat version 57.41.100
    [0:motion] [NTC] [ALL] [Jun 24 16:16:42] main: Motion running in setup mode.
    [0:motion] [NTC] [ALL] [Jun 24 16:16:42] main: Camera 0 is from /etc/motion/motion.conf
    [0:motion] [NTC] [ALL] [Jun 24 16:16:42] main: Camera 0 is device: /dev/video0 input -1
    [0:motion] [NTC] [ALL] [Jun 24 16:16:42] main: Stream port 8081
    [0:motion] [NTC] [ALL] [Jun 24 16:16:42] main: Waiting for threads to finish, pid: 12067
    [0:web_control] [NTC] [STR] [Jun 24 16:16:42] http_bindsock: listening on 127.0.0.1 port 8080
    [1:ml1] [NTC] [ALL] [Jun 24 16:16:42] motion_init: Camera 0 started: motion detection Enabled
    [0:web_control] [NTC] [STR] [Jun 24 16:16:42] httpd_run: Started motion-httpd server on port 8080 (auth Disabled)
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] vid_v4lx_start: Using videodevice /dev/video0 and input -1
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_get_capability:
    ------------------------
    cap.driver: "sq930x"
    cap.card: "Creative WebCam Live! Motion"
    cap.bus_info: "usb-3f980000.usb-1.2"
    cap.capabilities=0x85200001
    ------------------------
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_get_capability: - VIDEO_CAPTURE
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_get_capability: - READWRITE
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_get_capability: - STREAMING
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_select_input: name = "sq930x", type 0x00000002, status 00000000
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_select_input: - CAMERA
    [1:ml1] [WRN] [VID] [Jun 24 16:16:42] v4l2_select_input: Device doesn't support VIDIOC_G_STD
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_set_pix_format: Config palette index 17 (YU12) doesn't work.
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_set_pix_format: Supported palettes:
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_set_pix_format: (0) RGGB (8-bit Bayer RGRG/GBGB)
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] v4l2_set_pix_format: 0 - 8-bit Bayer RGRG/GBGB (compressed : 0) (0x42474752)
    [1:ml1] [ERR] [VID] [Jun 24 16:16:42] v4l2_set_pix_format: Unable to find a compatible palette format.
    [1:ml1] [NTC] [VID] [Jun 24 16:16:42] vid_v4lx_start: Using V4L1
    [1:ml1] [NTC] [ALL] [Jun 24 16:16:42] image_ring_resize: Resizing pre_capture buffer to 1 items
    [1:ml1] [ERR] [ALL] [Jun 24 16:16:52] motion_init: Error capturing first image
    [1:ml1] [NTC] [STR] [Jun 24 16:16:52] http_bindsock: listening on 127.0.0.1 port 8081
    [1:ml1] [NTC] [ALL] [Jun 24 16:16:52] motion_init: Started motion-stream server on port 8081 (auth Disabled)
    [1:ml1] [ERR] [ALL] [Jun 24 16:16:52] motion_loop: Video device fatal error - Closing video device
    [1:ml1] [NTC] [VID] [Jun 24 16:16:52] vid_close: Closing video device /dev/video0

    Successful ffmpeg recording :

    $ ffmpeg -i /dev/video0 test.mp4
    ffmpeg version 3.2.10-1~deb9u1+rpt1 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 6.3.0 (Raspbian 6.3.0-18+rpi1) 20170516
     configuration: --prefix=/usr --extra-version='1~deb9u1+rpt1' --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx-rpi --enable-mmal --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
     libavutil      55. 34.101 / 55. 34.101
     libavcodec     57. 64.101 / 57. 64.101
     libavformat    57. 56.101 / 57. 56.101
     libavdevice    57.  1.100 / 57.  1.100
     libavfilter     6. 65.100 /  6. 65.100
     libavresample   3.  1.  0 /  3.  1.  0
     libswscale      4.  2.100 /  4.  2.100
     libswresample   2.  3.100 /  2.  3.100
     libpostproc    54.  1.100 / 54.  1.100
    [video4linux2,v4l2 @ 0x16035c0] Time per frame unknown
    Input #0, video4linux2,v4l2, from '/dev/video0':
     Duration: N/A, start: 2523.746120, bitrate: N/A
       Stream #0:0: Video: rawvideo ([186]RG[8] / 0x84752BA), bayer_rggb8, 640x480, 25.42 tbr, 1000k tbn, 1000k tbc

    Related questions :

    Raspberry Pi webcam unable to open video device

    webcam Unable to find a compatible palette format

  • avcodec/v4l2 : set sizeimage param for non-raw buffers [fixes #6716]

    4 octobre 2017, par Jorge Ramirez-Ortiz
    avcodec/v4l2 : set sizeimage param for non-raw buffers [fixes #6716]
    

    Some V4L2 drivers fail to allocate buffers when sizeimage is not set
    to a max value. This is indeed the case for s5p-mfc [1]

    Most drivers should be able to calculate this value from the frame
    dimensions and format - or at least have their own default.

    However since this work around should not impact those drivers doing
    the "right thing" this commit just provides such a default.

    The calculations were extracted from the v4l2 driver used to develop
    the ffmpeg v4l2_m2m support [2]. See venc.c and vdec.c

    [1] linux.git/drivers/media/platform/s5p-mfc
    [2] linux.git/drivers/media/platform/qcom/venus/

    • [DH] libavcodec/v4l2_context.c