将两个py文件,然后使用pyinstaller进行打包,将打包结果exe程序,m3u文件放置到vlc压缩包版本的根目录,运行exe程序即可。
本项目已在github开源,仓库名称为: duminghan23/my_vlc/ 。
使用python3.10以及下方第三方库
altgraph==0.17.4
keyboard==0.13.5
packaging==24.2
pefile==2023.2.7
pyinstaller==6.11.1
pyinstaller-hooks-contrib==2024.11
python-vlc==3.0.21203
pywin32-ctypes==0.2.3
arrange_url.py文件用于将m3u文件进行解析。
def channel_url_list():
print("正在初始化界面列表,", end='')
with open('./iptv.m3u', 'r', encoding='utf-8') as f:
contents = f.read()
rows: list = contents.split('\n') # 针对每一行数据进行分析
channel_list: list = [] # 定义下存储频道的列表
for i in range(len(rows)):
if rows[i].startswith('#EXTINF'):
channel_name: str = rows[i].split(',')[1]
# print(urls_list[i].split(',')[1], end='')
if rows[i + 1].startswith('http://'):
channel_url: str = rows[i + 1]
# print(urls_list[i+1])
# print(channel_name, channel_url)
channel_list.append([channel_name, channel_url])
print("初始化完成!")
return channel_list
my_vlc.py 是主程序文件,用于调用打开vlc,监听键盘,控制调台。
import keyboard
import queue
import threading
import time
import vlc
from arrange_url import channel_url_list
def play_vlc(event_all: str):
print("接收到输入的频道操作:", event_all, end=' ')
global globals_channel_num
global globals_audio_volume
global globals_audio_volume_before
if event_all == '+': # 频道列表向后移动
globals_channel_num += 1
elif event_all == '-': # 频道列表向前移动
globals_channel_num -= 1
elif event_all == '/': # 声音减小
if globals_audio_volume-5 >= 0:
globals_audio_volume -= 5
player.audio_set_volume(globals_audio_volume)
print('变更后:globals_audio_volume', globals_audio_volume)
else:
print("音量已最小,无法再减小")
return
elif event_all == '*': # 声音增大
if globals_audio_volume+5
m3u文件的格式为:
#EXTM3U\
#EXTINF:-1,CCTV-1
http://192.168.2.1:4022/rtp/239.254.200.45:8008
#EXTINF:-1,CCTV-2
http://192.168.2.1:4022/rtp/239.254.200.158:6000
#EXTINF:-1,CCTV-3高清
http://192.168.2.1:4022/rtp/239.254.201.152:7205
#EXTINF:-1,CCTV-4
http://192.168.2.1:4022/rtp/239.254.200.190:6307