diff --git a/ffconv/profiles.py b/ffconv/profiles.py
index dc57c5b..6320b69 100644
--- a/ffconv/profiles.py
+++ b/ffconv/profiles.py
@@ -33,7 +33,7 @@ ROKU = {
     'audio': {
         'codecs': ['mp3', 'aac', 'flac'],
         'container': 'mp3',
-        'channels': 2,
+        'max_channels': 2,
         'quality': 2
     },
     'subtitle': {
diff --git a/ffconv/stream_processors.py b/ffconv/stream_processors.py
index 9869ff7..0679793 100644
--- a/ffconv/stream_processors.py
+++ b/ffconv/stream_processors.py
@@ -173,8 +173,8 @@ class AudioProcessor(StreamProcessor):
         self.channels = int(stream['channels'])
 
         # Set target quality and channels
+        self.max_channels = int(profile[self.media_type]['max_channels'])
         self.target_quality = profile[self.media_type]['quality']
-        self.target_channels = int(profile[self.media_type]['channels'])
 
     @property
     def must_convert(self):
@@ -183,7 +183,7 @@ class AudioProcessor(StreamProcessor):
         number of channels is acceptable.
         """
         return any((super(AudioProcessor, self).must_convert,
-                    self.channels != self.target_channels))
+                    self.channels > self.max_channels))
 
     def clean_up(self):
         """
@@ -198,7 +198,7 @@ class AudioProcessor(StreamProcessor):
         """
         cmd = ['ffmpeg', '-i', self.input, '-map', '0:{}'.format(self.index),
                '-c:a', self.target_codec, '-q:a', str(self.target_quality),
-               '-ac:0', str(self.target_channels), self.output]
+               '-ac:0', str(self.max_channels), self.output]
         execute_cmd(cmd)
 
 
diff --git a/setup.py b/setup.py
index b3b63f3..fdfae33 100644
--- a/setup.py
+++ b/setup.py
@@ -21,7 +21,7 @@ setup(
     name='ffconv',
 
     # https://packaging.python.org/en/latest/single_source_version.html
-    version='0.2.0',
+    version='0.2.1',
 
     description='Process media files with ffmpeg',
     long_description=long_description,
diff --git a/sonar-project.properties b/sonar-project.properties
index ff416df..8ff64bf 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -2,7 +2,7 @@
 sonar.projectKey=utils:ffconv
 # this is the name displayed in the SonarQube UI
 sonar.projectName=ffconv
-sonar.projectVersion=0.0.2
+sonar.projectVersion=0.2.1
  
 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
 # Since SonarQube 4.2, this property is optional if sonar.modules is set. 

Do not encode audio with less channels than target
Encoding of audio streams is triggered when the number of channels does not match the target, but it should only do so when the input stream value is greater than the target, not less. A *mono* audio stream, for instance, should not need to be converted for the *roku* profile.
diff --git a/tests/test_streams.py b/tests/test_streams.py
index 944fec5..5502627 100644
--- a/tests/test_streams.py
+++ b/tests/test_streams.py
@@ -110,7 +110,7 @@ class AudioProcessorTest(TestCase):
         self.assertEqual(processor.target_codec, 'mp3')
         self.assertEqual(processor.output, 'audio-3.mp3')
         self.assertEqual(processor.channels, 2)
-        self.assertEqual(processor.target_channels, 2)
+        self.assertEqual(processor.max_channels, 2)
 
     @patch('ffconv.stream_processors.execute_cmd')
     def test_convert(self, ecmd):
@@ -141,6 +141,17 @@ class AudioProcessorTest(TestCase):
         self.assertFalse(processor.convert.called)
         self.assertFalse(processor.clean_up.called)
 
+        # Attempt process with less channels, should do nothing
+        stream = {'index': 1, 'codec_type': 'audio', 'codec_name': 'aac',
+                  'channels': 1, 'tags': {'language': 'por'}}
+
+        processor = AudioProcessor(input, stream, profile)
+        res = processor.process()
+        self.assertEqual(res, {'input': 'some-film.mkv', 'index': 1,
+                               'language': 'por'})
+        self.assertFalse(processor.convert.called)
+        self.assertFalse(processor.clean_up.called)
+
         # Attempt mp3 process, should convert
         stream = {'index': 1, 'codec_type': 'audio', 'codec_name': 'ac3',
                   'channels': 2, 'tags': {'language': 'por'}}

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
astroid==3.3.9
coverage==7.8.0
dill==0.3.9
exceptiongroup==1.2.2
-e git+https://github.com/kako-nawao/ffconv.git@53a304807ccc8c488ea1e335a5d8d3f7ef45d85f#egg=ffconv
iniconfig==2.1.0
isort==6.0.1
mccabe==0.7.0
nose2==0.15.1
packaging==24.2
platformdirs==4.3.7
pluggy==1.5.0
pylint==3.3.6
pytest==8.3.5
tomli==2.2.1
tomlkit==0.13.2
typing_extensions==4.13.0

name: ffconv
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - astroid==3.3.9
      - coverage==7.8.0
      - dill==0.3.9
      - exceptiongroup==1.2.2
      - iniconfig==2.1.0
      - isort==6.0.1
      - mccabe==0.7.0
      - nose2==0.15.1
      - packaging==24.2
      - platformdirs==4.3.7
      - pluggy==1.5.0
      - pylint==3.3.6
      - pytest==8.3.5
      - tomli==2.2.1
      - tomlkit==0.13.2
      - typing-extensions==4.13.0
prefix: /opt/conda/envs/ffconv

tests/test_streams.py::AudioProcessorTest::test_init tests/test_streams.py::AudioProcessorTest::test_process
tests/test_streams.py::VideoProcessorTest::test_convert tests/test_streams.py::VideoProcessorTest::test_init tests/test_streams.py::VideoProcessorTest::test_process tests/test_streams.py::AudioProcessorTest::test_convert tests/test_streams.py::SubtitleProcessorTest::test_clean_up tests/test_streams.py::SubtitleProcessorTest::test_convert tests/test_streams.py::SubtitleProcessorTest::test_init tests/test_streams.py::SubtitleProcessorTest::test_process
setup.py ffconv/profiles.py ffconv/stream_processors.py sonar-project.properties
setup.py ffconv/profiles.py ffconv/stream_processors.py sonar-project.properties