投射到 chromecast,没有声音

投射到 chromecast,没有声音

当我将电影投射到 Chromecast 时,没有声音。

因此我决定将原始视频从eac3音频编码转换为mp3

ffmpeg -i media-original.mkv -vcodec copy -acodec mp3 media-mp3.mkv

但现在 Chromecast(我使用 Chrome 通过 SMPlayer 播放 Chromecast)无法完全播放媒体,并显示

chromecast.smplayer.info.says
Playback failed

因此它从无法播放声音变成完全无法播放媒体。

所以我对这两个媒体文件进行了比较

 ffprobe media-original.mkv 2>&1 > /dev/null
 ffprobe media-mp3.mkv 2>&1 > /dev/null

左侧没有音频,右侧根本无法播放文件:

左侧没有音频,右侧根本无法播放文件

所以我能看到的主要区别是原来有eac3Chromecast 无法使用) 解释了为什么音频是静音的。但右边的 - 无法完全播放 - 有stereo而不是6 channels并且有ENCODER: Lavc58.54.100 libmp3lame

这是什么意思?如何使用 FFmpeg 正确地将音频从 更改eac3mp3而无需切换到stereo

答案1

Matroska ( .mkv) 未列为受支持的媒体容器格式之一Google Cast 支持的媒体

由于您的视频是 H.264,因此您可以使用 MP4。您只需重新编码音频,因为 eac3 未被列为受支持的音频格式:

ffmpeg -i media-original.mkv -c:v copy -c:a aac -movflags +faststart output.mp4

如果它不喜欢 5.1 音频通道布局,则混音为立体声:

ffmpeg -i media-original.mkv -c:v copy -c:a aac -ac 2 -movflags +faststart output.mp4

为了帮助您选择适当的媒体类型字符串,您可以使用ffprobe。例如:

$ ffprobe -v error -show_entries stream=codec_type,codec_name,profile,level video.mp4
[STREAM]
codec_name=h264
profile=High
codec_type=video
level=30
[/STREAM]
[STREAM]
codec_name=aac
profile=LC
codec_type=audio
[/STREAM]

level 30指3.0级。

相关内容