当我将电影投射到 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
左侧没有音频,右侧根本无法播放文件:
所以我能看到的主要区别是原来有eac3
(Chromecast 无法使用) 解释了为什么音频是静音的。但右边的 - 无法完全播放 - 有stereo
而不是6 channels
并且有ENCODER: Lavc58.54.100 libmp3lame
。
这是什么意思?如何使用 FFmpeg 正确地将音频从 更改eac3
为mp3
而无需切换到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级。