
Recherche avancée
Autres articles (91)
-
À propos des documents
21 juin 2013, parQue faire quand un document ne passe pas en traitement, dont le rendu ne correspond pas aux attentes ?
Document bloqué en file d’attente ?
Voici une liste d’actions ordonnée et empirique possible pour tenter de débloquer la situation : Relancer le traitement du document qui ne passe pas Retenter l’insertion du document sur le site MédiaSPIP Dans le cas d’un média de type video ou audio, retravailler le média produit à l’aide d’un éditeur ou un transcodeur. Convertir le document dans un format (...) -
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 (...) -
XMP PHP
13 mai 2011, parDixit Wikipedia, XMP signifie :
Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)
Sur d’autres sites (15629)
-
ffmpeg : Render a two-pass MP4 timelapse video from a glob of JPEG images
20 mai 2024, par algalgIn
bash
on an Ubuntu 22 LTS system, I have this line to make a timelapse video file from hundreds of collected JPEG images in a folder.

ffmpeg -r 25 \
 -pattern_type glob -i "/some/path/input/*.jpg" \
 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" \
 -pix_fmt yuvj420p -preset veryslow -qp 0 \
 -movflags +faststart \
 "/some/path/output/render.mp4"



The input JPEGs are 4K, so the resulting video file in that same resolution, and at high quality (which is desired), renders to a very large video file ( 250GB).


Through trial and error, I've needed to add the
-vf
padding to avoid potential "height not divisible by 2" crashes, and set the pixel format to explicitly use jpeg full colour rangeyuvj420p
because some of the original JPEG images were makingffmpeg
complain about that.

And since the goal is to eventually use these renders for streaming,
-movflags +faststart
was also added.

It's all seeming to work very well, but just producing very large high quality video files :


So to try address the filesize problem, but sticking to h264, I started reading some tutorials/docs (this one for example) that mentioned running two passes to compress the video more effectively.


This sounded promising, and so to do this all in one step, rather than rendering a video and re-rendering that in two passes to better compress it) I tried this :


ffmpeg -y -r 25 \
 -pattern_type glob -i "/some/path/input/*.jpg" \
 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" \
 -pix_fmt yuvj420p -preset veryslow -qp 0 \
 -movflags +faststart \
 -pass 1 -f null /dev/null &&
ffmpeg -r 25 \
 -pattern_type glob -i "/some/path/input/*.jpg" \
 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" \
 -pix_fmt yuvj420p -preset veryslow -qp 0 \
 -movflags +faststart \
 -pass 2 -f mp4 "/some/path/output/render.mp4"



But
ffmpeg
seems to freak out about the inputs then :

[image2 @ 0x55674a3bc440] Could not open file : /some/path/input/*.jpg
[image2 @ 0x55674a3bc440] Could not find codec parameters for stream 0 (Video: mjpeg, none(bt470bg/unknown/unknown)): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, image2, from '/some/path/input/*.jpg':
 Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
 Stream #0:0: Video: mjpeg, none(bt470bg/unknown/unknown), 25 fps, 25 tbr, 25 tbn, 25 tbc
Output #0, mp4, to '/dev/null':
Output file #0 does not contain any stream



I've tried searching around a bit for if it's even possible to do two passes with the globbing input method, but haven't had much luck in finding any documentation or help about it.


So asking here if anyone has any insights ? What am I doing wrong ? Is this possible ?


-
ffmpeg_filter : Pass command line -threads X to filtergraph
24 octobre 2013, par Michael Niedermayer -
Run scripts in other instances and pass variables from the first script to the second
3 février 2023, par Tyrone HirtI have the following script :


Get-ChildItem -Path $RenderClient -Recurse -Filter "ffmpeg crop.ps1" |
 Where-Object { Test-Path (Join-Path $_.DirectoryName *.mp4) } |
 ForEach-Object {
 try {
 Start-Process -WorkingDirectory $_.DirectoryName powershell.exe "-NoExit -File `"$($_.FullName)`""
 }
 catch {
 Write-Host -NoNewline -ForegroundColor Red "Não foi possivel cortar o arquivo:"; Write-Host -NoNewline -ForegroundColor White " $_.Name "; Write-Host -NoNewline -ForegroundColor White "`nMensagem de erro:"; Write-Host -NoNewline -ForegroundColor Red " $($_.Exception.Message)`n";
 }
 }
 }



This code is a part of my first script, basically it looks for
ffmpeg crop.ps1
files that have a.mp4
file in the same folder and runs those scripts.

The issue is that I would like to make the process a little cleaner and more practical, currently when I need to make a change in the
ffmpeg crop
script I need to open all the folders and change one by one.

To avoid this, I would like to have a single file
ffmpeg crop.ps1
, and every time a.mp4
file is found in the path specified in the first script, an instance of that single scriptffmpeg crop.ps1
is triggered, too I need$_.FullName
and$_.Name
of each.mp4
file found to be passed to each respective instance so that I can use these values within theffmpeg crop
script.

I've been racking my brain for days trying to get this to work, I'll be very grateful for any help with this.


Edit - in more detail


The $RenderClient folder of my script is
C:/Videos
inside that folder there are several child folders that follow the logic :01-01
,01-02
,02-01
,02-02
...



Currently, inside each child folder there is a script
ffmpeg crop.ps1
, this script is responsible for cutting a piece of the video that is inside that folder, however it is only activated if there is a.mp4
file to be cut, in the same folder that it, that is, for the scriptffmpeg crop.ps1
to be activated in folder01-01
, it is necessary to have the script itself and a.mp4
file.

This script would be triggered




This script would not be triggered




The point is, I would like to make this more practical, so instead of having one
ffmpeg crop.ps1
script inside each child folder, I would like to have only oneffmpeg crop.ps1
script, and it would stay in the parent folder.

I would like it to work like this :




For that, I would need to change my code, so that the script recursively searches for
.mp4
files inside the parent folder, for each file that is found, it must open an instance of the scriptffmpeg crop.ps1
that is in the parent folder and pass the variables$_.Name
and$_.FullName
of the files found to the respective instance of the openffmpeg crop.ps1
script, so that each instance will be executed correctly.