Recherche avancée

Médias (39)

Mot : - Tags -/audio

Autres articles (62)

  • 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

  • MediaSPIP Player : les contrôles

    26 mai 2010, par

    Les contrôles à la souris du lecteur
    En plus des actions au click sur les boutons visibles de l’interface du lecteur, il est également possible d’effectuer d’autres actions grâce à la souris : Click : en cliquant sur la vidéo ou sur le logo du son, celui ci se mettra en lecture ou en pause en fonction de son état actuel ; Molette (roulement) : en plaçant la souris sur l’espace utilisé par le média (hover), la molette de la souris n’exerce plus l’effet habituel de scroll de la page, mais diminue ou (...)

  • Contribute to a better visual interface

    13 avril 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

Sur d’autres sites (7843)

  • Could not write header for output file #0 (incorrect codec parameters ?) : Broken pipe

    23 mai 2020, par Laura

    I'm trying to generate audio waveform from an mp4 file as described here : https://github.com/bbc/audiowaveform.

    



    My mp4 file looks like

    



    <?xml version="1.0" encoding="UTF-8"?>


    



    http://www.w3.org/2001/XMLSchema-instance' ;>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


    



    <format filename="/cache/1268.mp4" duration="40.112000" size="10610125">&#xA;    <tag key="major_brand" value="isom"></tag>&#xA;    <tag key="minor_version" value="512"></tag>&#xA;    <tag key="compatible_brands" value="isomiso2avc1mp41"></tag>&#xA;    <tag key="encoder" value="Lavf58.20.100"></tag>&#xA;</format>&#xA;

    &#xA;&#xA;

    &#xA;&#xA;

    I wrote this command line :&#xA;/ffmpeg-4.1.1/ffmpeg -i /cache/1268.mp4 -map 0:1 -f wav - | /opt/audiowaveform/audiowaveform —input-format wav —pixels-per-second 25 -b 16

    &#xA;&#xA;

    But it fails with the folliwing error :&#xA;Could not write header for output file #0 (incorrect codec parameters ?) : Broken pipe&#xA;Error initializing output stream 0:0 —&#xA;Conversion failed !

    &#xA;&#xA;

    Complete log is :

    &#xA;&#xA;

            ffmpeg version 4.2.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers&#xA;      built with gcc 8 (Debian 8.3.0-6)&#xA;      configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg&#xA;      libavutil      56. 31.100 / 56. 31.100&#xA;      libavcodec     58. 54.100 / 58. 54.100&#xA;      libavformat    58. 29.100 / 58. 29.100&#xA;      libavdevice    58.  8.100 / 58.  8.100&#xA;      libavfilter     7. 57.100 /  7. 57.100&#xA;      libswscale      5.  5.100 /  5.  5.100&#xA;      libswresample   3.  5.100 /  3.  5.100&#xA;      libpostproc    55.  5.100 / 55.  5.100&#xA;    Error: unrecognised option &#x27;--input-format&#x27;&#xA;    See &#x27;/opt/audiowaveform/audiowaveform --help&#x27; for available options&#xA;    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;/cache/1268.mp4&#x27;:&#xA;      Metadata:&#xA;        major_brand     : isom&#xA;        minor_version   : 512&#xA;        compatible_brands: isomiso2avc1mp41&#xA;        title           : Big Buck Bunny - test 8&#xA;        encoder         : Lavf57.72.101&#xA;        comment         : Matroska Validation File 8, secondary audio commentary track, misc subtitle tracks&#xA;      Duration: 00:00:46.07, start: 0.000000, bitrate: 2111 kb/s&#xA;        Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 1908 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)&#xA;        Metadata:&#xA;          handler_name    : VideoHandler&#xA;        Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 129 kb/s (default)&#xA;        Metadata:&#xA;          handler_name    : SoundHandler&#xA;        Stream #0:2(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 67 kb/s&#xA;        Metadata:&#xA;          handler_name    : SoundHandler&#xA;    Stream mapping:&#xA;      Stream #0:1 -> #0:0 (aac (native) -> pcm_s16le (native))&#xA;    Press [q] to stop, [?] for help&#xA;    Could not write header for output file #0 (incorrect codec parameters ?): Broken pipe&#xA;    Error initializing output stream 0:0 --&#xA;    Conversion failed!&#xA;

    &#xA;&#xA;

    Can anyone help me ?

    &#xA;&#xA;

    Note : I read the answer here ffmpeg Could not write header for output file #0 but I need to preserve audio codec.

    &#xA;

  • avcodec_find_encoder_by_name() returns NULL

    27 décembre 2019, par GiuTor

    I’m trying to compile the following example I found on ffmpeg documentation :

    /*
    * Copyright (c) 2001 Fabrice Bellard
    *
    * Permission is hereby granted, free of charge, to any person obtaining a copy
    * of this software and associated documentation files (the "Software"), to deal
    * in the Software without restriction, including without limitation the rights
    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    * copies of the Software, and to permit persons to whom the Software is
    * furnished to do so, subject to the following conditions:
    *
    * The above copyright notice and this permission notice shall be included in
    * all copies or substantial portions of the Software.
    *
    * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    * THE SOFTWARE.
    */

    // compile with gcc -o encode_video encode_video.c -lavutil -lavcodec -lz -lm

    /**
    * @file
    * video encoding with libavcodec API example
    *
    * @example encode_video.c
    */

    #include
    #include
    #include

    #include <libavcodec></libavcodec>avcodec.h>

    #include <libavutil></libavutil>opt.h>
    #include <libavutil></libavutil>imgutils.h>

    static void encode(AVCodecContext *enc_ctx, AVFrame *frame, AVPacket *pkt,
                      FILE *outfile)
    {
       int ret;

       /* send the frame to the encoder */
       if (frame)
           printf("Send frame %3"PRId64"\n", frame->pts);

       ret = avcodec_send_frame(enc_ctx, frame);
       if (ret &lt; 0) {
           fprintf(stderr, "Error sending a frame for encoding\n");
           exit(1);
       }

       while (ret >= 0) {
           ret = avcodec_receive_packet(enc_ctx, pkt);
           if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
               return;
           else if (ret &lt; 0) {
               fprintf(stderr, "Error during encoding\n");
               exit(1);
           }

           printf("Write packet %3"PRId64" (size=%5d)\n", pkt->pts, pkt->size);
           fwrite(pkt->data, 1, pkt->size, outfile);
           av_packet_unref(pkt);
       }
    }

    int main(int argc, char **argv)
    {
       const char *filename, *codec_name;
       const AVCodec *codec;
       AVCodecContext *c= NULL;
       int i, ret, x, y;
       FILE *f;
       AVFrame *frame;
       AVPacket *pkt;
       uint8_t endcode[] = { 0, 0, 1, 0xb7 };

       if (argc &lt;= 2) {
           fprintf(stderr, "Usage: %s <output file="file"> <codec>\n", argv[0]);
           exit(0);
       }
       filename = argv[1];
       codec_name = argv[2];

       /* find the mpeg1video encoder */
       codec = avcodec_find_encoder_by_name(codec_name);
       if (!codec) {
           fprintf(stderr, "Codec '%s' not found\n", codec_name);
           exit(1);
       }

       c = avcodec_alloc_context3(codec);
       if (!c) {
           fprintf(stderr, "Could not allocate video codec context\n");
           exit(1);
       }

       pkt = av_packet_alloc();
       if (!pkt)
           exit(1);

       /* put sample parameters */
       c->bit_rate = 400000;
       /* resolution must be a multiple of two */
       c->width = 352;
       c->height = 288;
       /* frames per second */
       c->time_base = (AVRational){1, 25};
       c->framerate = (AVRational){25, 1};

       /* emit one intra frame every ten frames
        * check frame pict_type before passing frame
        * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
        * then gop_size is ignored and the output of encoder
        * will always be I frame irrespective to gop_size
        */
       c->gop_size = 10;
       c->max_b_frames = 1;
       c->pix_fmt = AV_PIX_FMT_YUV420P;

       if (codec->id == AV_CODEC_ID_H264)
           av_opt_set(c->priv_data, "preset", "slow", 0);

       /* open it */
       ret = avcodec_open2(c, codec, NULL);
       if (ret &lt; 0) {
           fprintf(stderr, "Could not open codec: %s\n", av_err2str(ret));
           exit(1);
       }

       f = fopen(filename, "wb");
       if (!f) {
           fprintf(stderr, "Could not open %s\n", filename);
           exit(1);
       }

       frame = av_frame_alloc();
       if (!frame) {
           fprintf(stderr, "Could not allocate video frame\n");
           exit(1);
       }
       frame->format = c->pix_fmt;
       frame->width  = c->width;
       frame->height = c->height;

       ret = av_frame_get_buffer(frame, 32);
       if (ret &lt; 0) {
           fprintf(stderr, "Could not allocate the video frame data\n");
           exit(1);
       }

       /* encode 1 second of video */
       for (i = 0; i &lt; 25; i++) {
           fflush(stdout);

           /* make sure the frame data is writable */
           ret = av_frame_make_writable(frame);
           if (ret &lt; 0)
               exit(1);

           /* prepare a dummy image */
           /* Y */
           for (y = 0; y &lt; c->height; y++) {
               for (x = 0; x &lt; c->width; x++) {
                   frame->data[0][y * frame->linesize[0] + x] = x + y + i * 3;
               }
           }

           /* Cb and Cr */
           for (y = 0; y &lt; c->height/2; y++) {
               for (x = 0; x &lt; c->width/2; x++) {
                   frame->data[1][y * frame->linesize[1] + x] = 128 + y + i * 2;
                   frame->data[2][y * frame->linesize[2] + x] = 64 + x + i * 5;
               }
           }

           frame->pts = i;

           /* encode the image */
           encode(c, frame, pkt, f);
       }

       /* flush the encoder */
       encode(c, NULL, pkt, f);

       /* add sequence end code to have a real MPEG file */
       if (codec->id == AV_CODEC_ID_MPEG1VIDEO || codec->id == AV_CODEC_ID_MPEG2VIDEO)
           fwrite(endcode, 1, sizeof(endcode), f);
       fclose(f);

       avcodec_free_context(&amp;c);
       av_frame_free(&amp;frame);
       av_packet_free(&amp;pkt);

       return 0;
    }
    </codec></output>

    ffmpeg -codecs return a bunch of codecs among which libx264 and libx265. When I run the above code I get NULL from avcodec_find_encoder_by_name() :

    gt@gt-Aspire-E1-570 : /libav$ ./encode_video pippo libx264
    Codec ’libx264’ not found
    gt@gt-Aspire-E1-570 : /libav$ ./encode_video pippo x264
    Codec ’x264’ not found
    gt@gt-Aspire-E1-570 : /libav$ ./encode_video pippo H264
    Codec ’H264’ not found
    gt@gt-Aspire-E1-570 : /libav$

    Can someone help please ?

    Thanks

  • ffmpeg DASH encoding : always getting bitrate as 200k for vp9 codec

    29 novembre 2019, par Saurabh

    I am using following command, earlier put here : to generate DASH files :

    ffmpeg -y -nostdin -loglevel error -i "$1" \
           -map 0:v:0  -map 0:v:0 -map 0:v:0  -map 0:v:0  -map 0:v:0  -map 0:v:0 -map 0:a\?:0  \
           -maxrate:v:0 350k -bufsize:v:0 700k -c:v:0 libx264 -filter:v:0 "scale=320:-2"  \
           -maxrate:v:1 1000k -bufsize:v:1 2000k -c:v:1 libx264 -filter:v:1 "scale=640:-2"  \
           -maxrate:v:2 3000k -bufsize:v:2 6000k -c:v:2 libx264 -filter:v:2 "scale=1280:-2" \
           -maxrate:v:3 300k -minrate:v:3 100k -bufsize:v:3 600k -c:v:3 libvpx-vp9 -filter:v:3 "scale=320:-2"  \
           -maxrate:v:4 1088k -minrate:v:4 200k -bufsize:v:4 2176k -c:v:4 libvpx-vp9 -filter:v:4 "scale=640:-2"  \
           -maxrate:v:5 1500k -minrate:v:5 300k -bufsize:v:5 3000k -c:v:5 libvpx-vp9 -filter:v:5 "scale=1280:-2"  \
           -use_timeline 1  -use_template 1 -adaptation_sets "id=0,streams=0,1,2 id=1,streams=3,4,5 id=2,streams=a" \
           -threads 8 -crf 3 -seg_duration 5 -hls_init_time 1 -hls_time 5 -hls_playlist true -f dash "$2"

    The issue is, in the output, I always get bandwidth as 200k for vp9 codec(see output below), while for same video bandwidth for h264 codec varies as par resolution and quite less, I expected vp9 to be even less as it compresses more. I have tested using multiple different options like : -b:v, -deadline, -cpu-used -crf, etc, but not working expected with different values of these, What am I missing ?

    Sample output mpd file :

    &lt;?xml version="1.0" encoding="utf-8"?>
    <mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediapresentationduration="PT25.4S" minbuffertime="PT15.0S">
       <programinformation>
       </programinformation>
       <period start="PT0.0S">
           <adaptationset contenttype="video" segmentalignment="true" bitstreamswitching="true" lang="und">
               <representation mimetype="video/mp4" codecs="avc1.64000c" bandwidth="104972" width="320" height="180" framerate="24000/1001">
                   <segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
                       <segmenttimeline>
                           <s t="0" d="130130"></s>
                           <s d="250250"></s>
                           <s d="176176"></s>
                           <s d="54054"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
               <representation mimetype="video/mp4" codecs="avc1.64001e" bandwidth="227233" width="640" height="360" framerate="24000/1001">
                   <segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
                       <segmenttimeline>
                           <s t="0" d="130130"></s>
                           <s d="250250"></s>
                           <s d="180180"></s>
                           <s d="50050"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
               <representation mimetype="video/mp4" codecs="avc1.64001f" bandwidth="616878" width="1280" height="720" framerate="24000/1001">
                   <segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
                       <segmenttimeline>
                           <s t="0" d="130130"></s>
                           <s d="250250"></s>
                           <s d="180180"></s>
                           <s d="50050"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
           </adaptationset>
           <adaptationset contenttype="video" segmentalignment="true" bitstreamswitching="true" lang="und">
               <representation mimetype="video/mp4" codecs="vp09.00.11.08" bandwidth="200000" width="320" height="180" framerate="24000/1001">
                   <segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
                       <segmenttimeline>
                           <s t="0" d="128128" r="3"></s>
                           <s d="98098"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
               <representation mimetype="video/mp4" codecs="vp09.00.21.08" bandwidth="200000" width="640" height="360" framerate="24000/1001">
                   <segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
                       <segmenttimeline>
                           <s t="0" d="128128" r="3"></s>
                           <s d="98098"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
               <representation mimetype="video/mp4" codecs="vp09.00.31.08" bandwidth="200000" width="1280" height="720" framerate="24000/1001">
                   <segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
                       <segmenttimeline>
                           <s t="0" d="128128" r="3"></s>
                           <s d="98098"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
           </adaptationset>
           <adaptationset contenttype="audio" segmentalignment="true" bitstreamswitching="true" lang="eng">
               <representation mimetype="audio/mp4" codecs="mp4a.40.2" bandwidth="128000" audiosamplingrate="44100">
                   <audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></audiochannelconfiguration>
                   <segmenttemplate timescale="44100" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
                       <segmenttimeline>
                           <s t="0" d="235520" r="3"></s>
                           <s d="180224"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
           </adaptationset>
       </period>
    </mpd>

    I am using this video, but it is coming same for all 30 sec video I have tried.