画面正常但听不到声音,这是播M3U8时挺常见的一个问题。我自己遇到好几次,每次都以为是耳机坏了,结果发现是别的原因。下面把排查思路梳理一下,希望能帮大家少走弯路。
别笑,真的是要先检查一下:电脑静音了吗?浏览器标签页被静音了吗?音量滑块是不是拉到最低了?
我之前就闹过笑话,折腾了半小时M3U8的音频编码,最后发现是Mac的静音键被按到了。这种低级错误排查起来最快,一定先确认。
M3U8里的音频轨道通常是AAC编码,这是主流格式,大部分播放器都支持。但有些源站会用比较冷门的编码,比如AC3、E-AC3、DTS,浏览器或者播放器可能解码不了。
你可以用FFmpeg查看一下M3U8里的音频编码:
ffmpeg -i 你的M3U8链接
看输出信息里Audio那行,如果不是aac,那可能就是编码不支持。解决办法是换一个支持更多解码器的播放器,比如VLC,它对音频格式的支持比浏览器强得多。

有些M3U8源带了多音轨,比如国语、粤语、英语。播放器默认可能选了一个没有音频数据的轨道,或者选了一条你听不见的轨道。
在VLC里,你可以点击"音频"菜单 -> "音频轨道",手动切换一下试试。PotPlayer也是类似,右键 -> 声音 -> 选择声音轨道。切换之后可能声音就出来了。
还有一种比较隐蔽的情况:音频其实是有的,但是和画面不同步,延迟了好几秒。你刚打开的时候没听到声音,还以为是没声音,其实是还没到。
这种一般是切片生成的时候时间戳没对齐导致的。普通用户很难修复,只能换源或者让源站重新转码。如果你用VLC播,可以在"工具" -> "同步跟踪"里手动调整音频延迟,临时救急。
网页播放器还有一个坑:现代浏览器对自动播放音频限制很严。如果你的M3U8页面设置了自动播放,浏览器可能会静音播放,直到用户点击页面。
表现为视频在走,进度条在动,但没有声音。这时候点一下播放画面或者音量图标,声音就恢复了。这是浏览器的安全策略,不是播放器的问题。
总之,没声音的问题要从简到繁排查:先查设备和浏览器音量 -> 再查音频编码 -> 再查音轨选择 -> 最后考虑同步和策略问题。