Try to support other codecs
This commit is contained in:
parent
e25f83ce21
commit
789951460b
3 changed files with 29 additions and 9 deletions
|
@ -91,18 +91,35 @@ async function getVideoStreamCodec (path: string) {
|
|||
|
||||
const videoCodec = videoStream.codec_tag_string
|
||||
|
||||
if (videoCodec === 'vp09') return 'vp09.00.50.08'
|
||||
|
||||
const baseProfileMatrix = {
|
||||
avc1: {
|
||||
High: '6400',
|
||||
Main: '4D40',
|
||||
Baseline: '42E0'
|
||||
},
|
||||
av01: {
|
||||
High: '1',
|
||||
Main: '0',
|
||||
Professional: '2'
|
||||
}
|
||||
}
|
||||
|
||||
let baseProfile = baseProfileMatrix[videoStream.profile]
|
||||
let baseProfile = baseProfileMatrix[videoCodec][videoStream.profile]
|
||||
if (!baseProfile) {
|
||||
logger.warn('Cannot get video profile codec of %s.', path, { videoStream })
|
||||
baseProfile = baseProfileMatrix['High'] // Fallback
|
||||
baseProfile = baseProfileMatrix[videoCodec]['High'] // Fallback
|
||||
}
|
||||
|
||||
if (videoCodec === 'av01') {
|
||||
const level = videoStream.level
|
||||
|
||||
// Guess the tier indicator and bit depth
|
||||
return `${videoCodec}.${baseProfile}.${level}M.08`
|
||||
}
|
||||
|
||||
// Default, h264 codec
|
||||
let level = videoStream.level.toString(16)
|
||||
if (level.length === 1) level = `0${level}`
|
||||
|
||||
|
@ -114,8 +131,11 @@ async function getAudioStreamCodec (path: string, existingProbe?: ffmpeg.Ffprobe
|
|||
|
||||
if (!audioStream) return ''
|
||||
|
||||
const audioCodec = audioStream.codec_name
|
||||
if (audioCodec === 'aac') return 'mp4a.40.2'
|
||||
const audioCodecName = audioStream.codec_name
|
||||
|
||||
if (audioCodecName === 'opus') return 'opus'
|
||||
if (audioCodecName === 'vorbis') return 'vorbis'
|
||||
if (audioCodecName === 'aac') return 'mp4a.40.2'
|
||||
|
||||
logger.warn('Cannot get audio codec of %s.', path, { audioStream })
|
||||
|
||||
|
|
|
@ -9,5 +9,5 @@ export interface PluginTranscodingManager {
|
|||
|
||||
addVODEncoderPriority (streamType: 'audio' | 'video', encoder: string, priority: number): void
|
||||
|
||||
removeAllProfilesAndEncoderPriorities()
|
||||
removeAllProfilesAndEncoderPriorities(): void
|
||||
}
|
||||
|
|
|
@ -516,7 +516,7 @@ async function register ({
|
|||
}
|
||||
}
|
||||
|
||||
// Support libopus and libvpx-vp9 encoders, just for the example (PeerTube player is only compatible with h264/aac)
|
||||
// Support libopus and libvpx-vp9 encoders (these codecs could be incompatible with the player)
|
||||
transcodingManager.addVODProfile('libopus', 'test-vod-profile', builder)
|
||||
|
||||
// Default priorities are ~100
|
||||
|
|
Loading…
Reference in a new issue