2012-12-18 3 views
0

저는 Ruby 및 프로그래밍에 익숙하지 않아 1 년 미만의 경험이 있습니다. 이것은 루비 1.9.3이고 FFmpeg의 Ubuntu를위한 최신 ffmpeg입니다. 내가 사용하는 파일은 기본 .avi, 일부 v210 .mov, 기타 quicktime/finalcutpro 파일 유형입니다.Ruby에서 FFprobe를 실행하는 데 문제가 있습니다.

많은 테스트를 시작하고 많은 미디어 파일을 처리 할 때 수동 작업로드를 줄이는 데 도움이되는 자동화 된 탐색 도구를 작성하려고합니다. 기본적으로 스크립트는 디렉토리를 거치며 각 파일을 조사하여 필요한 정보를 추출하고 csv에 기록합니다.

현재, 실행할 때마다 명령 줄에서 실제 캡처가 실패합니다.

def prober(file) 
    @the_file = file 
    stdout,stderr,status = Open3.capture3("ffprobe -v quiet -print_format json -  show_format -show_streams #{@the_file}") 
    STDERR.puts stderr 
    if status.success? 
    out = stdout 
    else 
    STDERR.puts "There was a problem, please try again." 
    end 
    @raw_output = JSON.parse(out) 
end 

내가 명령 (정말 완벽하게 I/O 스트림을 이해하지 못하는) ffprobe로, 또는 뭔가를 실행하고 어떻게 함께 할 수있는 뭔가 있다면 나도 몰라. 그것이 프로브를 지나치게 만들면 @raw_output을 nil로 반환합니다. JSON 구문 분석으로 인해 푸크가 발생하거나 메타 데이터를 분할하고 파싱하는 다른 메소드가 nil에서 실패합니다.

도움이된다면 어느 정도 도움이 될 것입니다. 감사! 설명을 위해 필요하다면 더 많은 코드를 제공 할 수 있습니다.

답변

0

휴일이 지나면 나는 신선한 상태로 돌아 왔고 문제를 발견했습니다. 파일 경로 문자열은 ffprobe에 대한 표준 입력을받을 때 따옴표가 필요하지만 파일을 집계하면 따옴표가 없어졌습니다. 고쳐? 문자열의 파일 경로 주위에 따옴표를 추가하십시오.

나는 누군가에게 도움이되기를 바란다. 분명히 나는 ​​인터넷 전체에서이 문제가있는 유일한 사람이다.