Recherche avancée

Médias (91)

Autres articles (54)

  • (Dés)Activation de fonctionnalités (plugins)

    18 février 2011, par

    Pour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
    SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
    Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
    MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...)

  • Activation de l’inscription des visiteurs

    12 avril 2011, par

    Il est également possible d’activer l’inscription des visiteurs ce qui permettra à tout un chacun d’ouvrir soit même un compte sur le canal en question dans le cadre de projets ouverts par exemple.
    Pour ce faire, il suffit d’aller dans l’espace de configuration du site en choisissant le sous menus "Gestion des utilisateurs". Le premier formulaire visible correspond à cette fonctionnalité.
    Par défaut, MediaSPIP a créé lors de son initialisation un élément de menu dans le menu du haut de la page menant (...)

  • MediaSPIP : Modification des droits de création d’objets et de publication définitive

    11 novembre 2010, par

    Par défaut, MediaSPIP permet de créer 5 types d’objets.
    Toujours par défaut les droits de création et de publication définitive de ces objets sont réservés aux administrateurs, mais ils sont bien entendu configurables par les webmestres.
    Ces droits sont ainsi bloqués pour plusieurs raisons : parce que le fait d’autoriser à publier doit être la volonté du webmestre pas de l’ensemble de la plateforme et donc ne pas être un choix par défaut ; parce qu’avoir un compte peut servir à autre choses également, (...)

