Recherche avancée

Médias (16)

Mot : - Tags -/mp3

Autres articles (62)

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

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

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

Sur d’autres sites (9435)

  • IO.copy_stream performance in ruby

    19 juillet 2016, par stiller_leser

    I am trying to continously read a file in ruby (which is growing over time and needs to be processed in a separate process). Currently I am archiving this with the following bit of code :

    r,w = IO.pipe
    pid = Process.spawn('ffmpeg'+ffmpeg_args, {STDIN => r, STDERR => STDOUT})
    Process.detach pid
    while true do
     IO.copy_stream(open(@options['filename']), w)
     sleep 1
    end

    However - while working - I can’t imagine that this is the most performant way of doing it. An alternative would be to use the following variation :

    step = 1024*4
    copied = 0
    pid = Process.spawn('ffmpeg'+ffmpeg_args, {STDIN => r, STDERR => STDOUT})
    Process.detach pid
    while true do
     IO.copy_stream(open(@options['filename']), w, step, copied)
     copied += step
     sleep 1
    end

    which would only continously copy parts of the file (the issue here being if the step should ever overreach the end of the file). Other approaches such a simple read-file led to ffmpeg failing when there was no new data. With this solution the frames are dropped if no new data is available (which is what I need).

    Is there a better way (more performant) to archive something like that ?

    EDIT :

    Using the method proposed by @RaVeN I am now using the following code :

    open(@options['filename'], 'rb') do |stream|
     stream.seek(0, IO::SEEK_END)
     queue = INotify::Notifier.new
     queue.watch(@options['filename'], :modify) do
       w.write stream.read
     end
     queue.run
    end

    However now ffmpeg complaints about invalid data. Is there another method than read ?

  • Downloading earlier segments from a live m3u8 playlist

    25 juillet 2016, par Zafer Cesur

    I have an .m3u8 URI from an online live-stream. As far as I know, live playlists use a sliding window instead of containing all the segments. My questions are,


    1) Is it possible to find out what the length of the window is (time or frame-wise) ? My intention is to use the playlist I have to download a live-stream starting from an earlier time.

    2) If yes, how do I get the earlier segments, i.e., how do I specify where I want to start downloading from ? I tried something like ffmpeg -ss -00:00:10 -i "in.m3u8" out.mp4, but it did not work.

    I do not have much experience in video-encoding or live-streaming, and I would appreciate any direction ! The file that I am dealing with is printed below.


    #EXTM3U
    #EXT-X-TWITCH-INFO:NODE="video-edge-913b2c.jfk03",MANIFEST-NODE="video-edge-913b2c.jfk03",SERVER-TIME="1469462316.46",USER-IP="...",SERVING-ID="...",CLUSTER="jfk03",ABS="false",BROADCAST-ID="22500458080",STREAM-TIME="17374.4599299",MANIFEST-CLUSTER="jfk03"
    #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="chunked",NAME="Source",AUTOSELECT=YES,DEFAULT=YES
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3566000,RESOLUTION=1920x1080,CODECS="avc1.4D402A,mp4a.40.2",VIDEO="chunked"
    http://video-edge-913b2c.jfk03.hls.ttvnw.net/hls-7e8a7c/imaqtpie_22500458080_490173831/chunked/index-live.m3u8?token=id=...,bid=...,exp=1469548716,node=video-edge-913b2c.jfk03,nname=video-edge-913b2c.jfk03,fmt=chunked&sig=...
    #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="high",NAME="High",AUTOSELECT=YES,DEFAULT=YES
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1760000,RESOLUTION=1280x720,CODECS="avc1.66.31,mp4a.40.2",VIDEO="high"
    http://video-edge-913b2c.jfk03.hls.ttvnw.net/hls-7e8a7c/imaqtpie_22500458080_490173831/high/index-live.m3u8?token=id=...,bid=...,exp=1469548716,node=video-edge-913b2c.jfk03,nname=video-edge-913b2c.jfk03,fmt=high&sig=...
    ...
  • How improves Video Player processing using Qt and FFmpeg ?

    13 septembre 2016, par Eric Menezes

    A time ago, I started to develop a video player/analyser. For beeing an analyser as well, the application should have inside its buffer the next frames and the previous as well. That’s where the complication begins.

    For that, we started to use an VideoProducer that decodes the frames and audio from video (using ffmpeg), added it into a buffer from where the video and audio consumers retrieve that objects (VideoFrame and AudioChunk). For this job, we have some QThreads which is one producer, 2 consumers and (the biggest trouble maker) 2 workers that is used to retrieve objects from producer’s buffer and insert them into a circular buffer (that because of previous frames). These workers are important because of the backwards buffering job (this player should play backwards too).

    So, now the player is running well, but not so good. It’s notable that is losing performance. Like removing producer buffer and using just the circular. But still, some questions remains :

    • Should I continue using QThread with reimplemented run() ? I read that works better with Signals & Slots ;

    • If Signals & Slots worth it, the producer still needs to reimplement QThread::run(), right ?

    • Cosidering that buffer must have some previous frames and bad quality videos will be reproduced, is that (VideoProducer insert objects into a Buffer, AudioConsumer and FrameConsumer retrieve these objects from Buffer and display/reproducer them) the better way ?

    • What is the best way to sync audio and video ? The sync using audio pts is doing well, but some troubles appear sometimes ; and

    • For buffering backwards, ffmpeg does not provide frames this way, so I need to seek back, decode older frames, reorder them and prepend to the buffer. This job has been done by that Workers, another QThread the keep consuming from Producer buffer and, if buffering backwards, asks for seek and do the reorder job. I can just guess that it is bad. And I assume that do this reorder job should be done at Producer level. Is that any way to do this better ?

    I know it’s a lot of questions, and I’m sorry for that, but I don’t know where to find these answers.

    Thanks for helping.

    For better understanding, heres how its been done :

    • VideoProducer -> Decoder QThread. Runs in a loop decoding and enqueuing frames into a Buffer.

    • FrameConsumer -> Video consumer. Retrieves frames from frame CircularBuffer in a loop using another QThread. Display the frame and sleep few mseconds based on video fps and AudioConsumer clock time.

    • AudioConsumer -> Audio consumer and video’s clock. Works with signals using QAudioOutput::notify() to retrieve chunks of audio from audio CircularBuffer and insert them into QAudioOutput buffer. When decodes the first frame, its pts is used to start the clock. (if a seek has been called, the next audio frame will mark the clock start time)

    • Worker -> Each stream (audio and video) has one. It’s a QThread running in a loop (run() reimplemented) retrieving objects from Buffer and inserting (backwards or forward) to CircularBuffer.

    And another ones that manage UI, filters, some operations with frames/chunks...