livepeer / lpms

Livepeer media server
MIT License
286 stars 71 forks source link

P3 - Make sure LPMS works without video #349

Open MikeIndiaAlpha opened 2 years ago

MikeIndiaAlpha commented 2 years ago

support audio-only streams for transcoding Why? These will just be rejected right now. Since we already don’t support this, low priority, but would be nice to get to.

Right now LPMS will not work when there is no video data. For example, lpms/cmd/transcoding go will panic with TranscoderInvalidVideo error. This is because of the following code in ffmpeg.go:880

if videoMissing {
    // Audio-only segment, fail fast right here as we cannot handle them nicely
    return nil, ErrTranscoderVid
}

When statement above gets commented out, transcoding will crash with SIGSEGV, most likely reference to some kind of video-related pointer that isn't checking against NULL.

Since the idea is to separate video and audio processing at some point during the refactoring process, and since there are no fundamental reasons not to support video-less streams, it could make sense to change LPMS so that it would also work without video.

BTW, to obtain audio-only .ts container one can do something like this: ffmpeg -i file_that_contains_video_and_audio.format" -map 0:a just_audio.ts

MikeIndiaAlpha commented 2 years ago

BTW, after recent fixes from ma_refactoring_second branch it may be easier to fix, as some issues with "audio-only" segments were ironed out. But it is still crashing.

MikeIndiaAlpha commented 2 years ago

So it was a matter of a few trivial changes in this PR https://github.com/livepeer/lpms/pull/348 Basically all that had to be done is removal of the (not very nice anyway) assumption that the video stream is always there. Once the mentioned branch will get merged, this issue can be closed.

chrishobcroft commented 1 year ago

Hi @MikeIndiaAlpha thank you for this contribution. Do you know where this got stuck? I am keen to enable "video-less" streams.

cyberj0g commented 1 year ago

@chrishobcroft once this is merged, streams without video should work.