Cum să extragi metadate din fișiere media cu FFmpeg
In this tutorial, you'll learn about Cum să extragi metadate din fișiere media cu FFmpeg. We cover key concepts, practical examples, and best practices.
Problema
Ai nevoie de informații detaliate despre un fișier media — codec, rezoluție, framerate, bitrate, metadate — dar nu știi cum să le extragi eficient cu FFmpeg.
Soluția rapidă
Fix 1: Informații Generale (ffprobe)
GRESIT — folosind ffmpeg în loc de ffprobe:
ffmpeg -i input.mp4
# (afișează informații dar nu poate fi parsat ușor)
CORECT — folosește ffprobe pentru informații structurate:
ffprobe -v error -show_format input.mp4
# Afișează: durată, bitrate, dimensiune, format
Fix 2: Informații Streamuri
# Toate streamurile:
ffprobe -v error -show_streams input.mp4
# Doar video:
ffprobe -v error -select_streams v -show_entries stream=index,codec_name,width,height,fps,r_frame_rate input.mp4
# Doar audio:
ffprobe -v error -select_streams a -show_entries stream=index,codec_name,sample_rate,channels input.mp4
# Doar subtitrări:
ffprobe -v error -select_streams s -show_entries stream=index,codec_name,codec_type input.mp4
Fix 3: Ieșire JSON pentru Parsare
# JSON (util pentru scripturi):
ffprobe -v error -print_format json -show_format -show_streams input.mp4
# Exemplu output:
# {
# "streams": [
# {
# "index": 0, "# "codec_name": "h264"", "# "width": 1920", "# "height": 1080",
# "r_frame_rate": "30/1]
# }
# ],
# "format": {
# "duration": "120.5",
# "bit_rate": "5000000"
# }
# }
Fix 4: Metadate Specifice
# Doar durata:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
# Output: 120.5
# Doar dimensiunile video:
ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 input.mp4
# Output: 1920,1080
# Doar codec-ul:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.mp4
# Output: h264
# Framerate:
ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of default=noprint_wrappers=1:nokey=1 input.mp4
# Output: 30000/1001 (adică 29.97fps)
Fix 5: Metadate în Fișier (FLAC, MP3, etc.)
# Metadate audio (artist, album, titlu):
ffprobe -v error -show_entries format_tags=title,artist,album input.mp3
# Toate tag-urile:
ffprobe -v error -show_entries format_tags input.mp4
Fix 6: Export Metadate în Fișier
# Salvează metadatele în fișier JSON:
ffprobe -v error -print_format json -show_format -show_streams input.mp4 > metadata.json
# Salvează doar informațiile esențiale:
ffprobe -v error -show_entries format=duration,bit_rate:stream=index,codec_name,width,height,r_frame_rate -of json input.mp4 > summary.json
Folosește DodaTech's Media Analyzer pentru a inspecta și exporta metadate media în formate structurate.
Prevenție
- Folosește
-v errorpentru a afișa doar erorile (nu warning-uri). - Folosește
-of jsonpentru output parsabil. - Folosește
-select_streamspentru a filtra streamurile. - Salvează metadatele în JSON pentru procesare ulterioară.
- Verifică tipul streamului înainte de a accesa proprietăți specifice.
Greșeli comune
- Output text neparsabil —
ffmpeg -iproduce text destinat citirii umane. - Informații incomplete — fără
-show_streams, ratezi streamurile individuale. - Kivy în loc de valoare —
-of default=noprint_wrappers=1:nokey=1pentru valori pure. - Stream greșit —
v:0vsa:0— accesezi tipul greșit de stream. - Fără
-v error— output-ul conține warning-uri care poluează parsarea.
Aceste greșeli apar frecvent în codul FFmpeg real. Contribuitorii DodaTech au identificat aceste modele prin analiza proiectelor open-source și a sistemelor de producție.
Exercițiu practic
Scrie o comandă care extrage durata, codecul video, codecul audio și rezoluția dintr-un fișier video și le salvează în format JSON.
Acest exercițiu întărește conceptele prezentate în acest ghid. Încearcă să-l implementezi înainte de a verifica soluțiile online.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro