
Recherche avancée
Médias (1)
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
Autres articles (47)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
Upload et récupération d’informations de la vidéo source
Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)
Sur d’autres sites (10757)
-
twinvq : move all bitstream reading into single place
4 août 2013, par Kostya Shishkovtwinvq : move all bitstream reading into single place
This is required for the future addition of VoxWare MetaSound decoder, for its
functions are mostly the same but bitstream reader is completely different
and bitstream format is slightly different too.Signed-off-by : Diego Biurrun <diego@biurrun.de>
-
Read portion of lines from child process in Rust (chunk of data)
2 octobre 2022, par Alexey VolodkoWhen I try to spawn a child ffmpeg process I use additonal flag
-progress
, next I use pipe to pass this progress output to the stderr.
So the whole command looks like :

ffmpeg -i ... -progress pipe:2 ...



Without
-progress
flag ffmepg outputs following line in stderr, probably once per second :

frame=46 46 fps=0.0 q=0.0 size= 0kB time=00:00:01.72 bitrate= 0.2kbits/s speed=2.69x



With
-progress
flag ffmepg outputs (multiple lines) in stderr, probably once per second :

frame=1 1 fps=0.0 q=0.0 size= 0kB time=00:00:00.19 bitrate= 2.0kbits/s speed=2.94x 
fps=0.00
stream_0_0_q=0.0
bitrate= 2.0kbits/s
total_size=48
out_time_us=192000
out_time_ms=192000
out_time=00:00:00.192000
dup_frames=0
drop_frames=0
speed=2.94x
progress=continue



The main puppose of using
-progress
flag is to calc percentage of completion by parsingout_time_ms
line and comparing to the whole duration.

Reading this chunk (portion of lines) is pretty simple in NodeJS :


const { spawn } = require('child_process');
const child = spawn('ffmpeg', [..., '-progress', 'pipe:2', ...]);

child.stderr.on('data', (data) => {
 // data will contain multiple lines, exactly one chunk
});



Reading this chunk (portion of lines) is pretty simple in Deno also :


const child = Deno.spawnChild("ffmpeg", {
 args: [..., '-progress', 'pipe:2', ...],
});
const stderrReader = child.stderr.getReader();
let readResult = await stderrReader.read();
while (readResult.done !== true) {
 readResult = await stderrReader.read();
 // readResult will contain multiple lines, exactly one chunk
}



I can't achieve the same in rust :


let mut command = Command::new("ffmpeg");
command.args(["...", "-progress", "pipe:2", "..."]);
let mut child = command
 .stdout(Stdio::piped())
 .stderr(Stdio::piped())
 .spawn()
 .unwrap();

let child_stderr = child.stderr.as_mut().expect("Unable to pipe stderr");
let mut reader = BufReader::new(child_stderr);
let mut buff = String::new();
while reader.read_line(&mut buff).expect("Unable to read chunk") > 0 {
 // buff will contain only on line
 buff.clear();
}



I am new in Rust. I can not detect what character signals end of chunk.


- 

- Runnig
read_line()
- will read only one line. - Runnig
read_to_end()
- will read the whole output until the end of process (EOF).






How can I read in Rust portion of lines that ffmpeg outputs probably once per second ?
How Node/Deno detects this "end of chunk" ?
Does rust have such event/signal also ?


- Runnig
-
ffmpeg : test if format is seekable
20 mai 2021, par Diederick C. NiehorsterHow do i test if a format is seekable ?


I have written code against the latest fmmpeg's (4.4) libavformat, libavcodec, etc. My code reads and decodes video files. Now i also want to support reading from avdevices, such as dshow (DirectShow) on Windows. That is possible through the same interface as i have already implemented, it just requires using the dshow format. Super nice ! But in my video file reader, i have some seek logic implemented, which is engaged in various instances. The problem is that the dshow format is not seekable (
avformat_seek_file()
returns -22, invalid argument). How do i detect that a format is not seekable ? I know that theAVFormatContext
'spb
member (AVIOContext
) has aseekable
field, but the dshow format leavespb
null (as it should be since theAVFMT_NOFILE
flag is set for the format). How do i test if a format is seekable (so that if it is not, i can disable the seek logic) ? The implementation ofavformat_seek_file()
and the various functions it calls seems to have various callbacks, so i am not sure if simply this would do the trick :bool isSeekable = !!context->pb && context->pb->seekable!=0
.