Sur d’autres sites (11143)

  • lavu/tx : add DCT-II implementation

    19 novembre 2022, par Lynne
    lavu/tx : add DCT-II implementation
    
    • [DH] libavutil/tx.h
    • [DH] libavutil/tx_template.c
  • MissingPluginException(No implementation found for method getLogLevel on channel flutter.arthenica.com/ffmpeg_kit)

    21 février 2023, par Gowthamkumar M

    I'm using ffmpeg video conversion in flutter. It's working fine in foreground but when I tried to run it in background using flutter_background_service : ^2.4.6 its throwing the below error.

    


    ════════ Exception caught by services library ══════════════════════════════════&#xA;The following MissingPluginException was thrown while activating platform stream on channel flutter.arthenica.com/ffmpeg_kit_event:&#xA;&#xA;MissingPluginException(No implementation found for method listen on channel flutter.arthenica.com/ffmpeg_kit_event)&#xA;&#xA;When the exception was thrown, this was the stack&#xA;\#0 MethodChannel.\_invokeMethod&#xA;platform_channel.dart:294&#xA;\<asynchronous>&#xA;\#1 EventChannel.receiveBroadcastStream.\<anonymous>&#xA;platform_channel.dart:637&#xA;\<asynchronous>&#xA;</asynchronous></anonymous></asynchronous>

    &#xA;

    I have updated the flutter and pub packages and other possible solutions which is provided in different community.

    &#xA;

    below github ticket is for reference.

    &#xA;

    https://github.com/arthenica/ffmpeg-kit/issues/461

    &#xA;

  • Is there a pure golang implementation of aac transcode opus ? [closed]

    15 février 2023, par fanzhang

    Please note : pure golang implementation, no ffmpeg-wrapper / c-go

    &#xA;

    Is there a pure golang implementation of aac transcode opus ?

    &#xA;

    I've written a streaming-WebRTC gateway app that can convert av streams from streaming devices to WebRTC via pion, but now there's a tricky problem, the audio encoding provided by these media devices is usually aac(WebRTC do not support aac), I can't find a library that implements aac -> opus (or pcm -> opus) in pure go, only some library based on c-go (like this one). The c-go based library has some limitations, e.g. it can't be self-contained, so there a pure golang implementation of aac transcode opus ?

    &#xA;

    The code (snippet) below is my current implementation using Glimesh's fdk-aac and hraban's opus

    &#xA;

    ...&#xA;&#xA;    // 音频相关配置&#xA;    // https://github.com/Glimesh/go-fdkaac&#xA;    aacDecoder := fdkaac.NewAacDecoder()&#xA;    defer func() {&#xA;        _ = aacDecoder.Close()&#xA;    }()&#xA;    aacDecoderInitDone := false&#xA;&#xA;    var opusEncoder *hrabanopus.Encoder&#xA;    minAudioSampleRate := 16000&#xA;    var opusAudioBuffer []byte&#xA;    opusBlockSize := 960&#xA;    opusBufferSize := 1000&#xA;    opusFramesSize := 120&#xA;&#xA;...&#xA;&#xA;            // 用 AAC 的元数据初始化 AAC 编码器&#xA;            // https://github.com/winlinvip/go-fdkaac&#xA;            if tag.AACPacketType == flvio.AAC_SEQHDR {&#xA;                if !aacDecoderInitDone {&#xA;                    if err := aacDecoder.InitRaw(tagData); err != nil {&#xA;                        return errors.Wrapf(err, "从 %s.%s 的(音频元数据 %s)标签初始化 AAC 解码器失败", flowControlGroup, streamKey, hex.EncodeToString(tagData))&#xA;                    }&#xA;                    aacDecoderInitDone = true&#xA;&#xA;                    logrus.Infof("从 %s.%s 的(音频元数据 %s)标签初始化了 AAC 解码器 %p", flowControlGroup, streamKey, hex.EncodeToString(tagData), aacDecoder)&#xA;                }&#xA;            } else {&#xA;                tagDataString := hex.EncodeToString(tagData)&#xA;                logrus.Tracef("使用已初始化了的 AAC 解码器 %p 解码 %s.%s 的音频数据 %s", aacDecoder, flowControlGroup, streamKey, tagDataString)&#xA;&#xA;                // 解码 AAC 为 PCM&#xA;                decodeResult, err := aacDecoder.Decode(tagData)&#xA;                if err != nil {&#xA;                    return errors.Wrapf(err, "从 %s.%s 的标签解码 PCM 数据失败", flowControlGroup, streamKey)&#xA;                }&#xA;&#xA;                rate := aacDecoder.SampleRate()&#xA;                channels := aacDecoder.NumChannels()&#xA;&#xA;                if rate &lt; minAudioSampleRate {&#xA;                    logrus.Tracef("从 %s.%s 的标签解码 PCM 数据得到音频采样频 %d小于要求的最小值(%d),将忽略编码opus的操作", flowControlGroup, streamKey, rate, minAudioSampleRate)&#xA;                } else {&#xA;                    if opusEncoder == nil {&#xA;                        oEncoder, err := hrabanopus.NewEncoder(rate, channels, hrabanopus.AppAudio)&#xA;                        if err != nil {&#xA;                            return err&#xA;                        }&#xA;                        opusEncoder = oEncoder&#xA;                    }&#xA;&#xA;                    // https://github.com/Glimesh/waveguide/blob/a7e7745be31d0a112aa6adb6437df03960c4a5c5/internal/inputs/rtmp/rtmp.go#L289&#xA;                    // https://github.com/xiangxud/rtmp-to-webrtc/blob/07d7da9197cedc3756a1c87389806c3670b9c909/rtmp.go#L168&#xA;                    for opusAudioBuffer = append(opusAudioBuffer, decodeResult...); len(opusAudioBuffer) >= opusBlockSize*4; opusAudioBuffer = opusAudioBuffer[opusBlockSize*4:] {&#xA;                        pcm16 := make([]int16, opusBlockSize*2)&#xA;                        pcm16len := len(pcm16)&#xA;                        for i := 0; i &lt; pcm16len; i&#x2B;&#x2B; {&#xA;                            pcm16[i] = int16(binary.LittleEndian.Uint16(opusAudioBuffer[i*2:]))&#xA;                        }&#xA;                        opusData := make([]byte, opusBufferSize)&#xA;                        n, err := opusEncoder.Encode(pcm16, opusData)&#xA;                        if err != nil {&#xA;                            return err&#xA;                        }&#xA;                        opusOutput := opusData[:n]&#xA;&#xA;                        // https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.4&#xA;                        // Opus can encode frames of 2.5, 5, 10, 20, 40, or 60 ms.  It can also&#xA;                        // combine multiple frames into packets of up to 120 ms.  For real-time&#xA;                        // applications, sending fewer packets per second reduces the bitrate,&#xA;                        // since it reduces the overhead from IP, UDP, and RTP headers.&#xA;                        // However, it increases latency and sensitivity to packet losses, as&#xA;                        // losing one packet constitutes a loss of a bigger chunk of audio.&#xA;                        // Increasing the frame duration also slightly improves coding&#xA;                        // efficiency, but the gain becomes small for frame sizes above 20 ms.&#xA;                        // For this reason, 20 ms frames are a good choice for most&#xA;                        // applications.&#xA;                        sampleDuration := time.Duration(opusFramesSize) * time.Millisecond&#xA;                        sample := media.Sample{&#xA;                            Data:     opusOutput,&#xA;                            Duration: sampleDuration,&#xA;                        }&#xA;                        if err := audioTrack.WriteSample(sample); err != nil {&#xA;                            return err&#xA;                        }&#xA;                    }&#xA;                }&#xA;            }&#xA;&#xA;...&#xA;

    &#xA;

    Also, is there a pure-go ffmpeg alternative ? not wrappers

    &#xA;