Recherche avancée

Médias (0)

Mot : - Tags -/serveur

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

Autres articles (50)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

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

  • can't decode RTMP stream from adobe FMS

    25 juillet 2013, par Mike Versteeg

    I have written code to decode RTMP streams but ran into a problem decoding a stream from FMS. Same stream from Wowza server works fine, but when using Adobe FMS I
    keep getting the same error (note it works fine in a flash player).

    I can confirm the problem using ffmpeg.exe, here's the output of the latest git, anyone have an idea ?

    ffmpeg version N-54901-g55db06a Copyright (c) 2000-2013 the FFmpeg developers
     built on Jul 23 2013 18:01:29 with gcc 4.7.3 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
    isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
    le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
    e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
    ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
    ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
    eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
    amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
    enable-libxvid --enable-zlib
     libavutil      52. 40.100 / 52. 40.100
     libavcodec     55. 19.100 / 55. 19.100
     libavformat    55. 12.102 / 55. 12.102
     libavdevice    55.  3.100 / 55.  3.100
     libavfilter     3. 81.102 /  3. 81.102
     libswscale      2.  4.100 /  2.  4.100
     libswresample   0. 17.103 /  0. 17.103
     libpostproc    52.  3.100 / 52.  3.100
    Parsing...
    Parsed protocol: 0
    Parsed host    : [removed for privacy reasons]
    Parsed app     : vidlivestream/_definst_/stream
    RTMP_Connect1, ... connected, handshaking
    HandShake: Type Answer   : 03
    HandShake: Server Uptime : 506058230
    HandShake: FMS Version   : 4.5.5.1
    HandShake: Handshaking finished....
    RTMP_Connect1, handshaked
    Invoking connect
    HandleServerBW: server BW = 1250000
    HandleClientBW: client BW = 1250000 2
    HandleChangeChunkSize, received: chunk size change to 1024
    HandleCtrl, received ctrl. type: 6, len: 6
    HandleCtrl, Ping 506058630
    sending ctrl. type: 0x0007
    RTMP_ClientPacket, received: invoke 242 bytes
    (object begin)
    Property:
    Property:
    Property:
    (object begin)
    Property: 4,5,5,4013>
    Property:
    Property:
    (object end)
    Property:
    (object begin)
    Property:
    Property:
    Property:
    Property:
    Property:
    (object begin)
    Property:
    (object end)
    (object end)
    (object end)
    HandleInvoke, server invoking <_result>
    HandleInvoke, received result for method call <connect>
    sending ctrl. type: 0x0003
    Invoking createStream
    RTMP_ClientPacket, received: invoke 21 bytes
    (object begin)
    Property:
    Property:
    Property: NULL
    (object end)
    HandleInvoke, server invoking <onbwdone>
    Invoking _checkbw
    RTMP_ClientPacket, received: invoke 29 bytes
    (object begin)
    Property:
    Property:
    Property: NULL
    Property:
    (object end)
    HandleInvoke, server invoking &lt;_result>
    HandleInvoke, received result for method call <createstream>
    SendPlay, seekTime=0, stopTime=0, sending play: test
    Invoking play
    sending ctrl. type: 0x0003
    RTMP_ClientPacket, received: invoke 16419 bytes
    (object begin)
    Property:
    Property:
    Property: NULL
    Property:  K H 7 ~ + $ K Z #   ! v 1 &lt; m N % h 9 n G t % J M p 1 f # t %
    ^ u ( I ^ ) &lt; 5 : ? @ a V O &lt; S n [ * y N y T e * 3 P 1 F ! 6 #   + ( w > W \ -
    : = ` _ 6 q $ - 0 e x G . &#39; 4 [ * / 0 / &amp; _ l ] @ k 8 )v>
    Property:
    (object end)
    HandleInvoke, server invoking &lt;_onbwcheck>
    Invoking _result
    HandleChangeChunkSize, received: chunk size change to 1024
    RTMP_ClientPacket, received: invoke 142 bytes
    (object begin)
    Property:
    Property:
    Property: NULL
    Property:
    (object begin)
    Property:
    Property:
    Property:
    Property:
    (object end)
    (object end)
    HandleInvoke, server invoking <onstatus>
    HandleInvoke, onStatus: NetStream.Play.Failed
    Closing connection: NetStream.Play.Failed
    </onstatus></createstream></onbwdone></connect>

    PS : although there is some resemblance to this topic, it is very old (certainly in ffmpeg terms) and the suggestions make no difference.

  • Decoding by libjpeg -> Encoding by x264, strange artefacts on frames

    15 mai 2013, par mmmaaak

    I have a collection of jpeg, which must be decoded by lib jpeg, and after it, encoded by x264 (after it encoded packets are streamed via rtmp).
    Code I used for decoding :

    struct my_error_mgr
    {  
       struct jpeg_error_mgr pub;
       jmp_buf setjmp_buffer;
    };
    typedef my_error_mgr *my_error_ptr;

    METHODDEF(void) my_error_exit (j_common_ptr cinfo)
    {
       my_error_ptr myerr = (my_error_ptr) cinfo->err;
       (*cinfo->err->output_message) (cinfo);
       longjmp(myerr->setjmp_buffer, 1);  
    }

    void init_source(j_decompress_ptr ptr)
    {
       Q_UNUSED(ptr)
    }

    boolean fill_input_buffer(j_decompress_ptr ptr)
    {
        Q_UNUSED(ptr)
       return TRUE;
    }

    void term_source(j_decompress_ptr ptr)
    {
       Q_UNUSED(ptr)
    }

    void skip_input_data(j_decompress_ptr ptr, long num_bytes)
    {
       if(num_bytes>0)
       {
           ptr->src->next_input_byte+=(size_t)num_bytes;
           ptr->src->bytes_in_buffer-=(size_t)num_bytes;  
       }
    }

    EtherDecoder::EtherDecoder(QObject *parent):
    QObject(parent)
    {
    }

    void EtherDecoder::dataBlockReady(QByteArray data)
    {
       jpeg_decompress_struct decompressInfo;
       jpeg_create_decompress(&amp;decompressInfo);
       my_error_mgr err;
       decompressInfo.do_fancy_upsampling = FALSE;
       decompressInfo.src = (jpeg_source_mgr *) (*decompressInfo.mem->alloc_small)       ((j_common_ptr) &amp;decompressInfo, JPOOL_PERMANENT, sizeof(jpeg_source_mgr));
       decompressInfo.err = jpeg_std_error(&amp;err.pub);
       err.pub.error_exit = my_error_exit;
       if (setjmp(err.setjmp_buffer))  
       {
           jpeg_destroy_decompress(&amp;decompressInfo);
           return;
       }
       decompressInfo.src->init_source = init_source;
       decompressInfo.src->resync_to_restart = jpeg_resync_to_restart;
       decompressInfo.src->fill_input_buffer = fill_input_buffer;
       decompressInfo.src->skip_input_data = skip_input_data;
       decompressInfo.src->term_source = term_source;
       decompressInfo.src->next_input_byte = reinterpret_cast<const>(data.data());
       decompressInfo.src->bytes_in_buffer = data.size();
       jpeg_read_header(&amp;decompressInfo, TRUE);
       jpeg_start_decompress(&amp;decompressInfo);
       int size = 0;
       int n_samples = 0;
       char *samples = new char[5242880];
       char *reserv = samples;
       while (decompressInfo.output_scanline &lt; decompressInfo.output_height)  
       {
           n_samples = jpeg_read_scanlines(&amp;decompressInfo, (JSAMPARRAY) &amp;samples, 1);
           samples += n_samples * decompressInfo.image_width * decompressInfo.num_components;
           size += n_samples * decompressInfo.image_width * decompressInfo.num_components;
       }
       jpeg_finish_decompress(&amp;decompressInfo);
       QByteArray output(reserv, size);
       emit frameReady(output, decompressInfo.output_width, decompressInfo.output_height);
       jpeg_destroy_decompress(&amp;decompressInfo);
       delete[] reserv;
    }
    </const>

    When I emit frameReady signal, I send data to Encoder, method, where I init Encedor looks like :

    bool EtherEncoder::initEncoder(unsigned int width, unsigned int height)
    {
       x264_param_t param;
       x264_param_default_preset(&amp;param, "veryfast", "zerolatency");
       param.i_width=width;
       param.i_height=height;
       param.i_frame_total=0;
       param.i_csp=X264_CSP_I420;
       param.i_timebase_num=1;
       param.i_timebase_den=96000;
       param.b_annexb=true;
       param.b_repeat_headers=false;
       x264_param_apply_fastfirstpass(&amp;param);
       x264_param_apply_profile(&amp;param, "baseline");
       _context=x264_encoder_open(&amp;param);
       if(!_context)
           return false;
       int nal_count;
       x264_nal_t *nals;
       if(x264_encoder_headers(_context, &amp;nals, &amp;nal_count)&lt;0)
       {
           x264_encoder_close(_context);
           _context=0;
           return false;  
       }
       _extradata=QByteArray();
       _width=width;
       _height=height;
       if(nal_count>0)
       {
           _extradata=QByteArray(
               (const char *)nals[0].p_payload,
               nals[nal_count-1].p_payload+nals[nal_count-1].i_payload-nals[0].p_payload);
       }
       return true;
    }

    And encoding method :

    void EtherEncoder::onFrameReady(QByteArray data, int width, int height)
    {
       while(data.size()>0)    
       {
           if(!_context &amp;&amp; initEncoder(width, height))
           {
               _timestampDelta=realTimestamp();
           }
           if(_context)
           {
               x264_picture_t pic;
               x264_picture_init(&amp;pic);
               pic.i_type=X264_TYPE_AUTO;
               pic.i_pts=_timestampDelta*96000;
               pic.img.i_csp=X264_CSP_I420;
               pic.img.i_plane=3;
               int planeSize = width*height;
               uint8_t *p = (uint8_t*)data.data();
               pic.img.plane[0]=p;
               p+=planeSize;
               pic.img.plane[1]=p;
               p+=planeSize/4;
               pic.img.plane[2]=p;
               pic.img.i_stride[0]=width;
               pic.img.i_stride[1]=width/2;
               pic.img.i_stride[2]=width/2;
               if(_forceKeyFrame)
               {
                   pic.i_type=X264_TYPE_I;
                   _forceKeyFrame=false;
               }
               int nal_count;
               x264_nal_t *nals;
               int rc=x264_encoder_encode(_context, &amp;nals, &amp;nal_count, &amp;pic, &amp;pic);
               if(rc>0)
               {
                   _mutex.lock();
                   _packets.push_back(
                       Packet(
                           QByteArray(
                               (const char *)nals[0].p_payload,         nals[nal_count-    1].p_payload+nals[nal_count-1].i_payload-nals[0].p_payload),
                           _timestampDelta/96.0,
                           _timestampDelta/96.0,
                           pic.b_keyframe));
                   _timestampDelta+=40;
                   data.clear();
                   _mutex.unlock();
                   emit onPacketReady();
               }
           }  
       }
    }

    Decoding and encoding proceeds without errors, at the end I get valid video stream, but, it seems that in one of this steps I set Invalid data for decoder/encoder. I get only 1/4 part of image (top-left, as I understood) and it has invalid color and come color stripes. Maybe I set invalid strides and planes when encode frame, or maybe my setting data for libjpeg decoder is incorrect.. Please ask questions about my code, I'll try to make some explanations for you. I explodes my brain.. Thank you.

  • Museum of Multimedia Software, Part 2

    16 août 2010, par Multimedia Mike — Software Museum

    This installment includes a bunch of old, discontinued Adobe software as well as some Flash-related mutlimedia software.

    Screen Time for Flash Screen Saver Factory
    "Create High Impact Screen Savers Using Macromedia Flash."



    Requirements include Windows 3.1, 95 or NT 3.5.1. A 486 computer is required to play the resulting screensavers which are Flash projectors using Macromedia Flash 3.0.

    Monster Interactive Instant GUI 2
    Create eye-popping GUIs more easily for use in Flash. Usability experts would argue that this is not a good thing.



    Adobe Dimensions 3.0
    "The Easy Yet Powerful 3D Rendering Tool." This software was end-of-life’d in late 2004-early 2005 (depending on region).



    Adobe ImageStyler
    "Instantly add style to your Web site." Wikipedia claims that this product was sold from 1998 to 2000 when it was superseded by Adobe LiveMotion (see below).



    Google is able to excavate a link to the Latin American site for Adobe ImageStyler, a page that doesn’t seem to be replicated in any other language.

    Adobe LiveMotion
    "Professional Web graphics and animation." This is version 1, where the last version was #2, released in 2002.



    Adobe Streamline 4.0
    "The most powerful way to convert images into line art." This was discontinued in mid-2005.



    Adobe SuperATM
    "The magic that maintains the look of your documents." This is the oldest item in my collection. A close examination of the back of the box reveals an old Adobe logo. The latest copyright date on the box is 1992.