Используя в этом примере , я смог создать процесс для запуска ffmpeg из основного набора ресурсов приложения MacOS. Однако тот факт, что мне удалось заставить его работать, был действительно глупой удачей.
Но теперь мне нужно иметь возможность сделать что-то похожее с ffprobe в соответствии с тем, что обсуждается в . этот пост , чтобы получить продолжительность аудиофайла, чтобы обрезать заданное количество секунд после его конца, используя эти аргументы:
ffprobe -v 0 -show_entries format=duration -of compact=p=0:nk=1 input.m4b
Но яне знаю, как это реализовать. Это в основном то, чего я хочу достичь:
func insertTrimArguments() {
conversionSelection()
if trimStartEndClipsCheckbox.state == .on {
ffmpegArguments.insert(contentsOf: ["-ss", "00:00:02.000", /*"-t", "duration minus 4.2secs"]*/, at: 3)
}
else {
}
}
Я давно не программирую на Swift, и процессы для меня совершенно новые, и я никогда не рассматривал их ни в одном из учебных пособий по основам. учился, прежде чем я начал свой проект. Используя подход monkey-see / monkey-do из первого примера, который я связал, я могу начать имитировать его для своей функции ffprobe, но я понятия не имею, правильно ли я это делаю или куда идти с этимздесь.
Это все, что у меня есть.
// get file duration and subtract 4.2 seconds if "trim audible clips is enabled, then insert additional arguments into conversionSelection arrays
func getFileDuration() {
guard let ffprobePath = Bundle.main.path(forResource: "ffprobe", ofType: "") else { return }
do {
let ffprobeTask: Process = Process()
ffprobeTask.launchPath = ffprobePath
ffprobeTask.arguments = [
"-v", "error",
"-show_entries",
"format=duration", "-of",
"compact=p=0:nk=1",
"\(inputFilePath)"]
ffprobeTask.standardInput = FileHandle.nullDevice
ffprobeTask.launch()
ffprobeTask.waitUntilExit()
}
}
Как мне адаптировать этот процесс так, чтобы вместо преобразования и вывода нового файла он возвращал продолжительность входного файлачтобы я мог сделать необходимую математику и включить ее в свои аргументы?