ffmpeg для hls не работает правильно с ошибкой: Uncaught RangeError: Источник слишком велик - PullRequest
0 голосов
/ 04 июля 2019

Я хочу добавить водяной знак в каждый видеофайл, производимый с сервера hls.Чтобы сделать это, я использую беглый ffmpeg js Componentent.и это мой бэкэнд-код сервера hls

 self.provider.getSegmentStream(req, function (err, stream) {



res.setHeader('Content-Type', CONTENT_TYPE.SEGMENT)
res.statusCode = 200
var proc = ffmpeg(req.filePath). videoFilters(
 {
filter: 'drawtext',
options: {
  text: 'VERY LONG TEXT VERY VERY VERY VERY LOL!!!',
  fontsize: 36,
  fontcolor: 'white',
  x: '(main_w/2-text_w/2)',
  y: '(text_h/2)+15',
  shadowcolor: 'black',
  shadowx: 2,
  shadowy: 2
}}

 ) 

.videoCodec('libx264')

 .audioBitrate('128k')

 .audioCodec('aac')

.format('mpegts')
.on('end', function(stdout, stderr) {
console.log('Transcoding succeeded !',req.filePath);

})

.on('error', function(err) {
 console.log('an error happened: ' + err.message);
 }).pipe(res ,{end:true})

, и в моем клиенте я использую этот код:

if(Hls.isSupported())
{
  console.log('hls is suported');
    var video = document.getElementById('video');
    var hls = new Hls();
    hls.loadSource('http://serverip:8182/streams/stream.m3u8');
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED,function()
    {
        video.play();
    });
}
else if (video.canPlayType('application/vnd.apple.mpegurl'))
{
  console.log('hls isnot suported');

    video.src = 'http://serverip/streams/stream.m3u8';
    video.addEventListener('canplay',function()
    {
        video.play();
    });
}

, но у меня есть проблема, потому что он просто воспроизводит первый файл TS, но послечто hls остановился и в консоли я получаю эту ошибку:

Uncaught RangeError: Source is too large
at Uint8Array.set (<anonymous>)
at e.remuxAudio (blob:null/44d66ff1-a411-411b-842b-4904552a58a4:1)
at e.remux (blob:null/44d66ff1-a411-411b-842b-4904552a58a4:1)
at e.append (blob:null/44d66ff1-a411-411b-842b-4904552a58a4:1)
at e.pushDecrypted (blob:null/44d66ff1-a411-411b-842b-4904552a58a4:1)
at e.push (blob:null/44d66ff1-a411-411b-842b-4904552a58a4:1)
at blob:null/44d66ff1-a411-411b-842b-4904552a58a4:1

что мне делать

...