Recherche avancée

Médias (0)

Mot : - Tags -/albums

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

Autres articles (83)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

Sur d’autres sites (9481)

  • File input of avformat_open_input in ffmpeg

    28 février 2016, par Justin Chang

    I’m trying to use function avformat_open_input in FFmpeg to open the file which contains Chinese word.

    For example :

    char* file="C:/測試/baby.mp4";

    avformat_open_input(&pFormatCtx, file, NULL, NULL);

    But, it seems to be failed.

    My question is how do I pass the file path which contains Chinese (or other languages except for English) ?

  • Demuxing a video media file with FFMPEG

    23 février 2016, par MOHW

    After starting this question Extracting the h264 part of a video file (demuxing) I was actually able to figure out that,

    1. When I reverted to an older version of FFMPEG (avcodec-55.dll) as against the avcodec-57.dll I was using earlier, the code worked perfectly without any error and the resultant h264 file played with ffplay.
    2. When I tracked my output when using the avcodec-57.dll version of FFMPEG (most recent version), there was actually an error "Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead" after the call avformat_write_header(ofmt_ctx_v, NULL) and another one after the call to avformat_write_header(ofmt_ctx_a, NULL). The program continued executing, the audio was fine but the .h264 file wasn’t.

    The output

    Press any key to continue . . .
    Press any key to continue . . .
    Press any key to continue . . .
    Press any key to continue . . .

    ==============Input Video=============
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       title           : 10153755968775490
       encoder         : Lavf57.19.100
     Duration: 00:01:07.27, start: 0.020021, bitrate: 1058 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 400x224 [
    SAR 199:200 DAR 199:112], 927 kb/s, 15 fps, 15 tbr, 15360 tbn, 30 tbc (default)
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(eng): Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo, s16p, 12
    8 kb/s (default)
       Metadata:
         handler_name    : SoundHandler

    ==============Output Video============
    Output #0, h264, to 'sample.h264':
       Stream #0:0: Video: h264 (High), yuv420p, 400x224 [SAR 199:200 DAR 199:112],
    q=2-31, 927 kb/s, 30 tbc

    ==============Output Audio============
    Output #0, mp3, to 'sample.mp3':
       Stream #0:0: Audio: mp3, 48000 Hz, stereo, s16p, 128 kb/s

    ======================================
    [h264 @ 00a3ee20] Using AVStream.codec.time_base as a timebase hint to the muxer
    is deprecated. Set AVStream.time_base instead.
    [mp3 @ 00a4fec0] Using AVStream.codec.time_base as a timebase hint to the muxer
    is deprecated. Set AVStream.time_base instead.
    Press any key to continue . . .

    The code

    #include

    #define __STDC_CONSTANT_MACROS

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


    #define USE_H264BSF 1

    int main()
    {
       AVOutputFormat *ofmt_a = NULL,*ofmt_v = NULL;
       AVFormatContext *ifmt_ctx = NULL, *ofmt_ctx_a = NULL, *ofmt_ctx_v = NULL;
       AVPacket pkt;
       int ret, i;
       int videoindex=-1,audioindex=-1;
       int frame_index=0;

       const char *in_filename  = "sample.mp4";
       const char *out_filename_v = "sample.h264";
       const char *out_filename_a = "sample.mp3";

       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;
       }
    system("pause");

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

    system("pause");

       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;
    system("pause");
       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{
                   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;
       }
    system("pause");
       //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======================================\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;
           }
       }

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

       if (avformat_write_header(ofmt_ctx_a, NULL) < 0) {
           printf( "Error occurred when opening audio output file\n");
           goto end;
       }
       system("pause");
    #if USE_H264BSF
       AVBitStreamFilterContext* h264bsfc =  av_bitstream_filter_init("h264_mp4toannexb");
    #endif

       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;
               #if USE_H264BSF
                   av_bitstream_filter_filter(h264bsfc, in_stream->codec, NULL, &pkt.data, &pkt.size, pkt.data, pkt.size, 0);
               #endif
               printf("Write Video Packet. size:%d\tpts:%lld\n",pkt.size,pkt.pts);
           }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{
               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++;
       }
    system("pause");
    #if USE_H264BSF
       av_bitstream_filter_close(h264bsfc);  
    #endif

       //Write file trailer
       av_write_trailer(ofmt_ctx_a);
       av_write_trailer(ofmt_ctx_v);
    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);

       avformat_free_context(ofmt_ctx_a);
       avformat_free_context(ofmt_ctx_v);

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

       return 0;
    }

    EDIT 1
    After reading through http://lists.libav.org/pipermail/libav-devel/2014-June/060048.html, I figured what was causing the "Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead". I fixed it by adding out_stream->time_base = in_stream->time_base; before the call to avformat_write_header. The code now runs without any error ! The h264 file created with the old FFMPEG (avcodec-55.dll) works fine while that created by the recent avcodec-57.dll is still invalid.

  • Iterate through URLs

    16 février 2016, par cclloyd

    If I wanted to use ffmpeg to download a bunch of .ts files from a website, and the url format is

    http://example.com/video-1080Pxxxxx.ts

    Where the xxxxx is a number from 00000 to 99999 (required zero padding), how would I iterate through that in bash so that it tries every integer starting at 00000, 00001, 00002, etc.?