Recherche avancée

Médias (91)

Autres articles (81)

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • 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 (9932)

  • Visualizing Call Graphs Using Gephi

    1er septembre 2014, par Multimedia Mike — General

    When I was at university studying computer science, I took a basic chemistry course. During an accompanying lab, the teaching assistant chatted me up and asked about my major. He then said, “Computer science ? Well, that’s just typing stuff, right ?”

    My impulsive retort : “Sure, and chemistry is just about mixing together liquids and coming up with different colored liquids, as seen on the cover of my high school chemistry textbook, right ?”


    Chemistry fun

    In fact, pure computer science has precious little to do with typing (as is joked in CS circles, computer science is about computers in the same way that astronomy is about telescopes). However, people who study computer science often pursue careers as programmers, or to put it in fancier professional language, software engineers.

    So, what’s a software engineer’s job ? Isn’t it just typing ? That’s where I’ve been going with this overly long setup. After thinking about it for long enough, I like to say that a software engineer’s trade is managing complexity.

    A few years ago, I discovered Gephi, an open source tool for graph and data visualization. It looked neat but I didn’t have much use for it at the time. Recently, however, I was trying to get a better handle on a large codebase. I.e., I was trying to manage the project’s complexity. And then I thought of Gephi again.

    Prior Work
    One way to get a grip on a large C codebase is to instrument it for profiling and extract details from the profiler. On Linux systems, this means compiling and linking the code using the -pg flag. After running the executable, there will be a gmon.out file which is post-processed using the gprof command.

    GNU software development tools have a reputation for being rather powerful and flexible, but also extremely raw. This first hit home when I was learning how to use the GNU tool for code coverage — gcov — and the way it outputs very raw data that you need to massage with other tools in order to get really useful intelligence.

    And so it is with gprof output. The output gives you a list of functions sorted by the amount of processing time spent in each. Then it gives you a flattened call tree. This is arranged as “during the profiled executions, function c was called by functions a and b and called functions d, e, and f ; function d was called by function c and called functions g and h”.

    How can this call tree data be represented in a more instructive manner that is easier to navigate ? My first impulse (and I don’t think I’m alone in this) is to convert the gprof call tree into a representation suitable for interpretation by Graphviz. Unfortunately, doing so tends to generate some enormous and unwieldy static images.

    Feeding gprof Data To Gephi
    I learned of Gephi a few years ago and recalled it when I developed an interest in gaining better perspective on a large base of alien C code. To understand what this codebase is doing for a particular use case, instrument it with gprof, gather execution data, and then study the code paths.

    How could I feed the gprof data into Gephi ? Gephi supports numerous graphing formats including an XML-based format named GEXF.

    Thus, the challenge becomes converting gprof output to GEXF.

    Which I did.

    Demonstration
    I have been absent from FFmpeg development for a long time, which is a pity because a lot of interesting development has occurred over the last 2-3 years after a troubling period of stagnation. I know that 2 big video codec developments have been HEVC (next in the line of MPEG codecs) and VP9 (heir to VP8’s throne). FFmpeg implements them both now.

    I decided I wanted to study the code flow of VP9. So I got the latest FFmpeg code from git and built it using the options "--extra-cflags=-pg --extra-ldflags=-pg". Annoyingly, I also needed to specify "--disable-asm" because gcc complains of some register allocation snafus when compiling inline ASM in profiling mode (and this is on x86_64). No matter ; ASM isn’t necessary for understanding overall code flow.

    After compiling, the binary ‘ffmpeg_g’ will have symbols and be instrumented for profiling. I grabbed a sample from this VP9 test vector set and went to work.

    ./ffmpeg_g -i vp90-2-00-quantizer-00.webm -f null /dev/null
    gprof ./ffmpeg_g > vp9decode.txt
    convert-gprof-to-gexf.py vp9decode.txt > /bigdisk/vp9decode.gexf
    

    Gephi loads vp9decode.gexf with no problem. Using Gephi, however, can be a bit challenging if one is not versed in any data exploration jargon. I recommend this Gephi getting starting guide in slide deck form. Here’s what the default graph looks like :


    gprof-ffmpeg-gephi-1

    Not very pretty or helpful. BTW, that beefy arrow running from mid-top to lower-right is the call from decode_coeffs_b -> iwht_iwht_4x4_add_c. There were 18774 from the former to the latter in this execution. Right now, the edge thicknesses correlate to number of calls between the nodes, which I’m not sure is the best representation.

    Following the tutorial slide deck, I at least learned how to enable the node labels (function symbols in this case) and apply a layout algorithm. The tutorial shows the force atlas layout. Here’s what the node neighborhood looks like for probing file type :


    gprof-ffmpeg-gephi-2

    Okay, so that’s not especially surprising– avprobe_input_format3 calls all of the *_probe functions in order to automatically determine input type. Let’s find that decode_coeffs_b function and see what its neighborhood looks like :


    gprof-ffmpeg-gephi-3

    That’s not very useful. Perhaps another algorithm might help. I select the Fruchterman–Reingold algorithm instead and get a slightly more coherent representation of the decoding node neighborhood :


    gprof-ffmpeg-gephi-4

    Further Work
    Obviously, I’m just getting started with this data exploration topic. One thing I would really appreciate in such a tool is the ability to interactively travel the graph since that’s what I’m really hoping to get out of this experiment– watching the code flows.

    Perhaps someone else can find better use cases for visualizing call graph data. Thus, I have published the source code for this tool at Github.

  • FFmpeg matlab error : At least one output file must be specified ? [closed]

    3 mars, par as moh

    I'm trying to get I frames from a video using Matlab using this command system(sprintf('ffmpeg -i testVid.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr output_%03d.png')); ,but i get this message

    


     ffmpeg version 7.1-full_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers 
  built with gcc 14.2.0 (Rev1, Built by MSYS2 project) 
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libopenjpeg --enable-libquirc --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-libqrencode --enable-librav1e --enable-libsvtav1 --enable-libvvenc --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-liblc3 --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint 
  libavutil      59. 39.100 / 59. 39.100 
  libavcodec     61. 19.100 / 61. 19.100 
  libavformat    61.  7.100 / 61.  7.100 
  libavdevice    61.  3.100 / 61.  3.100 
  libavfilter    10.  4.100 / 10.  4.100 
  libswscale      8.  3.100 /  8.  3.100 
  libswresample   5.  3.100 /  5.  3.100 
  libpostproc    58.  3.100 / 58.  3.100 
