Background
I have an .mp4
video and I need to get the video’s frame rate. Using ffmepg (in Linux) I know I can get this information via the following command:
ffprobe -v 0 -of compact=p=0 -select_streams 0 -show_entries stream=r_frame_rate 'MyVideoFIle.mp4'
Which returns:
r_frame_rate=24000/1001
FFmpex
Doing this in bash is fine, but what I really want is to use it in my Elixir application. To this end I found out about ffmpex
.
First I tried using FFprobe
:
> FFprobe.format("Devil May Cry 5 Bury the Light LITTLE V COVER.mp4")
{:ok,
%{
"bit_rate" => "611784",
"duration" => "482.999000",
"filename" => "Devil May Cry 5 Bury the Light LITTLE V COVER.mp4",
"format_long_name" => "QuickTime / MOV",
"format_name" => "mov,mp4,m4a,3gp,3g2,mj2",
"nb_programs" => 0,
"nb_streams" => 2,
"probe_score" => 100,
"size" => "36936415",
"start_time" => "0.000000",
"tags" => %{
"compatible_brands" => "isomiso2avc1mp41",
"encoder" => "Lavf58.19.102",
"major_brand" => "isom",
"minor_version" => "512"
}
}}
Which gives me some information, but not the frame rate.
My next tentative was to use the command options:
command =
FFmpex.new_command()
|> add_input_file("Devil May Cry 5 Bury the Light LITTLE V COVER.mp4")
|> add_video_option(???)
But the problem here is that I can’t find in the documentation the video option I need to get the native frame rate. I only found vframe
which is used to set the video frame rate.
Question
- How can I get the native fps of a video using
ffmpex
?