Recherche avancée

Médias (2)

Mot : - Tags -/doc2img

Autres articles (69)

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (11763)

  • avcodec/bsf : Don't set defaults for AVClass without options

    17 mars 2020, par Andreas Rheinhardt
    avcodec/bsf : Don't set defaults for AVClass without options
    

    This happened for AVBSFContext.

    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
    Reviewed-by : Anton Khirnov <anton@khirnov.net>
    Signed-off-by : James Almer <jamrial@gmail.com>

    • [DH] libavcodec/bsf.c
  • avcodec/avcodec, avpacket : Return blank packet on av_packet_ref() failure

    27 mars 2020, par Andreas Rheinhardt
    avcodec/avcodec, avpacket : Return blank packet on av_packet_ref() failure
    

    Up until now, it was completely unspecified what the content of the
    destination packet dst was on error. Depending upon where the error
    happened calling av_packet_unref() on dst might be dangerous.

    This commit changes this by making sure that dst is blank on error, so
    unreferencing it again is safe (and still pointless). This behaviour is
    documented.

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

    • [DH] doc/APIchanges
    • [DH] libavcodec/avcodec.h
    • [DH] libavcodec/avpacket.c
    • [DH] libavcodec/version.h
  • Muxing raw h264 + aac into mp4 file with av_interleaved_write_frame() returning 0 but the video is not playable

    3 avril 2020, par Jaw109

    I have a program [1] that muxing audio and video into mp4 file(in idividual worker thread, retrieving audio/video frame from a streaming daemon). The audio is perfectly played in VLC, but the video is not playable, VLC debug logs show the start-code of video frame is not found.

    &#xA;&#xA;

    I have another demuxing program [2] to retrieve all the frame to see what had happened. I found the video frame is modified

    &#xA;&#xA;

    00000001 674D0029... was modified into 00000019 674D0029... (framesize is 29)&#xA;00000001 68EE3C80... was modified into 00000004 68EE3C80... (framesize is 8)&#xA;00000001 65888010... was modified into 0002D56F 65888010... (framesize is 185715)&#xA;00000001 619A0101... was modified into 00003E1E 619A0101... (framesize is 15906)&#xA;00000001 619A0202... was modified into 00003E3C 619A0202... (framesize is 15936)&#xA;00000001 619A0303... was modified into 00003E1E 619A0303... (framesize is 15581)&#xA;

    &#xA;&#xA;

    It seems like the h264 start-code was replaced with something like... frame-size. but why ? Is there anything I did wrongly ? (Any idea ? something flags ? AVPacket initialization ? AVPacket's data copy wrongly ?)

    &#xA;&#xA;

    [1] muxing program

    &#xA;&#xA;

    int go_on = 1;&#xA;std::mutex g_mutex;&#xA;AVStream* g_AudioStream = NULL;&#xA;AVStream* g_VideoStream = NULL;&#xA;&#xA;int polling_ringbuffer(int stream_type);&#xA;&#xA;int main(int argc, char** argv)&#xA;{&#xA;&#xA;  AVFormatContext* pFmtCntx = avformat_alloc_context();&#xA;  avio_open(&amp;pFmtCntx->pb, argv[1], AVIO_FLAG_WRITE);&#xA;  pFmtCntx->oformat = av_guess_format(NULL, argv[1], NULL);&#xA;  g_AudioStream = avformat_new_stream( pFmtCntx, NULL );&#xA;  g_VideoStream = avformat_new_stream( pFmtCntx, NULL );&#xA;  initAudioStream(g_AudioStream->codecpar);&#xA;  initVideoStream(g_VideoStream->codecpar);&#xA;  avformat_write_header(pFmtCntx, NULL);&#xA;&#xA;  std::thread audio(polling_ringbuffer, AUDIO_RINGBUFFER);&#xA;  std::thread video(polling_ringbuffer, VIDEO_RINGBUFFER);&#xA;&#xA;  audio.join();&#xA;  video.join();&#xA;&#xA;  av_write_trailer(pFmtCntx);&#xA;  if ( pFmtCntx->oformat &amp;&amp; !( pFmtCntx->oformat->flags &amp; AVFMT_NOFILE ) &amp;&amp; pFmtCntx->pb )&#xA;    avio_close( pFmtCntx->pb );&#xA;  avformat_free_context( g_FmtCntx );&#xA;&#xA;  return 0;&#xA;}&#xA;&#xA;int polling_ringbuffer(int stream_type)&#xA;{&#xA;  uint8_t* data = new uint8_t[1024*1024];&#xA;  int64_t timestamp = 0;&#xA;  int data_len = 0;&#xA;  while(go_on)&#xA;  {&#xA;    const std::lock_guard lock(g_mutex);&#xA;    data_len = ReadRingbuffer(stream_type, data, 1024*1024, &amp;timestamp);&#xA;&#xA;    AVPacket pkt = {0};&#xA;    av_init_packet(&amp;pkt);&#xA;    pkt.data = data;&#xA;    pkt.size = data_len;&#xA;&#xA;    static AVRational r = {1,1000};&#xA;    switch(stream_type)&#xA;    {&#xA;      case STREAMTYPE_AUDIO:&#xA;        pkt.stream_index = g_AudioStream->index;&#xA;        pkt.flags = 0;&#xA;        pkt.pts = av_rescale_q(timestamp, r, g_AudioStream->time_base);&#xA;        break;&#xA;      case STREAMTYPE_VIDEO:&#xA;        pkt.stream_index = g_VIDEOStream->index;&#xA;        pkt.flags = isKeyFrame(data, data_len)?AV_PKT_FLAG_KEY:0;&#xA;        pkt.pts = av_rescale_q(timestamp, r, g_VideoStream->time_base);&#xA;        break;&#xA;    }&#xA;    static int64_t lastPTS = 0;&#xA;    pkt.dts = pkt.pts;&#xA;    pkt.duration = (lastPTS==0)? 0 : (pkt.pts-lastPTS);&#xA;    lastPTS = pkt.pts;&#xA;&#xA;    int ret = av_interleaved_write_frame(g_FmtCntx, &amp;pkt);&#xA;    if(0!=ret)&#xA;      printf("[%s:%d] av_interleaved_write_frame():%d\n", __FILE__, __LINE__, ret);&#xA;  }&#xA;&#xA;  return 0;&#xA;}&#xA;

    &#xA;&#xA;

    [2] demuxing program

    &#xA;&#xA;

    int main(int argc, char** argv)&#xA;{&#xA;  AVFormatContext* pFormatCtx = avformat_alloc_context();&#xA;  AVPacket pkt;&#xA;  av_init_packet(&amp;pkt);&#xA;  avformat_open_input(&amp;pFormatCtx, argv[1], NULL, NULL);&#xA;  for(;;)&#xA;  {&#xA;    if (av_read_frame(pFormatCtx, &amp;pkt) >= 0)&#xA;    {&#xA;      printf("[%d] %s (len:%d)\n", pkt.stream_index, BinToHex(pkt.data, MIN(64, pkt.size)), pkt.size );&#xA;    }&#xA;    else&#xA;      break;&#xA;  }&#xA;&#xA;  avformat_close_input(&amp;pFormatCtx);&#xA;  return 0;&#xA;}&#xA;

    &#xA;&#xA;

    [3] Here are my environment

    &#xA;&#xA;

    Linux MY-RASP-4 4.14.98 #1 SMP Mon Jun 24 12:34:42 UTC 2019 armv7l GNU/Linux&#xA;ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers&#xA;built with gcc 8.2.0 (GCC)&#xA;&#xA;libavutil      56. 22.100 / 56. 22.100&#xA;libavcodec     58. 35.100 / 58. 35.100&#xA;libavformat    58. 20.100 / 58. 20.100&#xA;libavdevice    58.  5.100 / 58.  5.100&#xA;libavfilter     7. 40.101 /  7. 40.101&#xA;libswscale      5.  3.100 /  5.  3.100&#xA;libswresample   3.  3.100 /  3.  3.100&#xA;libpostproc    55.  3.100 / 55.  3.100&#xA;

    &#xA;