Giter Site home page Giter Site logo

yonle / openradio Goto Github PK

View Code? Open in Web Editor NEW
28.0 1.0 1.0 1.37 MB

Only some simple live stream library.

Home Page: https://openradio.herokuapp.com

License: BSD 3-Clause "New" or "Revised" License

JavaScript 100.00%
livestream-radio ffmpeg stream radio mp3 live live-streaming station

openradio's Issues

Delayed Updates

We're delayed openradio updates by fixing some major issue, and improvement of openradio. this takes a time to finish. So please wait

Use video instead of audio

Hi, Your project gave me a lot of interesting ideas , thank you

I changed the code to play video instead of audio but i have some issues , help me please whats wrong

  1. only first sink can play video
  2. only one video support two videos not play
  3. when refresh browser video not play at all

this is my code

const Throttle = require("throttle");
const ffmpeg = require("prism-media").FFmpeg;
const http = require("http");
const axios = require('axios');
const exec = require('child_process').exec;
let sink = new Map();
let port = process.argv.slice(2)[0] || 8000;
let stream;
let host;
let header;
process.title = "Video";

const server = http
    .createServer((req, res) => {
        if (!stream) play();
        let generateId = () => Math.random().toString(36).slice(2);
        let id =
            generateId() +
            generateId() +
            generateId() +
            generateId() +
            generateId() +
            generateId();
        res.setHeader("Content-Type", "video/mp4");
        console.log('New Sink Connected (${id})');
        console.log(
            "------------------------------------\nTotal Sink:",
            sink.size
        );
        if (header) res.write(header);
        sink.set(id, res);
        req.on("close", () => {
            console.log('Sink (${id}) Disconnected.');
            console.log(
                "------------------------------------\nTotal Sink:",
                sink.size
            );
            sink.delete(id);
        });

    })

    .listen(8090);


let mp4 = ["b.mp4", "a.mp4"];
var idd = -1;

function convert() {
    idd = idd + 1;
    if (idd > 1) {
        idd = 0;
    }
    return new ffmpeg({
        args: [
            "-i",
            mp4[idd],
            "-analyzeduration",
            "0",
            "-loglevel",
            "0",
            "-s",
            "1280x720",
            "-acodec",
            "aac",
            "-vcodec",
            "libx264",
            "-movflags",
            "frag_keyframe+empty_moov",
            "-f",
            "mp4",
            "-map_metadata",
            "-1"
        ],
    });
}


async function play() {
    let newSong = 1;
    if (stream) {
        if (stream.playing) return;
    }

    stream = convert().pipe(Throttle(400000));
    stream.on("data", (chunk) => {
        if (header && newSong) return newSong = 0;

        if (!header && newSong) {
            header = chunk;
            newSong = 0;
        }
        sink.forEach((s) => {
            s.write(chunk);
        });
    });
    stream.playing = true;
    stream.on("end", () => {
        if (!stream) return;
        if (stream.stopped) return;
        stream.playing = false;
        return play();
    });

    stream.on("error", (err) => {
        console.error("An error occured when playing Skipping....");
        return play();
    });

} 

FFMPEG Zombie Process

Hi

thanks for openradio :)

when i'm use skip command previous ffmpeg not destroy and script start new process how to solve this problem?
Screen Shot 1400-09-04 at 03 49 13

Repeater: Heap memory issue

In some of weird conditions, Openradio repeater could be ended up making the single nodes process to be died.

<--- Last few GCs --->

[2726:0x7aefe78340]    49397 ms: Scavenge 444.4 (454.3) -> 444.3 (455.8) MB, 9.6 / 0.0 ms  (average mu = 0.634, current mu = 0.563) allocation failure
[2726:0x7aefe78340]    52390 ms: Mark-sweep 460.2 (470.8) -> 449.7 (461.1) MB, 2960.8 / 0.0 ms  (average mu = 0.331, current mu = 0.018) allocation failure scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

I myself also don't know what was going on. The repeater code itself is simple, Still i think something isn't right

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.