Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
784921f
wip
FelonEkonom May 27, 2025
7c36df9
wip
FelonEkonom May 27, 2025
015d7c7
Add hint for myself
FelonEkonom May 27, 2025
5fa6960
Update mp4 plugin dep
FelonEkonom May 28, 2025
1bf482d
mpgts demuxing engine wip
FelonEkonom Jun 16, 2025
ba618f4
wip
FelonEkonom Jun 17, 2025
7fa8c49
Fix test
FelonEkonom Jun 17, 2025
2d51f7e
Improve tests wip
FelonEkonom Jun 18, 2025
b83295b
Add test for fmp4 wip
FelonEkonom Jun 18, 2025
3a22143
wip
FelonEkonom Jun 18, 2025
286a0e5
Fix test
FelonEkonom Jun 25, 2025
3864cb3
Fix test once again
FelonEkonom Jun 25, 2025
f5df8ab
Fix typo
FelonEkonom Jun 25, 2025
ff82810
Refactor test layout
FelonEkonom Jun 25, 2025
e36ac0f
Improve choosing variant
FelonEkonom Jun 25, 2025
cfc76fd
Small test refactor
FelonEkonom Jun 25, 2025
5ec8db1
Refactor project
FelonEkonom Jun 25, 2025
c85a77a
Remove leftovers
FelonEkonom Jun 25, 2025
eaa8bc0
Write todos
FelonEkonom Jun 25, 2025
cab0603
Add failing test
FelonEkonom Jun 25, 2025
e258c63
Change the way wariants are chosen wip
FelonEkonom Jun 27, 2025
c06e4cb
wip
FelonEkonom Jun 27, 2025
b0b4fcb
Change get_variants API, eradicate GenServer
FelonEkonom Jun 30, 2025
a8ed5c4
Replace template in mix.exs with ex_hls
FelonEkonom Jun 30, 2025
e4ecb72
Small refactor
FelonEkonom Jun 30, 2025
49503dd
Update m3u8 dependency
FelonEkonom Jun 30, 2025
9bf42a0
Download segments to get tracks info
FelonEkonom Jul 1, 2025
d725695
Drop unsupported streams
FelonEkonom Jul 2, 2025
f6fdf34
Implement CR wip
FelonEkonom Jul 4, 2025
f467bda
Update mpeg_ts version
FelonEkonom Jul 4, 2025
21b697c
Update lib/ex_hls/client.ex
FelonEkonom Jul 4, 2025
be0372e
CR refactor wip
FelonEkonom Jul 4, 2025
2e43270
Implement CR wip
FelonEkonom Jul 4, 2025
1497091
Debug wip
FelonEkonom Jul 7, 2025
d39caef
Fix bug
FelonEkonom Jul 7, 2025
1c04735
Implementing minor CR comments
FelonEkonom Jul 8, 2025
8de4292
Upgrade ex_m3u8 dep
FelonEkonom Jul 8, 2025
c060d84
Fix bug
FelonEkonom Jul 9, 2025
076b2ad
Rename Sample on Chunk
FelonEkonom Jul 14, 2025
54e9656
Trigger CI
FelonEkonom Jul 15, 2025
3890a94
Update deps
FelonEkonom Jul 15, 2025
bf78d23
unlock unused deps
FelonEkonom Jul 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# ExHLS

[![Hex.pm](https://img.shields.io/hexpm/v/membrane_template_plugin.svg)](https://hex.pm/packages/ex_hls)
[![Hex.pm](https://img.shields.io/hexpm/v/ex_hls.svg)](https://hex.pm/packages/ex_hls)
[![API Docs](https://img.shields.io/badge/api-docs-yellow.svg?style=flat)](https://hexdocs.pm/ex_hls)
[![CircleCI](https://circleci.com/gh/membraneframework/membrane_template_plugin.svg?style=svg)](https://circleci.com/gh/membraneframework/ex_hls)
[![CircleCI](https://circleci.com/gh/membraneframework/ex_hls.svg?style=svg)](https://circleci.com/gh/membraneframework/ex_hls)

This repository contains ExHLS - an Elixir package for handling HLS streams

Expand Down
Binary file added fixture/fileSequence0.m4s
Binary file not shown.
Binary file added fixture/init.mp4
Binary file not shown.
9 changes: 9 additions & 0 deletions fixture/output.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="init.mp4"
#EXTINF:10.001628,
fileSequence0.m4s
#EXT-X-ENDLIST
2 changes: 0 additions & 2 deletions lib/ex_hls.ex

This file was deleted.

21 changes: 21 additions & 0 deletions lib/ex_hls/chunk.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
defmodule ExHLS.Chunk do
@moduledoc """
A struct representing a media chunk in the ExHLS demuxing engine.
"""
@enforce_keys [:payload, :pts_ms, :dts_ms, :track_id]
defstruct @enforce_keys ++ [metadata: %{}]

@type t :: %__MODULE__{
payload: binary(),
pts_ms: integer(),
dts_ms: integer(),
track_id: term(),
metadata: map()
}

# timestamps need to be represented in milliseconds
@time_base 1000

@spec time_base() :: integer()
def time_base(), do: @time_base
end
Loading