Answers.Body: <p>You're trying to store an AAC stream in a MP3 container, would be my guess.</p>
  
  <p>Either store the result as <code>"${i%.mp3}-ENCODED.aac"</code> or switch <code>-c:a aac</code> to <code>-c:a libmp3lame</code></p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-03-16T18:35:03.213Z
Answers.Text: Thanks! Funny, I always thought the mp3 format could contain aac. Looks like that presumtion was completely wrong!
Answers.UserDisplayName: P A N
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-03-16T18:32:51.433Z
Answers.LastActivityDate: 2016-03-16T18:32:51.433Z
Answers.UserDisplayName: Gyan
Body: <p>I am trying to adapt this FFmpeg script that encodes all video files in a directory, to instead convert mp3 files present in that directory with similar preferences.</p>
  
  <h2>The original script:</h2>
  
  <p><em>This works for .MOV -> .MOV encoding.</em></p>
  
  <pre><code>cd /Convert; for i in *.MOV; do ffmpeg -i "$i" -c:v libx265 -preset veryslow -crf 23 -af "volume=25dB, highpass=f=180, lowpass=f=15000, equalizer=f=50:width_type=h:width=100:g=-15" -c:a aac -strict experimental -b:a 192k "${i%.MOV}-ENCODED.MOV"; done
  </code></pre>
  
  <h2>Adapted for mp3 re-encoding:</h2>
  
  <pre><code>cd /Convert; for i in *.mp3; do ffmpeg -i "$i" -af "volume=25dB, highpass=f=180, lowpass=f=15000, equalizer=f=50:width_type=h:width=100:g=-15" -c:a aac -strict experimental -b:a 192k "${i%.mp3}-ENCODED.mp3"; done
  </code></pre>
  
  <p><em>Throws errors:</em></p>
  
  <pre><code>Invalid audio stream. Exactly one MP3 audio stream is required.
  Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument.
  </code></pre>
  
  <p>What is wrong with the script?</p>
  
Tags: <ffmpeg>
Title: FFMpeg: "Invalid audio stream. Exactly one MP3 audio stream is required"
UserDisplayName: P A N
ThreadText: # FFMpeg: "Invalid audio stream. Exactly one MP3 audio stream is required"
  
  (Asked by: username_0 on 2016-03-16)
  
  I am trying to adapt this FFmpeg script that encodes all video files in a directory, to instead convert mp3 files present in that directory with similar preferences.
  
  ## The original script:
  
  *This works for .MOV -> .MOV encoding.*
  
  ```
  cd /Convert; for i in *.MOV; do ffmpeg -i "$i" -c:v libx265 -preset veryslow -crf 23 -af "volume=25dB, highpass=f=180, lowpass=f=15000, equalizer=f=50:width_type=h:width=100:g=-15" -c:a aac -strict experimental -b:a 192k "${i%.MOV}-ENCODED.MOV"; done
  
  ```
  
  ## Adapted for mp3 re-encoding:
  
  ```
  cd /Convert; for i in *.mp3; do ffmpeg -i "$i" -af "volume=25dB, highpass=f=180, lowpass=f=15000, equalizer=f=50:width_type=h:width=100:g=-15" -c:a aac -strict experimental -b:a 192k "${i%.mp3}-ENCODED.mp3"; done
  
  ```
  
  *Throws errors:*
  
  ```
  Invalid audio stream. Exactly one MP3 audio stream is required.
  Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument.
  
  ```
  
  What is wrong with the script?
  
  **Tags:** ffmpeg
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2016-03-16. Score: 20 | Accepted answer
  
  You're trying to store an AAC stream in a MP3 container, would be my guess.
  
  Either store the result as `"${i%.mp3}-ENCODED.aac"` or switch `-c:a aac` to `-c:a libmp3lame`
  
  > **Comments:**
  > **username_0**: Thanks! Funny, I always thought the mp3 format could contain aac. Looks like that presumtion was completely wrong!  
  
  ---
  
  