Swift Process не может правильно отправить метаданные в FFMPEG - PullRequest
0 голосов
/ 30 апреля 2019

Я пишу Swift Process, который объединяет серию аудиофайлов с использованием FFMPEG и libfdk_aac.Конкатенация работает, но когда я передаю метаданные через процесс, я получаю ошибку Unrecognized option 'metadata artist="ff"' ... Option not found.

При отладке, если я использую точку останова и печатаю с использованием e print(args.joined(separator: " ")), я могу получить точный выводи вставьте его в консоль, FFMPEG запустится и не выдаст ошибку.

Я предполагаю, что есть странность в том, как работает процесс Swift, но даже там я протестировал, и я в замешательстве.Я создал скрипт ruby, который взял аргументы, зациклил их и распечатал, а сценарию ничего не дано, что является неожиданным.(Вывод ниже)

Свифт Процесс

private func export() {
        guard let ffmpegPath = Bundle.main.path(forResource: "ffmpeg", ofType: "") else { return }


        var task = Process()
        task.launchPath = ffmpegPath

        let args: [String] = [
            "-i",
            #"concat:"\#(fileContents)""#,
            title(),
            artist(),
            narrator(),
            "-c:a",
            "libfdk_aac",
            "-vn",
            #"\#(exportPath)\#(exportFilename)"#
        ].compactMap { $0 }

        task.arguments = args

        var pipe = Pipe()
        setStdErrPipe(pipe: &pipe, task: &task)
        setTerminationNotification(task: task)

        task.launch()
    }

    func title() -> String? {
        guard metadata.titleText != "" else {
            return nil
        }
        return #"-metadata title="\#(metadata.titleText)""#
    }

    func artist() -> String? {
        guard metadata.authorText != "" else { return nil }
        return #"-metadata artist="\#(metadata.authorText)""#
    }

    func narrator() -> String? {
        guard metadata.narratorText != "" else { return nil }
        return #"-metadata album_artist="\#(metadata.narratorText)""#
    }

Arg tester Выход

-i
concat:"/Users/sharkmaul/Downloads/Bringing Up BÈbÈ/Bringing Up BÈbÈ-Part01.mp3|/Users/sharkmaul/Downloads/Bringing Up BÈbÈ/Bringing Up BÈbÈ-Part02.mp3"
-metadata title="title"
-metadata artist="author"
-metadata album_artist="narrator"
-c:a
libfdk_aac
-vn
/Users/sharkmaul/Desktop/068F4F43-89EE-47F6-838D-7AD3E02E7F8A.m4a
...