Skip to content

Commit 80aa4aa

Browse files
committed
fix: handle missing bitrate in some muxers
fixup
1 parent fc34c19 commit 80aa4aa

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

lib/ffmpeg/command_args.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,18 @@ def adjusted_video_bit_rate(target_value)
123123
# @param target_value [Integer, String] The target audio bit rate.
124124
# @return [String]
125125
def adjusted_audio_bit_rate(target_value)
126+
126127
min_bit_rate(media.audio_bit_rate, target_value)
127128
end
128129

129130
private
130131

131132
def min_bit_rate(*values)
132133
bit_rate =
133-
values.compact.map do |value|
134-
next value if value.is_a?(Integer)
134+
values.filter_map do |value|
135+
# Some muxers (webm) might not expose birate under certain conditions
136+
next false if value.nil?
137+
next (value > 0 ? value : false) if value.is_a?(Integer)
135138

136139
unless value.is_a?(String)
137140
raise ArgumentError,

spec/ffmpeg/command_args_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,14 @@ module FFMPEG
9696
expect(args.to_a).to eq(%w[])
9797
end
9898
end
99+
100+
context 'when the reported media bitrate is 0' do
101+
it "returns the requested bitrate" do
102+
media = instance_double(Media, video_bit_rate: 0)
103+
args = CommandArgs.compose(media) { min_video_bit_rate '2M' }
104+
expect(args.to_a).to eq(%w[-minrate 2000k])
105+
end
106+
end
99107
end
100108

101109
describe '#max_video_bit_rate' do

0 commit comments

Comments
 (0)