仅将 mkv 文件中的音轨转换为 AC3

仅将 mkv 文件中的音轨转换为 AC3

我有一台 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

相关内容