Trailing option(s) found in the command: may be ignored. 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'testVid.mp4': 
  Metadata: 
    major_brand     : isom 
    minor_version   : 512 
    compatible_brands: isomiso2avc1mp41 
    encoder         : Lavf57.83.100 
  Duration: 00:00:02.02, start: 0.000000, bitrate: 12798 kb/s 
  Stream #0:0[0x1](eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuvj420p(pc, progressive), 1280x720 [SAR 1:1 DAR 16:9], 12662 kb/s, 29.74 fps, 30 tbr, 90k tbn (default) 
      Metadata: 
        handler_name    : VideoHandler 
        vendor_id       : [0][0][0][0] 
  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 121 kb/s (default) 
      Metadata: 
        handler_name    : SoundHandler 
        vendor_id       : [0][0][0][0] 
At least one output file must be specified 


    


    i searched and tried many cases but i don't know where is the problem, any help please ?

    


  • ffmpeg Non monotonous DTS, Previous DTS is always the same, audio microphone streaming [closed]

    5 février, par adrien gonzalez

    I'm using ffmpeg to stream audio from a microphone using rtp. I'm on Raspberry and use an external sound card (HifiBerry DAC + ADC Pro).
My goal is to stream audio with the lowest latency possible to others Raspberry reading this audio with ffplay. I try not to compress the audio flux and leave it untouched as wav 48000 Hz.
I encounter often some Non Monotonous DTS errors. When this happens I have a latency of hundred of milliseconds adding itself.
I tried to add the +igndts flag but it is not changing anything. Also tried +genpts flag.

    


    What is weird is that the previous DTS is always the same (201165 is the example below) and does not seems to change.
I looked on forums for answers but I'm unable to find one.

    


    Here is my bash command :

    


    ffmpeg -guess_layout_max 0 -re -f alsa -i hw -acodec pcm_s16le -ac 1 -payload_type 10 -f rtp rtp://192.168.1.152:5003

    


    And the result from the terminal :

    


    ffmpeg version 5.1.6-0+deb12u1+rpt1 Copyright (c) 2000-2024 the FFmpeg developers


built with gcc 12 (Debian 12.2.0-14)
  configuration: --prefix=/usr --extra-version=0+deb12u1+rpt1 --toolchain=hardened --incdir=/usr/include/aarch64-linux-gnu --enable-gpl --disable-stripping --disable-mmal --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sand --enable-sdl2 --disable-sndio --enable-libjxl --enable-neon --enable-v4l2-request --enable-libudev --enable-epoxy --libdir=/usr/lib/aarch64-linux-gnu --arch=arm64 --enable-pocketsphinx --enable-librsvg --enable-libdc1394 --enable-libdrm --enable-vout-drm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-librav1e --enable-shared
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, alsa, from 'hw':
  Duration: N/A, start: 1738663653.066577, bitrate: 1536 kb/s
  Stream #0:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, rtp, to 'rtp://192.168.1.152:5003':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Audio: pcm_s16le, 48000 Hz, mono, s16, 768 kb/s
    Metadata:
      encoder         : Lavc59.37.100 pcm_s16le
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.1.152
t=0 0
a=tool:libavformat LIBAVFORMAT_VERSION
m=audio 5003 RTP/AVP 10
b=AS:768

[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201160; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201155; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201149; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201142; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201134; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201124; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201114; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201102; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201089; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201075; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201060; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201044; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201027; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 201009; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 200990; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 200970; changing to 201165. This may result in incorrect timestamps in the output file.
[rtp @ 0x558b48ea90] Non-monotonous DTS in output stream 0:0; previous: 201165, current: 200949; changing to 201165. This may result in incorrect timestamps in the output file.


    


    I tried to add the +igndts flag but it is not changing anything. Also tried +genpts flag. I expected the DTS to restore itself but I still have the same issue