1

I have a couple of mp3s that are stereo but one of the channels is silent, quite annoying to listen to, especially in earphones. I can't get new recordings (the tracks are bootlegs with unknown origin) so I the second best option I guess would be to convert them to mono replacing the silent track with the other track.

I read this similar question Convert mp3 from mono to stereo using Lame but the solutions suggested does not seem to apply to my situation.

What tool can replace one track with the other in my situation, preferably lossless and preferably using "joint stereo" (= the new channel will in practice be empty, avoiding increasing the size of the files in a significant way)?

4
  • Why don't they apply? – Ƭᴇcʜιᴇ007 Nov 16 '14 at 21:37
  • 1
    Wouldnt every device you have play a mono signal on both channels? Given files of that type I would prefer to use the one channel to make a mono file, not to double the data quantity? Converting a stereo to mono without selecting the track itself , would mix the 2 in most programs, again creating unnessisary work, and mixing a dead and possibly noisey track with the one good one, and would/could half the original track and require de-compression re-compression due to mixing cannot be done when compressed. – Psycogeek Nov 16 '14 at 22:06
  • You misunderstand. The files are stereo but one of the channels are silent. – d-b Nov 17 '14 at 9:46
  • 1
    Apparently silent & digitally silent are not necessarily the same thing. Psychogeek has the correct approach, Polyergic's answer has the method to employ. Using a combination of both is your best solution. Your resulting file can easily be mono, which will then play equally from both speakers, without any possibility of adding noise or suffering phase discrepancy. – Tetsujin Nov 17 '14 at 11:26
3

You can do this with ffmpeg. Their Audio Channel Manipulation page has many examples, including this example to split audio channels into separate files:

ffmpeg -i stereo.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav

It will do the same with any format it understands, which includes mp3. The example splits one stereo file into two mono files, without any reencoding. I assume all players will (by default) play the one channel to each speaker. You can follow this example to make a stereo file with the same audio copied into both channels. To get joint stereo you have to reencode, which (on mp3) is not lossless; that page does not have an example.

If you're doing this on Windows (and not using Cygwin), it looks like the best source is the Zeranoe FFmpeg builds

4

So I tried the ffmpeg method and I get the impression that it is reencoding. It takes quite a while to process, uses up a lot of cpu (both way more than MP3directcut); the resulting files show a different codec in Mediainfo's readout; and when comparing spectrograms from original and split files there are marked differences. Just to check I transcoded the original with the same encoding settings (lame 128kpbs cbr stereo mp3 -> lame 128 cbr stereo mp3) and the original was much closer to the transcode than to the split files from ffmpg.

I really don't think this method is lossless. You might as well use a program like Audacity.

1

I can't comment ShadSterling's nor Jayden's answers (not enough rep), so here's my 2 cents.

This command does indeed seem to reencode (in my case, left.wav and right.wav were in Vorbis, while stereo.wav was aac), as Jayden hinted.

ffmpeg -i stereo.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav

However, this command, taken from the same examples page, does seem (for me the resulting file was in the same codec as the source - AAC - but this not a complete proof that no reencoding happened) to do the job (no reencoding) :

ffmpeg -i stereo.wav -af "pan=mono|c0=c1" mono.m4a

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.