Преобразование видеопотока m3u8 в аудиопоток с использованием fluent-ffmpeg в узле - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь получить транскрипцию для живого видеопотока m3u8 с помощью облачной речи Google в текст. Теперь для этого мне нужно преобразовать видеопоток m3u8 в аудиопоток, а затем я могу передать этот поток в Google речь в текст. Я использую Fluent-FFmpeg для конвертации. Я создал трансформируемый поток, в котором аудио фрагменты записываются FFmpeg. Теперь я хочу продолжительность и битрейт каждого куска. Как узнать длительность и битрейт каждого куска ??

Я пытался использовать библиотеку музыкальных метаданных, но это не дает правильных результатов.

Вот пример кода для полного процесса:

const ffmpeg = require('fluent-ffmpeg');
const { Transform } = require('stream');

let dest = new Transform({
    transform: (chunk, enc, next) => {
        //chunk duration
        next(null, chunk);
    }
}).on('data', () => {});


let m3u8_url = 'https://fuel-streaming-prod01.fuelmedia.io/v1/sem/40f15d3b-689f-48a5-9c61-a4f9583ed619.m3u8';

let command = ffmpeg(m3u8_url)
    .format('flac') // required for working with streams
    .on('start', function() {
        console.log('ffmpeg : processing Started');
    })
    .on('progress', (progress) => {
        console.log('ffmpeg : Processing');
    })
    .on('end', () => {
        console.log('ffmpeg : Processing finished');
    })
    .on('error', (err) => {
        console.log('ffmpeg : ffmpeg error :' + err.message);
    })
    .output(dest) //transform stream
    .audioBitrate('480k') //480 kbps
    .audioCodec('flac') // needed for getting proper metadata

command.run();
...