Recherche avancée

Médias (1)

Mot : - Tags -/biomaping

Autres articles (110)

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

  • Automated installation script of MediaSPIP

    25 avril 2011, par

    To overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
    You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
    The documentation of the use of this installation script is available here.
    The code of this (...)

  • Soumettre bugs et patchs

    10 avril 2011

    Un logiciel n’est malheureusement jamais parfait...
    Si vous pensez avoir mis la main sur un bug, reportez le dans notre système de tickets en prenant bien soin de nous remonter certaines informations pertinentes : le type de navigateur et sa version exacte avec lequel vous avez l’anomalie ; une explication la plus précise possible du problème rencontré ; si possibles les étapes pour reproduire le problème ; un lien vers le site / la page en question ;
    Si vous pensez avoir résolu vous même le bug (...)

Sur d’autres sites (13216)

  • Black screen when playing a video with ffmpeg and SDL on iOS

    1er avril 2012, par patrick

    I'm attempting to create a video player on iOS using ffmpeg and SDL. I'm decoding the video stream and attempting to convert the pixel data into a SDL_Surface and then convert that over to an SDL_Texture and render it on screen. However, all I'm getting is a black screen. I know the video file is good and can be viewed fine from VLC. Any idea what I'm missing here ?

    Initialization code :

       // initialize SDL (Simple DirectMedia Layer) to playback the content
       if( SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) )
       {
           DDLogError(@"Unable to initialize SDL");
           return NO;
       }

       // create window and renderer
       window = SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
                                 SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS |
                                 SDL_WINDOW_SHOWN);
       if ( window == 0 )
       {
           DDLogError(@"Unable to initialize SDL Window");
       }

       renderer = SDL_CreateRenderer(window, -1, 0);
       if ( !renderer )
       {
           DDLogError(@"Unable to initialize SDL Renderer");
       }

       // Initialize the FFMpeg and register codecs and their respected file formats
       av_register_all();

    Playback code :
    AVFormatContext *formatContext = NULL ;

    DDLogInfo(@"Opening media file at location:%@", filePath);

    const char *filename = [filePath cStringUsingEncoding:NSUTF8StringEncoding];
    // Open media file
    if( avformat_open_input(&formatContext, filename, NULL, NULL) != 0 )
    {
       DDLogWarn(@"Unable to open media file. [File:%@]", filePath);

       NSString *failureReason = NSLocalizedString(@"Unable to open file.", @"Media playback failed, unable to open file.");

       if ( error != NULL )
       {
           *error = [NSError errorWithDomain:MediaPlayerErrorDomain
                                        code:UNABLE_TO_OPEN
                                    userInfo:[NSDictionary dictionaryWithObject:failureReason
                                                                         forKey:NSLocalizedFailureReasonErrorKey]];
       }

       return NO; // Couldn't open file
    }

    // Retrieve stream information
    if( avformat_find_stream_info(formatContext, NULL) <= 0 )
    {
       DDLogWarn(@"Unable to locate stream information for file. [File:%@]", filePath);

       NSString *failureReason = NSLocalizedString(@"Unable to find audio/video stream information.", @"Media playback failed, unable to find stream information.");

       if ( error != NULL )
       {
           *error = [NSError errorWithDomain:MediaPlayerErrorDomain
                                        code:UNABLE_TO_FIND_STREAM
                                    userInfo:[NSDictionary dictionaryWithObject:failureReason
                                                                         forKey:NSLocalizedFailureReasonErrorKey]];
       }

       return NO;  // Missing stream information
    }

    // Find the first video or audio stream
    int videoStream = -1;
    int audioStream = -1;

    DDLogInfo(@"Locating stream information for media file");

    for( int index=0; index<(formatContext->nb_streams); index++)
    {
       if( formatContext->streams[index]->codec->codec_type==AVMEDIA_TYPE_VIDEO )
       {
           DDLogInfo(@"Found video stream");
           videoStream = index;
           break;
       }
       else if( mediaType == AUDIO_FILE &&
               (formatContext->streams[index]->codec->codec_type==AVMEDIA_TYPE_AUDIO) )
       {
           DDLogInfo(@"Found audio stream");
           audioStream = index;
           break;
       }
    }

    if( videoStream == -1 && (audioStream == -1) )
    {
       DDLogWarn(@"Unable to find video or audio stream for file");

       NSString *failureReason = NSLocalizedString(@"Unable to locate audio/video stream.", @"Media playback failed, unable to locate media stream.");

       if ( error != NULL )
       {
           *error = [NSError errorWithDomain:MediaPlayerErrorDomain
                                        code:UNABLE_TO_FIND_STREAM
                                    userInfo:[NSDictionary dictionaryWithObject:failureReason
                                                                         forKey:NSLocalizedFailureReasonErrorKey]];
       }

       return NO; // Didn't find a video or audio stream
    }

    // Get a pointer to the codec context for the video/audio stream
    AVCodecContext *codecContext;

    DDLogInfo(@"Attempting to locate the codec for the media file");

    if ( videoStream > -1 )
    {
       codecContext = formatContext->streams[videoStream]->codec;

    }
    else
    {
       codecContext = formatContext->streams[audioStream]->codec;
    }

    // Now that we have information about the codec that the file is using,
    // we need to actually open the codec to decode the content

    DDLogInfo(@"Attempting to open the codec to playback the media file");

    AVCodec *codec;

    // Find the decoder for the video stream
    codec = avcodec_find_decoder(codecContext->codec_id);
    if( codec == NULL )
    {
       DDLogWarn(@"Unsupported codec! Cannot playback meda file [File:%@]", filePath);

       NSString *failureReason = NSLocalizedString(@"Unsupported file format. Cannot playback media.", @"Media playback failed, unsupported codec.");
       if ( error != NULL )
       {
           *error = [NSError errorWithDomain:MediaPlayerErrorDomain
                                        code:UNSUPPORTED_CODEC
                                    userInfo:[NSDictionary dictionaryWithObject:failureReason
                                                                         forKey:NSLocalizedFailureReasonErrorKey]];
       }

       return NO; // Codec not found
    }

    // Open codec
    if( avcodec_open2(codecContext, codec, NULL) < 0 )
    {
       DDLogWarn(@"Unable to open codec! Cannot playback meda file [File:%@]", filePath);

       NSString *failureReason = NSLocalizedString(@"Unable to open media codec. Cannot playback media.", @"Media playback failed, cannot open codec.");
       if ( error != NULL )
       {
           *error = [NSError errorWithDomain:MediaPlayerErrorDomain
                                        code:UNABLE_TO_LOAD_CODEC
                                    userInfo:[NSDictionary dictionaryWithObject:failureReason
                                                                         forKey:NSLocalizedFailureReasonErrorKey]];
       }

       return NO; // Could not open codec
    }

    // Allocate player frame
    AVFrame *playerFrame=avcodec_alloc_frame();

    // Allocate an AVFrame structure
    AVFrame *RGBframe=avcodec_alloc_frame();
    if( RGBframe==NULL )
    {
       // could not create a frame to convert our video frame
       // to a 16-bit RGB565 frame.

       DDLogWarn(@"Unable to convert video frame. Cannot playback meda file [File:%@]", filePath);

       NSString *failureReason = NSLocalizedString(@"Problems interpreting video frame information.", @"Media playback failed, cannot convert frame.");
       if ( error != NULL )
       {
           *error = [NSError errorWithDomain:MediaPlayerErrorDomain
                                        code:UNABLE_TO_LOAD_FRAME
                                    userInfo:[NSDictionary dictionaryWithObject:failureReason
                                                                         forKey:NSLocalizedFailureReasonErrorKey]];
       }

       return NO; // Could not open codec
    }

    int frameFinished = 0;
    AVPacket packet;

    // Figure out the destination width/height based on the screen size
    int destHeight = codecContext->height;
    int destWidth  = codecContext->width;
    if ( destHeight > SCREEN_HEIGHT || (destWidth > SCREEN_WIDTH) )
    {
       if ( destWidth > SCREEN_WIDTH )
       {
           float percentDiff = ( destWidth - SCREEN_WIDTH ) / (float)destWidth;
           destWidth  = destWidth  - (int)(destWidth * percentDiff );
           destHeight = destHeight - (int)(destHeight * percentDiff );
       }

       if ( destHeight > SCREEN_HEIGHT )
       {
           float percentDiff = (destHeight - SCREEN_HEIGHT ) / (float)destHeight;
           destWidth  = destWidth  - (int)(destWidth * percentDiff );
           destHeight = destHeight - (int)(destHeight * percentDiff );
       }
    }

    SwsContext *swsContext = sws_getContext(codecContext->width, codecContext->height, codecContext->pix_fmt, destWidth, destHeight, PIX_FMT_RGB565, SWS_BICUBIC, NULL, NULL, NULL);

    while( av_read_frame(formatContext, &packet) >= 0 )
    {
       // Is this a packet from the video stream?
       if( packet.stream_index == videoStream )
       {
           // Decode video frame
           avcodec_decode_video2(codecContext, playerFrame, &frameFinished, &packet);

           // Did we get a video frame?
           if( frameFinished != 0 )
           {
               // Convert the content over to RGB565 (16-bit RGB) to playback with SDL

               uint8_t *dst[3];
               int dstStride[3];

               // Set the destination stride
               for (int plane = 0; plane < 3; plane++)
               {
                   dstStride[plane] = codecContext->width*2;
                   dst[plane]= (uint8_t*) malloc(dstStride[plane]*destHeight);
               }

               sws_scale(swsContext, playerFrame->data,
                         playerFrame->linesize, 0,
                         destHeight,
                         dst, dstStride);

               // Create the SDL surface frame that we are going to use to draw our video

               // 16-bit RGB so 2 bytes per pixel (pitch = width*(bytes per pixel))
               int pitch = destWidth*2;
               SDL_Surface *frameSurface = SDL_CreateRGBSurfaceFrom(dst[0], destWidth, destHeight, 16, pitch, 0, 0, 0, 0);

               // Clear the old frame first
               SDL_RenderClear(renderer);

               // Move the frame over to a texture and render it on screen
               SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, frameSurface);
               SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);

               // Draw the new frame on the screen
               SDL_RenderPresent(renderer);

               SDL_DestroyTexture(texture);
               SDL_FreeSurface(frameSurface);
           }
  • ffmpeg - How to set MIME-type ? [migrated]

    22 octobre 2012, par sasa

    I'm trying to set the proper MIME-type for an AAC file, but this command does not work :

    ffmpeg -i rain.mp3 -metadata mime-type="audio/aac" rainmp3toaac.aac

    but, actualy audio/x-hx-aac-adts is set.

    So, how I can force another MIME-type ?

  • Upper limit on FFMPEG/libx264 frame sizes ?

    22 mars 2014, par Chaotic

    I'm trying to use FFMPEG to transcode a video with very large frames (4096 x 4096). It's a short video - just under two minutes, but the source video file is 15.8GB. (The video is an animation designed to be projected onto planetarium domes.)

    The source file is a Quicktime MOV containing uncompressed Photo-JPEG images (with audio, too). When I tell FFMPEG to transcode my MOV file into an MP4 file, it simply says :

    Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

    Not very helpful, but yes, I've verified that all of the parameters are correct and/or defaults. In fact, if I change the requested output size to 2048x2048, then everything works just fine. That's why I suspect that there's an upper bound in the encoder.

    I am kerflummoxed. Any suggestions that result in a successful transcode will be greatly appreciated. (At this point I am also willing to consider alternatives to FFMPEG.)

    The Facts

    I run FFMPEG from a script :

    set srcFile=%1
    set dstFile=%srcFile:.mov=.mp4%

    ffmpeg -i %srcFile% -movflags faststart -q:a 0 -q:v 0 -pix_fmt yuv420p -sws_flags gauss -s 4096x4096 %dstFile%

    The Output

       ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers
       built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC)
       configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --ena
    ble-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
     libavutil      52. 19.100 / 52. 19.100
     libavcodec     55.  0.100 / 55.  0.100
     libavformat    55.  0.100 / 55.  0.100
     libavdevice    54.  4.100 / 54.  4.100
     libavfilter     3. 45.103 /  3. 45.103
     libswscale      2.  2.100 /  2.  2.100
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  2.100 / 52.  2.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'also-sprach-zarathustra-4k.mov':
     Metadata:
       major_brand     : qt
       minor_version   : 537199360
       compatible_brands: qt
       creation_time   : 2013-01-11 23:41:30
     Duration: 00:01:40.57, start: 0.000000, bitrate: 1357694 kb/s
       Stream #0:0(eng): Audio: pcm_s16be (twos / 0x736F7774), 44100 Hz, stereo, s16, 1411 kb/s
       Metadata:
         creation_time   : 2013-01-11 23:41:30
         handler_name    : Apple Alias Data Handler
       Stream #0:1(eng): Video: mjpeg (jpeg / 0x6765706A), yuvj420p, 4096x4096 [SAR 1:1 DAR 1:1], 1356281 kb/s, 30 fps, 30
    tbr, 3k tbn, 3k tbc
       Metadata:
         creation_time   : 2013-01-11 23:41:30
         handler_name    : Apple Alias Data Handler
    File 'also-sprach-zarathustra-4k.mp4' already exists. Overwrite ? [y/N] y
    using SAR=1/1
    [libx264 @ 003b9c80] frame MB size (256x256) > level limit (36864)
    [libx264 @ 003b9c80] DPB size (4 frames, 262144 mbs) > level limit (2 frames, 184320 mbs)
    [libx264 @ 003b9c80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX AVX2 FMA3 LZCNT BMI1 BMI2
    x264 [error]: malloc of size 17305600 failed
    Output #0, mp4, to 'also-sprach-zarathustra-4k.mp4':
     Metadata:
       major_brand     : qt
       minor_version   : 537199360
       compatible_brands: qt
       Stream #0:0(eng): Video: h264, yuv420p, 4096x4096 [SAR 1:1 DAR 1:1], q=-1--1, 90k tbn, 30 tbc
       Metadata:
         creation_time   : 2013-01-11 23:41:30
         handler_name    : Apple Alias Data Handler
       Stream #0:1(eng): Audio: none, 44100 Hz, stereo, s16, 128 kb/s
       Metadata:
         creation_time   : 2013-01-11 23:41:30
         handler_name    : Apple Alias Data Handler
    Stream mapping:
     Stream #0:1 -> #0:0 (mjpeg -> libx264)
     Stream #0:0 -> #0:1 (pcm_s16be -> libvo_aacenc)
    Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

    PS : Yes, for those playing at home, it is the theme to 2001 - A Space Odyssey. You can see a 1K YouTube version here : 2001 - A Fulldome Space Odyssey And yes, in a planetarium with a good sound system, it is absolutely EPIC.