首先,我用google搜索并搜索了如何解决这个问题,没有运气。我正在制作一个批处理文件,将文件中的音频重新编码为aac(如果它是ac-3或ogg使用ffmpeg)。我知道如何使用ffmpeg进行转换,而不是仅当音频与某个编解码器匹配时才能自动化它。要获取文件的音频编解码器,我有两种不同的方法,一种使用ffprobe,另一种使用MediaInfo。
@Test
public void shouldAddAxiom() throws Exception {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
IRI ontologyIRI = IRI.create("http://www.co-ode.org/ontologies/testont.owl");
IRI documentIRI = IRI.create("file:/tmp/MyOnt.owl");
SimpleIRIMapper mapper = new SimpleIRIMapper(ontologyIRI, documentIRI);
manager.getIRIMappers().add(mapper);
OWLOntology ontology = manager.createOntology(ontologyIRI);
OWLDataFactory factory = manager.getOWLDataFactory();
OWLClass clsA = factory.getOWLClass(IRI.create(ontologyIRI + "#A"));
OWLClass clsB = factory.getOWLClass(IRI.create(ontologyIRI + "#B"));
OWLAxiom axiom = factory.getOWLSubClassOfAxiom(clsA, clsB);
AddAxiom addAxiom = new AddAxiom(ontology, axiom);
manager.applyChange(addAxiom);
manager.saveOntology(ontology);
}
或
MediaInfo --Inform="Audio;%%Format%%" "input.mkv"
但是,我的问题是从命令输出设置变量。这是我一直在尝试的代码,但无济于事。
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "input.mkv"
显然,这只是我目标的一部分,但这是我似乎无法过去的部分。我已通过删除" DEL codec.txt"检查了部分,实际上是在文本文件中存储正确的输出,但它没有将它导入变量。无论如何,我可以将输出设置为变量很好,这就是我经常在搜索中找到的方式。
非常感谢任何帮助。
答案 0 :(得分:1)
for %%a in (*.mp4) do (
for /f "delims=" %%c in (
'MediaInfo --Inform="Audio;%%Format%%" "%%a" ') do (
echo codec is %%c
rem now use "%%c" as codec
)
rem "%%c" is now out-of-scope
)
您需要搜索delayed expansion
的SO,以获取有关代码中codec
保持不变的原因的解释。