m1gin 439

Get Info about each frame in a video:

  • ffprobe SiretulKuran3-dBz1I8rHl1g.mkv -select_streams v:0 -show_frames
  • ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -v quiet -select_streams v -show_entries frame

Show only selected entries:

ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type,key_frame

Output info in different formats:

  • ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type,key_frame -of csv
  • ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type,key_frame -of compact

-of values: csv, compact, json, xml, ini, flat

Filter only keyframes

ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type,key_frame | grep -B 2 'pict_type=I'

Get info from 83 second, read 11 frames:

  • ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -select_streams v -show_entries frame -read_intervals 83%+#11
  • ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -select_streams v -show_entries frame -read_intervals 1:23%+#11

Get nearest 2 keyframes between 100 to 200 second.

ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type -of compact -read_intervals 100%200 | grep -m 2 'pict_type=I'

Output:

frame|pkt_pts_time=98.800000|pict_type=I
frame|pkt_pts_time=101.760000|pict_type=I

ffprobe -i SiretulKuran3-dBz1I8rHl1g.mkv -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type -of default=noprint_wrappers=1:nokey=1 -read_intervals 100 | grep -m 2 -B 1 'I' | grep -P '\d+'

Output:

98.800000
101.760000

Get nearest keyframes (faster):

  • ffprobe -hide_banner -v error -show_packets -select_streams v -show_entries packet=pts_time,flags -of csv -read_intervals 40%50 video.mkv
  • ffprobe -hide_banner -v error -show_packets -select_streams v -show_entries packet=pts_time,flags -of csv -read_intervals 44%+#300 video.mkv

Output:

packet,46.087000,K_
packet,46.207000,__


Get video resolution:

ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 SiretulKuran3-dBz1I8rHl1g.mkv

Output:

1920x1080

Get Codec Name:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of csv=s=-:p=0 SiretulKuran3-dBz1I8rHl1g.mkv

Output:

vp9

Get frame rate of a video (fps):

ffprobe -v 0 -of csv=p=0 -select_streams 0 -show_entries stream=r_frame_rate SiretulKuran3-dBz1I8rHl1g.mkv

Output:

25/1

Get audio bit rate:

ffprobe -v error -select_streams a:0 -show_entries stream=bit_rate -of csv=s=x:p=0 eb115.mp4

output:
1280000

Alternative solution to get bitrate with mediainfo:

mediainfo --Inform="Audio;%BitRate%" video.webm

Get audio sample rate:

ffprobe -v error -select_streams a:0 -show_entries stream=sample_rate -of csv=s=x:p=0 eb115.mp4

Output:

48000

Get total samples of an audio stream:

ffprobe -v error -select_streams a:0 -show_entries stream=duration_ts -of default=noprint_wrappers=1:nokey=1 2019-12-22.wav.flac.ogg

Output:
112792000

Get Duration of a media file:

  • ffprobe -v error -select_streams a:0 -show_entries stream=duration -of csv=s=x:p=0 'test.mp3'
  • mediainfo --Inform='General;%Duration%' 'test.mp3'




More ffprobe tips:
https://trac.ffmpeg.org/wiki/FFprobeTips


Create video from an image and an audio file:

ffmpeg -loop 1 -i /test/back.png -i test.mp3 -r 25 -c:a copy -shortest test.avi


Unseekable video in VLC. But it's smaller video size...
Since Youtube already re-processing videos, It is OK to be uploaded on youtube.

sec=1117; png="/media/data/Belgelerim/PROJE/ENLEM ve BOYLAM/[ALTYAPI]/video/eb121/eb.png"; ffmpeg -f concat -safe 0 -i <( echo "file '$png'"; echo "duration 0.5"; echo "file '$png'"; echo "duration $sec"; echo "file '$png'"; echo "duration 0.5"; ) -i "/media/data/SES/DİNLETİ/mbirgin/Enlem_ve_Boylam/Enlem_ve_Boylam_121_Eylul_2018.mp3" -c:a copy -map 0:v -map 1:a -shortest eb121.avi

Seekable with 10 seconds steps:
The video duration is not accurate... It may be longer as long as the step. (in this example 10 seconds)

ffmpeg -f concat -safe 0 -i <(for c in {0..1111}; do echo "file '/media/data/Belgelerim/PROJE/ENLEM ve BOYLAM/[ALTYAPI]/video/eb121/eb.png'"; echo "duration 10"; done) -i "/media/data/SES/DİNLETİ/mbirgin/Enlem_ve_Boylam/Enlem_ve_Boylam_121_Eylul_2018.mp3" -c:a copy -map 0:v -map 1:a -shortest eb121.avi


#ffmpeg #ffprobe #ubuntu #cutvideos #keyframes

Add to: