用Python+pytube下载的MP3无法被现代i10车载系统识别求助
问题:Pytube下载转MP3后现代i10车载系统无法识别
我用Python结合pytube做了个小工具,输入YouTube链接就能下载音频并改成MP3后缀。电脑上播放完全没问题,但把文件存U盘插现代i10车载系统时,系统直接提示无媒体文件,其他地方来的MP3却能正常识别播放。
下载代码:
while True: event, values = window.read() if event in ('Exit', None): break # exit button clicked if event == 'Download': yTVideo = YouTube(pyperclip.paste()) destination = _path print('Downloading '+ yTVideo.title + ' to : '+ destination) window.refresh() video = yTVideo.streams.filter(only_audio = True).first() out_file = video.download(output_path=destination) base, ext = os.path.splitext(out_file) new_file = base + '.mp3' os.rename(out_file, new_file) print('Download Completed!')
已做测试:
- 多台电脑/笔记本测试,文件均可正常播放
- 更换多个U盘测试,问题依旧
原因分析:
pytube的filter(only_audio=True).first()下载的流本质上不是MP3,大多是M4A格式(AAC编码)。你只是改了文件名后缀,文件的编码格式没变,而现代i10的车载系统可能只认真正的MP3编码文件,所以识别失败。
解决方案:
用FFmpeg转成真正的MP3
先在系统里安装FFmpeg,并把它添加到环境变量(确保cmd/终端能直接调用ffmpeg命令)。然后修改代码,替换单纯重命名的逻辑,用FFmpeg转码:import subprocess import os # ... 原有的下载代码 ... out_file = video.download(output_path=destination) base, ext = os.path.splitext(out_file) new_file = base + '.mp3' # 调用FFmpeg转码为MP3(libmp3lame是MP3编码库) subprocess.run( ['ffmpeg', '-i', out_file, '-acodec', 'libmp3lame', '-q:a', '2', new_file], check=True, capture_output=True ) # 删除原下载的非MP3文件 os.remove(out_file)-q:a 2是设置音频质量,数值越小质量越高(范围0-9),2属于高质量级别。检查文件名和路径
车载系统对文件名兼容性差,别用中文、特殊符号(比如/ \ : * ? " < > |),尽量用英文、数字和下划线,路径也别太深。确认U盘格式
现代i10大概率只支持FAT32格式的U盘,把U盘格式化时选FAT32(注意单文件不能超过4GB,不过MP3一般没问题)。
内容的提问来源于stack exchange,提问作者WeedWizard
相关产品推荐
相关产品推荐

