Recherche avancée

Médias (0)

Mot : - Tags -/objet éditorial

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

Autres articles (51)

  • Installation en mode ferme

    4 février 2011, par

    Le mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
    C’est la méthode que nous utilisons sur cette même plateforme.
    L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
    Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...)

  • 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

  • Prérequis à l’installation

    31 janvier 2010, par

    Préambule
    Cet article n’a pas pour but de détailler les installations de ces logiciels mais plutôt de donner des informations sur leur configuration spécifique.
    Avant toute chose SPIPMotion tout comme MediaSPIP est fait pour tourner sur des distributions Linux de type Debian ou dérivées (Ubuntu...). Les documentations de ce site se réfèrent donc à ces distributions. Il est également possible de l’utiliser sur d’autres distributions Linux mais aucune garantie de bon fonctionnement n’est possible.
    Il (...)

Sur d’autres sites (9601)

  • avcodec/libopenh264dec : Increase array sizes, fix stack-buffer overread

    6 décembre 2021, par Andreas Rheinhardt
    avcodec/libopenh264dec : Increase array sizes, fix stack-buffer overread
    

    av_image_copy() expects an array of four pointers and linesizes
    according to its declaration ; it currently only pointers that are
    actually in use (depending upon the pixel format), but this might
    change at any time. It has already happened for the linesizes in
    d7bc52bf456deba0f32d9fe5c288ec441f1ebef5 and so increasing their
    array fixes a stack-buffer overread.

    This fixes a -Wstringop-overflow= and -Wstringop-overread warning
    from GCC 11.2.

    Reviewed-by : Linjie Fu <linjie.justin.fu@gmail.com>
    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

    • [DH] libavcodec/libopenh264dec.c
  • RTMP Server forward to ffmpeg

    7 janvier 2021, par Reza Hashemi

    I'm looking into for a solution to accept rtmp connections and after demux forward to ffmpeg pipe.&#xA;Here is the solution I tried, I just put the part of Handeling Connection since its a long code based on :&#xA;https://github.com/gwuhaolin/livego

    &#xA;

    func (s *Server) handleConn(conn *core.Conn) error {&#xA;    if err := conn.HandshakeServer(); err != nil {&#xA;        conn.Close()&#xA;        log.Println("handleConn HandshakeServer err: ", err)&#xA;        return err&#xA;    }&#xA;    connServer := core.NewConnServer(conn)&#xA;&#xA;    if err := connServer.ReadMsg(); err != nil {&#xA;        conn.Close()&#xA;        log.Println("handleConn read msg err: ", err)&#xA;        return err&#xA;    }&#xA;    appname, name, url := connServer.GetInfo()&#xA;        if connServer.IsPublisher() {&#xA;        //todo: check token if is valid&#xA;        connServer.PublishInfo.Name = appname&#xA;        reader := NewVirReader(connServer)&#xA;        s.handler.HandleReader(reader)&#xA;        log.Println("new publisher: %&#x2B;v", reader.Info())&#xA;&#xA;        if s.getter != nil {&#xA;            writeType := reflect.TypeOf(s.getter)&#xA;            log.Println("handleConn:writeType=%v", writeType)&#xA;            writer := s.getter.GetWriter(reader.Info())&#xA;            s.handler.HandleWriter(writer)&#xA;        }&#xA;        flvWriter := new(flvBus.Bus)&#xA;        flvWriter.SetBackend(q)&#xA;        s.handler.HandleWriter(flvWriter.GetWriter(reader.Info()))&#xA;       } else {&#xA;        writer := NewVirWriter(connServer)&#xA;        log.Println("new player: %&#x2B;v", writer.Info())&#xA;        s.handler.HandleWriter(writer)&#xA;    }&#xA;&#xA;    return nil&#xA;}&#xA;

    &#xA;

    then on flv bus :&#xA;assume that ctx is the pipe0 of ffmpeg.

    &#xA;

    package flvBus&#xA;&#xA;import (&#xA;    "github.com/gwuhaolin/livego/av"&#xA;    "github.com/gwuhaolin/livego/protocol/amf"&#xA;    "github.com/gwuhaolin/livego/utils/pio"&#xA;    "github.com/gwuhaolin/livego/utils/uid"&#xA;    "time"&#xA;)&#xA;&#xA;var (&#xA;    flvHeader = []byte{0x46, 0x4c, 0x56, 0x01, 0x05, 0x00, 0x00, 0x00, 0x09}&#xA;)&#xA;&#xA;const (&#xA;    headerLen = 11&#xA;)&#xA;&#xA;type FLVWriter struct {&#xA;    Uid string&#xA;    av.RWBaser&#xA;    app, title, url string&#xA;    buf             []byte&#xA;    closed          chan struct{}&#xA;    ctx             Writer&#xA;}&#xA;&#xA;func NewFLVWriter(app, title, url string, ctx Writer) *FLVWriter {&#xA;    ret := &amp;FLVWriter{&#xA;        Uid:     uid.NewId(),&#xA;        app:     app,&#xA;        title:   title,&#xA;        url:     url,&#xA;        ctx:     ctx,&#xA;        RWBaser: av.NewRWBaser(time.Second * 10),&#xA;        closed:  make(chan struct{}),&#xA;        buf:     make([]byte, headerLen),&#xA;    }&#xA;&#xA;    ret.ctx.Write(flvHeader)&#xA;    pio.PutI32BE(ret.buf[:4], 0)&#xA;    ret.ctx.Write(ret.buf[:4])&#xA;    return ret&#xA;}&#xA;&#xA;func (writer *FLVWriter) Write(p *av.Packet) error {&#xA;    writer.RWBaser.SetPreTime()&#xA;    h := writer.buf[:headerLen]&#xA;&#xA;    typeID := av.TAG_VIDEO&#xA;    if !p.IsVideo {&#xA;        if p.IsMetadata {&#xA;            var err error&#xA;            typeID = av.TAG_SCRIPTDATAAMF0&#xA;            p.Data, err = amf.MetaDataReform(p.Data, amf.DEL)&#xA;            if err != nil {&#xA;                return err&#xA;            }&#xA;        } else {&#xA;            typeID = av.TAG_AUDIO&#xA;        }&#xA;    }&#xA;    dataLen := len(p.Data)&#xA;    timestamp := p.TimeStamp&#xA;    timestamp &#x2B;= writer.BaseTimeStamp()&#xA;    writer.RWBaser.RecTimeStamp(timestamp, uint32(typeID))&#xA;&#xA;    preDataLen := dataLen &#x2B; headerLen&#xA;    timestampbase := timestamp &amp; 0xffffff&#xA;    timestampExt := timestamp >> 24 &amp; 0xff&#xA;&#xA;    pio.PutU8(h[0:1], uint8(typeID))&#xA;    pio.PutI24BE(h[1:4], int32(dataLen))&#xA;    pio.PutI24BE(h[4:7], int32(timestampbase))&#xA;    pio.PutU8(h[7:8], uint8(timestampExt))&#xA;&#xA;    if _, err := writer.ctx.Write(h); err != nil {&#xA;        return err&#xA;    }&#xA;&#xA;    if _, err := writer.ctx.Write(p.Data); err != nil {&#xA;        return err&#xA;    }&#xA;&#xA;    pio.PutI32BE(h[:4], int32(preDataLen))&#xA;    if _, err := writer.ctx.Write(h[:4]); err != nil {&#xA;        return err&#xA;    }&#xA;&#xA;    return nil&#xA;}&#xA;&#xA;func (writer *FLVWriter) Wait() {&#xA;    select {&#xA;    case &lt;-writer.closed:&#xA;        return&#xA;    }&#xA;}&#xA;&#xA;func (writer *FLVWriter) Close(error) {&#xA;    //writer.ctx.Close()&#xA;    close(writer.closed)&#xA;}&#xA;&#xA;func (writer *FLVWriter) Info() (ret av.Info) {&#xA;    ret.UID = writer.Uid&#xA;    ret.URL = writer.url&#xA;    ret.Key = writer.app &#x2B; "/" &#x2B; writer.title&#xA;    return&#xA;}&#xA;

    &#xA;

    but at the end it return me pipe:0 : Invalid data found when processing input.

    &#xA;

    How can I forward captured frames to ffmpeg ?&#xA;Also any other solutions are welcome.

    &#xA;

  • avcodec/mpegvideo : Make inlining is_mpeg12 more flexible

    14 octobre 2022, par Andreas Rheinhardt
    avcodec/mpegvideo : Make inlining is_mpeg12 more flexible
    

    There are two types of checks for whether the current codec
    is MPEG-1/2 in mpv_reconstruct_mb_internal() : Those that are
    required for correctness and those that are not ; an example
    of the latter is "is_mpeg12 || (s->codec_id != AV_CODEC_ID_WMV2)".
    The reason for the existence of such checks is that
    mpv_reconstruct_mb_internal() has the av_always_inline attribute
    and is_mpeg12 is usually inlined, so that in case we are dealing
    with MPEG-1/2 the above check can be completely optimized away.

    But is_mpeg12 is not always inlined : it is not in case
    CONFIG_SMALL is true in which case is_mpeg12 is always zero,
    so that the checks required for correctness need to check
    out_format explicitly. This is currently done via a macro
    in mpv_reconstruct_mb_internal(), so that the fact that
    it is CONFIG_SMALL that determines this is encoded at two places.

    This commit changes this by making is_mpeg12 a three-state :
    DEFINITELY_MPEG12, MAY_BE_MPEG12 and NOT_MPEG12. In the second
    case, one has to resort to check out_format, in the other cases
    is_mpeg12 can be taken at face-value. This will allow to make
    inlining is_mpeg12 more flexible in a future commit.

    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

    • [DH] libavcodec/mpegvideo.c