Recherche avancée

Médias (0)

Mot : - Tags -/auteurs

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

Autres articles (78)

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

  • Récupération d’informations sur le site maître à l’installation d’une instance

    26 novembre 2010, par

    Utilité
    Sur le site principal, une instance de mutualisation est définie par plusieurs choses : Les données dans la table spip_mutus ; Son logo ; Son auteur principal (id_admin dans la table spip_mutus correspondant à un id_auteur de la table spip_auteurs)qui sera le seul à pouvoir créer définitivement l’instance de mutualisation ;
    Il peut donc être tout à fait judicieux de vouloir récupérer certaines de ces informations afin de compléter l’installation d’une instance pour, par exemple : récupérer le (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

Sur d’autres sites (5944)

  • truehd : break out part of output_data into platform-specific callback.

    20 mars 2014, par Ben Avison
    truehd : break out part of output_data into platform-specific callback.
    

    Verified with profiling that this doesn’t have a measurable effect upon
    overall performance.

    Signed-off-by : Martin Storsjö <martin@martin.st>

    • [DBH] libavcodec/mlpdec.c
    • [DBH] libavcodec/mlpdsp.c
    • [DBH] libavcodec/mlpdsp.h
  • avcodec/exr : indent the if (layer_match) part

    4 juin 2016, par Martin Vignali
    avcodec/exr : indent the if (layer_match) part
    
    • [DH] libavcodec/exr.c
  • Extracting the h264 part of a video file (demuxing)

    3 mars 2016, par MOHW

    I am trying to demux a video file into the video part (h264, mpeg4, h265, vp8, etc) and the audio part (mp3, aac, ac3, etc) and the subtitle part (srt) using ffmpeg in c++.

    The audio part came out alright and played on all the media players I have, so also did the subtitle part. The video part however came out WITHOUT error and saved into a .h264 file but when I use ffprobe to check it or ffplay to play it, it always give the error "Invalid data found when processing input".

    The code below

    /* Separate a media file into audio, video and subtitle files (demuxing, complex) */
    //TODO: mute error when subtitle is not present
    #define __STDC_CONSTANT_MACROS

    extern "C"
    {
       #include "libavformat/avformat.h"
    }


    int main()
    {
       //Input AVFormatContext and Output AVFormatContext
       AVOutputFormat *ofmt_a = NULL, *ofmt_v = NULL, *ofmt_s = NULL;
       AVFormatContext *ifmt_ctx = NULL, *ofmt_ctx_a = NULL, *ofmt_ctx_v = NULL, *ofmt_ctx_s = NULL;
       AVPacket pkt;

       int ret, i;
       int videoindex=-1, audioindex=-1, srtindex=-1;
       int frame_index=0;

       //Input file URL
       const char *in_filename  = "sample.mp4";

       //Output file URL
       const char *out_filename_v = "sample.h264";
       const char *out_filename_a = "sample.mp3";
       const char *out_filename_s = "sample.srt";

       av_register_all();

       //Input
       if ((ret = avformat_open_input(&amp;ifmt_ctx, in_filename, 0, 0)) &lt; 0) {
           printf( "Could not open input file.");
           goto end;
       }
       if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) &lt; 0) {
           printf( "Failed to retrieve input stream information");
           goto end;
       }

       //Output
       avformat_alloc_output_context2(&amp;ofmt_ctx_v, NULL, NULL, out_filename_v);
       if (!ofmt_ctx_v) {
           printf( "Could not create output context\n");
           ret = AVERROR_UNKNOWN;
           goto end;
       }
       ofmt_v = ofmt_ctx_v->oformat;

       avformat_alloc_output_context2(&amp;ofmt_ctx_a, NULL, NULL, out_filename_a);
       if (!ofmt_ctx_a) {
           printf( "Could not create output context\n");
           ret = AVERROR_UNKNOWN;
           goto end;
       }
       ofmt_a = ofmt_ctx_a->oformat;

       avformat_alloc_output_context2(&amp;ofmt_ctx_s, NULL, NULL, out_filename_s);
       if (!ofmt_ctx_a) {
           printf( "Could not create output context\n");
           ret = AVERROR_UNKNOWN;
           goto end;
       }
       ofmt_s = ofmt_ctx_s->oformat;

       for (i = 0; i &lt; ifmt_ctx->nb_streams; i++) {
               //Create output AVStream according to input AVStream
               AVFormatContext *ofmt_ctx;
               AVStream *in_stream = ifmt_ctx->streams[i];
               AVStream *out_stream = NULL;

               if(ifmt_ctx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO){
                   videoindex=i;
                   out_stream=avformat_new_stream(ofmt_ctx_v, in_stream->codec->codec);
                   ofmt_ctx=ofmt_ctx_v;
               }
               else if(ifmt_ctx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO){
                   audioindex=i;
                   out_stream=avformat_new_stream(ofmt_ctx_a, in_stream->codec->codec);
                   ofmt_ctx=ofmt_ctx_a;
               }
               else if(ifmt_ctx->streams[i]->codec->codec_type==AVMEDIA_TYPE_SUBTITLE){
                   srtindex=i;
                   out_stream=avformat_new_stream(ofmt_ctx_s, in_stream->codec->codec);
                   ofmt_ctx=ofmt_ctx_s;
               }
               else{
                   break;
               }

               if (!out_stream) {
                   printf( "Failed allocating output stream\n");
                   ret = AVERROR_UNKNOWN;
                   goto end;
               }
               //Copy the settings of AVCodecContext
               if (avcodec_copy_context(out_stream->codec, in_stream->codec) &lt; 0) {
                   printf( "Failed to copy context from input to output stream codec context\n");
                   goto end;
               }
               out_stream->codec->codec_tag = 0;

               if (ofmt_ctx->oformat->flags &amp; AVFMT_GLOBALHEADER)
                   out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
       }

       //Dump Format------------------
       printf("\n==============Input Video=============\n");
       av_dump_format(ifmt_ctx, 0, in_filename, 0);

       printf("\n==============Output Video============\n");
       av_dump_format(ofmt_ctx_v, 0, out_filename_v, 1);
       printf("\n==============Output Audio============\n");
       av_dump_format(ofmt_ctx_a, 0, out_filename_a, 1);
       /*printf("\n==============Output Subtitle============\n");
       av_dump_format(ofmt_ctx_s, 0, out_filename_s, 1);*/
       printf("\n======================================\n");

       //Open output file
       if (!(ofmt_v->flags &amp; AVFMT_NOFILE)) {
           if (avio_open(&amp;ofmt_ctx_v->pb, out_filename_v, AVIO_FLAG_WRITE) &lt; 0) {
               printf( "Could not open output file '%s'", out_filename_v);
               goto end;
           }
       }
       if (!(ofmt_a->flags &amp; AVFMT_NOFILE)) {
           if (avio_open(&amp;ofmt_ctx_a->pb, out_filename_a, AVIO_FLAG_WRITE) &lt; 0) {
               printf( "Could not open output file '%s'", out_filename_a);
               goto end;
           }
       }
       if (!(ofmt_a->flags &amp; AVFMT_NOFILE)) {
           if (avio_open(&amp;ofmt_ctx_s->pb, out_filename_s, AVIO_FLAG_WRITE) &lt; 0) {
               printf( "Could not open output file '%s'", out_filename_s);
               goto end;
           }
       }

       //Write file header
       if (avformat_write_header(ofmt_ctx_v, NULL) &lt; 0) {
           printf( "Error occurred when opening video output file\n");
           goto end;
       }
       system("pause");


       if (avformat_write_header(ofmt_ctx_a, NULL) &lt; 0) {
           printf( "Error occurred when opening audio output file\n");
           goto end;
       }
       if (avformat_write_header(ofmt_ctx_s, NULL) &lt; 0) {
           printf( "Error occurred when opening audio output file\n");
           goto end;
       }

       AVBitStreamFilterContext* h264bsfc =  av_bitstream_filter_init("h264_mp4toannexb");

       while (1) {
           AVFormatContext *ofmt_ctx;
           AVStream *in_stream, *out_stream;
           //Get an AVPacket
           if (av_read_frame(ifmt_ctx, &amp;pkt) &lt; 0)
               break;
           in_stream  = ifmt_ctx->streams[pkt.stream_index];


           if(pkt.stream_index==videoindex){
               out_stream = ofmt_ctx_v->streams[0];
               ofmt_ctx=ofmt_ctx_v;
               printf("Write Video Packet. size:%d\tpts:%lld\n",pkt.size,pkt.pts);
               av_bitstream_filter_filter(h264bsfc, in_stream->codec, NULL, &amp;pkt.data, &amp;pkt.size, pkt.data, pkt.size, 0);
           }else if(pkt.stream_index==audioindex){
               out_stream = ofmt_ctx_a->streams[0];
               ofmt_ctx=ofmt_ctx_a;
               printf("Write Audio Packet. size:%d\tpts:%lld\n",pkt.size,pkt.pts);
           }
           else if(pkt.stream_index==srtindex){
               out_stream = ofmt_ctx_s->streams[0];
               ofmt_ctx=ofmt_ctx_s;
               printf("Write Subtitle Packet. size:%d\tpts:%lld\n",pkt.size,pkt.pts);
           }
           else{
               continue;
           }


           //Convert PTS/DTS
           pkt.pts = av_rescale_q_rnd(pkt.pts, in_stream->time_base, out_stream->time_base, (AVRounding)(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX));
           pkt.dts = av_rescale_q_rnd(pkt.dts, in_stream->time_base, out_stream->time_base, (AVRounding)(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX));
           pkt.duration = av_rescale_q(pkt.duration, in_stream->time_base, out_stream->time_base);
           pkt.pos = -1;
           pkt.stream_index=0;
           //Write
           if (av_interleaved_write_frame(ofmt_ctx, &amp;pkt) &lt; 0) {
               printf( "Error muxing packet\n");
               break;
           }
           //printf("Write %8d frames to output file\n",frame_index);
           av_free_packet(&amp;pkt);
           frame_index++;
       }

       av_bitstream_filter_close(h264bsfc);  

       //Write file trailer
       av_write_trailer(ofmt_ctx_a);
       av_write_trailer(ofmt_ctx_v);
       av_write_trailer(ofmt_ctx_s);
    end:
       avformat_close_input(&amp;ifmt_ctx);
       /* close output */
       if (ofmt_ctx_a &amp;&amp; !(ofmt_a->flags &amp; AVFMT_NOFILE))
           avio_close(ofmt_ctx_a->pb);

       if (ofmt_ctx_v &amp;&amp; !(ofmt_v->flags &amp; AVFMT_NOFILE))
           avio_close(ofmt_ctx_v->pb);

       if (ofmt_ctx_s &amp;&amp; !(ofmt_s->flags &amp; AVFMT_NOFILE))
           avio_close(ofmt_ctx_s->pb);

       avformat_free_context(ofmt_ctx_a);
       avformat_free_context(ofmt_ctx_v);
       avformat_free_context(ofmt_ctx_s);

       system("pause");
       if (ret &lt; 0 &amp;&amp; ret != AVERROR_EOF) {
           printf( "Error occurred.\n");
           return -1;
       }

       return 0;
    }

    EDIT 1
    Screen shot of resultant h264 file
    enter image description here

    EDIT 2
    I think the "error" has to do with FFMPEG’s "Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead" error.
    I revert to an older version of FFMPEG and with the same code, the resultant h264 file was ok !