Recherche avancée

Médias (91)

Autres articles (22)

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

  • Le plugin : Podcasts.

    14 juillet 2010, par

    Le problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
    Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
    Types de fichiers supportés dans les flux
    Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

Sur d’autres sites (4153)

  • bebop2 modified CV build version of program creates SIGSEGV on raspberry pi 3

    14 mai 2017, par angRyn00b

    I am trying to navigate bebop2 autonomously using raspberry pi 3. I am getting the raw format from bebop2 and decoding it using ffmpeg. It runs completely fine on intel architecture. I tried to cross compile it for arm and it was successful. It runs fine but after a few seconds it crashes and gives SIGSEGV fault. I have tried gdb to bt the problem but it gives an error of memcpy() from /usr/lib/arm-linux-gnuaebihf/libarmmem.so.

    I tried to remove the non-arm instructions dependencies in the first place ; https://raspberrypi.stackexchange.com/questions/29117/process-terminate-with-sigill-using-valgrind/66621#66621

    But then I got an error of memcpy.S no such file or directory.

    I don’t know what to do and I am stuck now.

    [EDIT:1]

    valgrind output :

    valgrind ./Controller
    ==1361== Memcheck, a memory error detector
    ==1361== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
    ==1361== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
    ==1361== Command: ./Controller
    ==1361==
    ./Controller
    ==1361== Invalid read of size 8
    ==1361==    at 0x4845004: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361==  Address 0xd1cc50c is 12 bytes inside a block of size 18 alloc'd
    ==1361==    at 0x4833970: malloc (vg_replace_malloc.c:263)
    ==1361==    by 0xAFC77B3: ??? (in /usr/lib/arm-linux-gnueabihf/libtasn1.so.6.3.2)
    ==1361==
    ==1361== Invalid read of size 4
    ==1361==    at 0x4845030: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361==  Address 0xd1cc72c is 20 bytes inside a block of size 22 alloc'd
    ==1361==    at 0x4833970: malloc (vg_replace_malloc.c:263)
    ==1361==    by 0xAFC77B3: ??? (in /usr/lib/arm-linux-gnueabihf/libtasn1.so.6.3.2)
    ==1361==
    ==1361== Invalid read of size 8
    ==1361==    at 0x484501C: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361==  Address 0xd1ccf9c is 20 bytes inside a block of size 26 alloc'd
    ==1361==    at 0x4833970: malloc (vg_replace_malloc.c:263)
    ==1361==    by 0xAFC77B3: ??? (in /usr/lib/arm-linux-gnueabihf/libtasn1.so.6.3.2)
    ==1361==
    ==1361== Invalid read of size 8
    ==1361==    at 0x4844FEC: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361==  Address 0xd1d59ac is 28 bytes inside a block of size 34 alloc'd
    ==1361==    at 0x4833970: malloc (vg_replace_malloc.c:263)
    ==1361==    by 0xAFC77B3: ??? (in /usr/lib/arm-linux-gnueabihf/libtasn1.so.6.3.2)
    ==1361==
    ==1361== Invalid read of size 8
    ==1361==    at 0x4844F8C: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361==  Address 0xd1e7a24 is 20 bytes inside a block of size 26 alloc'd
    ==1361==    at 0x4833970: malloc (vg_replace_malloc.c:263)
    ==1361==    by 0xAFC77B3: ??? (in /usr/lib/arm-linux-gnueabihf/libtasn1.so.6.3.2)
    ==1361==
    disInstr(arm): unhandled instruction: 0xEE190F1D
                    cond=14(0xE) 27:20=225(0xE1) 4:4=1 3:0=13(0xD)
    ==1361== valgrind: Unrecognised instruction at address 0xcc78de8.
    ==1361==    at 0xCC78DE8: ??? (in /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0)
    ==1361== Your program just tried to execute an instruction that Valgrind
    ==1361== did not recognise.  There are two possible reasons for this.
    ==1361== 1. Your program has a bug and erroneously jumped to a non-code
    ==1361==    location.  If you are running Memcheck and you just saw a
    ==1361==    warning about a bad jump, it's probably your program's fault.
    ==1361== 2. The instruction is legitimate but Valgrind doesn't handle it,
    ==1361==    i.e. it's Valgrind's fault.  If you think this is the case or
    ==1361==    you are not sure, please let us know and we'll try to fix it.
    ==1361== Either way, Valgrind will now raise a SIGILL signal which will
    ==1361== probably kill your program.
    ==1361== Invalid read of size 4
    ==1361==    at 0x4844BB8: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361==  Address 0xd1eb788 is 48 bytes inside a block of size 50 alloc'd
    ==1361==    at 0x4833F2C: operator new(unsigned int) (vg_replace_malloc.c:282)
    ==1361==    by 0x77EC9E7: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&amp;) (in /usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.20)
    ==1361==
    ==1361== Invalid read of size 4
    ==1361==    at 0x4844FA0: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361==  Address 0xd1eb7f0 is 48 bytes inside a block of size 50 alloc'd
    ==1361==    at 0x4833F2C: operator new(unsigned int) (vg_replace_malloc.c:282)
    ==1361==    by 0x77EC9E7: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&amp;) (in /usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.20)
    ==1361==
    disInstr(arm): unhandled instruction: 0xF1010200
                    cond=15(0xF) 27:20=16(0x10) 4:4=0 3:0=0(0x0)
    ==1361== valgrind: Unrecognised instruction at address 0x48426f4.
    ==1361==    at 0x48426F4: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361== Your program just tried to execute an instruction that Valgrind
    ==1361== did not recognise.  There are two possible reasons for this.
    ==1361== 1. Your program has a bug and erroneously jumped to a non-code
    ==1361==    location.  If you are running Memcheck and you just saw a
    ==1361==    warning about a bad jump, it's probably your program's fault.
    ==1361== 2. The instruction is legitimate but Valgrind doesn't handle it,
    ==1361==    i.e. it's Valgrind's fault.  If you think this is the case or
    ==1361==    you are not sure, please let us know and we'll try to fix it.
    ==1361== Either way, Valgrind will now raise a SIGILL signal which will
    ==1361== probably kill your program.
    ==1361==
    ==1361== Process terminating with default action of signal 4 (SIGILL)
    ==1361==  Illegal opcode at address 0x48426F4
    ==1361==    at 0x48426F4: ??? (in /usr/lib/arm-linux-gnueabihf/libarmmem.so)
    ==1361==
    ==1361== HEAP SUMMARY:
    ==1361==     in use at exit: 541,641 bytes in 1,173 blocks
    ==1361==   total heap usage: 1,980 allocs, 807 frees, 571,016 bytes allocated
    ==1361==
    ==1361== LEAK SUMMARY:
    ==1361==    definitely lost: 0 bytes in 0 blocks
    ==1361==    indirectly lost: 0 bytes in 0 blocks
    ==1361==      possibly lost: 410,404 bytes in 190 blocks
    ==1361==    still reachable: 131,237 bytes in 983 blocks
    ==1361==         suppressed: 0 bytes in 0 blocks
    ==1361== Rerun with --leak-check=full to see details of leaked memory
    ==1361==
    ==1361== For counts of detected and suppressed errors, rerun with: -v
    ==1361== ERROR SUMMARY: 24 errors from 7 contexts (suppressed: 0 from 0)
    Illegal instruction
    </char></char>

    bt output :

    (gdb) bt
    #0 0x76fbc3a0 in memcmp () from /usr/lib/arm-linux-gnueabihf/libarmmem.so
    #1 0x00000000 in ?? ()

    disassemble output (0x76fbc3a0) :

    => 0x76fbc3a0 &lt;+7344>:  vldmiacs    r1!, {d7}

    x/5i $pc output :

    (gdb) x/5i $pc
    => 0x76fbc3a0 :    vldmiacs    r1!, {d7}
      0x76fbc3a4 :    vstmiami    r0!, {s13}
      0x76fbc3a8 :    vstmiacs    r0!, {d7}
      0x76fbc3ac :    lsls    lr, r12, #27
      0x76fbc3b0 :    vldmiami    r1!, {d2-d3}
  • record video from website using puppeteer + ffmpeg

    8 novembre 2020, par rudolfninja

    I'm trying to record video from website using the way similar to puppeteer-recorder, but I want to stop recording by myself and then save it to file (after I stopped it). I wrote simple web service for this purpose :

    &#xA;

    var express = require(&#x27;express&#x27;);&#xA;var app = express();&#xA;const { spawn } = require(&#x27;child_process&#x27;);&#xA;const puppeteer = require(&#x27;puppeteer&#x27;);&#xA;var record = true;&#xA;&#xA;&#xA;app.get(&#x27;/startRecord&#x27;, function (req, res)&#xA;{&#xA;const frun_record = async () => {&#xA;    console.log("Start recording");&#xA;    const browser = await puppeteer.launch();&#xA;    const page = await browser.newPage();&#xA;    await page.goto(&#x27;http://worldfoodclock.com/&#x27;, { waitUntil: &#x27;networkidle2&#x27; });&#xA;    var ffmpegPath = &#x27;ffmpeg&#x27;;&#xA;    var fps = 60;&#xA;&#xA;    var outFile = &#x27;E:\\Code\\video-record\\output.webm&#x27;;&#xA;&#xA;    const args = ffmpegArgs(fps);&#xA;&#xA;    args.push(outFile);&#xA;&#xA;    const ffmpeg = spawn(ffmpegPath, args);&#xA;&#xA;    const closed = new Promise((resolve, reject) => {&#xA;        ffmpeg.on(&#x27;error&#x27;, reject);&#xA;        ffmpeg.on(&#x27;close&#x27;, resolve);&#xA;    });&#xA;&#xA;    console.log("Entering loop");&#xA;&#xA;    while (record) {&#xA;        let screenshot = await page.screenshot({ omitBackground: true });&#xA;        await write(ffmpeg.stdin, screenshot);&#xA;    }&#xA;    ffmpeg.stdin.end();&#xA;    console.log("Recording stopped");&#xA;    await closed;&#xA;};&#xA;frun_record();&#xA;res.end( "starting recording" );&#xA;})&#xA;&#xA;app.get(&#x27;/stopRecord&#x27;, function (req, res) {&#xA; record = false;&#xA; res.end( "stopped" );&#xA;})&#xA;&#xA;const ffmpegArgs = fps => [&#xA;  &#x27;-y&#x27;,&#xA;  &#x27;-f&#x27;,&#xA;  &#x27;image2pipe&#x27;,&#xA;  &#x27;-r&#x27;,&#xA;  `${&#x2B;fps}`,&#xA;  &#x27;-i&#x27;,&#xA;  &#x27;-&#x27;,&#xA;  &#x27;-c:v&#x27;,&#xA;  &#x27;libvpx&#x27;,&#xA;  &#x27;-auto-alt-ref&#x27;,&#xA;  &#x27;0&#x27;,&#xA;  &#x27;-pix_fmt&#x27;,&#xA;  &#x27;yuva420p&#x27;,&#xA;  &#x27;-metadata:s:v:0&#x27;,&#xA;  &#x27;alpha_mode="1"&#x27;&#xA;];&#xA;&#xA;const write = (stream, buffer) =>&#xA;    new Promise((resolve, reject) => {&#xA;        stream.write(buffer, error => {&#xA;            if (error) reject(error);&#xA;            else resolve();&#xA;        });&#xA;    });&#xA;&#xA;var server = app.listen(8081, function () {&#xA;var host = server.address().address&#xA;var port = server.address().port&#xA;console.log("Example app listening at http://%s:%s", host, port)&#xA;})&#xA;

    &#xA;

    But it always record only 1 second video, looks like stream is just overwritten. I tried just save screenshots on disk and it was more than 1 second of video.&#xA;So the main question is how to put all the screenshots into the stream and then save it on disk ? And another thing I'd like to know is what the frequency of taking screenshots from web page ?

    &#xA;

  • Merge commit ’3f1f6053013d0015e9f115a91a11744807649a07’

    3 octobre 2015, par Hendrik Leppkes
    Merge commit ’3f1f6053013d0015e9f115a91a11744807649a07’
    

    * commit ’3f1f6053013d0015e9f115a91a11744807649a07’ :
    configure : address a copy-paste typo

    Merged-by : Hendrik Leppkes <h.leppkes@gmail.com>