user27302: I often download mp4 videos with multiple audio tracks. 
Is it any way or some tools with explanation to change default audio track ?

user18155: Some media players simply start playing the first audio stream (track). For them you may simply change the order of audio streams.
For example, suppose you have 1 video stream and 3 audio streams in your input file, and you want to move the 3rd audio stream to be the first of audio streams.
Use
ffmpeg -i input.mp4 -map 0:v -map 0:a:2 -map 0:a:0 -map 0:a:1 -c copy output.mp4 

so -map 0:a:2 places the 3rd audio stream (stream numbers begin with 0, so 2 is the 3rd one) in front of all others audio streams (-map 0:a:0 -map 0:a:1).  

Note:

0:v means all video streams in the input file 0 (input files are numbered from 0)
0:a:2 means: input file 0, audio stream number 2
0:a:0 means: input file 0, audio stream number 0
0:a:1 means: input file 0, audio stream number 1


user18155: Use FFmpeg:
ffmpeg -i input.mp4 -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default output.mp4

Audio tracks (streams) are numbered from 0. 
Supposing the input video has 2 audio streams, and the default audio stream is 0, we need to 

remove the “default” disposition from it (by setting it to 0: -disposition:a:0 0) and  
set it to the audio stream 1 (by setting it to “default”: -disposition:a:1 default).

In general, remove the “default” disposition from all audio streams except one, and set it for it.

Note:
Not all media players honor default audio stream — for example Media Player Classic don't honor it (but you may set the preference by the language of audio streams), while VLC Media Player and FFplay do.

Proof (note the location of the “(default)” tag):
ffprobe -hide_banner input.mp4

gives (among others)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 69 kb/s (default)
Metadata:
  handler_name    : SoundHandler
Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 74 kb/s
Metadata:
  handler_name    : SoundHandler

while
ffprobe -hide_banner output.mp4

gives
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 69 kb/s
Metadata:
  handler_name    : SoundHandler
Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 74 kb/s (default)
Metadata:
  handler_name    : SoundHandler

The numbering here numbers all tracks, so #0:0 (omitted from the FFprobe outputs) is the first (video) track, and #0:1 and #0:2 are audio tracks.

27302: <p>I often download mp4 videos with multiple audio tracks. 
Is it any way or some tools with explanation to change default audio track ?</p>
 18155: <p>Some media players simply start playing the first audio stream (track). For them you may simply change the order of audio streams.</p>

<p>For example, suppose you have 1 video stream and 3 audio streams in your input file, and you want to move the 3rd audio stream to be the first of audio streams.</p>

<p>Use</p>

<pre><code>ffmpeg -i input.mp4 -map 0:v -map 0:a:2 -map 0:a:0 -map 0:a:1 -c copy output.mp4 
</code></pre>

<p>so <code>-map 0:a:2</code> places the 3rd audio stream (stream numbers begin with <code>0</code>, so <code>2</code> is the 3rd one) in front of all others audio streams (<code>-map 0:a:0 -map 0:a:1</code>).  </p>

<hr>

<p><em>Note:</em></p>

<ul>
<li><code>0:v</code> means <em>all</em> <strong>v</strong>ideo streams in the input file <code>0</code> (input files are numbered from <code>0</code>)</li>
<li><code>0:a:2</code> means: input file <code>0</code>, <strong>a</strong>udio stream number <code>2</code></li>
<li><code>0:a:0</code> means: input file <code>0</code>, <strong>a</strong>udio stream number <code>0</code></li>
<li><code>0:a:1</code> means: input file <code>0</code>, <strong>a</strong>udio stream number <code>1</code></li>
</ul>
 18155: <p>Use <a href="https://ffmpeg.org/" rel="nofollow noreferrer">FFmpeg</a>:</p>

<pre><code>ffmpeg -i input.mp4 -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default output.mp4
</code></pre>

<p>Audio tracks (streams) are numbered from <code>0</code>. </p>

<p>Supposing the input video has 2 audio streams, and the default audio stream is <code>0</code>, we need to </p>

<ul>
<li><em>remove</em> the “default” disposition from it (by setting it to 0: <code>-disposition:a:0 0</code>) and  </li>
<li><em>set it</em> to the audio stream <code>1</code> (by setting it to “default”: <code>-disposition:a:1 default</code>).</li>
</ul>

<p>In general, <em>remove</em> the “default” disposition from all audio streams except one, and <em>set it</em> for it.</p>

<hr>

<p><em>Note:</em></p>

<p>Not all media players honor default audio stream — for example Media Player Classic don't honor it (but you may set the preference by the language of audio streams), while VLC Media Player and FFplay do.</p>

<hr>

<p><em>Proof (note the location of the “(default)” tag):</em></p>

<pre><code>ffprobe -hide_banner input.mp4
</code></pre>

<p>gives (among others)</p>

<pre><code>Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 69 kb/s (default)
Metadata:
  handler_name    : SoundHandler
Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 74 kb/s
Metadata:
  handler_name    : SoundHandler
</code></pre>

<p>while</p>

<pre><code>ffprobe -hide_banner output.mp4
</code></pre>

<p>gives</p>

<pre><code>Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 69 kb/s
Metadata:
  handler_name    : SoundHandler
Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 74 kb/s (default)
Metadata:
  handler_name    : SoundHandler
</code></pre>

<p>The numbering here numbers <em>all</em> tracks, so <code>#0:0</code> (omitted from the FFprobe outputs) is the first (video) track, and <code>#0:1</code> and <code>#0:2</code> are audio tracks.</p>
