Recherche avancée

Médias (0)

Mot : - Tags -/xmlrpc

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

Autres articles (97)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • 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" (...)

  • Organiser par catégorie

    17 mai 2013, par

    Dans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
    Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
    Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...)

Sur d’autres sites (3924)

  • How can ffmpeg concat MP3s with full metadata incl. cover art ?

    13 décembre 2022, par TEN

    Audio books inconveniently split into dozens of MP3s (with spaces in their names) should be merged into one MP3 in a subdirectory (in which ffmpeg version 4.2.7-0ubuntu0.1 is invoked), without time-consuming and possibly degrading conversions, reliably preserving all metadata incl. cover art (present and similar in all MP3s of a title, their differences being significant only in lengths and track numbers).

    


    However, rather than picking the latter from the first input MP3, the https://trac.ffmpeg.org/wiki/Concatenate#protocol loses the cover art, the https://trac.ffmpeg.org/wiki/Concatenate#demuxer documented as more flexible even loses all metadata :

    


    ffmpeg -v verbose -f concat -safe 0 -i <(printf "file '$PWD/%s'\n" ../in\ track*.mp3) -c copy "out.mp3"
...
Input #0, concat, from '/dev/fd/63':
Duration: N/A, start: 0.000000, bitrate: 192 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 192 kb/s
Stream #0:1: Video: png, 1 reference frame, rgba(pc), 300x300, 90k tbr, 90k tbn, 90k tbc
Metadata:
title           : 12ae3b8152eaf255ae0315c59400c540.png
comment         : Cover (front)
...
Output #0, mp3, to 'out.mp3':
Metadata:
TSSE            : Lavf58.29.100
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 192 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
...
[AVIOContext @ 0x561459f3dac0] Statistics: 1958050 bytes read, 0 seeks
[mp3 @ 0x561459f3f900] Skipping 0 bytes of junk at 110334.
[mp3 @ 0x561459f3f900] Estimating duration from bitrate, this may be inaccurate
No more output streams to write to, finishing.
size=   75793kB time=00:53:03.12 bitrate= 195.1kbits/s speed= 636x
video:0kB audio:75793kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000865%
Input file #0 (/dev/fd/63):
Input stream #0:0 (audio): 121847 packets read (77611658 bytes);
Input stream #0:1 (video): 40 packets read (4358440 bytes);
Total: 121887 packets (81970098 bytes) demuxed
Output file #0 (out.mp3):
Output stream #0:0 (audio): 121847 packets muxed (77611658 bytes);
Total: 121847 packets (77611658 bytes) muxed
[AVIOContext @ 0x561459ef6700] Statistics: 2 seeks, 298 writeouts
[AVIOContext @ 0x561459f39e40] Statistics: 2006324 bytes read, 0 seeks
[AVIOContext @ 0x561459ee0300] Statistics: 5040 bytes read, 0 seek


    


    The metadata incl. cover PNG as detected (as single-frame "video") should end up in the output MP3, but doesn't (even when adding -movflags use_metadata_tags possibly intended for other formats).

    


    -metadata track="1/1" (or without the /1 ?) may be required as the first input MP3 sometimes wrongly starts at a higher number.

    


    How do I make sure no metadata (incl. image) other than track numbers is lost when concatenating MP3s (by protocol or demuxer, from a set of input files with spaces in their names and a wildcard to match across track numbers) ?

    


  • android ffmpeg halfninja av_open_input_file returns -2 (no such file or directory)

    20 janvier 2012, par cdavidyoung

    I have built ffmpeg for Android using the code and method described at

    https://github.com/halfninja/android-ffmpeg-x264

    using Ubuntu running in VirtualBox on windows. I then copied libvideokit.so into the Project\libs\armeabi folder of a Windows copy of the provided projects. From there I was able to run the ProjectTest from Eclipse on my Android device. I can see the ffmpeg code being executed but when it gets to the point of opening the input file it gives me the indicated error. I have noticed some discussion of this problem at

    FFMpeg on Android, undefined references to libavcodec functions, although it is listed on command line

    but the solutions have not helped since the file protocol is enabled in this build and I also tried putting "file :" in front of the filepath to no avail. For completeness I tried setting minimal_featureset=0 to enable all the defaults but this gives me the same error. Below is a snapshot of the logcat from Eclipse showing the output from Videokit with an extra call to LOGE to display the result from av_open_input_file. Any suggestions of things to try would be greatly appreciated.

    10-23 11:57:33.888: DEBUG/Videokit(4830): run() called
    10-23 11:57:33.888: DEBUG/Videokit(4830): run passing off to main()
    10-23 11:57:33.904: DEBUG/Videokit(4830): main(): registering all modules
    10-23 11:57:33.927: DEBUG/Videokit(4830): main(): registered everything
    10-23 11:57:33.927: DEBUG/Videokit(4830): main(): initting opts
    10-23 11:57:33.943: DEBUG/Videokit(4830): main(): initted opts.
    10-23 11:57:33.943: ERROR/Videokit(4830): ffmpeg version N-30996-gf925b24, Copyright (c) 2000-2011 the FFmpeg developers
    10-23 11:57:33.943: ERROR/Videokit(4830):   built on Oct 21 2011 13:54:03 with gcc 4.4.3
    10-23 11:57:33.943: ERROR/Videokit(4830):   configuration: --enable-cross-compile --arch=arm5te --enable-armv5te --target-os=linux --disable-stripping --prefix=../output --disable-neon --enable-version3 --disable-shared --enable-static --enable-gpl --enable-memalign-hack --cc=arm-linux-androideabi-gcc --ld=arm-linux-androideabi-ld --extra-cflags='-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated' --disable-everything --enable-decoder=mjpeg --enable-demuxer=mjpeg --enable-parser=mjpeg --enable-demuxer=image2 --enable-muxer=mp4 --enable-encoder=libx264 --enable-libx264 --enable-decoder=rawvideo --enable-protocol=file --enable-hwaccels --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-network --enable-filter=buffer --enable-filter=buffersink --disable-demuxer=v4l --disable-demuxer=v4l2 --disable-indev=v4l --disable-indev=v4l2 --extra-cflags='-I../x264 -Ivideokit' --extra-ldflags=-L../x264
    10-23 11:57:33.943: DEBUG/Videokit(4830): main(): parsing options
    10-23 11:57:33.943: DEBUG/Videokit(4830): parse_options has 4 options to parse
    10-23 11:57:33.951: ERROR/Videokit(4830): opt_input_file av_open_input_file /mnt/sdcard/fun/snap0000.jpg -2
    10-23 11:57:33.951: ERROR/Videokit(4830): /mnt/sdcard/fun/snap0000.jpg: No such file or directory
    10-23 11:57:33.951: ERROR/Videokit(4830): ffmpeg_exit(1) called!
  • FFMPEG : avcodec_send_packet() ; error while using multithread

    13 juillet 2018, par Trần Quốc Việt

    I wrote 2 threads to decode RTSP stream from IP camera as below :

    RTSP_read_paket function used to read Packets from RTSP link, packets stored in a queue named Packet_buf.

    std::queue<avpacket> Packet_buf;
    bool pkt_pending_k = false;

    int RTSP_read_packet (string url)
    {
       rtsp_init(url);

       int ret;
       AVPacket packet;
       av_init_packet(&amp;packet);

       while(1)
       {
          ret = av_read_frame(pFormatCtx,&amp;packet);
          if(ret==0)
          {
              if (packet.stream_index == video_stream_index)
              {
                  Packet_buf.push(packet);
                  if((ready1 == false))
                  {
                       ready1 = true;
                       conv1.notify_one();
                  }
              }
              av_packet_unref(&amp;packet);
              cout&lt;&lt;"number of RTSP packet: "&lt;code></avpacket>

    ffmpeg_decode read packets from Packet_buf to decode frames

    AVFrame ffmpeg_decode( void )
    {
         AVPacket avpkt;
         av_init_packet(&amp;avpkt);
         int ret;

         conv1.wait(lk1,[]{return ready1;});
         while(1)
         {
               while(1)
               {
                    ret = avcodec_receive_frame(pCodecCtx,pFrame);
                    if(ret == AVERROR(EAGAIN)||ret==AVERROR_EOF){
                          break;
                    }
                    return pFrame;
               }

               if(!Packet_buf.empty())
               {
                   if(pkt_pending_k == false)
                   {
                     avpkt = Packet_buf.front();
                     Packet_buf.pop();
                   }else{
                       pkt_pending_k = false;
                   }
               }


               ret = avcodec_send_packet(pCodecCtx, &amp;avpkt); //program halting here
               cout&lt;&lt;"-------------> ret = "&lt;code>

    My program halt at line :

    ret = avcodec_send_packet(pCodecCtx, &amp;avpkt);

    Anyone can help me find the problem, thanks !

    P/s :
    rtsp_init function :

    int rtsp_init (string url)
    {
       av_register_all();
       avdevice_register_all();
       avcodec_register_all();
       avformat_network_init();
       const char  *filenameSrc = url.c_str();

       pFormatCtx = avformat_alloc_context();
       if ( pFormatCtx == NULL )
               return -8;

       AVDictionary *options = NULL;
       av_dict_set(&amp;options,"rtsp_flags","prefer_tcp",0);
       av_dict_set(&amp;options,"stimeout","1000000",0);
       int avret = avformat_open_input( &amp;pFormatCtx, filenameSrc, NULL, &amp;options );
       av_dict_free(&amp;options);

       if ( avret != 0 ) {
               std::cout &lt;&lt; "Open File Error 12" &lt;&lt; std::endl;
               return -12;
           }

       avret = avformat_find_stream_info( pFormatCtx, NULL );
       if (  avret &lt; 0 ) {
               std::cout &lt;&lt; "Get Stream Information Error 13" &lt;&lt; std::endl;
               avformat_close_input( &amp;pFormatCtx );
               pFormatCtx = NULL;
               return -13;
        }
       av_dump_format( pFormatCtx, 0, filenameSrc, 0 );

       video_stream_index = av_find_best_stream(pFormatCtx,AVMEDIA_TYPE_VIDEO,-1,-1,NULL,0);
       if ( video_stream_index &lt; 0 ) {
           std::cout &lt;&lt; "Video stream was not found Error 14" &lt;&lt; std::endl;
           avformat_close_input( &amp;pFormatCtx );
           pFormatCtx = NULL;
           return -14;
       }

       pCodecCtx = avcodec_alloc_context3(NULL);
       avret = avcodec_parameters_to_context(pCodecCtx,pFormatCtx->streams[video_stream_index]->codecpar);
       if(avret&lt;0)
       {
           std::cout &lt;&lt; "codec not found Error 15" &lt;&lt; std::endl;
           return -15;
       }

       pCodec  = avcodec_find_decoder( pCodecCtx->codec_id );
       avret = avcodec_open2( pCodecCtx, pCodec, NULL );
       if ( avret &lt; 0) {
           std::cout &lt;&lt; "Open Codec Error 16" &lt;&lt; std::endl;
          return -16;
       }

       pFrame    = av_frame_alloc();
       pFrameRGB = av_frame_alloc();

       pFrame->width = pCodecCtx->width;
       pFrame->height = pCodecCtx->height;
       pFrame->format = pCodecCtx->pix_fmt;
       avret = av_frame_get_buffer(pFrame,0);
       if (avret &lt; 0)
       {
           return -17;
       }

       pFrameRGB->width = pCodecCtx->width;
       pFrameRGB->height = pCodecCtx->height;
       pFrameRGB->format = AV_PIX_FMT_BGR24;

       avret = av_frame_get_buffer(pFrameRGB, 0);
       if (avret &lt; 0)
       {
           return -18;
       }

       return ( EXIT_SUCCESS );
    }