@@ -176,7 +176,9 @@ module.exports = function (RED) {
176176 case 'mpeg' :
177177 break ;
178178 default :
179- message = 'Audio format (' + f + ') not supported, must be encoded as WAV, MP3, FLAC or OGG.' ;
179+ if ( ! ft . mime . toLowerCase ( ) . includes ( 'audio' ) ) {
180+ message = 'Audio format (' + f + ') not supported, must be encoded as WAV, MP3, FLAC or OGG.' ;
181+ }
180182 }
181183 }
182184 if ( message ) {
@@ -192,6 +194,24 @@ module.exports = function (RED) {
192194 return payloadNonStreamCheck ( msg ) ;
193195 }
194196
197+ function setFormat ( format ) {
198+ // if the format is being seen as either opus or vorbis, then it
199+ // could be one of
200+ // audio/ogg;codecs=opus
201+ // audio/ogg;codecs=vorbis
202+ // audio/webm;codecs=opus
203+ // audio/webm;codecs=vorbis
204+ // there isn't enough information to decide between audio/ogg and audio/webm
205+ // so lets go with audio/ogg
206+ switch ( format ) {
207+ case 'opus' :
208+ case 'vorbis' :
209+ return 'ogg;codecs=' + format ;
210+ default :
211+ return format ;
212+ }
213+ }
214+
195215 function processInputBuffer ( msg ) {
196216 var p = new Promise ( function resolver ( resolve , reject ) {
197217 temp . open ( { suffix : '.' + fileType ( msg . payload ) . ext } , ( err , info ) => {
@@ -203,7 +223,8 @@ module.exports = function (RED) {
203223 audio = fs . createReadStream ( info . path ) ;
204224
205225 audioData . audio = audio ;
206- audioData . format = format ;
226+ audioData . format = setFormat ( format ) ;
227+
207228 resolve ( audioData ) ;
208229 } ) ;
209230 } ) ;
@@ -225,7 +246,7 @@ module.exports = function (RED) {
225246 audio = fs . createReadStream ( info . path ) ;
226247
227248 audioData . audio = audio ;
228- audioData . format = format ;
249+ audioData . format = setFormat ( format ) ;
229250 resolve ( audioData ) ;
230251 } ) ;
231252 } ) ;
0 commit comments