Recherche avancée

Médias (29)

Mot : - Tags -/Musique

Autres articles (55)

  • 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

  • Demande de création d’un canal

    12 mars 2010, par

    En fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
    Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)

  • Pas question de marché, de cloud etc...

    10 avril 2011

    Le vocabulaire utilisé sur ce site essaie d’éviter toute référence à la mode qui fleurit allègrement
    sur le web 2.0 et dans les entreprises qui en vivent.
    Vous êtes donc invité à bannir l’utilisation des termes "Brand", "Cloud", "Marché" etc...
    Notre motivation est avant tout de créer un outil simple, accessible à pour tout le monde, favorisant
    le partage de créations sur Internet et permettant aux auteurs de garder une autonomie optimale.
    Aucun "contrat Gold ou Premium" n’est donc prévu, aucun (...)

Sur d’autres sites (6427)

  • using ASIO to implement interrupt_callback for ffmpeg

    22 décembre 2020, par Sergey Kolesnik

    I am trying to properly implement an interrupt_callback using ASIO timer for avformat_open_input, av_read_frame and possibly for other functions. I can't get it to work when receiving a udp video stream.

    


    I've written a class that waits for periods of time using ASIO timer. Its constructor takes an io_context from the thread of avformat_open_input execution and an overall timeout period to wait for. By default it waits for 20 ms each time, but can be set to wait longer periods.

    


    class InterruptCallback&#xA;{&#xA;public:&#xA;&#xA;    constexpr static std::chrono::milliseconds basic_period()&#xA;    {&#xA;        return std::chrono::milliseconds(20);&#xA;    }&#xA;&#xA;    explicit InterruptCallback(asio::io_context &amp;asioContext,&#xA;                               std::chrono::milliseconds timeout,&#xA;                               std::chrono::milliseconds period =&#xA;                               basic_period())&#xA;            : waitingPeriod_(period),&#xA;              attempts_(timeout / waitingPeriod_),&#xA;              timer_(asioContext)&#xA;    {&#xA;        attempts_ = attempts_ ? attempts_ : 1;&#xA;    }&#xA;&#xA;    int wait()&#xA;    {&#xA;        timer_.expires_after(waitingPeriod_);&#xA;        timer_.wait();&#xA;        return int(!--attempts_);&#xA;    }&#xA;&#xA;    static int wait(void *opaqueCallback)&#xA;    {&#xA;        auto callback = reinterpret_cast<interruptcallback>(opaqueCallback);&#xA;        return callback->wait();&#xA;    }&#xA;&#xA;private:&#xA;    std::chrono::milliseconds waitingPeriod_;&#xA;    size_t attempts_;&#xA;&#xA;    asio::steady_timer timer_;&#xA;};&#xA;</interruptcallback>

    &#xA;

    This approach works when no udp stream is being received. Also it returns relatively fast when a udp is being received.

    &#xA;

    However, when I set a AVFormatContext::interrupt_callback I get a lot of errors on decoding.&#xA;avformat_find_stream_info can return fast enough, but AVCodecContext will be invalid.&#xA;Or it can take a very long time to execute.

    &#xA;

        asio::io_context mainThreadContext{};&#xA;&#xA;    AVFormatContext *pFormatContext = avformat_alloc_context();&#xA;&#xA;    {&#xA;        InterruptCallback interruptCallback{mainThreadContext,&#xA;                                            std::chrono::milliseconds(2000)&#xA;        };&#xA;&#xA;        pFormatContext->interrupt_callback.callback = &amp;InterruptCallback::wait;&#xA;        pFormatContext->interrupt_callback.opaque = &amp;interruptCallback;&#xA;&#xA;        const auto resOpen = avformat_open_input(&amp;pFormatContext,&#xA;                                                 containerAddress.c_str(),&#xA;                                                 nullptr,&#xA;                                                 nullptr);&#xA;        if (resOpen &lt; 0)&#xA;        {&#xA;            std::cerr &lt;&lt; "Failed to open stream from: " &lt;&lt; containerAddress &lt;&lt; std::endl;&#xA;            return -1;&#xA;        }&#xA;    }&#xA;    auto avFormatExit = sg::make_scope_exit(&#xA;            [&amp;pFormatContext]&#xA;            {&#xA;                avformat_close_input(&amp;pFormatContext);&#xA;            });&#xA;&#xA;    pFormatContext->flags = AVFMT_FLAG_NOBUFFER | AVFMT_FLAG_FLUSH_PACKETS;&#xA;&#xA;    int error = avformat_find_stream_info(pFormatContext, nullptr);&#xA;

    &#xA;

    It can happen on the line where I query the stream info, but is also frequent for decoding loop.&#xA;These are some of the possible errors :

    &#xA;

    [h264 @ 00000000027f4000] non-existing PPS 0 referenced&#xA;[h264 @ 00000000027f4000] non-existing PPS 0 referenced&#xA;[h264 @ 00000000027f4000] decode_slice_header error&#xA;[h264 @ 00000000027f4000] no frame!&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 7217 DC, 7217 AC, 7217 MV errors in I frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 7588 DC, 7588 AC, 7588 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] error while decoding MB 83 5, bytestream -6&#xA;[h264 @ 00000000027f4000] concealing 7526 DC, 7526 AC, 7526 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 7072 DC, 7072 AC, 7072 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 7651 DC, 7651 AC, 7651 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 5806 DC, 5806 AC, 5806 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] left block unavailable for requested intra mode&#xA;[h264 @ 00000000027f4000] error while decoding MB 0 5, bytestream 8107&#xA;[h264 @ 00000000027f4000] concealing 7609 DC, 7609 AC, 7609 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6669 DC, 6669 AC, 6669 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7254 DC, 7254 AC, 7254 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7048 DC, 7048 AC, 7048 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7061 DC, 7061 AC, 7061 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7220 DC, 7220 AC, 7220 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5722 DC, 5722 AC, 5722 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7230 DC, 7230 AC, 7230 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7085 DC, 7085 AC, 7085 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7745 DC, 7745 AC, 7745 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6907 DC, 6907 AC, 6907 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7301 DC, 7301 AC, 7301 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5664 DC, 5664 AC, 5664 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] error while decoding MB 105 8, bytestream -8&#xA;[h264 @ 00000000051a0040] concealing 7144 DC, 7144 AC, 7144 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7487 DC, 7487 AC, 7487 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6912 DC, 6912 AC, 6912 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] error while decoding MB 39 8, bytestream -6&#xA;[h264 @ 00000000051a0040] concealing 7210 DC, 7210 AC, 7210 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5262 DC, 5262 AC, 5262 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] error while decoding MB 54 8, bytestream -5&#xA;[h264 @ 00000000051a0040] concealing 7195 DC, 7195 AC, 7195 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7298 DC, 7298 AC, 7298 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6819 DC, 6819 AC, 6819 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5692 DC, 5692 AC, 5692 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6684 DC, 6684 AC, 6684 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7600 DC, 7600 AC, 7600 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6123 DC, 6123 AC, 6123 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7689 DC, 7689 AC, 7689 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6846 DC, 6846 AC, 6846 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] left block unavailable for requested intra4x4 mode -1&#xA;[h264 @ 00000000051a0040] error while decoding MB 0 10, bytestream 1892&#xA;[h264 @ 00000000051a0040] concealing 7009 DC, 7009 AC, 7009 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5288 DC, 5288 AC, 5288 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7932 DC, 7932 AC, 7932 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7039 DC, 7039 AC, 7039 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] error while decoding MB 105 11, bytestream -5&#xA;[h264 @ 00000000051a0040] concealing 6784 DC, 6784 AC, 6784 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6918 DC, 6918 AC, 6918 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6483 DC, 6483 AC, 6483 MV errors in P frame&#xA;[h264 @ 00000000051a0040] error while decoding MB 118 1, bytestream -10&#xA;[h264 @ 00000000051a0040] concealing 7971 DC, 7971 AC, 7971 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] QP 4294967266 out of range&#xA;[h264 @ 00000000051a0040] decode_slice_header error&#xA;[h264 @ 00000000051a0040] no frame!&#xA;Error sending packet for decoding&#xA;&#xA;Process finished with exit code 1&#xA;

    &#xA;

    When I don't set an interrupt_callback, no errors occur, stream info is found very quickly.

    &#xA;

    So, the questions are :

    &#xA;

      &#xA;
    1. What am I doing wrong when implementing the interrupt callback ?
    2. &#xA;

    3. Why don't I get an error when I receive an invalid codec context from avformat_find_stream_info ?
    4. &#xA;

    &#xA;

  • ALSA buffer xrun induced by low quality source in ffmpeg capture

    8 janvier 2021, par Peter Becich

    I am attempting to transfer some old Video 8 tapes to my computer, though an EasyCap USB stick and the motherboard's sound line-in, on Ubuntu. I believe the arguments are correctly laid out below to capture from two independent streams, and encode them both into the output MP4 file.

    &#xA;&#xA;

    Edit :

    &#xA;&#xA;

    I can simplify the question a bit, now.

    &#xA;&#xA;

    ALSA buffer overrun (or underrun ?) is induced by the unreliable/noisy audio source. For instance, if ffmpeg captures the beginning of tape playback, this causes "buffer xrun" far beyond when the tape gets up to speed and playback should be normal.

    &#xA;&#xA;

    It is interesting that the bitrate shown in the ffmpeg log shoots up higher than normal when it's producing a garbage output ! (Is this bitrate a sum of of audio and video bitrates ?)

    &#xA;&#xA;

    I've tried a couple of audio encoding codecs, and had the same problem.

    &#xA;&#xA;

    Using libfdk_aac :

    &#xA;&#xA;

      Metadata:&#xA;    encoder         : Lavf56.15.102&#xA;    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc&#xA;    Metadata:&#xA;      encoder         : Lavc56.13.100 libx264&#xA;    Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0] / 0x0040), 48000 Hz, mono, s16, 128 kb/s&#xA;    Metadata:&#xA;      encoder         : Lavc56.13.100 libfdk_aac&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))&#xA;  Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac))&#xA;[alsa @ 0x22038a0] ALSA buffer xrun.  0kB time=00:00:00.00 bitrate=N/A    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.1934kB time=00:00:02.76 bitrate=5723.5kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.4795kB time=00:00:05.49 bitrate=7150.1kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.7668kB time=00:00:08.21 bitrate=7646.1kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.1475kB time=00:00:10.94 bitrate=8588.9kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.3822kB time=00:00:13.66 bitrate=8289.0kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.5388kB time=00:00:16.38 bitrate=7695.0kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.6896kB time=00:00:19.10 bitrate=7244.0kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.8980kB time=00:00:21.84 bitrate=7118.8kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.2032kB time=00:00:24.55 bitrate=7349.3kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.4612kB time=00:00:27.27 bitrate=7391.1kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.6660kB time=00:00:29.98 bitrate=7284.6kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.9123kB time=00:00:32.68 bitrate=7299.3kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.0641kB time=00:00:35.39 bitrate=7091.7kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.2601kB time=00:00:38.13 bitrate=7002.6kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.5828kB time=00:00:40.87 bitrate=7181.0kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.8481kB time=00:00:43.60 bitrate=7229.9kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.1461kB time=00:00:46.34 bitrate=7328.0kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.3982kB time=00:00:49.06 bitrate=7342.7kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.6565kB time=00:00:51.77 bitrate=7367.8kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.9718kB time=00:00:54.51 bitrate=7471.3kbits/s    &#xA;[alsa @ 0x22038a0] ALSA buffer xrun.2341kB time=00:00:57.25 bitrate=7489.2kbits/s    &#xA;^Cframe= 1760 fps= 29 q=-1.0 Lsize=   53946kB time=00:01:00.04 bitrate=7360.3kbits/s    &#xA;video:53880kB audio:53kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.022994%&#xA;[libx264 @ 0x2217ac0] frame I:8     Avg QP:24.00  size: 55686&#xA;[libx264 @ 0x2217ac0] frame P:1752  Avg QP:27.66  size: 31237&#xA;[libx264 @ 0x2217ac0] mb I  I16..4: 100.0%  0.0%  0.0%&#xA;[libx264 @ 0x2217ac0] mb P  I16..4: 15.0%  0.0%  0.0%  P16..4: 80.2%  0.0%  0.0%  0.0%  0.0%    skip: 4.8%&#xA;[libx264 @ 0x2217ac0] coded y,uvDC,uvAC intra: 45.3% 86.6% 59.4% inter: 65.7% 81.3% 11.5%&#xA;[libx264 @ 0x2217ac0] i16 v,h,dc,p: 40% 25% 26%  9%&#xA;[libx264 @ 0x2217ac0] i8c dc,h,v,p: 45% 24% 19% 12%&#xA;[libx264 @ 0x2217ac0] kb/s:7516.07&#xA;Received signal 2: terminating.&#xA;

    &#xA;&#xA;

    Using libvorbis :

    &#xA;&#xA;

      Metadata:&#xA;    encoder         : Lavf56.15.102&#xA;    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc&#xA;    Metadata:&#xA;      encoder         : Lavc56.13.100 libx264&#xA;    Stream #0:1: Audio: vorbis (libvorbis) ([221][0][0][0] / 0x00DD), 48000 Hz, mono, fltp, 128 kb/s&#xA;    Metadata:&#xA;      encoder         : Lavc56.13.100 libvorbis&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))&#xA;  Stream #1:0 -> #0:1 (pcm_s16le (native) -> vorbis (libvorbis))&#xA;[alsa @ 0x1a948a0] ALSA buffer xrun.  0kB time=00:00:00.00 bitrate=N/A    &#xA;[alsa @ 0x1a948a0] ALSA buffer xrun. 402kB time=00:00:04.37 bitrate= 752.3kbits/s    &#xA;[alsa @ 0x1a948a0] ALSA buffer xrun.4122kB time=00:00:08.80 bitrate=3833.0kbits/s    &#xA;[alsa @ 0x1a948a0] ALSA buffer xrun.8722kB time=00:00:13.14 bitrate=5436.3kbits/s    &#xA;[alsa @ 0x1a948a0] ALSA buffer xrun.3903kB time=00:00:17.51 bitrate=6502.2kbits/s    &#xA;[alsa @ 0x1a948a0] ALSA buffer xrun.6625kB time=00:00:21.89 bitrate=6221.4kbits/s    &#xA;[alsa @ 0x1a948a0] ALSA buffer xrun.9548kB time=00:00:26.28 bitrate=6092.5kbits/s    &#xA;^Cframe=  851 fps= 26 q=-1.0 Lsize=   22018kB time=00:00:30.69 bitrate=5875.3kbits/s    &#xA;video:21996kB audio:12kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 0.044897%&#xA;[libx264 @ 0x1aa8ac0] frame I:4     Avg QP:23.50  size: 62405&#xA;[libx264 @ 0x1aa8ac0] frame P:847   Avg QP:25.58  size: 26297&#xA;[libx264 @ 0x1aa8ac0] mb I  I16..4: 100.0%  0.0%  0.0%&#xA;[libx264 @ 0x1aa8ac0] mb P  I16..4: 13.2%  0.0%  0.0%  P16..4: 72.0%  0.0%  0.0%  0.0%  0.0%    skip:14.8%&#xA;[libx264 @ 0x1aa8ac0] coded y,uvDC,uvAC intra: 40.6% 81.0% 58.6% inter: 58.8% 72.7% 8.6%&#xA;[libx264 @ 0x1aa8ac0] i16 v,h,dc,p: 41% 28% 22%  9%&#xA;[libx264 @ 0x1aa8ac0] i8c dc,h,v,p: 54% 19% 16% 11%&#xA;[libx264 @ 0x1aa8ac0] kb/s:6345.60&#xA;Received signal 2: terminating.&#xA;

    &#xA;&#xA;


    &#xA;&#xA;

    ffmpeg's detection of the ALSA stream is seemingly goofed up by the inconsistencies of the tape. In the failure case, only short blips of the tapes audio exist in the output MP4. The audio bitrate of the output file is less than 10 kbps, averaged out across the whole file. The output video seems to be fine, even though the low frames-per-second in the failure case log below.

    &#xA;&#xA;

    The audio and video streams can be captured fine for short amounts of time before a source error occurs ; this provides the success case log. The failure case log was created by intentionally making an error in the source streams — turning on the camera makes a brief noisy signal.

    &#xA;&#xA;

    Is there a setting that needs to be forced to keep ffmpeg recording the audio stream, even when the tape is blank or noisy ?

    &#xA;&#xA;

    Could it be that the libfdk_aac audio encoder is tripped up by the low quality source ?

    &#xA;&#xA;

    The relevant line ; rawvideo stream is piped to this in script at bottom :

    &#xA;&#xA;

    ffmpeg -pixel_format uyvy422 -s:v 720x480 -framerate 29.97 -f rawvideo \&#xA;-i $PIPE  -f alsa -i hw:0,0 -vf scale=w=720:h=540 -vcodec libx264 \&#xA;-preset ultrafast -shortest -c:a libfdk_aac -b:a 128k -af pan=1:c0=c0  \&#xA;-ar 96000 $OUTFILE&#xA;

    &#xA;&#xA;

    The ar argument was one attempt to force recording.

    &#xA;&#xA;

    ffmpeg log file for (short-lived) success ; high frames-per-second captured :

    &#xA;&#xA;

    ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers&#xA;  built on Jan 11 2015 17:53:45 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)&#xA;  configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libpulse --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvo-aacenc --enable-libvidstab&#xA;  libavutil      54. 15.100 / 54. 15.100&#xA;  libavcodec     56. 13.100 / 56. 13.100&#xA;  libavformat    56. 15.102 / 56. 15.102&#xA;  libavdevice    56.  3.100 / 56.  3.100&#xA;  libavfilter     5.  2.103 /  5.  2.103&#xA;  libavresample   2.  1.  0 /  2.  1.  0&#xA;  libswscale      3.  1.101 /  3.  1.101&#xA;  libswresample   1.  1.100 /  1.  1.100&#xA;  libpostproc    53.  3.100 / 53.  3.100&#xA;Input #0, rawvideo, from &#x27;/tmp/somagic-pipe&#x27;:&#xA;  Duration: N/A, start: 0.000000, bitrate: 165722 kb/s&#xA;    Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 720x480, 165722 kb/s, 29.97 tbr, 29.97 tbn, 29.97 tbc&#xA;Home directory not accessible: Permission denied&#xA;Guessed Channel Layout for  Input Stream #1.0 : stereo&#xA;Input #1, alsa, from &#x27;hw:0,0&#x27;:&#xA;  Duration: N/A, start: 1423202268.577088, bitrate: 1536 kb/s&#xA;    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s&#xA;No pixel format specified, yuv422p for H.264 encoding chosen.&#xA;Use -pix_fmt yuv420p for compatibility with outdated media players.&#xA;[Parsed_pan_0 @ 0x3335d60] This syntax is deprecated. Use &#x27;|&#x27; to separate the list items.&#xA;Single channel layout &#x27;1&#x27; is interpreted as a number of channels, switch to the syntax &#x27;1c&#x27; otherwise it will be interpreted as a channel layout number in a later version&#xA;[Parsed_pan_0 @ 0x3335d60] Pure channel mapping detected: 0&#xA;[libx264 @ 0x3364bc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64&#xA;[libx264 @ 0x3364bc0] profile High 4:2:2, level 3.1, 4:2:2 8-bit&#xA;[libx264 @ 0x3364bc0] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0&#xA;Output #0, mp4, to &#x27;/home/peterbecich/easycap/Videos/fpv_video_02_05_2015_21_57_48.mp4&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf56.15.102&#xA;    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 720x540, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc&#xA;    Metadata:&#xA;      encoder         : Lavc56.13.100 libx264&#xA;    Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0] / 0x0040), 96000 Hz, mono, s16, 128 kb/s&#xA;    Metadata:&#xA;      encoder         : Lavc56.13.100 libfdk_aac&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))&#xA;  Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac))&#xA;Press [q] to stop, [?] for help&#xA;frame=   13 fps=0.0 q=26.0 size=     187kB time=00:00:00.30 bitrate=5102.7kbits/s    &#xA;frame=   29 fps= 29 q=26.0 size=     469kB time=00:00:00.83 bitrate=4607.6kbits/s    &#xA;frame=   44 fps= 29 q=26.0 size=     755kB time=00:00:01.33 bitrate=4635.2kbits/s    &#xA;frame=   59 fps= 29 q=26.0 size=    1024kB time=00:00:01.83 bitrate=4572.1kbits/s    &#xA;frame=   74 fps= 29 q=26.0 size=    1279kB time=00:00:02.33 bitrate=4486.5kbits/s    &#xA;frame=   89 fps= 29 q=26.0 size=    1516kB time=00:00:02.83 bitrate=4378.0kbits/s    &#xA;frame=  104 fps= 29 q=26.0 size=    1752kB time=00:00:03.33 bitrate=4301.0kbits/s    &#xA;frame=  119 fps= 29 q=26.0 size=    1991kB time=00:00:03.83 bitrate=4251.1kbits/s    &#xA;frame=  135 fps= 30 q=26.0 size=    2245kB time=00:00:04.37 bitrate=4207.5kbits/s    &#xA;frame=  150 fps= 30 q=26.0 size=    2524kB time=00:00:04.87 bitrate=4245.0kbits/s    &#xA;frame=  165 fps= 30 q=26.0 size=    2808kB time=00:00:05.37 bitrate=4282.0kbits/s    &#xA;frame=  180 fps= 30 q=26.0 size=    3091kB time=00:00:05.87 bitrate=4311.5kbits/s    &#xA;[rawvideo @ 0x3350640] Invalid buffer size, packet size 65536 &lt; expected frame_size 691200&#xA;Error while decoding stream #0:0: Invalid argument&#xA;frame=  183 fps= 29 q=-1.0 Lsize=    3247kB time=00:00:06.11 bitrate=4351.5kbits/s    &#xA;video:3142kB audio:96kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.254788%&#xA;[libx264 @ 0x3364bc0] frame I:1     Avg QP:20.00  size:  2289&#xA;[libx264 @ 0x3364bc0] frame P:182   Avg QP:25.99  size: 17664&#xA;[libx264 @ 0x3364bc0] mb I  I16..4: 100.0%  0.0%  0.0%&#xA;[libx264 @ 0x3364bc0] mb P  I16..4: 78.5%  0.0%  0.0%  P16..4: 20.2%  0.0%  0.0%  0.0%  0.0%    skip: 1.4%&#xA;[libx264 @ 0x3364bc0] coded y,uvDC,uvAC intra: 84.1% 71.5% 18.9% inter: 51.9% 63.5% 0.4%&#xA;[libx264 @ 0x3364bc0] i16 v,h,dc,p: 15%  8% 69%  8%&#xA;[libx264 @ 0x3364bc0] i8c dc,h,v,p: 50% 19% 24%  7%&#xA;[libx264 @ 0x3364bc0] kb/s:4215.02&#xA;

    &#xA;&#xA;

    ffmpeg log for failure ; low FPS captured :

    &#xA;&#xA;

    ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers&#xA;  built on Jan 11 2015 17:53:45 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)&#xA;  configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libpulse --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvo-aacenc --enable-libvidstab&#xA;  libavutil      54. 15.100 / 54. 15.100&#xA;  libavcodec     56. 13.100 / 56. 13.100&#xA;  libavformat    56. 15.102 / 56. 15.102&#xA;  libavdevice    56.  3.100 / 56.  3.100&#xA;  libavfilter     5.  2.103 /  5.  2.103&#xA;  libavresample   2.  1.  0 /  2.  1.  0&#xA;  libswscale      3.  1.101 /  3.  1.101&#xA;  libswresample   1.  1.100 /  1.  1.100&#xA;  libpostproc    53.  3.100 / 53.  3.100&#xA;Input #0, rawvideo, from &#x27;/tmp/somagic-pipe&#x27;:&#xA;  Duration: N/A, start: 0.000000, bitrate: 165722 kb/s&#xA;    Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 720x480, 165722 kb/s, 29.97 tbr, 29.97 tbn, 29.97 tbc&#xA;Home directory not accessible: Permission denied&#xA;Guessed Channel Layout for  Input Stream #1.0 : stereo&#xA;Input #1, alsa, from &#x27;hw:0,0&#x27;:&#xA;  Duration: N/A, start: 1423201999.226455, bitrate: 1536 kb/s&#xA;    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s&#xA;No pixel format specified, yuv422p for H.264 encoding chosen.&#xA;Use -pix_fmt yuv420p for compatibility with outdated media players.&#xA;[Parsed_pan_0 @ 0x21cad60] This syntax is deprecated. Use &#x27;|&#x27; to separate the list items.&#xA;Single channel layout &#x27;1&#x27; is interpreted as a number of channels, switch to the syntax &#x27;1c&#x27; otherwise it will be interpreted as a channel layout number in a later version&#xA;[Parsed_pan_0 @ 0x21cad60] Pure channel mapping detected: 0&#xA;[libx264 @ 0x21f9bc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64&#xA;[libx264 @ 0x21f9bc0] profile High 4:2:2, level 3.1, 4:2:2 8-bit&#xA;[libx264 @ 0x21f9bc0] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0&#xA;Output #0, mp4, to &#x27;/home/peterbecich/easycap/Videos/fpv_video_02_05_2015_21_53_18.mp4&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf56.15.102&#xA;    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 720x540, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc&#xA;    Metadata:&#xA;      encoder         : Lavc56.13.100 libx264&#xA;    Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0] / 0x0040), 96000 Hz, mono, s16, 128 kb/s&#xA;    Metadata:&#xA;      encoder         : Lavc56.13.100 libfdk_aac&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))&#xA;  Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac))&#xA;Press [q] to stop, [?] for help&#xA;frame=    1 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=1.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.7 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.5 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.4 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.3 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.3 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;frame=    1 fps=0.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A    &#xA;[alsa @ 0x21e5ac0] ALSA buffer xrun.&#xA;frame=    8 fps=1.3 q=19.0 size=      12kB time=00:00:06.03 bitrate=  15.9kbits/s    &#xA;frame=   23 fps=3.5 q=18.0 size=      12kB time=00:00:06.03 bitrate=  16.4kbits/s    &#xA;frame=   38 fps=5.4 q=18.0 size=      12kB time=00:00:06.03 bitrate=  16.7kbits/s    &#xA;frame=   53 fps=7.0 q=18.0 size=      12kB time=00:00:06.03 bitrate=  16.9kbits/s    &#xA;frame=   68 fps=8.4 q=26.0 size=     146kB time=00:00:06.03 bitrate= 198.8kbits/s    &#xA;frame=   83 fps=9.7 q=26.0 size=     375kB time=00:00:06.03 bitrate= 510.0kbits/s    &#xA;frame=   98 fps= 11 q=26.0 size=     608kB time=00:00:06.03 bitrate= 826.5kbits/s    &#xA;frame=  114 fps= 12 q=26.0 size=     875kB time=00:00:06.03 bitrate=1189.1kbits/s    &#xA;frame=  128 fps= 13 q=26.0 size=    1091kB time=00:00:06.03 bitrate=1481.6kbits/s    &#xA;frame=  144 fps= 14 q=26.0 size=    1339kB time=00:00:06.03 bitrate=1819.2kbits/s    &#xA;frame=  159 fps= 14 q=26.0 size=    1571kB time=00:00:06.03 bitrate=2134.6kbits/s    &#xA;frame=  174 fps= 15 q=26.0 size=    1796kB time=00:00:06.03 bitrate=2440.1kbits/s    &#xA;[alsa @ 0x21e5ac0] ALSA buffer xrun.&#xA;frame=  189 fps= 16 q=26.0 size=    2015kB time=00:00:12.04 bitrate=1370.4kbits/s    &#xA;frame=  204 fps= 16 q=26.0 size=    2238kB time=00:00:12.04 bitrate=1522.3kbits/s    &#xA;frame=  219 fps= 17 q=26.0 size=    2490kB time=00:00:12.04 bitrate=1694.2kbits/s    &#xA;frame=  235 fps= 17 q=26.0 size=    2728kB time=00:00:12.04 bitrate=1855.8kbits/s    &#xA;frame=  250 fps= 18 q=26.0 size=    2973kB time=00:00:12.04 bitrate=2022.4kbits/s    &#xA;[rawvideo @ 0x21e5640] Invalid buffer size, packet size 65536 &lt; expected frame_size 691200&#xA;Error while decoding stream #0:0: Invalid argument&#xA;frame=  261 fps= 18 q=-1.0 Lsize=    3269kB time=00:00:12.06 bitrate=2220.1kbits/s    &#xA;video:3263kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.081101%&#xA;[libx264 @ 0x21f9bc0] frame I:2     Avg QP:21.50  size: 21342&#xA;[libx264 @ 0x21f9bc0] frame P:259   Avg QP:24.22  size: 12734&#xA;[libx264 @ 0x21f9bc0] mb I  I16..4: 100.0%  0.0%  0.0%&#xA;[libx264 @ 0x21f9bc0] mb P  I16..4: 62.8%  0.0%  0.0%  P16..4: 14.2%  0.0%  0.0%  0.0%  0.0%    skip:22.9%&#xA;[libx264 @ 0x21f9bc0] coded y,uvDC,uvAC intra: 77.7% 61.2% 14.1% inter: 19.7% 24.8% 1.6%&#xA;[libx264 @ 0x21f9bc0] i16 v,h,dc,p: 17% 10% 65%  8%&#xA;[libx264 @ 0x21f9bc0] i8c dc,h,v,p: 52% 18% 24%  6%&#xA;[libx264 @ 0x21f9bc0] kb/s:3068.90&#xA;

    &#xA;&#xA;

    The whole script :

    &#xA;&#xA;

    #!/bin/sh&#xA;&#xA;PIPE=/tmp/somagic-pipe&#xA;OUTFILEDIR=~/easycap/Videos/&#xA;LOGDIR=~/.somagic-log/&#xA;NOW=`date &#x2B;"%m_%d_%Y_%H_%M_%S"`&#xA;&#xA;OUTFILE=${OUTFILEDIR}fpv_video_${NOW}.mp4&#xA;&#xA;mkdir $LOGDIR&#xA;&#xA;FFMPEG_LOG=${LOGDIR}ffmpeg.log&#xA;SOMAGIC_LOG=${LOGDIR}somagic.log&#xA;MPLAYER_LOG=${LOGDIR}mplayer.log&#xA;&#xA;rm $PIPE >/dev/null 2>&amp;1&#xA;rm $OUTFILE >/dev/null 2>&amp;1&#xA;&#xA;rm $FFMPEG_LOG&#xA;rm $SOMAGIC_LOG&#xA;rm $MPLAYER_LOG&#xA;&#xA;mkfifo $PIPE >/dev/null 2>&amp;1&#xA;&#xA;ffmpeg -pixel_format uyvy422 -s:v 720x480 -framerate 29.97 -f rawvideo \&#xA;-i $PIPE  -f alsa -i hw:0,0 -vf scale=w=720:h=540 -vcodec libx264 \&#xA;-preset ultrafast -shortest -c:a libfdk_aac -b:a 128k -af pan=1:c0=c0  \&#xA;-ar 96000 $OUTFILE > $FFMPEG_LOG 2>&amp;1 &amp;&#xA;&#xA;somagic-capture --ntsc -c --luminance=2 --lum-aperture=3 2> $SOMAGIC_LOG \&#xA;| tee $PIPE | \&#xA;mplayer -vf yadif,screenshot -demuxer rawvideo -rawvideo \&#xA;"ntsc:format=uyvy:fps=30000/1001" -aspect 4:3 - 2> $MPLAYER_LOG&#xA;&#xA;&#xA;rm $PIPE >/dev/null 2>&amp;1 &#xA;

    &#xA;&#xA;

    Modified from here : https://gist.github.com/Brick85/0b327ac2d3d45e23ed33

    &#xA;

  • avfilter/vsrc_testsrc : Deduplicate options

    3 janvier 2021, par Andreas Rheinhardt
    avfilter/vsrc_testsrc : Deduplicate options
    

    Reviewed-by : Nicolas George <george@nsup.org>
    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@gmail.com>

    • [DH] libavfilter/vsrc_testsrc.c