Recherche avancée

Médias (1)

Mot : - Tags -/musée

Autres articles (67)

  • 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 ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

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

  • Correct the FSF address for two avisynth files to ’51 Franklin Street, Fifth Floor...

    6 mars 2014, par Andreas Cadhalpun
    Correct the FSF address for two avisynth files to ’51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA’
    

    Signed-off-by : Michael Niedermayer <michaelni@gmx.at>

    • [DH] compat/avisynth/avisynth_c.h
    • [DH] compat/avisynth/avxsynth_c.h
  • 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 !

  • Revise the row VBV algorithm (part 2)

    5 janvier 2016, par Anton Mitrofanov
    Revise the row VBV algorithm (part 2)
    

    Should fix rare cases of VBV emergency mode activation caused by too much trust
    to the row predictors.

    • [DH] encoder/ratecontrol.c