如何使用fluent-ffmpeg在nodejs上处理正确的ffmpeg命令?

时间:2018-09-24 23:29:30

标签: node.js ffmpeg fluent-ffmpeg

我正在对Node.js上的编码服务器进行编程。实际上,我正在尝试根据视频的不同类型(带宽)创建主播放列表。我找到了一个在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();

请问有人可以帮我吗?

0 个答案:

没有答案
相关问题