我是 Ruby 的新手,所以我可能会完全错误地解决这个问题,但是使用taglib-ruby
我一直得到错误的结果,除非它是错误的秒数,也许是纳秒?
我尝试了bash
和 mediainfo 不同的电影,但效果还不错...
$(date -ud "@$(($seconds/1000))" +'%_H:%M')
def get_duration_hrs_and_mins(milliseconds)
return '' unless milliseconds
hours, milliseconds = milliseconds.divmod(1000 * 60 * 60)
minutes, milliseconds = milliseconds.divmod(1000 * 60)
seconds, milliseconds = milliseconds.divmod(1000)
"#{hours}h #{minutes}m #{seconds}s #{milliseconds}ms"
end
TagLib::MP4::File.open("filename.mp4") do |mp4|
seconds = mp4.length
puts get_duration_hrs_and_mins(seconds)
end
秒数为 1932993085,持续时间应约为 2 小时 15 分钟。