From 9c6a61ae4c7363426240e860f401a505fb218e1e Mon Sep 17 00:00:00 2001 From: noarkhh Date: Thu, 16 Oct 2025 10:24:50 +0200 Subject: [PATCH 1/4] Merge pipeline tutorials --- basic_pipeline/11_Pipeline.md | 2 +- .../02_Bin.md => basic_pipeline/12_Bin.md | 0 .../13_DynamicPads.md | 0 .../04_Tests.md => basic_pipeline/14_Tests.md | 0 .../assets/diagrams/basic_pipeline_bin.drawio | 0 .../images/Illo_basic pipeline extension.png | Bin .../assets/images/basic_pipeline_bin.png | Bin basic_pipeline/index.md | 5 ++++- basic_pipeline_extension/01_Introduction.md | 9 --------- .../assets/diagrams/basic_pipeline.drawio | 1 - .../assets/images/basic_pipeline.png | Bin 43562 -> 0 bytes basic_pipeline_extension/index.md | 14 -------------- broadcasting/05_RTMP_Pipeline.md | 2 +- 13 files changed, 6 insertions(+), 27 deletions(-) rename basic_pipeline_extension/02_Bin.md => basic_pipeline/12_Bin.md (100%) rename basic_pipeline_extension/03_DynamicPads.md => basic_pipeline/13_DynamicPads.md (100%) rename basic_pipeline_extension/04_Tests.md => basic_pipeline/14_Tests.md (100%) rename {basic_pipeline_extension => basic_pipeline}/assets/diagrams/basic_pipeline_bin.drawio (100%) rename {basic_pipeline_extension => basic_pipeline}/assets/images/Illo_basic pipeline extension.png (100%) rename {basic_pipeline_extension => basic_pipeline}/assets/images/basic_pipeline_bin.png (100%) delete mode 100644 basic_pipeline_extension/01_Introduction.md delete mode 100644 basic_pipeline_extension/assets/diagrams/basic_pipeline.drawio delete mode 100644 basic_pipeline_extension/assets/images/basic_pipeline.png delete mode 100644 basic_pipeline_extension/index.md diff --git a/basic_pipeline/11_Pipeline.md b/basic_pipeline/11_Pipeline.md index adab710..f6f584b 100644 --- a/basic_pipeline/11_Pipeline.md +++ b/basic_pipeline/11_Pipeline.md @@ -109,4 +109,4 @@ In case of any problems you can refer to the code on the `template/end` branch o Now our solution is completed. You have acquired a basic understanding of Membrane, and you can implement a simple pipeline using elements. -If you wish to extend your knowledge of Membrane's concepts we encourage you to read the [extension to this tutorial](../basic_pipeline_extension/01_Introduction.md). +If you wish to extend your knowledge of Membrane's concepts we encourage you to read the next chapters. There you'll learn about some abstractions and concepts that are useful for creating solutions that are more scalable and maintainable. diff --git a/basic_pipeline_extension/02_Bin.md b/basic_pipeline/12_Bin.md similarity index 100% rename from basic_pipeline_extension/02_Bin.md rename to basic_pipeline/12_Bin.md diff --git a/basic_pipeline_extension/03_DynamicPads.md b/basic_pipeline/13_DynamicPads.md similarity index 100% rename from basic_pipeline_extension/03_DynamicPads.md rename to basic_pipeline/13_DynamicPads.md diff --git a/basic_pipeline_extension/04_Tests.md b/basic_pipeline/14_Tests.md similarity index 100% rename from basic_pipeline_extension/04_Tests.md rename to basic_pipeline/14_Tests.md diff --git a/basic_pipeline_extension/assets/diagrams/basic_pipeline_bin.drawio b/basic_pipeline/assets/diagrams/basic_pipeline_bin.drawio similarity index 100% rename from basic_pipeline_extension/assets/diagrams/basic_pipeline_bin.drawio rename to basic_pipeline/assets/diagrams/basic_pipeline_bin.drawio diff --git a/basic_pipeline_extension/assets/images/Illo_basic pipeline extension.png b/basic_pipeline/assets/images/Illo_basic pipeline extension.png similarity index 100% rename from basic_pipeline_extension/assets/images/Illo_basic pipeline extension.png rename to basic_pipeline/assets/images/Illo_basic pipeline extension.png diff --git a/basic_pipeline_extension/assets/images/basic_pipeline_bin.png b/basic_pipeline/assets/images/basic_pipeline_bin.png similarity index 100% rename from basic_pipeline_extension/assets/images/basic_pipeline_bin.png rename to basic_pipeline/assets/images/basic_pipeline_bin.png diff --git a/basic_pipeline/index.md b/basic_pipeline/index.md index f0009df..fe1d638 100644 --- a/basic_pipeline/index.md +++ b/basic_pipeline/index.md @@ -1,5 +1,5 @@ --- -title: All you need to know about pipelines pt 1 +title: All you need to know about pipelines description: >- See how pipeline works in Membrane and learn how to set it up for you part: 2 @@ -19,3 +19,6 @@ graphicPath: assets/images/Illo_basic pipeline.png | 9 | Mixer | 09_Mixer.md | | 10 | Sink | 10_Sink.md | | 11 | Pipeline | 11_Pipeline.md | +| 12 | Bin | 12_Bin.md | +| 13 | Dynamic Pads | 13_DynamicPads.md | +| 14 | Tests | 14_Tests.md | diff --git a/basic_pipeline_extension/01_Introduction.md b/basic_pipeline_extension/01_Introduction.md deleted file mode 100644 index 956e346..0000000 --- a/basic_pipeline_extension/01_Introduction.md +++ /dev/null @@ -1,9 +0,0 @@ - -In this section, we gathered some topics which should give you better insight into Membrane. We will base on the ["All you need to know about pipelines pt 1" tutorial](../basic_pipeline/01_Introduction.md), so make sure you have gone through it first. -The chapters are loosely related, so feel free to read them in any order you want. - -**Table of contents** - -- [Bin](../basic_pipeline_extension/02_Bin.md) - how to create a reusable group of [elements](../glossary/glossary.md#element) -- [Dynamic Pads](../basic_pipeline_extension/03_DynamicPads.md) - a more flexible way to define element's [pads](../glossary/glossary.md#pad) -- [Tests](../basic_pipeline_extension/04_Tests.md) - creating unit tests for the elements diff --git a/basic_pipeline_extension/assets/diagrams/basic_pipeline.drawio b/basic_pipeline_extension/assets/diagrams/basic_pipeline.drawio deleted file mode 100644 index f176610..0000000 --- a/basic_pipeline_extension/assets/diagrams/basic_pipeline.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vtbb6s4EP410T6lAhMIeUzapq201ak2u+rpeVk5YC4twaxx2uT8+rXBDveEtrmhlpfg8djY428+jy/paZeL1Q2BkXePbRT0gGKvetpVDwBV0wbsh0vWqWSoaqnAJb4tlDLBzP+NhFAR0qVvo7igSDEOqB8VhRYOQ2TRggwSgt+Kag4Oil+NoIsqgpkFg6r00bepl0pNMMzkt8h3Pfll1RilOQsolUVPYg/a+C0n0q572iXBmKZvi9UlCrjxpF3SctOG3E3DCAppmwLP5OF5HKzv8PVv8vj0Sxm83j32RTdiupYdRjbrv0hiQj3s4hAG15l0QvAytBGvVWWpTOdPjCMhfEaUrsVgwiXFTOTRRSBy0cqnP3PvT+xdudBF6opjR5GJtUyElKx/5hO5UjyZFUtSslxMCX7ZDJ2a6KeySxxgkvRZU5KH5VRtKswc4yWx0BZDSmxC4iK6RU+gn1s59wExYjcILxBrPVMgKIDUfy2iEAowuxs9UXRMCFznFCLshzTO1fzABUxB+uVIgFJ4pTosYed9+uwlbYFM5bqSiRI8vgObotOvMFgKM/SAETDjThycNM6BYkiM/5bciyb3TB4j1hKayTj3QAr7vEw/JlahgEcp55Ex7wmYcpX4wsXYDRCM/PjCwgsmtmKmMnXgwg949xs+EkvqkjI1n2244jdpfxzBsOB1UjFtZFITa5OigmhVrWWWYlHUxRqYVlf8hOhOJi65edGJ3zyfolmU2vONMXnRYR0/CHLu4jgOsKw6R7KNuaEbFbdjMJxAYglCSFzwBVHLEz7a6HWviFC02uonIlcr4XMg0m8ZZ6uSiL0cXxtKs2fl0P0B8CoVk7+HWZVuMuvH+RO05E993/z5qVEGXaKoBvb4wjQBzFPThPkVWeIQ8ZfWkj8GZ8UfWvf44wexEfFDd7J0HESOwSM2RKZTyyOGZaK5U8sjEWskGyNE+GdYcwUct9CLv8it8cBgP4SzWf2dTWCiad2jnIxlngokc4zAZNCSWNThWTHLoHvMcoUiuA4wtI9EKzoy7UEdrZhgrhltwhM3gLx7Ker2HKoM1BbMoR6TOUbdI45Trmj0lsRhnBVv6N3jjY5EJIdd2ZQDjdMvbTTQPb4oBhrqUfnC6GagYXSPML4DjW2BRi1zHDXQ2LjM2TPHfhlAevZuCjDPigJku7vEAff+6jjeD4GiAF2Yorg7yp7aGGIqdsN2scIenF/XS86vnjxsGHxR5zdbOj84M+c3u+f8Mz98OZMTkNKqoOLxe/DxYfnU4+Q+Djp4bjb1ScxbtmQKf8SyuXMi8wM/ycZOMlwWC9LithCLPRjxVwsSezfGqhgpQlRcRNCq2917wFLfLGJJq0LJrEGSqhwMSh08QpkhC4d2F7B0ePzoJwdQ3Y5XOQAJ7TG/S8jtyldivlU0YzH8+Oi5xYe2LljiQR51bYlLWA+mfrCJdkJ505JPQWnE8VB/YFaZudLnU6GOtPDudU7LSCcHHr0GPFL2vjt1lUtwfbW0UtbKE2Tac1Esw2W1JqNUkVqqSAxJuaJ93awDdZs2B8H8ri20Q2L+EwBte5sAfAP0MADt4KLiLxQRbC8t5hPAgAs+04bzOOpldzKzCZ7N/2zOjNlg4/AwM3spJjz8TsJIKUJGrdlGHNXN7GAPM/uv4T8/bq5N4+5ujh7c27/7tz/+3XI5by6NPM4Zf95o+dam5kzUuFXLB3daA6Q0ZyY5KYUl0DkwdQ5NvQmcegpPpioByl5rak6HWa3uQIc4RLXgyC9jhVIDHGpA0xz7gZ1rh7pV6MHw0bxy2EBh8o2PE+KjZm1wVIA0n4XnsFCYlXbf6DfqbvSPm6/tf8PvWPAbGbsnMG0/8GPJ7H9facyU/XtOu/4f \ No newline at end of file diff --git a/basic_pipeline_extension/assets/images/basic_pipeline.png b/basic_pipeline_extension/assets/images/basic_pipeline.png deleted file mode 100644 index 7ad539971e22748aa6614e67b66c6f06598a6548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43562 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 - Additional features you might find usefull while setting up your pipelines -part: 3 -graphicPath: assets/images/Illo_basic pipeline extension.png ---- - -| number | title | file | -| ------ | ------------- | ------------------ | -| 1 | Introductions | 01_Introduction.md | -| 2 | Bin | 02_Bin.md | -| 3 | Dynamic Pads | 03_DynamicPads.md | -| 4 | Tests | 04_Tests.md | diff --git a/broadcasting/05_RTMP_Pipeline.md b/broadcasting/05_RTMP_Pipeline.md index 8fdd201..881b5ac 100644 --- a/broadcasting/05_RTMP_Pipeline.md +++ b/broadcasting/05_RTMP_Pipeline.md @@ -33,7 +33,7 @@ First, we define the list of children. The following children are defined: - `:muxer_segment_duration` - the maximal duration of a segment. Each segment of each track shouldn't exceed that value. In our case, we have decided to limit the length of each segment to 8 seconds. - `:storage` - the sink element, the module responsible for writing down the HLS playlist and manifest files. In our case, we use a pre-implemented `Membrane.HTTPAdaptiveStream.FileStorage` module, designed to write the files to the local filesystem. We configure it so that the directory where the files will be put in the `output/` directory (make sure that that directory exists as the storage module won't create it itself). -The fact that the configuration of a pipeline, which performs relatively complex processing, consists of just two elements, proves the power of [bins](/basic_pipeline_extension/02_Bin.md). Feel free to stop for a moment and read about them if you haven't done it yet. +The fact that the configuration of a pipeline, which performs relatively complex processing, consists of just two elements, proves the power of [bins](/basic_pipeline/12_Bin.md). Feel free to stop for a moment and read about them if you haven't done it yet. After providing the children's specifications, we are ready to connect the pads between these children. Take a look at that part of the code: **_`lib/rtmp_to_hls/pipeline.ex`_** From 60a2486c5ea5786a2d4c744c0ce05558cf86201d Mon Sep 17 00:00:00 2001 From: noarkhh Date: Thu, 16 Oct 2025 10:38:05 +0200 Subject: [PATCH 2/4] Remove broken links --- basic_pipeline/12_Bin.md | 2 +- basic_pipeline/13_DynamicPads.md | 2 +- broadcasting/05_RTMP_Pipeline.md | 2 +- broadcasting/11_RTSP_Pipeline.md | 2 +- glossary/glossary.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/basic_pipeline/12_Bin.md b/basic_pipeline/12_Bin.md index f7790ee..a88e14c 100644 --- a/basic_pipeline/12_Bin.md +++ b/basic_pipeline/12_Bin.md @@ -78,4 +78,4 @@ defmodule Basic.Pipeline do end ``` -Combining the usage of the bin and [dynamic pads](03_DynamicPads.md) will result in an even cleaner and more scalable solution. +Combining the usage of the bin and [dynamic pads](13_DynamicPads.md) will result in an even cleaner and more scalable solution. diff --git a/basic_pipeline/13_DynamicPads.md b/basic_pipeline/13_DynamicPads.md index 9f0921a..a199390 100644 --- a/basic_pipeline/13_DynamicPads.md +++ b/basic_pipeline/13_DynamicPads.md @@ -121,4 +121,4 @@ As you can see, we have created two `:input` pads: `:first` and `:second`. While As an exercise, you can try to modify the `lib/pipeline.ex` file and define a pipeline consisting of three parallel branches, being mixed in a single Mixer. Later on, you can check if the pipeline works as expected, by generating the input files out of the conversation in which participate three speakers. -If you combine the approach taken in the chapter about [Bin](02_Bin.md) you can simplify this solution by reducing the size of the link defintions inside the pipeline. +If you combine the approach taken in the chapter about [Bin](12_Bin.md) you can simplify this solution by reducing the size of the link defintions inside the pipeline. diff --git a/broadcasting/05_RTMP_Pipeline.md b/broadcasting/05_RTMP_Pipeline.md index 881b5ac..3a92dbb 100644 --- a/broadcasting/05_RTMP_Pipeline.md +++ b/broadcasting/05_RTMP_Pipeline.md @@ -56,7 +56,7 @@ After providing the children's specifications, we are ready to connect the pads end ``` -The structure of links reflects the desired architecture of the application, described in the [chapter about system architecture](../videoroom/3_SystemArchitecture.md). +The structure of links reflects the desired architecture of the application. `:src` has two output pads: the `:audio` pad and the `:video` pad, transferring the appropriate media tracks. The source's `:audio` pad is linked to the input `:audio` pad of the sink - along with the `:encoding` option. That option is an atom, describing the codec which is used to encode the media data - when it comes to audio data, we will be using AAC coded. diff --git a/broadcasting/11_RTSP_Pipeline.md b/broadcasting/11_RTSP_Pipeline.md index 241df3b..21c3e71 100644 --- a/broadcasting/11_RTSP_Pipeline.md +++ b/broadcasting/11_RTSP_Pipeline.md @@ -1,4 +1,4 @@ -As explained in the [Architecture chapter](07_RTSP_Architecture.md), the pipeline will consist of a couple of elements, that will be processing the RTP stream. +As explained in the [Architecture chapter](08_RTSP_Architecture.md), the pipeline will consist of a couple of elements, that will be processing the RTP stream. The flow of the pipeline will consist of three steps. First, when the pipeline is initialized we will start the Connection Manager, which will set up the RTP stream via the RTSP. Once that is finished, we will set up two initial elements in the pipeline - the `UDP Source` and `RTP SessionBin`, which will allow us to receive RTP packets and process them. diff --git a/glossary/glossary.md b/glossary/glossary.md index 10fd62c..0766502 100644 --- a/glossary/glossary.md +++ b/glossary/glossary.md @@ -3,7 +3,7 @@ - #### **Packet** It is a formatted unit of data transmitted over the network. To send data over the network it has to be fragmented into packets, which size is limited by [MTU(Maximum Transfer Unit)](https://en.wikipedia.org/wiki/Maximum_transmission_unit) - 1500 bytes when using [Ethernet](https://en.wikipedia.org/wiki/Ethernet_frame). - #### **Frame** - 'Frame' can refer to either [network frame]() or **media frame**, which is a basic data unit used by media coding formats. In particular, one media frame can represent a single image in a video. + 'Frame' can refer to either [network frame](https://en.wikipedia.org/wiki/Frame_(networking)) or **media frame**, which is a basic data unit used by media coding formats. In particular, one media frame can represent a single image in a video. - #### **Track** A media track is equivalent to a single audio or video stream. - #### **Simulcast** From 358097f0a3e3e3093a0ed08851ff528aa121fa58 Mon Sep 17 00:00:00 2001 From: noarkhh Date: Thu, 16 Oct 2025 10:47:03 +0200 Subject: [PATCH 3/4] Update tutorial part numbers --- broadcasting/index.md | 4 ++-- create_new_plugin/index.md | 2 +- digital_video_introduction/index.md | 2 +- glossary/index.md | 2 +- h264/index.md | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/broadcasting/index.md b/broadcasting/index.md index 8f3b3cf..6eb4283 100644 --- a/broadcasting/index.md +++ b/broadcasting/index.md @@ -2,7 +2,7 @@ title: Membrane broadcasting tutorial description: >- Create your own media broadcasting solution! -part: 8 +part: 7 --- | number | title | file | @@ -19,4 +19,4 @@ part: 8 | 10 | Connection manager | 10_ConnectionManager.md | | 11 | RTSP to HLS - pipeline | 11_RTSP_Pipeline.md | | 12 | Summary | 12_Summary.md | -| 13 | (Suplement) H264 codec | 13_H264_codec.md | \ No newline at end of file +| 13 | (Suplement) H264 codec | 13_H264_codec.md | diff --git a/create_new_plugin/index.md b/create_new_plugin/index.md index 4f3fde2..2940b9d 100644 --- a/create_new_plugin/index.md +++ b/create_new_plugin/index.md @@ -2,7 +2,7 @@ title: How to create your own plugin description: >- In this short guide we provide you with an overview of how to create your own Membrane plugin and how to integrate it into your project. -part: 4 +part: 3 graphicPath: assets/images/Illo_create new plugin.png --- diff --git a/digital_video_introduction/index.md b/digital_video_introduction/index.md index 74acf77..2a1293f 100644 --- a/digital_video_introduction/index.md +++ b/digital_video_introduction/index.md @@ -2,7 +2,7 @@ title: Digital Video Introduction description: >- All you need to know to understand digital video. Written by Leonardo Moreira. -part: 6 +part: 5 graphicPath: assets/images/Illo_ digital video introduction.png --- diff --git a/glossary/index.md b/glossary/index.md index 998f8c6..1072316 100644 --- a/glossary/index.md +++ b/glossary/index.md @@ -1,7 +1,7 @@ --- title: Glossary description: Set of terms we're using in our tutorials you might want to learn more about. -part: 7 +part: 6 graphicPath: assets/images/Illo_glossary.png --- diff --git a/h264/index.md b/h264/index.md index f865bbc..2d9101d 100644 --- a/h264/index.md +++ b/h264/index.md @@ -2,7 +2,7 @@ title: H264 - what, why and how description: In this tutorial we will describe what is H264, why to use it and how to fetch interesting information from the H264 stream -part: 9 +part: 8 graphicPath: --- From a20c529f7ec8c9909364180a521f1b88af658506 Mon Sep 17 00:00:00 2001 From: noarkhh Date: Thu, 16 Oct 2025 12:12:58 +0200 Subject: [PATCH 4/4] Remove unused image --- .../images/Illo_basic pipeline extension.png | Bin 22322 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 basic_pipeline/assets/images/Illo_basic pipeline extension.png diff --git a/basic_pipeline/assets/images/Illo_basic pipeline extension.png b/basic_pipeline/assets/images/Illo_basic pipeline extension.png deleted file mode 100644 index b6924ac0a53de2ed17660824b56cb5bbd3f25b6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22322 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