Recherche avancée

Médias (29)

Mot : - Tags -/Musique

Autres articles (77)

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

  • Dépôt de média et thèmes par FTP

    31 mai 2013, par

    L’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
    Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)

  • XMP PHP

    13 mai 2011, par

    Dixit Wikipedia, XMP signifie :
    Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
    Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
    XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)

Sur d’autres sites (11212)

  • swr : skip soft compensation when its disabled.

    19 mai 2012, par Michael Niedermayer

    swr : skip soft compensation when its disabled.

  • using ffmpeg libavcodec to decode a video file then encode to H264, media file's duration is zero

    1er septembre 2017, par Qing

    Need help, recently, I am using ffmpeg libavcodec to decode a video file then encode to H264 and write to an mp4 media container, finally, the media file’s duration is zero, the following is my code’s workflow:

    AVFormatContext*    input_format_context = NULL;
    AVFormatContext*    output_format_context = NULL;
    AVIOContext*        output_io_context = NULL;
    AVCodecContext*     input_codec_context = NULL;
    AVCodecContext*     output_codec_context = NULL;
    AVCodec*            codec = NULL;
    AVStream*           input_stream = NULL;
    AVStream*           output_stream = NULL;
    AVFrame*            frame = NULL;

    int convert_init(const char* input_filename, const char* output_filename)
    {
       /** Allocate a new encode context */
       avformat_open_input(&input_format_context,
               input_filename, NULL, NULL);

       /** Get information on the input file (number of streams etc.). */
       avformat_find_stream_info(input_format_context, NULL);  

       /** Open the output file to write to it. */
       avio_open(&output_io_context, output_filename,
               AVIO_FLAG_WRITE);

       /** Create a new format context for the output container format. */
       output_format_context = avformat_alloc_context();

       /** Associate the output file (pointer) with the container format context. */
       output_format_context->pb = output_io_context;

       /** Guess the desired container format based on the file extension. */
       output_format_context->oformat = av_guess_format(NULL,
               output_filename, NULL);

       av_strlcpy((output_format_context)->filename, output_filename,
               sizeof(output_format_context->filename));

       /** stream0 is the video stream */
       AVStream* input_stream = input_format_context->streams[0];


       /**
        * Init the input_codec_context
        */

       /** Find a decoder for the audio stream. */
       codec = avcodec_find_decoder(input_stream->codecpar->codec_id);

       /** Allocate a new decode context */
       input_codec_context = avcodec_alloc_context3(codec);

       /** Initialize the stream parameters with demuxer information */
       avcodec_parameters_to_context(input_codec_context,
               input_stream->codecpar);    

       /** Open the decoder for the stream. */
       avcodec_open2(input_codec_context, codec, NULL);                                

       /**
        *  Create an output stream for writing encoded data
        *
        *  AM I MISSING SOMETHING ?
        *
        */
       output_stream = avformat_new_stream(output_format_context, NULL);

       /**
        * Init the output_codec_context
        */
       /** Find a encoder for the output video stream, using H264. */
       codec = avcodec_find_encoder(AV_CODEC_ID_H264);    

       /** Allocate an encode context. */
       output_codec_context = avcodec_alloc_context3(codec);  

       /**
        *  Setup encode context parameters.
        *  
        *  AM I MISSING SOMETHING ?
        *
        * */
       output_codec_context->bit_rate = input_codec_context->bit_rate;
       output_codec_context->width = input_codec_context->width;
       output_codec_context->height = input_codec_context->height;
       output_codec_context->time_base = (AVRational){1, 25};
       output_codec_context->framerate = (AVRational){25, 1};
       output_codec_context->gop_size = 10;
       output_codec_context->max_b_frames = 1;
       output_codec_context->pix_fmt = AV_PIX_FMT_YUV420P;
       output_codec_context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;

       /** Setup output_stream codecpar. */
       avcodec_parameters_from_context(output_stream->codecpar,
               codec_context);

       /** Alloc an av frame */
       frame = av_frame_alloc();          

    }

    void convert_it()
    {
       AVPacket input_packet;
       AVPacket output_packet;

       /** Write the media file container header */
       avformat_write_header(output_format_context, NULL);

       /**
        * decode frames and encode to H264
        * */
       while (1) {
           av_init_packet(&input_packet);
           input_packet.data = NULL;
           input_packet.size = 0;

           av_init_packet(&output_packet);
           output_packet.data = NULL;
           output_packet.size = 0;

           /** Read a frame to decode */
           av_read_frame(input_format_context, &input_packet);        
           if (av_read_frame is end of file) {
               break;
           }
           ...
           ...

           /** Decoding... */
           avcodec_send_packet(input_codec_context, &input_packet);
           ...
           ...

           /** Get a decoded frame */
           avcodec_receive_frame(input_codec_context, frame);
           ...
           ...

           /** Make the frame writable, is it necessary ?? */
           av_frame_make_writable(frame);

           /** Encode to H264 */
           avcodec_send_frame(output_codec_context, frame);
           ...
           ...

           /** Get a encoded packet */
           avcodec_receive_packet(output_codec_context, &output_packet);

           /**
            * Write the packet to output.  
            * Here is the point! should I configure the parameters
            * in packet such as 'pts', 'dts', 'duration', etc, if so,
            * hwo? or I just directory write the packet to output?
            */
           av_interleaved_write_frame(output_format_context, &packet);                
       }

       /** Write the media file container trailer */
       av_write_trailer(output_format_context);

    }

    int main() {
       convert_init("./sample.avi", "./output.mp4");
       convert_it();

    }

    using VLC or QuickTime to playback the output.mp4 file, it failed, cause the file duration is zero, when dragging the time progress bar, I can see the picture frame clearly, it seems that the encoding packet buffer data is correct, but the timestamp is error, am I missing something when configure the output_stream ? The following is message from ffprobe.

    ffprobe output.mp4
    ffprobe version 3.3.3 Copyright (c) 2007-2017 the FFmpeg developers
     built with Apple LLVM version 8.1.0 (clang-802.0.42)
     configuration: --enable-shared --enable-libmp3lame
     libavutil      55. 58.100 / 55. 58.100
     libavcodec     57. 89.100 / 57. 89.100
     libavformat    57. 71.100 / 57. 71.100
     libavdevice    57.  6.100 / 57.  6.100
     libavfilter     6. 82.100 /  6. 82.100
     libswscale      4.  6.100 /  4.  6.100
     libswresample   2.  7.100 /  2.  7.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.71.100
     Duration: 00:00:00.06, start: 0.000000, bitrate: 6902181 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x408 [SAR 1:1 DAR 30:17], 13929056 kb/s, 90k fps, 90k tbr, 90k tbn, 50 tbc (default)
       Metadata:
         handler_name    : VideoHandler
  • Create audio/video, audio only, and video only HLS playlist version of the same media file

    15 avril 2020, par Kevin Paek

    I have a media.mp4 file.

    



    Currently I convert it to an HLS playlist with this command :

    



    ffmpeg -y -i \
  "media.mp4" \
  -g 48 -sc_threshold 0 \
  -profile:v baseline -level:v 3.0 -pix_fmt yuv420p \
  -map 0:0 -map 0:1 -map 0:0 -map 0:1 \
  -map 0:0 -map 0:1 -map 0:0 -map 0:1 \
  -map 0:0 -map 0:1 -map 0:0 -map 0:1 \
  -c copy \
  -s:v:0 256x144   -c:v:0 libx264 -b:v:0 200k  -minrate:v:0 200k   -maxrate:v:0 200k   -bufsize:v:0 200k \
  -s:v:1 426x240   -c:v:1 libx264 -b:v:1 400k  -minrate:v:1 400k   -maxrate:v:1 400k   -bufsize:v:1 400k \
  -s:v:2 640x360   -c:v:2 libx264 -b:v:2 700k  -minrate:v:2 700k   -maxrate:v:2 700k   -bufsize:v:2 700k \
  -s:v:3 854x480   -c:v:3 libx264 -b:v:3 1280k -minrate:v:3 1280k  -maxrate:v:3 1280k  -bufsize:v:3 1280k \
  -s:v:4 1280x720  -c:v:4 libx264 -b:v:4 2560k -minrate:v:4 2560k  -maxrate:v:4 2560k  -bufsize:v:4 2560k \
  -s:v:5 1920x1080 -c:v:5 libx264 -b:v:5 5120k -minrate:v:5 5120k  -maxrate:v:5 5120k  -bufsize:v:5 5120k \
  -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3 v:4,a:4 v:5,a:5" \
  -master_pl_name "master.m3u8" \
  -f hls \
  -hls_playlist_type vod \
  -hls_time 5 \
  -hls_list_size 0 \
  -hls_flags split_by_time+round_durations \
  -start_number 1 \
  -hls_segment_filename "av/%v/%02d.ts" \
  "av/%v/prog_index.m3u8"


    



    I can create audio only and video only version with the -an and -vn flags, but it would convert the file 3 times.

    



    Is there a way I can create all three versions with only 1 conversion ?

    



    I couldn't figure out a way to convert the resulting master.m3u8 into and audio only and video only version.
Also tried creating a converted_media.mp4 then using that to just copy the audio and video streams and just make the 3 playlists, but that didn't work either.

    



    Any help appreciated.