Hello,
this is a series of suggestions for a better use of ffmpeg capabilities.
(this is related to this thread: https://obsproject.com/forum/threads/protocol-support-on-obs-multiplatform-mpeg-dash-hls.22969/ )
(1) better codec selections (at least for mpegts):
At the moment when selecting any given muxer in recording > Custom Output (FFmpeg), a default encoder is selected but there is not always freedom to select another compatible codec.
Ex: mpegts ===> video encoder is only mpeg2video and audio encoder is: mp2
But mpegts is compatible with x264 and aac ... The difference in quality is huge ...
(2) increase the number of audio tracks to at least 16 or better 32:
case use: SDI with embedded audio (16 channels usually) corresponding to various languages, commentary, etc ...
case use: surround audio recorded in different channels
coupled to mpegts (see (1) ) , this is useful in professional settings (stb iptv dvb)
(3) enable custom filter options on ffmpeg input:
case use: -filter_complex on audio and video
One would need to pass options to ffmpeg here: ffmpeg -i INPUT [HERE] -c:v [video codec options] -c:a [audio options] -f muxer [ muxer options] OUTPUT
Ex: ffmpeg -channels 8 -f decklink -i Decklink-INPUT -filter_complex "[0:a]pan=mono|c0=c0[a0];[0:a]pan=mono|c0=c1[a1];[0:a]pan=mono|c0=c2[a2];[0:a]pan=mono|c0=c3[a3];[0:a]pan=mono|c0=c4[a4];[0:a]pan=mono|c0=c5[a5];[0:a]pan=mono|c0=c6[a6];[0:a]pan=mono|c0=c7[a7]" /
-c:v ...
-c:a ...
This command separates for instance a 7.1 sourround audio in 8 streams (+ video stream).
This can be useful for mepgts or mkv (multi-language) for sdi embedded audio input
But all the filters of ffmeg are available ... quite powerful.
(4) enable tee muxer
The tee muxer is quite convenient in that it enables multiple outputs.
case_use: This would allow streaming to various destinations, URL and files (streaming and recording).
case_use: this would allow more muxing options (the video and audio streams can be muxed differently on the various tee muxer outputs)
The tee muxer does a single encode for all the outputs so it is better for the CPU.
Maybe a way to implement all this in a single stroke would be the ability to pipe OBS with ffmepg scripts:
obs | ffmpeg -i - -c:v etc
OBS would specify the inputs and ffmpeg process them.
this is a series of suggestions for a better use of ffmpeg capabilities.
(this is related to this thread: https://obsproject.com/forum/threads/protocol-support-on-obs-multiplatform-mpeg-dash-hls.22969/ )
(1) better codec selections (at least for mpegts):
At the moment when selecting any given muxer in recording > Custom Output (FFmpeg), a default encoder is selected but there is not always freedom to select another compatible codec.
Ex: mpegts ===> video encoder is only mpeg2video and audio encoder is: mp2
But mpegts is compatible with x264 and aac ... The difference in quality is huge ...
(2) increase the number of audio tracks to at least 16 or better 32:
case use: SDI with embedded audio (16 channels usually) corresponding to various languages, commentary, etc ...
case use: surround audio recorded in different channels
coupled to mpegts (see (1) ) , this is useful in professional settings (stb iptv dvb)
(3) enable custom filter options on ffmpeg input:
case use: -filter_complex on audio and video
One would need to pass options to ffmpeg here: ffmpeg -i INPUT [HERE] -c:v [video codec options] -c:a [audio options] -f muxer [ muxer options] OUTPUT
Ex: ffmpeg -channels 8 -f decklink -i Decklink-INPUT -filter_complex "[0:a]pan=mono|c0=c0[a0];[0:a]pan=mono|c0=c1[a1];[0:a]pan=mono|c0=c2[a2];[0:a]pan=mono|c0=c3[a3];[0:a]pan=mono|c0=c4[a4];[0:a]pan=mono|c0=c5[a5];[0:a]pan=mono|c0=c6[a6];[0:a]pan=mono|c0=c7[a7]" /
-c:v ...
-c:a ...
This command separates for instance a 7.1 sourround audio in 8 streams (+ video stream).
This can be useful for mepgts or mkv (multi-language) for sdi embedded audio input
But all the filters of ffmeg are available ... quite powerful.
(4) enable tee muxer
The tee muxer is quite convenient in that it enables multiple outputs.
case_use: This would allow streaming to various destinations, URL and files (streaming and recording).
case_use: this would allow more muxing options (the video and audio streams can be muxed differently on the various tee muxer outputs)
The tee muxer does a single encode for all the outputs so it is better for the CPU.
Maybe a way to implement all this in a single stroke would be the ability to pipe OBS with ffmepg scripts:
obs | ffmpeg -i - -c:v etc
OBS would specify the inputs and ffmpeg process them.