3

I have a heap of audio files on a CDN. Those are mp3's and ogg vorbises, in parallel. Those files are each worth about one hour of playback. I need to extract arbitrary parts from those files: I am given a filename (I can choose if I use the mp3 or ogg version) and two timestamps and I need the audio exactly between the given time positions. I don't want to download the whole file, so I think of using the Range http header.

I have complete control over the audio files, so I encoded them in fixed bitrate, to be able to estimate which bytes I should reach for. However, both formats use frames (or pages in vorbis's case), which must be decoded atomically.

The program I write is in Perl. I tried downloading a part of the file where I believe the given window to be contained, and then using Audio::Mad and Ogg::Vorbis::Decoder to parse the audio file fragments. However, both seem to fail to process the fragments, and only succeed when I serve an integral file.

So my question is: How can I get an exact span of an audio file without downloading the whole thing?

Sixtease
  • 790
  • 8
  • 18

1 Answers1

0

Answering "cut exact time range from mp3/ogg" - You can check out if the following fits Your needs:

ffmpeg -i InFile  -vn -acodec copy -ss 00:00:00 -t 00:01:32 -threads 0 OutFile

where ss - start time, t - duration. It cuts indeed - no re-compressions.

Adobe
  • 12,967
  • 10
  • 85
  • 126
  • Well, this assumes you have the whole file at your disposal. I would like to avoid downloading the whole file. – Sixtease Apr 07 '12 at 17:35