2012-12-18 38 views
0

對於Ruby和編程而言,我還是比較新的,不到一年的經驗。這是紅寶石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的標準輸入時,文件路徑字符串需要引號,但是當我彙總文件時,它會刪除引號。修復?在字符串中的文件路徑周圍添加引號。

我希望這可以幫助別人,顯然我是整個互聯網上唯一有這個問題的人。