audio - 带手刹的多个音轨
问题描述
尝试以相当通用的方式对视频进行编码,典型的调用将如下所示:
HandBrakeCLI --encoder-preset medium --encoder-level 4.1 --format av_mkv --encoder x264 --quality 21 --aencoder aac,ac3 --audio-copy-mask aac,ac3,dtshd,dts,mp3 -a 1,2 -s 0,1,2,3,4 -x threads=38 -i Input.mkv -o Output.mkv
问题是我想对音轨执行以下操作:
- 如果有高比特率轨道(例如 dts)将其转换为 ac3
- 如果有 aac 音轨重新编码(或复制)
- 如果没有 aac 轨道和高比特率轨道,则创建 aac 轨道
本质上,我如何能够有条件地根据音轨选择要执行的操作,或者我是否需要进行某种预处理来识别我正在处理的音轨类型并以此为基础以编程方式更改命令?
解决方案
目前,在 Handbrake 中没有办法做你想做的事。
但如果没有它,你也许能够得到你想要的。从本质上讲,有一种繁琐的方法可以同时保留原始音轨并对其进行转码。
我目前正在做的是将第一首曲目转码为 AAC,并保留所有原始曲目。(最初编码的第一个轨道变成轨道 2,依此类推。)
例如,这是我的音频选项:
--all-subtitles --audio 1,1,2,3,4,5,6,7,8,9,10,11 --aencoder ca_aac,copy,copy,copy,copy,copy,copy,copy,copy,copy,copy,copy --mixdown dpl2,7point1,7point1,7point1,7point1,7point1,7point1,7point1,7point1,7point1,7point1,7point1 --audio-copy-mask aac,ac3,eac3,truehd,dts,dtshd --audio-fallback aac
我将第一首曲目列出两次,然后在编码器中按照该模式进行混音。(我不关心 mp3 或 flaac。)
结果,对我来说,第一首曲目始终与我的旧电视兼容,但如果我想要原始音轨,我可以在播放视频时切换曲目。
推荐阅读
- elasticsearch - 如何在elasticsearch中更新字段的数据类型
- flutter - 如何从 Webflow 加载 Flutter Web 应用程序?
- python - 如何选择 texbox 并搜索内容并在 selenium - python 中选择第一个选项?
- solver - 如何使用 Python 解决以字符串格式给出的布尔表达式?
- bitbucket - Bitbucket Pipeline:我们可以在构建开始时获取参数值吗
- python-multiprocessing - python多处理突然只使用一个核心
- toad - 如何在 Toad for Oracle 中按项目组织连接
- python - 即使我的相机已打开并且我正在打印相框,cv2.imshow 也无法正常工作?
- c# - “无法访问 Newtonsoft.Json.Linq.JValue 上的子值。”
- javascript - 可以通过传递 function(this.value) 在 HTML 中为 DIV 触发 onchange;