
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (50)
-
Keeping control of your media in your hands
13 avril 2011, parThe vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...) -
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 ) (...)
Sur d’autres sites (5979)
-
tests/swscale : print speedup numbers in color
4 mars, par Niklas Haas -
How to use the actual frame numbers in filenames using ffmpeg when extracting frames ? [closed]
2 juin 2024, par Joan VengeBasically I am using ffmpeg to extract every Nth frame from a video. But the filenames appear sequentially from 1 to X. I want to use the actual frame numbers so if it's every 30th frame, then the filenames should be 0, 30, 60, etc. Is this possible ?


I am doing this in Python using this function :


def extract_and_compress_frames(directory, frame_interval=1, crop_width=192, crop_height=108, offset_x=0, offset_y=0):
 for filename in os.listdir(directory):
 if filename.endswith(".trec"):
 # Construct full file path
 trec_path = os.path.join(directory, filename)
 mp4_path = os.path.join(directory, filename.replace(".trec", ".mp4"))
 frames_dir = os.path.join(directory, filename.replace(".trec", ""))
 
 # Rename .trec to .mp4
 os.rename(trec_path, mp4_path)
 
 # Create directory for frames
 os.makedirs(frames_dir, exist_ok=True)
 
 if frame_interval == 1:
 # Calculate crop positions for bottom-right corner after scaling to 1080p
 scaled_width = 1920
 scaled_height = 1080
 crop_x = scaled_width - crop_width - offset_x
 crop_y = scaled_height - crop_height - offset_y
 
 # Extract and compress all frames using ffmpeg with quality adjustment
 ffmpeg_cmd = [
 'ffmpeg', 
 '-i', mp4_path,
 '-vf', f"fps=60,scale=1920:1080,crop={crop_width}:{crop_height}:{crop_x}:{crop_y}", 
 '-q:v', '10', # Adjust the quality, 1 (best) to 31 (worst), 2 for good quality
 os.path.join(frames_dir, '%06d.jpg') # 6 digits for padding, starting from 0
 ]
 else:
 # Use frame interval and scale to 720p
 ffmpeg_cmd = [
 'ffmpeg',
 '-reinit_filter', '0',
 '-i', mp4_path,
 '-vf', f"fps=60,scale=1920:1080,crop={crop_width}:{crop_height}:{1920-crop_width-offset_x}:{1080-crop_height-offset_y},drawtext=text='%{{n}}':start_number=1:fontcolor=white:bordercolor=black:borderw=3:fontsize=50,select='not(mod(n\\,{frame_interval}))'",
 '-fps_mode', 'vfr',
 '-q:v', '10', # Adjust the quality, 1 (best) to 31 (worst), 2 for good quality
 os.path.join(frames_dir, '%06d.jpg') # 6 digits for padding, starting from 0
 ]
 
 subprocess.run(ffmpeg_cmd)
 
 # Rename back to .trec
 os.rename(mp4_path, trec_path)
 
 print(f"Processed {filename}")



But this gives me sequential numbers, not the actual frame numbers but the frame numbers I draw over the images, they represent the actual frame numbers.


Basically ffmpeg is able to get the current frame and draw it on the image using :


drawtext=text='%{{n}}'



The question is about getting that value out to the filenames.


-
libfdk-aac : Use enum names instead of literal numbers for the output format
5 juillet 2018, par Martin Storsjö