
Recherche avancée
Médias (16)
-
#7 Ambience
16 octobre 2011, par
Mis à jour : Juin 2015
Langue : English
Type : Audio
-
#6 Teaser Music
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#5 End Title
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#3 The Safest Place
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#4 Emo Creates
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#2 Typewriter Dance
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (62)
-
Les formats acceptés
28 janvier 2010, parLes 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, parPour 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, parEn 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_leserI 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
endHowever - 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
endwhich 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
endHowever 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 CesurI 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 MenezesA 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 (usingffmpeg
), added it into a buffer from where the video and audio consumers retrieve that objects (VideoFrame
andAudioChunk
). For this job, we have someQThreads
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 reimplementedrun()
? I read that works better withSignals & Slots
; -
If
Signals & Slots
worth it, the producer still needs to reimplementQThread::run()
, right ? -
Cosidering that buffer must have some previous frames and bad quality videos will be reproduced, is that (
VideoProducer
insert objects into aBuffer
,AudioConsumer
andFrameConsumer
retrieve these objects fromBuffer
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 thatWorkers
, anotherQThread
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 atProducer
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
-> DecoderQThread
. Runs in a loop decoding and enqueuing frames into aBuffer
. -
FrameConsumer
-> Video consumer. Retrieves frames from frameCircularBuffer
in a loop using anotherQThread
. Display the frame and sleep few mseconds based on video fps andAudioConsumer
clock time. -
AudioConsumer
-> Audio consumer and video’s clock. Works with signals usingQAudioOutput::notify()
to retrieve chunks of audio from audioCircularBuffer
and insert them intoQAudioOutput
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 aQThread
running in a loop (run()
reimplemented) retrieving objects fromBuffer
and inserting (backwards or forward) toCircularBuffer
.
And another ones that manage UI, filters, some operations with frames/chunks...
-