Recherche avancée

Médias (0)

Mot : - Tags -/alertes

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

Autres articles (43)

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

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

Sur d’autres sites (6993)

  • avcodec/proresenc_kostya : add 4444XQ profile

    26 juin 2017, par Paul B Mahol
    avcodec/proresenc_kostya : add 4444XQ profile
    

    Signed-off-by : Paul B Mahol <onemda@gmail.com>

    • [DH] doc/encoders.texi
    • [DH] libavcodec/proresenc_kostya.c
  • dxva : add declarative profile checks

    22 juin 2017, par wm4
    dxva : add declarative profile checks
    

    Make supported codec profiles part of each dxva_modes entry. Every DXVA2
    mode is representative for a codec with a subset of supported profiles,
    so reflecting that in dxva_modes seems appropriate.

    In practice, this will more strictly check MPEG2 profiles, will stop
    relying on the surface format checks for selecting the correct HEVC
    profile, and remove the verbose messages for mismatching H264/HEVC
    profiles. Instead of the latter, it will now print the more nebulous "No
    decoder device for codec found" verbose message.

    This also respects AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH. Move the
    Main10 HEVC entry before the normal one to make this work better.

    Originally inspired by VLC's code.

    Merges Libav commit 70e5e7c02232d1e51c362d5572c567a9e2a8dcc2.

    Signed-off-by : Luca Barbato <lu_zero@gentoo.org>

    • [DH] libavcodec/dxva2.c
  • libavformat / Remuxing from mpegts to mp4 generate wrong AAC profile

    13 juillet 2017, par axeo

    I have problem with remuxing MPEG-TS to MP4 via API. AAC profile on the output file changed after remux from LC to default (codecpar->profile equals -1). I even took example from ffmpeg.org, added bitstream filter for removing ADTS headers from AAC, removed deprecated functions but the problem exists too. Video stream with this code totally the same as in input.

    This is my modified code :

    #include <libavutil></libavutil>timestamp.h>
    #include <libavformat></libavformat>avformat.h>


    static void log_packet(const AVFormatContext *fmt_ctx, const AVPacket *pkt, const char *tag)
    {
       AVRational *time_base = &amp;fmt_ctx->streams[pkt->stream_index]->time_base;
       printf("%s: pts:%s pts_time:%s dts:%s dts_time:%s duration:%s duration_time:%s stream_index:%d\n",
              tag,
              av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, time_base),
              av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, time_base),
              av_ts2str(pkt->duration), av_ts2timestr(pkt->duration, time_base),
              pkt->stream_index);
    }
    int main(int argc, char **argv)
    {
       AVOutputFormat *ofmt = NULL;
       AVFormatContext *ifmt_ctx = NULL, *ofmt_ctx = NULL;
       AVPacket pkt;
       const char *in_filename, *out_filename;
       int ret, i;
       if (argc &lt; 3) {
           printf("usage: %s input output\n"
                  "API example program to remux a media file with libavformat and libavcodec.\n"
                  "The output format is guessed according to the file extension.\n"
                  "\n", argv[0]);
           return 1;
       }
       in_filename  = argv[1];
       out_filename = argv[2];
       avformat_network_init();
       av_register_all();
       if ((ret = avformat_open_input(&amp;ifmt_ctx, in_filename, 0, 0)) &lt; 0) {
           fprintf(stderr, "Could not open input file '%s'", in_filename);
           goto end;
       }
       if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) &lt; 0) {
           fprintf(stderr, "Failed to retrieve input stream information");
           goto end;
       }
       av_dump_format(ifmt_ctx, 0, in_filename, 0);
       avformat_alloc_output_context2(&amp;ofmt_ctx, NULL, NULL, out_filename);
       if (!ofmt_ctx) {
           fprintf(stderr, "Could not create output context\n");
           ret = AVERROR_UNKNOWN;
           goto end;
       }
       ofmt = ofmt_ctx->oformat;
       for (i = 0; i &lt; ifmt_ctx->nb_streams; i++) {
           AVStream *in_stream = ifmt_ctx->streams[i];
           AVStream *out_stream = avformat_new_stream(ofmt_ctx, NULL);
           if (!out_stream) {
               fprintf(stderr, "Failed allocating output stream\n");
               ret = AVERROR_UNKNOWN;
               goto end;
           }
           ret = avcodec_parameters_copy(out_stream->codecpar, in_stream->codecpar);
           if (ret &lt; 0) {
               fprintf(stderr, "Failed to copy context from input to output stream codec context\n");
               goto end;
           }
    //        if (ofmt_ctx->oformat->flags &amp; AVFMT_GLOBALHEADER)
    //            out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;

           out_stream->codecpar->codec_tag = 0;
       }
       av_dump_format(ofmt_ctx, 0, out_filename, 1);
       if (!(ofmt->flags &amp; AVFMT_NOFILE)) {
           ret = avio_open(&amp;ofmt_ctx->pb, out_filename, AVIO_FLAG_WRITE);
           if (ret &lt; 0) {
               fprintf(stderr, "Could not open output file '%s'", out_filename);
               goto end;
           }
       }
       ret = avformat_write_header(ofmt_ctx, NULL);
       if (ret &lt; 0) {
           fprintf(stderr, "Error occurred when opening output file\n");
           goto end;
       }
       while (1) {
           AVStream *in_stream, *out_stream;
           ret = av_read_frame(ifmt_ctx, &amp;pkt);
           if (ret &lt; 0)
               break;
           in_stream  = ifmt_ctx->streams[pkt.stream_index];
           out_stream = ofmt_ctx->streams[pkt.stream_index];
    //        log_packet(ifmt_ctx, &amp;pkt, "in");
           /* copy packet */
           pkt.pts = av_rescale_q_rnd(pkt.pts, in_stream->time_base, out_stream->time_base, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
           pkt.dts = av_rescale_q_rnd(pkt.dts, in_stream->time_base, out_stream->time_base, 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;
    //        log_packet(ofmt_ctx, &amp;pkt, "out");

           if (in_stream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {

               ret = av_interleaved_write_frame(ofmt_ctx, &amp;pkt);
               if (ret &lt; 0) {
                   fprintf(stderr, "Error muxing packet\n");
               }

           } else if (in_stream->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {

               AVBSFContext *avbsctx;
               AVPacket filtered_packet = {0};

               const AVBitStreamFilter *bsf = av_bsf_get_by_name("aac_adtstoasc");

               av_bsf_alloc(bsf, &amp;avbsctx);
               avcodec_parameters_copy(avbsctx->par_in, in_stream->codecpar);
               av_bsf_init(avbsctx);
               av_bsf_send_packet(avbsctx, &amp;pkt);

               while (1) {
                   ret = av_bsf_receive_packet(avbsctx, &amp;filtered_packet);
                   if (ret &lt; 0) {
                       av_packet_unref(&amp;filtered_packet);
                       break;
                   }
                   ret = av_interleaved_write_frame(ofmt_ctx, &amp;filtered_packet);
                   av_packet_unref(&amp;filtered_packet);
               }
               av_bsf_free(&amp;avbsctx);
           }
           av_packet_unref(&amp;pkt);
       }
       av_write_trailer(ofmt_ctx);
    end:
       avformat_close_input(&amp;ifmt_ctx);
       /* close output */
       if (ofmt_ctx &amp;&amp; !(ofmt->flags &amp; AVFMT_NOFILE))
           avio_close(ofmt_ctx->pb);
       avformat_free_context(ofmt_ctx);
       if (ret &lt; 0 &amp;&amp; ret != AVERROR_EOF) {
           fprintf(stderr, "Error occurred: %s\n", av_err2str(ret));
           return 1;
       }
       return 0;
    }

    If I do the same operation with ffmpeg binary - all is OK. AAC-LC stream stay unchanged in output file.

    ffmpeg -i input.ts -y -bsf:a aac_adtstoasc -acodec copy -vn output.mp4

    What I’m doing wrong ? I tried look at ffmpeg sources, but it is very complicated.

    Thanks.

    P.S.
    I’ve also added this string to example out_stream->codecpar->codec_tag = 0;, otherwise I’m getting error that codec_tag is not compatible with output codec. May be I need to workaround this somehow ?