| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 
 | import { app } from 'electron'const ffmpegPath = require('@ffmpeg-installer/ffmpeg')
 const ffprobePath = require('@ffprobe-installer/ffprobe')
 const ffmpeg = require('fluent-ffmpeg')
 
 
 if (process.env.NODE_ENV !== 'development') {
 ffmpeg.setFfmpegPath(ffmpegPath.path.replace('app.asar', 'app.asar.unpacked'))
 ffmpeg.setFfprobePath(ffprobePath.path.replace('app.asar', 'app.asar.unpacked'))
 } else {
 ffmpeg.setFfmpegPath(ffmpegPath.path)
 ffmpeg.setFfprobePath(ffprobePath.path)
 }
 
 export default class VideoServer {
 constructor (video) {
 this.liveUrl = video.liveUrl;
 this.m3u8Path = video.m3u8Path;
 this.ffmpegCommand;
 }
 
 killFfmpegCommand () {
 if (this.ffmpegCommand) {
 this.ffmpegCommand.kill()
 }
 }
 
 startTransCode (fun) {
 this.ffmpegCommand = ffmpeg(this.liveUrl)
 .outputOptions([
 '-fflags flush_packets',
 '-max_delay 1',
 '-an',
 '-flags',
 '-global_header',
 '-hls_time 1',
 '-hls_list_size 3',
 '-hls_wrap 3',
 '-vcodec copy'
 ])
 .on('start', function(e) {
 console.log('---开始转码---')
 console.log(e);
 fun('info', e)
 })
 .on('end', function() {
 console.log('file has been converted succesfully');
 })
 .on('error', function(err) {
 console.log('an error happened: ' + err.message);
 fun('error')
 })
 .save(this.m3u8Path)
 }
 }
 
 |