我有一台 LG CX 电视。内置视频播放器无法识别 DTS 音频格式。我希望能够从外部 USB 设备播放 MKV 文件(可能具有 DTS 音轨)。我正在研究一个 ffmpeg 命令,它将:
- 保留所有现有视频轨道不变
- 保留所有现有字幕轨道不变
- 保留所有现有音轨不变,但至关重要的是- 还将它们全部转换为 AC3 音频格式(最佳质量)并将它们合并回 mkv
这里我需要什么 ffmpeg 命令?到目前为止,我认为这个命令基本正确,但我认为这只是将音轨转换为 AC3,而不是保留原始音轨并创建 AC3 副本。
ffmpeg -i input.mkv -map 0 -vcodec copy -scodec copy -acodec ac3 -b:a 640k output.mkv
答案1
bash 脚本:
#!/bin/bash
f="input.mkv"
COD=($(ffprobe -v 0 -select_streams a -show_entries stream=codec_name -of default=nw=1:nk=1 "$f"))
echo ${!COD[@]} → ${COD[@]} → ${#COD[@]}
MAP=()
ENC=()
AU1=${#COD[@]}
for i in "${!COD[@]}"; do
if [ "${COD[$i]}" != "ac3" ]; then
MAP+=("-map" "0:a:${i}")
ENC+=("-c:a:$AU1" "ac3")
((AU1++))
fi
done
ffmpeg -i "$f" -map 0 "${MAP[@]}" -c copy "${ENC[@]}" /tmp/output.mkv -y
ffplay /tmp/output.mkv