Recherche avancée

Médias (91)

Autres articles (71)

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

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

Sur d’autres sites (10504)

  • FFMPEG : audio out of sync

    15 novembre 2020, par Martin

    ffmpeg -rtsp_transport tcp -i "rtsp://.............." -re -stream_loop -1 -i audio.m4a -filter_complex "[0:a]highpass=f=200,lowpass=f=3000,volume=0.3[mic];[1:a]volume=0.1[mic2];[mic][mic2]amix=duration=shortest[a]" -map 0:v -map "[a]" -c:v copy -b:a 320k -c:a aac -f flv "rtmp://......."

    


    This is my working very well script thanks to @Ilogan

    


    But now i have a problem with an audio out of sync, i don't care about the second one, its just a file audio but the first one is from a microphone of camera IP so it should be synced with the video but now the sound from a microphone is almost 28 seconds later.

    


    Any tips how to do it ?

    


    adelay=28000 ? - nope, that didnt help since i need to delay the video to sync this with an audio.Also tried -use_wallclock_as_timestamps 1 but it didnt help neither.
Also i used -itsoffset 28 it helped but for a while, looks like that the delay time between video and audio is rising and now its 40sec+
Whats going on ?

    


    Now i'm trying with tpad=start_duration=28

    


    edit :

    


      Metadata:
    title           : NVT
    comment         : From NVT
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuvj420p(pc, progressive), 1920x1080, 5 fps, 30 tbr, 90k tbn, 10 tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, mono, s16, 64 kb/s
    Stream #0:2: Data: none
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'audio.m4a':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    title           : Nature
    artist          : 
    date            : 2018
    encoder         : Lavf58.20.100
    comment         : 
  Duration: 08:20:49.15, start: 0.000000, bitrate: 129 kb/s
    Stream #1:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc. Created on: 01/28/2020.
Stream mapping:
  Stream #0:1 (pcm_mulaw) -> highpass
  Stream #1:0 (aac) -> volume
  Stream #0:0 -> #0:0 (copy)
  amix -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
[rtsp @ 0x82e490] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
Output #0, flv, to 'rtmp://....':
  Metadata:
    title           : NVT
    comment         : From NVT
    encoder         : Lavf58.20.100
    Stream #0:0: Video: h264 (High) ([7][0][0][0] / 0x0007), yuvj420p(pc, progressive), 1920x1080, q=2-31, 5 fps, 30 tbr, 1k tbn, 90k tbc
    Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      encoder         : Lavc58.35.100 aac
