Recherche avancée

Médias (3)

Mot : - Tags -/image

Autres articles (98)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Les vidéos

    21 avril 2011, par

    Comme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
    Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
    Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

Sur d’autres sites (10350)

  • 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(&ifmt_ctx, in_filename, 0, 0)) < 0) {
           printf( "Could not open input file.");
           goto end;
       }
       if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) < 0) {
           printf( "Failed to retrieve input stream information");
           goto end;
       }

       //Output
       avformat_alloc_output_context2(&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(&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(&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 < 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) < 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 & 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 & AVFMT_NOFILE)) {
           if (avio_open(&ofmt_ctx_v->pb, out_filename_v, AVIO_FLAG_WRITE) < 0) {
               printf( "Could not open output file '%s'", out_filename_v);
               goto end;
           }
       }
       if (!(ofmt_a->flags & AVFMT_NOFILE)) {
           if (avio_open(&ofmt_ctx_a->pb, out_filename_a, AVIO_FLAG_WRITE) < 0) {
               printf( "Could not open output file '%s'", out_filename_a);
               goto end;
           }
       }
       if (!(ofmt_a->flags & AVFMT_NOFILE)) {
           if (avio_open(&ofmt_ctx_s->pb, out_filename_s, AVIO_FLAG_WRITE) < 0) {
               printf( "Could not open output file '%s'", out_filename_s);
               goto end;
           }
       }

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


       if (avformat_write_header(ofmt_ctx_a, NULL) < 0) {
           printf( "Error occurred when opening audio output file\n");
           goto end;
       }
       if (avformat_write_header(ofmt_ctx_s, NULL) < 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, &pkt) < 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, &pkt.data, &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, &pkt) < 0) {
               printf( "Error muxing packet\n");
               break;
           }
           //printf("Write %8d frames to output file\n",frame_index);
           av_free_packet(&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(&ifmt_ctx);
       /* close output */
       if (ofmt_ctx_a && !(ofmt_a->flags & AVFMT_NOFILE))
           avio_close(ofmt_ctx_a->pb);

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

       if (ofmt_ctx_s && !(ofmt_s->flags & 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 < 0 && 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 !

  • FFmpeg concat filter part 2

    16 juin 2020, par Narek Aydinyan

    I have videos. The video files have a different count of video tracks.

    



    video1 = 1 video stream + 1 audio stream.

    



    video2 = 2 video stream + 1 audio stream.

    



    The output result should be 2(concatenated) video streams, 1 audio stream.

    



    The same issue for the Audio case solved in my previous question(FFmpeg concat filter).
Also, I want to mark that I need to generate a video track with custom size.
For example, I can do this with color filter but this filter has fixed image sizes(https://ffmpeg.org/ffmpeg-utils.html#toc-Color) 
Thanks in advance

    


  • ffmpeg loop sound in part of video

    22 juin 2017, par djib

    I’m trying to concatenate a few inputs, and loop a sound during the time of one input.
    My inputs are :

    • intro.mp4
    • jpg suite in "pics" folder -> pics/%04d.jpg
    • loop.mp3
    • outro.mp4

    What i want to achive :

    video schema

    What i have so far :

    ffmpeg -y -i intro.mp4 -r 25 -i "pics/%04d.jpg" -i outro.mp4 -i loop.mp3 -filter_complex
    "[0:v:0] [0:a:0] [1:v:0] [3:a:0] [2:v:0] [2:a:0] concat=n=3:v=1:a=1 [v] [a]" -map "[v]"
    -map "[a]" -c:v libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 -crf 20 -r 25
    -movflags +faststart -c:a aac -b:a 192k output.mp4

    But that does not loop "loop.wav". I’v tried "-loop 1" before "-i loop.mp3" but that gives me this error : "Option loop not found."

    ffmpeg version : 20170620-ae6f6d4-win64-static