Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/JamesKyburz/youtube-audio-stream
youtube audio stream
https://github.com/JamesKyburz/youtube-audio-stream
audio ffmpeg javascript nodejs streams-youtube youtube
Last synced: 3 months ago
JSON representation
youtube audio stream
- Host: GitHub
- URL: https://github.com/JamesKyburz/youtube-audio-stream
- Owner: JamesKyburz
- License: other
- Created: 2013-08-14T19:04:14.000Z (about 11 years ago)
- Default Branch: main
- Last Pushed: 2023-05-19T01:58:01.000Z (over 1 year ago)
- Last Synced: 2024-04-14T05:52:03.937Z (7 months ago)
- Topics: audio, ffmpeg, javascript, nodejs, streams-youtube, youtube
- Language: JavaScript
- Size: 202 KB
- Stars: 348
- Watchers: 10
- Forks: 67
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# youtube-audio-stream
[![js-standard-style](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/feross/standard)
[![ci](https://github.com/JamesKyburz/youtube-audio-stream/actions/workflows/ci.yml/badge.svg)](https://github.com/JamesKyburz/youtube-audio-stream/actions/workflows/ci.yml)This module streams youtube using [ytdl](https://github.com/fent/node-ytdl) to get the youtube download stream.
To convert to audio the module [fluent-ffmpeg](https://github.com/schaermu/node-fluent-ffmpeg) is used.
You will need to have [ffmpeg](http://www.ffmpeg.org/) and the necessary encoding libraries installed, as well as in your PATH.
If you're on OSX, this can be handled easily using [Homebrew](http://brew.sh/) with `brew install ffmpeg`.
## Getting Started
1. With [npm](http://npmjs.org), run `npm install youtube-audio-stream`
2. `const stream = require('youtube-audio-stream')`## Usage
Here is an example that:
1. queries for a video by video ID
2. Retrieves the audio via this package
3. write it to `res````js
const stream = require('youtube-audio-stream')
async function handleView (req, res) {
try {
for await (const chunk of stream(`http://youtube.com/watch?v=${req.params.videoId}`)) {
res.write(chunk)
}
res.end()
} catch (err) {
console.error(err)
if (!res.headersSent) {
res.writeHead(500)
res.end('internal system error')
}
}
}
```## Node example playing directly to speaker
```js
const stream = require('youtube-audio-stream')
const url = 'http://youtube.com/watch?v=34aQNMvGEZQ'
const decoder = require('lame').Decoder
const speaker = require('speaker')stream(url)
.pipe(decoder())
.pipe(speaker())
```## Testing
This package comes with a simple example for testing. This can be run with the command `npm test`, which will then serve the example at `localhost:3000`. The example consists of an `` component whose source is retrieved via this package.
### Testing inside a docker container
You can test this module without the need o have [ffmeg](http://www.ffmpeg.org/) locally installed
doing it inside a container.To build the Docker image:
```
docker build . -t youtube-audio-stream-test
```To run the test:
```
docker run --rm -it -p 3000:3000 youtube-audio-stream-test
```