Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH v2 0/6] WebRTC sub-second live streaming support
@ 2023-11-07 14:12 Michael Riedl
  2023-11-14 10:05 ` Tomas Härdin
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Riedl @ 2023-11-07 14:12 UTC (permalink / raw)
  To: ffmpeg-devel

This patch series adds support for WHIP and WHEP (WebRTC-HTTP ingestion protocol
and WebRTC-HTTP egress protocol). It supersedes the previous patch series. Thank
you all for your feedback and suggestions!

The WHIP and WHEP are defined in the following draft RFCs:
- WHIP: https://datatracker.ietf.org/doc/draft-ietf-wish-whip
- WHEP: https://datatracker.ietf.org/doc/draft-murillo-whep/

The implementation builds on FFmpeg's existing RTP, HTTP and SDP support as well
as libdatachannel for the rest. This library is much more lightweight than other
libraries (e.g. libwebrtc). At the same time, using this library avoids
reimplementing parts of WebRTC in FFmpeg.

This patch series was tested with WebRTC servers Dolby.io (formerly Millicast)
and SRS (https://github.com/ossrs/srs). Using a local server, an end-to-end
latency of 3 frames (50 ms at 60 fps) was measured with video-only output, and
12 frames (200 ms at 60 fps) with audio and video output. Using a DeckLink input
device, an end-to-end latency of about 4 frames (70 ms at 60 fps) was measured
with both, video-only and audio and video output.

Using a remote server, only the RTT is added to the end-to-end latency. For
example, using a server in Amsterdam (The Netherlands) from a location in
Salzburg (Austria), with RTT=18ms, an end-to-end latency of 50+18=68 ms was
measured for video-only output.


Michael Riedl (6):
  libavformat/http: expose actual Location header value
  libavformat/sdp: remove whitespaces in fmtp
  configure: add libdatachannel as external library
  libavformat/webrtc: add common code for WebRTC streaming
  libavformat/webrtc_demux: add WebRTC-HTTP egress protocol (WHEP)
    demuxer
  libavformat/webrtc_mux: add WebRTC-HTTP ingestion protocol (WHIP)
    muxer

 Changelog                        |   5 +
 MAINTAINERS                      |   1 +
 configure                        |   7 +
 doc/demuxers.texi                |  22 ++
 doc/muxers.texi                  |  21 ++
 libavformat/Makefile             |   2 +
 libavformat/allformats.c         |   2 +
 libavformat/http.c               |   1 +
 libavformat/sdp.c                |   4 +-
 libavformat/webrtc.c (new)       | 410 +++++++++++++++++++++++++++++++
 libavformat/webrtc.h (new)       |  70 ++++++
 libavformat/webrtc_demux.c (new) | 246 +++++++++++++++++++
 libavformat/webrtc_mux.c (new)   | 273 ++++++++++++++++++++
 13 files changed, 1062 insertions(+), 2 deletions(-)
 create mode 100644 libavformat/webrtc.c
 create mode 100644 libavformat/webrtc.h
 create mode 100644 libavformat/webrtc_demux.c
 create mode 100644 libavformat/webrtc_mux.c

--
2.39.2

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-11-27  9:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-07 14:12 [FFmpeg-devel] [PATCH v2 0/6] WebRTC sub-second live streaming support Michael Riedl
2023-11-14 10:05 ` Tomas Härdin
2023-11-14 12:59   ` Michael Riedl
2023-11-14 15:46     ` Tomas Härdin
2023-11-15 21:45     ` Michael Niedermayer
2023-11-27  9:46       ` Michael Riedl
2023-11-27  9:48         ` Nicolas George

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git