diff --git a/docs/plugin_matrix.rst b/docs/plugin_matrix.rst
index 484121c1..7021b5cb 100644
--- a/docs/plugin_matrix.rst
+++ b/docs/plugin_matrix.rst
@@ -223,7 +223,7 @@ turkuvaz                - atv.com.tr         Yes   No
                         - minikacocuk.com.tr
                         - minikago.com.tr
                         - sabah.com.tr
-tv1channel              tv1channel.org       Yes   Yes
+tv1channel              tv1channel.org       Yes   No
 tv3cat                  tv3.cat              Yes   Yes   Streams may be geo-restricted to Spain.
 tv4play                 - tv4play.se         Yes   Yes   Streams may be geo-restricted to Sweden.
                                                          Only non-premium streams currently supported.
diff --git a/src/streamlink/plugins/tv1channel.py b/src/streamlink/plugins/tv1channel.py
index cc38ecb0..359107b9 100644
--- a/src/streamlink/plugins/tv1channel.py
+++ b/src/streamlink/plugins/tv1channel.py
@@ -1,25 +1,32 @@
 import re
 
 from streamlink.plugin import Plugin
-
-_url_re = re.compile(r'''https?://(www\.)?tv1channel\.org/''')
-_embed_re = re.compile(r'''<iframe.+src="([^"]+)"''')
+from streamlink.plugin.api import useragents
+from streamlink.plugin.api.utils import itertags
+from streamlink.stream import HLSStream
 
 
 class TV1Channel(Plugin):
+    _url_re = re.compile(r'https?://(?:www\.)?tv1channel\.org/(?!play/)(?:index\.php/livetv)?')
+
     @classmethod
     def can_handle_url(cls, url):
-        return _url_re.match(url)
+        return cls._url_re.match(url) is not None
 
     def _get_streams(self):
+        self.session.http.headers.update({'User-Agent': useragents.FIREFOX})
         res = self.session.http.get(self.url)
-        match = _embed_re.search(res.text)
+        for iframe in itertags(res.text, 'iframe'):
+            if 'cdn.netbadgers.com' not in iframe.attributes.get('src'):
+                continue
+
+            res = self.session.http.get(iframe.attributes.get('src'))
+            for source in itertags(res.text, 'source'):
+                if source.attributes.get('src') and source.attributes.get('src').endswith('.m3u8'):
+                    return HLSStream.parse_variant_playlist(self.session,
+                                                            source.attributes.get('src'))
 
-        if match:
-            url = match.group(1)
-            if url.startswith('//'):
-                url = 'https:{0}'.format(url)
-            return self.session.streams(url)
+            break
 
 
 __plugin__ = TV1Channel

TV1 Plugin - new player being used

## Bug Report
- [x] This is a bug report and I have read the contribution guidelines.


### Description
 TV1 won't start, because they're using a different player now.


### Expected / Actual behavior

Should have worked?


### Reproduction steps / Explicit stream URLs to test


1. streamlink http://tv1channel.org/ best
2. ? ? ?
3. profit
diff --git a/tests/plugins/test_tv1channel.py b/tests/plugins/test_tv1channel.py
index 982c4259..dd025748 100644
--- a/tests/plugins/test_tv1channel.py
+++ b/tests/plugins/test_tv1channel.py
@@ -8,8 +8,8 @@ class TestPluginTV1Channel(unittest.TestCase):
         # should match
         self.assertTrue(TV1Channel.can_handle_url("http://tv1channel.org/"))
         self.assertTrue(TV1Channel.can_handle_url("http://tv1channel.org/index.php/livetv"))
-        self.assertTrue(TV1Channel.can_handle_url("http://www.tv1channel.org/play/video.php?id=325"))
-        self.assertTrue(TV1Channel.can_handle_url("http://www.tv1channel.org/play/video.php?id=340"))
 
         # shouldn't match
         self.assertFalse(TV1Channel.can_handle_url("https://local.local"))
+        self.assertFalse(TV1Channel.can_handle_url("http://www.tv1channel.org/play/video.php?id=325"))
+        self.assertFalse(TV1Channel.can_handle_url("http://www.tv1channel.org/play/video.php?id=340"))

pip install -e .[dev]
parse_log_pytest
requirements.txt
apt-get update apt-get install -y gcc
3.7
dev-requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
codecov==2.1.13
coverage==7.2.7
exceptiongroup==1.2.2
freezegun==1.5.1
idna==3.10
importlib-metadata==6.7.0
iniconfig==2.0.0
iso-639==0.4.5
iso3166==2.1.1
isodate==0.7.2
mock==5.2.0
packaging==24.0
pluggy==1.2.0
pycryptodome==3.22.0
PySocks==1.7.1
pytest==7.4.4
pytest-cov==4.1.0
python-dateutil==2.9.0.post0
requests==2.31.0
requests-mock==1.12.1
six==1.17.0
-e git+https://github.com/streamlink/streamlink.git@3302f655a8309c944ffbfdd9e8000c59532b8911#egg=streamlink
tomli==2.0.1
typing_extensions==4.7.1
urllib3==2.0.7
websocket-client==1.6.1
zipp==3.15.0

name: streamlink
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
  - certifi=2022.12.7=py37h06a4308_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=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - charset-normalizer==3.4.1
      - codecov==2.1.13
      - coverage==7.2.7
      - exceptiongroup==1.2.2
      - freezegun==1.5.1
      - idna==3.10
      - importlib-metadata==6.7.0
      - iniconfig==2.0.0
      - iso-639==0.4.5
      - iso3166==2.1.1
      - isodate==0.7.2
      - mock==5.2.0
      - packaging==24.0
      - pluggy==1.2.0
      - pycryptodome==3.22.0
      - pysocks==1.7.1
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - python-dateutil==2.9.0.post0
      - requests==2.31.0
      - requests-mock==1.12.1
      - six==1.17.0
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - urllib3==2.0.7
      - websocket-client==1.6.1
      - zipp==3.15.0
prefix: /opt/conda/envs/streamlink

tests/plugins/test_tv1channel.py::TestPluginTV1Channel::test_can_handle_url
src/streamlink/plugins/tv1channel.py docs/plugin_matrix.rst
src/streamlink/plugins/tv1channel.py docs/plugin_matrix.rst