2015-05-12 3 views
0

Как я понимаю, «ffprobe» предоставит данные, связанные с файлами, в формате JSON. Итак, я установил ffprobe в свою машину Ubuntu, но я не знаю, как получить доступ к ответу JSON ffprobe с помощью Java/Grails.Я пытаюсь использовать «ffprobe» с Java или groovy

Ожидаемый формат ответа:

{ 
    "format": { 
     "filename": "/Users/karthick/Documents/videos/TestVideos/sample.ts", 
     "nb_streams": 2, 
     "nb_programs": 1, 
     "format_name": "mpegts", 
     "format_long_name": "MPEG-TS (MPEG-2 Transport Stream)", 
     "start_time": "1.430800", 
     "duration": "170.097489", 
     "size": "80425836", 
     "bit_rate": "3782576", 
     "probe_score": 100 
    } 
} 

Это мой заводной код

def process = "ffprobe -v quiet -print_format json -show_format -show_streams HelloWorld.mpeg ".execute()    
     println "Found ${process.text}" 
     render process as JSON 

я м состоянии получить объект процесса, и им не удалось получить ответ JSon

Должен ли я хотите преобразовать объект процесса в объект json?

ВЫВОД:

Найдено [email protected] org.codehaus.groovy.grails.web.converters.exceptions.ConverterException: Ошибка преобразования Bean с классом java.lang.UNIXProcess

+0

Это не сервис, чтобы написать код, чтобы удовлетворить ваши спецификации. Что вы пробовали? Взгляните на [получить видео fps с помощью ffprobe] (http://stackoverflow.com/questions/27792934/get-video-fps-using-ffprobe) или http://docs.groovy-lang.org/latest/html /groovy-jdk/java/lang/String.html#execute() – doelleri

ответ

0

Grails не имеет к этому никакого отношения. Groovy может выполнить произвольные команды в очень упрощенно:

"mkdir foo".execute() 

Или для более продвинутых функций, вы можете посмотреть в использовании ProcessBuilder. В конце дня вам нужно выполнить ffprobe, а затем захватить выходной поток JSON для использования в вашем приложении.

+0

Я не знаю, как захватить выходной поток JSON в groovy, что я сделал с объектом процесса, который я отображал как JSON, но он возвращает эту ошибку: "org.codehaus.groovy.grails.web.converters.exceptions.ConverterException: ошибка преобразования Bean с классом java.lang.UNIXProcess" – KarthickTech

0

Groovy provides a simple way to execute command line processes. Simply write the command line as a string and call the execute() method.

The execute() method returns a java.lang.Process instance.

println "ffprobe <options>".execute().text 

[Source]

+0

Теперь я могу использовать ffprobe, теперь я использовал эту команду "ffprobe -show_format -loglevel quiet" и я получил ответ на выходе, который выглядит как [FORMAT] filename = HelloWorld.mpeg nb_streams = 2 format_name = mpeg format_long_name = Формат MPEG-PS star t_time = 0.768300 длительность = 20,966667 размер = 706564,000000 [/ FORMAT] , но я не могу получить доступ к этим значения, и если мне нужно использовать, что я хочу их в формате JSON и поэтому я использовал эту команду «ffprobe -v тихо -print_format json -show_format -show_streams HelloWorld.mpeg « – KarthickTech

+0

Но эта команда« ffprobe -v quiet -print_format json -show_format -show_streams HelloWorld.mpeg »не работает, im получает объект процесса, но не может получить json. – KarthickTech

+0

использовать абсолютный путь как для медиафайла, так и для ffprobe, если он не находится в PATH – aergistal

 Смежные вопросы

  • Нет связанных вопросов^_^