Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Mark Gaiser <markg85@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Cc: Mark Gaiser <markg85@gmail.com>
Subject: [FFmpeg-devel] [PATCH 0/5] Add IPFS and IPNS protocol support
Date: Mon, 31 Jan 2022 14:51:11 +0100
Message-ID: <20220131135116.14035-1-markg85@gmail.com> (raw)

Hi,

This patch series adds support for IPFS.

I've been adviced to keep the patches as they are (split). If needed, I can 
squash them to a single patch.

The following is a short summary. In the IPFS ecosystem you access it's content
by a "Content IDentifier" (CID). This CID is, in simplified terms, a hash of 
the content. IPFS itself is a distributed network where any user can run a node
to be part of the network and access files by their CID. If any reachable node 
within that network has the CID, you can get it.

IPFS (as a technology) has two protocols, ipfs and ipns.
The ipfs protocol is the immutable way to access content.
The ipns protocol is a mutable layer on top of it. It's essentially a new CID 
that points to a ipfs CID. This "pointer" if you will can be changed to point 
to something else.
Much more information on how this technology works can be found here [1].

This patch series allows to interact natively with IPFS. That means being able
to access files like:
- ffplay ipfs://<cid>
- ffplay ipns://<cid>

There are multiple ways to access files on the IPFS network. This patch series
uses the gateway driven way. An IPFS node - by default - exposes a local 
gateway (say http://localhost:8080) which is then used to get content from IPFS.

Much of the logic in this patch series is to find that gateway and essentially 
rewrite:

"ipfs://<cid>"

to:

"http://localhost:8080/ipfs/<cid>"

Once that's found it's forwared to the protocol handler where eventually the
http protocol is going to handle it. Note that it could also be https. There's 
enough flexibility in the implementation to allow the user to provide a 
gateway. There are also public https gateways which can be used just as well.

After this patch is accepted, I'll work on getting IPFS supported in:
- mpv (requires this ffmpeg patch)
- vlc (prefers this patch but can be made to work without this patch)
- kodi (requires this ffmpeg patch)

Best regards,
Mark Gaiser

[1] https://docs.ipfs.io/concepts/


Mark Gaiser (5):
  Early version of IPFS protocol support.
  Fix up IPNS support.
  Merge IPNS and IPFS handling.
  Implement logic to determine the IPFS gateway.
  Fix review feedback

 configure               |   2 +
 doc/protocols.texi      |  30 +++++
 libavformat/Makefile    |   2 +
 libavformat/ipfs.c      | 283 ++++++++++++++++++++++++++++++++++++++++
 libavformat/protocols.c |   2 +
 5 files changed, 319 insertions(+)
 create mode 100644 libavformat/ipfs.c

-- 
2.35.1

_______________________________________________
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".

             reply	other threads:[~2022-01-31 13:52 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-31 13:51 Mark Gaiser [this message]
2022-01-31 13:51 ` [FFmpeg-devel] [PATCH 1/5] Early version of IPFS " Mark Gaiser
2022-01-31 15:59   ` Michael Niedermayer
2022-01-31 16:06   ` James Almer
2022-01-31 16:34     ` Mark Gaiser
2022-01-31 20:26   ` Lynne
2022-01-31 22:04     ` Mark Gaiser
2022-01-31 13:51 ` [FFmpeg-devel] [PATCH 2/5] Fix up IPNS support Mark Gaiser
2022-01-31 16:00   ` Michael Niedermayer
2022-01-31 13:51 ` [FFmpeg-devel] [PATCH 3/5] Merge IPNS and IPFS handling Mark Gaiser
2022-01-31 13:51 ` [FFmpeg-devel] [PATCH 4/5] Implement logic to determine the IPFS gateway Mark Gaiser
2022-01-31 13:51 ` [FFmpeg-devel] [PATCH 5/5] Fix review feedback Mark Gaiser
2022-01-31 15:46   ` Michael Niedermayer
2022-01-31 16:33     ` Mark Gaiser
2022-01-31 15:52 ` [FFmpeg-devel] [PATCH 0/5] Add IPFS and IPNS protocol support Tomas Härdin
2022-01-31 16:31   ` Mark Gaiser
2022-01-31 20:22     ` Tomas Härdin
2022-01-31 22:00       ` Mark Gaiser
2022-02-01 16:39         ` Tomas Härdin
2022-02-01 21:18           ` Mark Gaiser
2022-02-02 12:51             ` Tomas Härdin
2022-02-02 13:32               ` Mark Gaiser
2022-02-01 10:06       ` Michael Niedermayer
2022-02-01 16:43         ` Tomas Härdin
2022-02-02 13:48           ` Michael Niedermayer
2022-02-04 10:28             ` Tomas Härdin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220131135116.14035-1-markg85@gmail.com \
    --to=markg85@gmail.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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