Как обработать правильную команду ffmpeg на nodejs с помощью fluent-ffmpeg? - PullRequest
0 голосов
/ 25 сентября 2018

Я программирую сервер кодирования на nodejs.На самом деле я пытаюсь создать мастер-плейлист из разных типов видео.Я нашел команду, чтобы понять, что на FFMPEG:

ffmpeg -y -fflags +genpts+discardcorrupt -f mpegts -i output_SD.ts -i output_HD.ts -i output_FHD.ts -map 0:v -map 0:a -map 1:v -map 1:a -map 2:v -map 2:a -var_stream_map "v:0,a:0,agroup:aud_low v:1,a:1,agroup:aud_medium v:2,a:2,agroup:aud_high" -ignore_unknown -flags global_header -f hls -master_pl_name master.m3u8 -master_pl_publish_rate 32 -hls_time 4 -hls_list_size 40 -hls_flags delete_segments /Encoded/video0_%v.m3u8

Но в nodeJs я всегда получаю неправильную команду:

ffmpeg -y -fflags +genpts+discardcorrupt -f mpegts -i ./Encoded/HLS/output_SD.ts -i ./Encoded/HLS/output_HD.ts -y -map 0:v -map 0:a -map 1:v -map 1:a -var_stream_map "v:0,a:0,agroup:aud_low v:0,a:0,agroup:aud_medium v:1,a:1,agroup:aud_high" -ignore_unknown -flags global_header -f hls -master_pl_name master.m3u8 -master_pl_publish_rate 32 -hls_time 4 -hls_list_size 40 -hls_flags delete_segments ./Encoded/HLS/video0_%v.m3u8

, где -y появляется дважды.вот мой код:

var ffmpegF = require('fluent-ffmpeg');
var process_S = new ffmpegF();
 process_S.addInput('./Encoded/HLS/output_SD.ts')
.inputOptions(['-y',
'-fflags +genpts+discardcorrupt',
'-f mpegts'])
.input('./Encoded/HLS/output_HD.ts')
 .on('start', function (commandLine) {
 console.log('Spawned Ffmpeg with command: ' + commandLine);
 fs.appendFile('./Logs/log_MP4.xml', '<playlist>' + commandLine + '<playlist>','utf8')
})
.on('progress', function (progress) {
console.log('Processing Playlist MP4_SD: ' + progress.percent + '% done');
socket.emit('Proc_Play_mp4_sd', progress.percent + '% done');
})
.on('stderr', function (stderrLine) {
console.log('Stderr output: ' + stderrLine);
})
.on('error', function (err, stdout, stderr) {
console.log('Cannot process video: ' + err.message);
socket.emit('error_Play_mp4_sd', err.message);
fs.appendFile('./Logs/log_MP4.xml', '<error>' + err.message + '<error>', 'utf8')
})
.on('end', function (stdout, stderr) {
console.log('Playlist SD succeeded !');
socket.emit('Playlist_mp4_sd', '100% Done');
socket.emit('fertig_Play_mp4_sd', 'OK');
})
.outputOptions(['-map 0:v',
'-map 0:a',
'-map 1:v',
'-map 1:a',
'-var_stream_map', '"v:0,a:0,agroup:aud_low v:0,a:0,agroup:aud_medium v:1,a:1,agroup:aud_high"',
'-ignore_unknown',
'-flags global_header',
'-f hls',
'-master_pl_name master.m3u8',
'-master_pl_publish_rate 32',
'-hls_time 4',
'-hls_list_size 40',
'-hls_flags delete_segments'])
.output('./Encoded/HLS/video0_%v.m3u8')
.run();

Пожалуйста, кто-нибудь может мне помочь?

...