Note: I couldn't find a VBR file online, so this only shows it working on a constant bitrate file.
$ iex -S mix Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] Compiling 1 file (.ex) Interactive Elixir (1.6.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> {:ok, resp} = HTTPoison.get("http://s3.amazonaws.com/thinkrelevance-podcast/ThinkRelevance-014-rich-hickey.mp3") {:ok, %HTTPoison.Response{ body: <<73, 68, 51, 3, 0, 0, 0, 1, 103, 68, 84, 65, 76, 66, 0, 0, 0, 57, 0, 0, 1, 255, 254, 84, 0, 104, 0, 105, 0, 110, 0, 107, 0, 82, 0, 101, 0, 108, 0, 101, 0, 118, 0, 97, 0, 110, 0, ...>>, headers: [ {"x-amz-id-2", "DQkXKn5BUj2VNW2e1fpxhL/iZ8u6/rDrguDhgAHQQ8iAtBODx6nKXciLoT4ZUaehBFNSSF7m+Wc="}, {"x-amz-request-id", "80FC4C1A274BC889"}, {"Date", "Sat, 31 Mar 2018 21:49:16 GMT"}, {"Last-Modified", "Sat, 28 Jul 2012 17:17:25 GMT"}, {"ETag", "\"f1bcb7cb764ce1c562c58bba98219bce\""}, {"Accept-Ranges", "bytes"}, {"Content-Type", "audio/mpeg"}, {"Content-Length", "27822386"}, {"Server", "AmazonS3"} ], request_url: "http://s3.amazonaws.com/thinkrelevance-podcast/ThinkRelevance-014-rich-hickey.mp3", status_code: 200 }} iex(2)> resp |> Map.get(:body) |> Mp3Info.duration 1737.064
Copyright (c) Dieter Komendera and contributors Distributed under the Eclipse Public License 1.0.