frame=    7 fps=0.0 q=-1.0 size=     572kB time=00:00:00.44 bitrate=10634.7kbitsframe=   13 fps= 13 q=-1.0 size=     697kB time=00:00:00.88 bitrate=6463.4kbits/frame=   25 fps= 16 q=-1.0 size=    1185kB time=00:00:01.48 bitrate=6533.1kbits/frame=   33 fps= 16 q=-1.0 size=    1390kB time=00:00:01.99 bitrate=5702.1kbits```


    


  • c++ how to use lambdas to set ffmpeg's av_log_set_callback() to a member function ?

    13 février 2018, par Blake Senftner

    I’ve been researching how to use lambdas as callbacks, but I do not seem to be getting my syntax correct. I am working in C++ via Visual Studio 2013 Community, & I am pretty sure this type of lambda use is supported. I am working on a video library which is based on the FFMPEG libav libraries.

    The basic issue is the logging callback provided to library clients of FFMPEG’s libav. It has this calling structure :

    void logging_callback( void *ptr, int level, const char *fmt, va_list vargs  );

    This is fine for C or fine for C++ when the logging callback is a static member function, but I want to install a class member function, which needs the this parameter per the C++ nature of calling method functions.

    What I have so far looks like : (unrelated portions removed)

    class my_libav
    {
      // logging messages callback for use by library client, any log messages generated
      // by the library will be sent thru this to the lib client's logic:
      typedef void(*STREAM_LOGGING_CALLBACK_CB) (std::string msg, void* p_object);

      // my lib's logger has a void* param so clients can redirect to member functs easier
      void SetStreamLoggingCallback(STREAM_LOGGING_CALLBACK_CB p_stream_logger, void* p_object);

      // member function to be installed as FFMPEG's av_log_set_callback():
      void RedirectLoggingOutputs( void *ptr, int level, const char *fmt, va_list vargs );

      STREAM_LOGGING_CALLBACK_CB  mp_stream_logging_callback; // client's callback
      void*                       mp_stream_logging_object;   // client's data

    };

    void my_libav::SetStreamLoggingCallback(STREAM_LOGGING_CALLBACK_CB p_stream_logger, void* p_object)
    {
     mp_stream_logging_callback = p_stream_logger;
     mp_stream_logging_object = p_object;
    }

    void my_libav::RedirectLoggingOutputs(void *ptr, int level, const char *fmt, va_list vargs )
    {
     // logic that resolves the message and sends through client's callback
     // installed int mp_stream_logging_callback
    }

    my_libav::my_libav()
    {
     // this is the old static member function I deleted:
     // av_log_set_callback( &my_libav::logging_callback );

     // I tried using std::bind & placeholders, but this syntax is wrong too:
     // namespace ph = std::placeholders;
     // auto callback = std::bind( &my_libav::RedirectLoggingOutputs, this, ph::_1, ph::_2, ph::_3, ph::_4 );
     //
     // av_log_set_callback( callback ); // <- 'callback' is not the correct type

     // this is my try at a lambda. I know that the *this* cannot be
     // in the capture, but I don't know the right syntax to work around
     // this issue:
     std::function
           f2 = [this](void *ptr, int level, const char *fmt, va_list vargs ){
                           RedirectLoggingOutputs( ptr, level, fmt, vargs ); };

       av_log_set_callback( f2 ); // <- 'f2' is not the correct type, how to fix?

    The syntax I am trying to fix is in the last 4 lines. What is the correct form ?

  • Metal Gear Solid VP3 Easter Egg

    4 août 2011, par Multimedia Mike — Game Hacking

    Metal Gear Solid : The Twin Snakes for the Nintendo GameCube is very heavy on the cutscenes. Most of them are animated in real-time but there are a bunch of clips — normally of a more photo-realistic nature — that the developers needed to compress using a conventional video codec. What did they decide to use for this task ? On2 VP3 (forerunner of Theora) in a custom transport format. This is only the second game I have seen in the wild that uses pure On2 VP3 (first was a horse game). Reimar and I sorted out most of the details sometime ago. I sat down today and wrote a FFmpeg / Libav demuxer for the format, mostly to prove to myself that I still could.

    Things went pretty smoothly. We suspected that there was an integer field that indicated the frame rate, but 18 fps is a bit strange. I kept fixating on a header field that read 0x41F00000. Where have I seen that number before ? Oh, of course — it’s the number 30.0 expressed as an IEEE 32-bit float. The 4XM format pulled the same trick.

    Hexadecimal Easter Egg
    I know I finished the game years ago but I really can’t recall any of the clips present in the samples directory. The file mgs1-60.vp3 contains a computer screen granting the player access and illustrates this with a hexdump. It looks something like this :



    Funny, there are only 22 bytes on a line when there should be 32 according to the offsets. But, leave it to me to try to figure out what the file type is, regardless. I squinted and copied the first 22 bytes into a file :

     1F 8B 08 00   85 E2 17 38   00 03 EC 3A   0D 78 54 D5
     38 00 03 EC   3A 0D
    

    And the answer to the big question :

    $ file mgsfile
    mgsfile : gzip compressed data, from Unix, last modified : Wed Oct 27 22:43:33 1999
    

    A gzip’d file from 1999. I don’t know why I find this stuff so interesting, but I do. I guess it’s no more and less strange than writing playback systems like this.