User Tools

Site Tools


ffprobe

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ffprobe [2019-10-04 10:22:09]
mi [Other options]
ffprobe [2023-06-08 15:10:59] (current)
mi [Show video format]
Line 3: Line 3:
 The normal text output of ''​ffprobe''​ goes to stderr, so you usually need to add ''​2>&​1''​ to parse the output. The alternative is to use the complex ffprobe options to format the output which then goes to stdout. The normal text output of ''​ffprobe''​ goes to stderr, so you usually need to add ''​2>&​1''​ to parse the output. The alternative is to use the complex ffprobe options to format the output which then goes to stdout.
  
 +Start with a look at this page: https://​trac.ffmpeg.org/​wiki/​FFprobeTips
 +
 +===== Show metadata tags=====
 +
 +  ffprobe -v quiet "​$in"​ -print_format json -show_entries stream_tags:​format_tags
 + 
 +(for ''​-print_format'',​ there is also ''​flat'',​ ''​xml'',​ ''​csv'',​ etc.)
 +
 +===== Show video format=====
 +
 +  ffprobe -v warning -select_streams v -show_entries stream=codec_name,​height,​width,​pix_fmt -of csv=p=0 "​$in"​
 +
 +===== Has alpha channel? =====
 +
 +https://​stackoverflow.com/​questions/​69029439/​a-good-way-to-detect-alpha-channel-in-a-video-using-ffmpeg-ffprobe
 +
 +<code bash>for f in *.mov; do
 +  pixfmt=$(ffprobe -v 0 -select_streams v:0 -show_entries stream=pix_fmt -of compact=p=0:​nk=1 "​$f"​)
 +  alpha=$(ffprobe -v 0 -show_entries pixel_format=name:​flags=alpha -of compact=p=0 ​ | grep "​$pixfmt|"​ | grep -oP "​(?<​=alpha=)\d"​)
 +  if (( alpha )); then echo "$f : yes, has alpha";​ else echo "$f : NO"; fi
 +done
 +</​code>​
 ===== List audio tracks ===== ===== List audio tracks =====
  
-  ffprobe "​$in"​ 2>&1 | perl -nle '/​^\s+Stream #(\d+:\d+): Audio/ && print $1'+  ffprobe "​$in"​ 2>&1 | perl -nle '/​^\s+Stream #(\d+:\d+).*?: Audio/ && print $1'
   ​   ​
 with codec and number of channels: with codec and number of channels:
  
-  ffprobe "​$in"​ 2>&1 | perl -nle '/​^\s+Stream #(\d+:\d+): Audio: (\S+).*(\d+)\s+channels/​ && print join("​\t",​ $1, $2, $3)'+  ffprobe "​$in"​ 2>&1 | perl -nle '/​^\s+Stream #(\d+:\d+).*?: Audio: (\S+).*(?:(\d+)\s+channels)?/ && print join("​\t",​ $1, $2, $3)'
  
 or to have the tracks in a Bash array: or to have the tracks in a Bash array:
Line 17: Line 39:
 or the "​official"​ way: or the "​official"​ way:
  
-  ffprobe -select_streams a -show_entries stream=index -of csv=p=0 "​$in"​+  ffprobe ​-v quiet -select_streams a -show_entries stream=index -of csv=p=0 "​$in"​
   ​   ​
-  ffprobe -select_streams a -show_entries stream=index,​codec_name,​channels -of csv=p=0 "​$in"​+  ffprobe ​-v quiet -select_streams a -show_entries stream=index,​codec_name,​channels -of csv=p=0 "​$in"​
   ​   ​
-  audio_tracks=( $(ffprobe -select_streams a -show_entries stream=index -of csv=p=0 "​$in"​) )+  audio_tracks=( $(ffprobe ​-v quiet -select_streams a -show_entries stream=index -of csv=p=0 "​$in"​) ) 
 + 
 +===== List subtitles ===== 
 + 
 +  ffprobe -v quiet -select_streams s -show_entries stream=index,​codec_name:​stream_tags=language -of csv=p=0 "​$in"​ 
 + 
 +(but for mkv, better see [[mkv]]) 
  
 ===== Check Volume ===== ===== Check Volume =====
/docs/dokuwiki/data/attic/ffprobe.1570177329.txt.gz · Last modified: 2019-10-04 10:22:09 by mi