[FFmpeg-user] Forced upmixing scheme with no way to disable
Jeremy F
advanced4 at gmail.com
Thu Jun 23 21:42:17 EEST 2022
That's what I thought! However, here are some commands showing this. I set
the lowpass to be 10khz on channel4 just to prevent any confusion (it
should clearly _not_ sound like any kind of real low pass filter). With an
input of "vid.mp4" that has standard stereo, run the following:
ffmpeg -i vid.mp4 -err_detect ignore_err -filter_complex
"[0:a]channelsplit[left][right];[left]asplit=3[l1][l2][l3];[l1]aecho=1.0:0.7:25|60:0.5|0.3[l1];[l2]lowpass=f=550[l2];[l3]adelay=1,aecho=1.0:0.7:25|60:0.5|0.3[l3];[right]asplit=3[r1][r2][r3];[r1]aecho=1.0:0.7:25|60:0.5|0.3[r1];[r2]lowpass=f=10000[r2];[r3]adelay=1,aecho=1.0:0.7:25|60:0.5|0.3[r3];[l1][r1][l2][r2][l3][r3]amerge=inputs=6[a]"
-map 0:v -map [a] -acodec aac -c:v copy vid1.mp4
Then to extract channel 4 (since its zero based it's labeled 3):
ffmpeg -i vid1.mp4 -map_channel 0.1.3 ch4.mp3
ch4.mp3 will be a 128hz lowpass filtered version of the audio, despite me
never specifying that.
On Thu, Jun 23, 2022 at 1:48 PM Paul B Mahol <onemda at gmail.com> wrote:
> On Thu, Jun 23, 2022 at 7:09 PM Jeremy F <advanced4 at gmail.com> wrote:
>
> > A more succinct way of putting it: if I channelsplit (or any other type
> of
> > upmixing as far as I'm aware) into 6 channels, channel 4 always has a
> 128hz
> > low pass filter applied to it. I do not want this
> >
> > My particular use case is I play a game that supports multi-channel live
> > audio streams, but no filters on any audio. So I apply filters myself and
> > position them as appropriate in the game (i.e. a reverb/echo effect in a
> > hallway, a 550hz lowpass outside the main area, etc.). More generally,
> > ffmpeg should allow me to apply any effect to any channel, but it would
> > appear ffmpeg sees me using 6 channels, and decides to use the default
> > 5.1(side) upmixing scheme. I could find little documentation on this
> > behaviour, but this page very briefly mentions this behaviour about
> halfway
> > down https://trac.ffmpeg.org/wiki/AudioChannelManipulation
> >
> > Also my provided command was a bit verbose. I could simply channelsplit
> L &
> > R into 3 channels each without any modification to any individual
> channels.
> > All channels will be duplicates of its original L or R channel, but
> channel
> > 4 will have a 128hz low pass on it.
> >
>
> That directly contradicts with reality.
>
> FFmpeg never applies lowpass to LFE channels, unless you call lowpass
> filter or similar filter on it.
>
>
> >
> > On Thu, Jun 23, 2022 at 12:55 PM Paul B Mahol <onemda at gmail.com> wrote:
> >
> > > On Thu, Jun 23, 2022 at 6:45 PM Jeremy F <advanced4 at gmail.com> wrote:
> > >
> > > > Hi I'm probably using ffmpeg in an edge-case way, but I simply want
> to
> > > take
> > > > 2 channels/stereo, and end up with 6 channels of audio, where I can
> > > > apply/modify/filter each channel as I please. And I figured out the
> > > ffmpeg
> > > > magic to do this, but along my dive into this it appears that no
> matter
> > > the
> > > > method used to upmix (of which there are many such as "-ac 6",
> > "asplit",
> > > > "pan", "channelsplit") it appears no matter what, I'm forced to use
> the
> > > > upmixing scheme that always sets channel 4 to a lowpass filter of
> > 128hz,
> > > > rendering it useless for my case.
> > > >
> > > > There doesn't appear to be a way to disable this that I can find, and
> > it
> > > > seems like there should be
> > > >
> > > > My current command I'm using, which works great except for channel 4
> > > > (labeled r2 in here). No matter what filter I apply, it always ends
> up
> > > > being a lowpass of 128.
> > > >
> > > > -err_detect ignore_err -filter_complex
> > > >
> > > >
> > >
> >
> [0:a]channelsplit[left][right];[left]asplit=3[l1][l2][l3];[l1]aecho=1.0:0.7:25|60:0.5|0.3[l1];[l2]lowpass=f=550[l2];[l3]adelay=1,aecho=1.0:0.7:25|60:0.5|0.3[l3];[right]asplit=3[r1][r2][r3];[r1]aecho=1.0:0.7:25|60:0.5|0.3[r1];[r2]lowpass=f=550[r2];[r3]adelay=1,aecho=1.0:0.7:25|60:0.5|0.3[r3];[l1][r1][l2][r2][l3][r3]amerge=inputs=6[a]
> > > > -map 0:v -map [a] -acodec aac -c:v copy
> > > >
> > > >
> > > > The code, at a glance, seems to corroborate this, but it's a bit
> beyond
> > > my
> > > > depth to do anything further (and I don't want to compile / make a
> > custom
> > > > version of ffmpeg)
> > > >
> > > >
> > >
> >
> https://github.com/FFmpeg/FFmpeg/blob/9aa20d28cdda0dcaa4daa2848670a6530c6ba26a/libavfilter/af_surround.c
> > > >
> > > > So, if possible, how can I disabled the upmixing scheme?
> > > >
> > >
> > > The surround filter have nothing to do with that filtergraph above.
> > >
> > > And I really failed to understand what you are trying to do.
> > >
> > >
> > >
> > > > Thanks!
> > > > --
> > > > Sincerely,
> > > >
> > > > Jeremy
> > > > _______________________________________________
> > > > ffmpeg-user mailing list
> > > > ffmpeg-user at ffmpeg.org
> > > > https://ffmpeg.org/mailman/listinfo/ffmpeg-user
> > > >
> > > > To unsubscribe, visit link above, or email
> > > > ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
> > > >
> > > _______________________________________________
> > > ffmpeg-user mailing list
> > > ffmpeg-user at ffmpeg.org
> > > https://ffmpeg.org/mailman/listinfo/ffmpeg-user
> > >
> > > To unsubscribe, visit link above, or email
> > > ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
> > >
> >
> >
> > --
> > Sincerely,
> >
> > Jeremy
> > _______________________________________________
> > ffmpeg-user mailing list
> > ffmpeg-user at ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-user
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
> >
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>
--
Sincerely,
Jeremy
More information about the ffmpeg-user
mailing list