How to select the left audio channel with ffmpeg and downmix to mono?

2

I have an old "stereo" movie as a mp4 file.

The sound is only in the left channel, the right channel is silent.

I'd like to use ffmpeg to copy the video stream :

ffmpeg -hide_banner -i video.mp4 -c:v copy ...

and convert the audio to mono by selecting only the left channel :

-map_channel 0.1.0 -map_channel -1

But that didn't change anything :-(

What is the correct ffmpeg command line for that ?

Is it also possible to do that whithout re-encoding ?

SebMa

Posted 2016-04-08T20:33:32.107

Reputation: 599

Question was closed 2019-03-18T18:45:17.720

Answers

9

There are at least two methods to select the left audio channel and output as mono.

Using -map_channel

Assuming the input only contains audio:

ffmpeg -i input -map_channel 0.0.0 output
  • The first number is the input file id: you only have one input so that will be 0. The second number is the stream specifier: if the audio is the second stream, such is often the case in a typical video file, then you would use 1 instead. The third number is the channel number: in a stereo input the first channel is usually the Front Left, and the second is usually the Front Right.

  • If you want the right channel instead use -map_channel 0.0.1.

  • If the input contains video, then the audio will likely (but not always) be listed as the second stream, so you would need to use 0.1.0 instead.

Using pan audio filter

ffmpeg -i input -af "pan=mono|c0=FL" output
  • Alternatively, you could use pan=mono|c0=c0.
  • If you want the right channel instead use pan=mono|c0=FR (or pan=mono|c0=c1).

Also see

llogan

Posted 2016-04-08T20:33:32.107

Reputation: 31 929

Hi, you said "Assuming the input only contains audio:". The problem is that my file contains both video and audio :) – SebMa – 2016-04-13T14:45:38.643

@SebMa This one reason why you need to include the complete console output from your commands so the answers can be more accurate and less based on assumptions. I edited the answer mentioning video. – llogan – 2016-04-13T15:53:35.323

Sorry I forgot to give it but ffmpeg didn't give any error anyway. In my question, you can notice I used -map_channel 0.1.0 but this is not enough to get both channels point to the left one. – SebMa – 2016-04-14T16:43:30.420

@SebMa Using -map_channel 0.1.0 works for me to make a mono audio file from the left channel of a stereo input (with video as the first stream). – llogan – 2016-04-14T17:33:38.473

I think it only works for audio files. For videos, you have to add -ac 1 – SebMa – 2016-04-30T08:51:31.573

Hi, I think the best would be that I give the youtube URL of the video that I'm trying to convert to a mono video : https://www.youtube.com/watch?v=l9dPJCFXAes

– SebMa – 2016-05-03T11:25:54.730

@SebMa What are you using to get a local copy of the video? – llogan – 2016-05-03T18:52:00.427

youtube-dl, but don't bother.

I solved the pb. by replacing :

-map_channel 0.1.0 -map_channel -1

which actually muted the second audio channel, instead of just using :

-map_channel 0.1.0

Thanks for your help :) – SebMa – 2016-05-07T01:32:15.887

0

@LordNeckbeard : Found the reason why my resulting file had only audio on the left channel like my source file.

It was because I used :

-map_channel 0.1.0 -map_channel -1

which muted the second audio channel, instead of just using :

-map_channel 0.1.0

Thanks for your help :)

SebMa

Posted 2016-04-08T20:33:32.107

Reputation: 599