
Recherche avancée
Autres articles (90)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Gestion des droits de création et d’édition des objets
8 février 2011, parPar défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)
Sur d’autres sites (13857)
-
How can I manually extract Metadata from mp4 Videoframes ?
3 décembre 2020, par bennimuellerI have a large GoPro Video about 11:44 min. Each second the GoPro records 30 frames with datetime(UNIX) and gps(lat, long) information. So there are round about 21188 frames in my video.


I need to extract the GPS data to bring every single frame to a map. There's a tool called GoProtelemetryextractor (https://goprotelemetryextractor.com/free/). This gives me a csv file with 19800 lines (1 line for each frame). Obviously there are 1400 rows/frames missing in the csv. If I now multiplex the csv with the mp4 in a GIS software, the frames get assigned to wrong "csv frames". I need to match these 19800 frames correctly to the frames in the video by deleting "None metadata frames" out of the video.
I guess the problem is that the goprotelemetry extractor starts writing the csv with the first metadata it finds. And not starting at the first frame and just write "NO METADATA ROWS".


Basically my question is : How can I extract the metadata from each mp4 Frame "manually" to know where the csv "starts" and match video and csv ?


-
Why is ffmpeg choking on this particular PNG file ?
13 novembre 2022, par kohlothI'm trying to make a video out of 4 still images with ffmpeg.


This is the command I am having trouble with getting working at the moment :


ffmpeg -y -loop 1 -framerate 24 -t 3 \
-i ./images/title-card.png -loop 1 -framerate 24 -t 4 \
-i ./images/001.png -loop 1 -framerate 24 -t 4 \
-i ./images/002.png -loop 1 -framerate 24 -t 3 \
-i ./images/003.png -loop 1 -framerate 24 -t 4 \
-filter_complex "[0][1][2][3]concat=n=4:v=1:a=0" \
/tmp/silentVideoTest.mp4



Unfortunately, I get this error :


[Parsed_concat_0 @ 0x5603df1c4080] Input link in1:v0 parameters (size 1024x1024, SAR 0:1) do not match the corresponding output link in0:v0 parameters (1024x1024, SAR 3937:3937)
[Parsed_concat_0 @ 0x5603df1c4080] Failed to configure output pad on Parsed_concat_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #3:0



I have no idea what this error means. But if I use a different png for the first image, it works fine. I understand that there is something about the first png that ffmpeg does not like ; the SAR, which I believe is some kind of png metadata bit or something ?


Problem is :


- 

- The error is confusing to me
- I see no option to set the SAR when exporting images from Krita, Pinta, or Photopea.
- I do not know how to view the SAR value of an image, so I can't verify that this is really the problem








Also, whats more is, I've used this command in the past to change an image's SAR (I think) but it seems to only work half the time ?


ffmpeg -i title-card.png -vf setsar=1 title-card-new-sar.png



No idea what the value of setsar should be, so I am using 1.


Would love if someone could tell me how to get it to work. In particular, how do I view the SAR of a PNG file ?


Maybe I am naieve, but shouldn't ffmpeg just be able to accept png images that are the same dimensions, compression, and stitch em together without errors ? i.e. Is there an option just to say "Fix the SAR ?" or "Use the SAR of the first image for all images ?"



Edit : Trying it on some different images, having set the SAR with
ffmpeg -i ./card.png -vf setsar=1 ./card-new-sar.png
, I get a similar error :

[Parsed_concat_0 @ 0x55e7b6b8b640] Input link in2:v0 parameters (size 1024x1024, SAR 2834:2834) do not match the corresponding output link in0:v0 parameters (1024x1024, SAR 1:1)
[Parsed_concat_0 @ 0x55e7b6b8b640] Failed to configure output pad on Parsed_concat_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #26:0



ffmpeg still seems to complain that the SARs don't match...but surely, as its a ratio, a SAR of
2834:2834
does match a SAR of1:1
?


Edit : Tried setting the SAR with
ffmpeg -i ./card.png -vf setsar=2834:2834 ./card-new-sar.png
, but now the error is(size 1024x1024, SAR 0:1) do not match the corresponding output link in0:v0 parameters (1024x1024, SAR 2834:2834)
.

-
Python subprocess : capture output of ffmpeg and run regular expression against it
31 décembre 2014, par Jesse AdamI have the following code
import subprocess
import re
from itertools import *
command = ['ffprobe', '-i', '/media/some_file.mp4']
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
text = p.stderr.read()
retcode = p.wait()
text = text.decode('utf-8')
p = re.compile("Duration(.*)")
num = 0 #for debugging
for line in iter(text.splitlines()):
print(str(num) + line) #for debugging
m = p.match(str(line))
if m != None:
print(m.group(1))When I look at the output there is a line that says "Duration" on it, however it is not captured, print(m.group(1)) is never reached. If I change the text variable to a hardcoded string of "Duration blahblah" I get " blahblah", which is what I expect. It seems like the regex doesn’t recognize the text coming back from stderr. How can I get the text into a format that the regex will recognize and match on ?
I have come up with the following solution, should it help anyone else attempting to capture duration from ffmpeg using python
import subprocess
import re
command = ['ffprobe', '-i', '/media/some_file.mp4']
p = subprocess.Popen(command, stderr=subprocess.PIPE)
text = p.stderr.read()
retcode = p.wait()
text = text.decode('utf-8')
p = re.compile(".*Duration:\s([0-9:\.]*),", re.MULTILINE|re.DOTALL)
m = p.match(text)
print(m.group(1))