diff --git a/src/views/Publication/Services/Core.js b/src/views/Publication/Services/Core.js index 30b3116..e4c02bd 100644 --- a/src/views/Publication/Services/Core.js +++ b/src/views/Publication/Services/Core.js @@ -41,7 +41,7 @@ const requires = { formats: ['flv', 'mpegts'], codecs: { audio: ['aac'], - video: ['h264'], + video: ['h264', 'hevc', 'vp9', 'av1'], }, }; @@ -165,6 +165,23 @@ function Service(props) { output.options = ['-bsf:v', 'dump_extra', '-f', 'mpegts']; } else { output.options = ['-f', 'flv']; + + if (props.skills.ffmpeg.version_major >= 6) { + const codecs = []; + if (props.skills.codecs.video.includes('hevc')) { + codecs.push('hvc1'); + } + if (props.skills.codecs.video.includes('av1')) { + codecs.push('av01'); + } + if (props.skills.codecs.video.includes('vp9')) { + codecs.push('vp09'); + } + + if (codecs.length !== 0) { + output.options.push('-rtmp_enhanced_codecs', codecs.join(',')); + } + } } return output; diff --git a/src/views/Publication/Services/MPEGTS.js b/src/views/Publication/Services/MPEGTS.js index 7eb1330..e6c2acd 100644 --- a/src/views/Publication/Services/MPEGTS.js +++ b/src/views/Publication/Services/MPEGTS.js @@ -49,7 +49,7 @@ const requires = { formats: ['mpegts'], codecs: { audio: ['aac', 'mp3'], - video: ['h264'], + video: ['h264', 'hevc', 'vp9', 'av1'], }, }; diff --git a/src/views/Publication/Services/RTMP.js b/src/views/Publication/Services/RTMP.js index baae23f..89119d0 100644 --- a/src/views/Publication/Services/RTMP.js +++ b/src/views/Publication/Services/RTMP.js @@ -46,7 +46,7 @@ const requires = { formats: ['flv'], codecs: { audio: ['aac', 'mp3'], - video: ['h264'], + video: ['h264', 'hevc', 'vp9', 'av1'], }, }; @@ -108,6 +108,23 @@ function Service(props) { const createOutput = (settings) => { const options = ['-f', 'flv']; + if (props.skills.ffmpeg.version_major >= 6) { + const codecs = []; + if (props.skills.codecs.video.includes('hevc')) { + codecs.push('hvc1'); + } + if (props.skills.codecs.video.includes('av1')) { + codecs.push('av01'); + } + if (props.skills.codecs.video.includes('vp9')) { + codecs.push('vp09'); + } + + if (codecs.length !== 0) { + options.push('-rtmp_enhanced_codecs', codecs.join(',')); + } + } + for (let key in settings.options) { if (settings.options[key].length !== 0) { if (key !== 'rtmp_flush_interval') { diff --git a/src/views/Publication/Services/RTSP.js b/src/views/Publication/Services/RTSP.js index af38a83..67bc83e 100644 --- a/src/views/Publication/Services/RTSP.js +++ b/src/views/Publication/Services/RTSP.js @@ -50,7 +50,7 @@ const requires = { formats: ['rtsp'], codecs: { audio: ['aac', 'mp3'], - video: ['h264'], + video: ['h264', 'hevc', 'vp9'], }, }; diff --git a/src/views/Publication/Services/SRT.js b/src/views/Publication/Services/SRT.js index b405cfe..86707d5 100644 --- a/src/views/Publication/Services/SRT.js +++ b/src/views/Publication/Services/SRT.js @@ -47,7 +47,7 @@ const requires = { formats: ['mpegts'], codecs: { audio: ['aac', 'mp3'], - video: ['h264'], + video: ['h264', 'hevc', 'vp9', 'av1'], }, }; diff --git a/src/views/Publication/Services/UDP.js b/src/views/Publication/Services/UDP.js index 4c720f5..5826fbe 100644 --- a/src/views/Publication/Services/UDP.js +++ b/src/views/Publication/Services/UDP.js @@ -45,7 +45,7 @@ const requires = { formats: ['mpegts'], codecs: { audio: ['aac', 'mp3'], - video: ['h264'], + video: ['h264', 'hevc', 'vp9', 'av1'], }, }; diff --git a/src/views/Publication/Services/Youtube.js b/src/views/Publication/Services/Youtube.js index 478e9f6..747f12c 100644 --- a/src/views/Publication/Services/Youtube.js +++ b/src/views/Publication/Services/Youtube.js @@ -101,8 +101,6 @@ function Service(props) { if (settings.mode === 'rtmps') { let options = ['-f', 'flv']; - console.log('codecs', props.skills.codecs); - if (props.skills.ffmpeg.version_major >= 6) { const codecs = []; if (props.skills.codecs.video.includes('hevc')) {