Recherche avancée

Médias (91)

Autres articles (56)

  • Contribute to documentation

    13 avril 2011

    Documentation is vital to the development of improved technical capabilities.
    MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
    To contribute, register to the project users’ mailing (...)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

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

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

Sur d’autres sites (6846)

  • 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;

  • streaming a webcam feed over rtsp using ffmpeg & ffserver to an android client

    26 juillet 2015, par Coyote

    I am trying to stream my webcam over rtsp and open the stream using android.
    I managed to get the first part working (rtsp stream) using ffserver and ffmpgeg. Here is my ffserver.conf file :

    HTTPPort 8000
    RTSPPort 8001
    HTTPBindAddress 192.168.1.74
    RTSPBindAddress 192.168.1.74
    MaxClients 100
    MaxBandwidth 10000
    NoDefaults

    <feed>
      File /tmp/witty.ffm
      FileMaxSize 20M
    </feed>

    <stream>
      Feed witty.ffm
      Format rtp
      VideoSize 640x480
      VideoQMin 1
      VideoQMax 20
      VideoFrameRate 30
      VideoBitRate 500
      AVOptionVideo flags +global_header
      VideoCodec libx264
      AVPresetVideo baseline
      NoAudio
    </stream>

    ffserver :

    ffserver -f -d ffserver.conf // luch the server

    and then I use FFmpeg to open the webcam (Mac OS)

    ffmpeg -f avfoundation -i "default" http://192.168.1.74:8000/witty.ffm

    I can open the stream from VLC but on android using a videoView i am getting an error (1,-38) and an alert view saying "can’t play this video".

  • lavc/smvjpegdec : Avoid null dereference and return meaningful error codes

    1er avril 2015, par Himangi Saraogi
    lavc/smvjpegdec : Avoid null dereference and return meaningful error codes
    

    Signed-off-by : Michael Niedermayer <michaelni@gmx.at>

    • [DH] libavcodec/smvjpegdec.c