
Recherche avancée
Autres articles (29)
-
La file d’attente de SPIPmotion
28 novembre 2010, parUne 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 (...) -
Le plugin : Podcasts.
14 juillet 2010, parLe problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
Types de fichiers supportés dans les flux
Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...) -
Contribute to documentation
13 avril 2011Documentation is vital to the development of improved technical capabilities.
MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
To contribute, register to the project users’ mailing (...)
Sur d’autres sites (4741)
-
System.InvalidOperationException thrown when running as part of a WPF application. Xabe.FFmpeg
16 mars 2021, par S. O. JamesI have the following code which runs on a console application


string filePath = "C:\\Users\\**\\Desktop\\sample-mp4-file.mp4";
 string output1 = "C:\\Users\\**\\Desktop\\1.jpg";
 string output2 = "C:\\Users\\**\\Desktop\\2.jpg";
 var ms = new MultiSnapshotCommand(filePath);
 await ms.Add(TimeSpan.FromSeconds(20), output1);
 await ms.Add(TimeSpan.FromSeconds(20), output2);
 await ms.Invoke();



Which uses the following


public async Task Add(TimeSpan timestamp, string outputPath)
 {
 var conversion = await FFmpeg.Conversions.FromSnippet.Snapshot(filePath, outputPath, timestamp);
 conversionQueue.Enqueue(conversion);
 }



This executes fine and both snapshots are created when calling
Invoke()
.
However, when executing the same code running in an async method in response to a button click in a WPF scenario, the UI freezes, then a few moments laterException thrown: 'System.InvalidOperationException' in System.Diagnostics.Process.dll
is shown from the debugger output with no recovery.

The error seems to be occurring at
await FFmpeg.Conversions.FromSnippet.Snapshot(filePath, outputPath, timestamp);


Original - https://github.com/tomaszzmuda/Xabe.FFmpeg/issues/341


Edit


My project files https://github.com/Scharps/MP4ToImageConverter/tree/05beeb1cc359b654fb51a9695b5c20386c4d5fb6.
FFmpeg is required in Path system variable. File locations will need to be changed also


-
when ffpmeg drops frames some things aren't played back in real time
8 février 2024, par Alex028502I am trying to run a bunch of ffpmeg processes that act as simulators for cameras, and something funny is happening when I the processor can't keep up with the configured frame rate.


I have replaced the rtsp stream with an output file, and managed to reproduce the issue, so will just show that to keep it simple.


First here is a makefile that creates my source movie :


clock.mp4: Makefile
 rm -f $@
 ffmpeg -f lavfi -i color=c=black:s=4096x2160:r=25 -vf \
"drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:fontsize=72:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2: \
text='%{eif\:trunc(n/25)\:d}':start_number=0:rate=25" \
-t 60 -r 25 $@



that gives me a one minute long movie that prints the second number to the screen. I have tested it out and the seconds are close enough. I put a lot of pixels to make it easier to jam up my CPU.


Here is the script that creates a processes similar to the one I am trying to debug (called
experiment.sh
)

I am actually using H.264, but H.265 is easier to overwhelm the processor with


#! /usr/bin/env bash

set -e

echo starting > message$1.txt

rm -f superclock$1.mp4
ffmpeg -re -stream_loop -1 -i clock.mp4 \
 -an -vcodec libx265 -preset ultrafast -sc_threshold -1 -x265-params repeat-headers=1 \
 -vf "drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:fontsize=24:fontcolor=white:x=10:y=10:text='%{localtime\:%X}', \
 drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:fontsize=24:fontcolor=white:x=10:y=(h-text_h-10):textfile=message$1.txt:reload=1, \
 scale=1920x1080,fps=25" \
 -b:v 3M -minrate 3M -maxrate 3M \
 -bufsize 6M -g 25 superclock$1.mp4 &
pid=$!

for x in $(seq 0 10)
do
 echo $x > message$1.txt
 sleep 10
done

kill -INT $pid || true



It should


- 

- put the second in the middle of the screen - 'cause it gets it from the source video
- put the approximate sixth of minute in the lower left corner
(only approximate because of the sleep but close enough)
- put the the wall clock time in the upper left corner








and it works


make clock.mpg
./experiment.sh 0
vlc superclock0.mp4



shows something like this



Now here is the interesting part


If I run the script in four different terminals at the same time


./experiment.sh 1
./experiment.sh 2
./experiment.sh 3
./experiment.sh 4



It can't keep up with the frame rate, and I see this in the output :


frame= 1515 fps= 16 q=0.0 size= 768kB time=00:00:59.96 bitrate= 104.9k



I was hoping the end result would all look ok when I watch it except with fewer frames, but the timestamps of the frames would make it all work as expected


However...


- 

- The time in the middle, that is inherited from the source video, the seconds in the middle of the screen, stays in sync with VLC's clock.
- the wall clock in the upper left seems play at 150% speed
- the every ten seconds incrementor in the lower left seems to increment every 7 seconds
- the video is only 1:25 long even though it was recording for at least 1:40 according to sleeps
- the wall clock in the upper right hand corner makes it more than 1'40" and then counter in the lower left makes it to 10.














Here are four states to compare


| | Start | 30" in | end |
|------------------+----------+----------|----------|
| Video Time | 00:00 | 00:30 | 01:24 |
| Wall Clock Time | 15:05:50 | 15:06:39 | 15:07:39 |
| sixth of minute | 0 | 4 | 10 |
| seconds counter | 0 | 30 | 24 |





So you can see the vlc clock keeps pace with the original clock from the source movie.. even when it is only able to produce frames at 2/3 of the rate. However, the it is taking 50% long to get through the whole source movie I guess ?


I am having trouble coming up with a theory that can explain exactly how this happens.


Does anybody know how I can "correct" this ? (make it so that the movie is played at the same rate that it is recorded)


I am thinking of using a lower frame rate and size as the input video.. but it would be nice to have something that will always work as expected, just with a lower frame rate, no matter how busy the processor is.


-
As part of my program that I am writing I am using ffmpeg. I am debugging. Why would ffmpeg run slower on a GPU than a CPU when doing mp4 compression ? [closed]
6 mai 2023, par user875234I'm running it on modern equipment with latest drivers. I use it to compress video files, like so :


ffmpeg -i 20230502_200913.mp4 -vcodec libx265 -crf 28 -vf "scale=trunc(iw/10)*2:trunc(ih/10)*2" output.mp4



that command runs in 160 seconds on the CPU. but if I use the GPU, like so :


ffmpeg -hwaccel cuda -i 20230502_200913.mp4 -vcodec libx265 -crf 28 -vf "scale=trunc(iw/10)*2:trunc(ih/10)*2" output.mp4



it actually takes 280 seconds. And again, these are same era CPU and GPU. I can see it uses 100% of the GPU when running on the GPU but only 50% of the CPU when running on the CPU. I expected it to run much faster on the GPU than the CPU.


Am I missing something ?