https://github.com/tubbo/activestorage-audio
Audio Analysis for ActiveStorage Uploads with FFmpeg
https://github.com/tubbo/activestorage-audio
Last synced: 16 days ago
JSON representation
Audio Analysis for ActiveStorage Uploads with FFmpeg
- Host: GitHub
- URL: https://github.com/tubbo/activestorage-audio
- Owner: tubbo
- License: mit
- Created: 2019-12-27T21:59:21.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-15T17:52:46.000Z (over 1 year ago)
- Last Synced: 2025-03-25T21:01:41.402Z (about 1 month ago)
- Language: Ruby
- Homepage: https://tubbo.github.io/activestorage-audio
- Size: 1.48 MB
- Stars: 20
- Watchers: 3
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# activestorage-audio
An audio analyzer for [ActiveStorage](https://guides.rubyonrails.org/active_storage_overview.html)
which will automatically analyze audio files using [FFmpeg](https://www.ffmpeg.org/).## Installation
Add this line to your application's Gemfile:
```ruby
gem 'activestorage-audio'
```Then, run:
$ bundle install
You will also need `ffmpeg` installed. On Debian-based systems, run:
```bash
$ apt-get install -y ffmpeg
```For macOS, run:
```bash
$ brew install ffmpeg
```## Usage
If you're running Rails, `ActiveStorage::Audio::Analyzer` will be
automatically included in the list of analyzers to run on your uploaded
files. For a manual setup, add this to your app initialization:```ruby
require "activestorage"
require "activestorage/audio"ActiveStorage.analyzers << ActiveStorage::Audio::Analyzer
```The analyzer will save its data to the `metadata` Hash on an audio file
`blob`, which can be accessed in the model like so:```ruby
class Model < ApplicationRecord
has_attached_file :audio# Return the duration of this Track
#
# @return [Float]
def duration
audio.blob.metadata[:duration] if audio.attached?
end
end
```When you `#attach` an audio file to this model, the duration will be
computed using `ffprobe`, found using the current `$PATH`. If you wish
to set a custom path to ffprobe, do this in an initializer:```ruby
ActiveStorage.paths[:ffprobe] = '/opt/local/bin/ffprobe'
```## Development
After checking out the repo, run `bin/setup` to install dependencies.
Then, run `rake test` to run the tests. You can also run `bin/console`
for an interactive prompt that will allow you to experiment.To install this gem onto your local machine, run `bundle exec rake
install`. To release a new version, update the version number in
`version.rb`, and then run `bundle exec rake release`, which will create
a git tag for the version, push git commits and tags, and push the
`.gem` file to [rubygems.org](https://rubygems.org).## Contributing
vBug reports and pull requests are welcome on GitHub at
https://github.com/tubbo/activestorage-audio. This project is intended
to be a safe, welcoming space for collaboration, and contributors are
expected to adhere to the [code of
conduct](https://github.com/tubbo/activestorage-audio/blob/master/CODE_OF_CONDUCT.md).## License
The gem is available as open source under the terms of the [MIT
License](https://opensource.org/licenses/MIT).## Code of Conduct
Everyone interacting in the ActiveStorage::Audio project's codebases,
issue trackers, chat rooms and mailing lists is expected to follow the
[code of
conduct](https://github.com/tubbo/activestorage-audio/blob/master/CODE_OF_CONDUCT.md).