
Recherche avancée
Autres articles (84)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...) -
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 ;
Sur d’autres sites (9926)
-
dpxenc : enforce alignment requirement
13 août 2014, par Christophe Gisquet -
dpx : use aligned line starts
13 août 2014, par Christophe Gisquetdpx : use aligned line starts
SMPTE 268M-2003 specifies that each line starts at a 4-bytes boundary.
Therefore, modify correspondingly the input buffer strides and size.Partially fixes ticket #3692 : DLAD_8b_3c_big.dpx still has inverted
colors, which might be related to endianness.Signed-off-by : Michael Niedermayer <michaelni@gmx.at>
-
How can I generate a metadata.mov file for higher-resolution Live Photos (e.g. 1440x2560) ?
30 juillet, par brijesh patelI'm generating Live Photos programmatically for use as wallpapers on iOS. I'm using a known metadata.mov file bundled with the app (likely extracted from a working Live Photo with resolution 1080x1920). This setup works fine when I use a video of the same resolution.


I'm using this open-source library to handle the video-to-LivePhoto conversion :

https://github.com/TouSC/Video2LivePhoto

However, when I try using a higher-resolution video (e.g. 2560x1440) to avoid black bars on high-resolution devices (like iPhone 14 Pro Max), the Photos app shows the Live Photo, but the motion component doesn't work—it just says “Motion Not Available.”


I believe the issue is that the static metadata.mov contains resolution-specific metadata, which prevents it from working correctly with other video sizes.


- 

-
Tried changing the resolution of the video (e.g. 1440x2560, 1284x2778) – motion breaks.


-
Tried generating a new .mov file using FFmpeg with a silent video track, matching the new resolution – Live Photo not recognized or shows errors.


-
Tried modifying the existing metadata.mov with tools like FFmpeg, AtomicParsley, Bento4, and mp4box – resulting files often break the Live Photo entirely.


-
I expected to generate a valid metadata.mov (or similar track) that would support the custom resolution and restore Live Photo motion support.












static func convertVideo(videoURL: URL, complete: @escaping (_ success: Bool, _ errorMessage: String?) -> Void) {
 print("start converting")
 
 guard let metaURL = Bundle.main.url(forResource: "metadata", withExtension: "mov") else {
 complete(false, "metadata.mov not found")
 return
 }

 let livePhotoSize = CGSize(width: 1440, height: 2560) // <-- updated resolution
 let livePhotoDuration = CMTime(value: 550, timescale: 600)
 let assetIdentifier = UUID().uuidString

 guard let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first else {
 complete(false, "Document path not found")
 return
 }

 let durationPath = documentPath + "/duration.mp4"
 let acceleratePath = documentPath + "/accelerate.mp4"
 let resizePath = documentPath + "/resize.mp4"
 let finalPath = resizePath

 removeFileIfExists(at: durationPath)
 removeFileIfExists(at: acceleratePath)
 removeFileIfExists(at: resizePath)

 let converter = Converter4Video(path: finalPath)

 Task {
 do {
 try await converter.durationVideo(at: videoURL, outputPath: durationPath, targetDuration: 3)
 try await converter.accelerateVideo(at: durationPath, to: livePhotoDuration, outputPath: acceleratePath)
 try await converter.resizeVideo(at: acceleratePath, outputPath: resizePath, outputSize: livePhotoSize)

 print("### resize Success")
 let image = try await generateCGImage(finalPath: finalPath)

 await generateLivePhoto(
 image: image,
 documentPath: documentPath,
 assetIdentifier: assetIdentifier,
 metaURL: metaURL,
 converter: converter,
 complete: complete
 )
 } catch {
 print("Video conversion error: \(error)")
 complete(false, error.localizedDescription)
 return
 }
 }
}



-