MPlayer and Mencoder to the rescue again!
I downloaded a movie the other night which was advertised as having both Spanish and English soundtracks. I had found films like this before, but English had always been the first audio track, so had never been a problem. On this occasion, Spanish was the first audio track. I didn’t want to have to fiddle around with Geexbox getting the right language playing, so needed to sort this out, so that English was the audio track that played. I wasn’t too bothered about dropping the Spanish soundtrack.
Four “simple” steps.
- Confirm the aid number of the English language track. Running the video with mplayer in verbose mode produced enough information to find this easily, as track 2
- mplayer -v inputvideo.avi
- Extract the english audio track from the avifile
- mplayer -aid 2 -dumpaudio -dumpfile englishaudio.mp3 inputvideo.avi
- Copy the video track out without any sound
- mencoder -ovc copy -nosound -o soundlessvideo.avi inputvideo.avi
- Stick the soundless video and the English audio track back together
- mencoder -ovc copy soundlessvideo.avi -oac copy -audiofile englishaudio.mp3 -o newvideo.avi
No encoding or transcoding going on, just demuxing and remuxing of the right parts. Apparently the use of -nosound can cause a/v sync issues, but in this case a/v sync was fine all the way through.
Found another way too, as doing the above with ac3 sound doesn’t sync well at all. Simply re-encode the audio and output to a new file:
mencoder -ovc copy -oac mp3lame aid 2 inputfile.avi -o outputfile.avi
or to simply grab the second audio stream without encoding
mencoder -ovc copy -oac copy aid 2 inputfile.avi -o outputfile.avi