hlsdl icon indicating copy to clipboard operation
hlsdl copied to clipboard

Windows binaries

Open ninep9up opened this issue 7 years ago • 46 comments

Any chance anyone could provide those? I've tried to compile sources with cygwin, but it fails.

ninep9up avatar Dec 07 '17 09:12 ninep9up

I’ll leave this open, I don’t use Windows so I have no idea how to do them.

selsta avatar Dec 08 '17 19:12 selsta

I'm messing around with cygwin too. What errors are you getting?

SalamanderSandwich avatar Dec 24 '17 21:12 SalamanderSandwich

If I remember correctly, there was something about not being able to locate mentioned sources, probably some makefile .o/.h syntax restrictions. I was trying to build it on a japanese locale, could be the reason. I'm too bipolar about compiling, have no IT education by any means, so I usually erase all of the cygwin, when I fail to build anything, and I'm too lazy to start it all over again. An artist, a psychonaut.

ninep9up avatar Dec 24 '17 21:12 ninep9up

Here's what I did.

Install Cygwin with the following packages:

  • Entire base package
  • Devel : binutils, gcc-core, git, make, mingw-runtime (mingw64-i686-runtime), pkg-config, subversion, yasm
  • Text : Texi2html
  • Util : diffutils , dos2unix
  • Libs: libcurl-devel
  • Net: curl

Some of these are probably redundant but it works. Then do thse commands:

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
dos2unix configure
./configure
make
make install
cd ..
export PKG_CONFIG_PATH=c:\\cygwin64\\usr\\local\\lib\\pkgconfig
git clone https://github.com/selsta/hlsdl.git hlsdl
cd hlsdl
make
make install

Set "c:\\cygwin64" to whatever your cygwin path is. This should work on a Japanese locale computer, but I haven't ever done that.

SalamanderSandwich avatar Dec 25 '17 04:12 SalamanderSandwich

@SalamanderSandwich Do you have a Windows binary that you are able to share? Or, can I send you a sample M3U8 to see if this even works?

besweeet avatar Dec 26 '17 02:12 besweeet

I would be happy too if someone can confirm that hlsdl works on Windows.

selsta avatar Dec 26 '17 23:12 selsta

@besweeet give me an m3u8 for now, I'll try to figure out how to make a windows executable that can be distributed or at least a .bat that will do all the work for you but that will take more time.

SalamanderSandwich avatar Dec 31 '17 06:12 SalamanderSandwich

@SalamanderSandwich What's the best way to private message you?

besweeet avatar Dec 31 '17 16:12 besweeet

@besweeet email: [email protected]

SalamanderSandwich avatar Dec 31 '17 17:12 SalamanderSandwich

@SalamanderSandwich Any updates on executables?

ninep9up avatar Jan 10 '18 22:01 ninep9up

@SalamanderSandwich Did you had time to work on Windows binaries? Thanks!

astral2k5 avatar Feb 21 '18 13:02 astral2k5

Any chance anyone could provide those?

hlsdl-g15e64f8(ffmpeg-N-91127-g411f714)-win32.7z

Reino17 avatar May 20 '18 23:05 Reino17

Warning: HLS stream is DRM protected. Exiting

nickomaru avatar Oct 26 '18 09:10 nickomaru

If you are interested with Windows version here you can find prebuilded binary on fork: https://github.com/samsamsam-iptvplayer/hlsdl/releases/tag/hlsdlv0.22

There is no dependency to ffmpeg because SAMPLE-128 mode is now handled using own TS muxer/demuxer. Also AES CBC is now handled using OpenSSL which decrease CPU overload.

There is also solution for MS Visual Studio 2017 (https://github.com/samsamsam-iptvplayer/hlsdl/blob/master/msvc/hlsdl.sln) and description how to build dependencies (openssl, libcurl, pthreads) https://github.com/samsamsam-iptvplayer/hlsdl/blob/master/msvc/BUID_WINDOWS.txt

This version is also able to download and merge HLS VOD were audio and video are in separate playlists for example: https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8 or https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8

I hope it will be useful for someone.

Regards, SSS

e2iplayer avatar Nov 01 '18 21:11 e2iplayer

@samsamsam-iptvplayer I’ve linked to your fork, as this was mostly a project to learn C for me and I don’t have the time to keep it up to date.

selsta avatar Nov 01 '18 21:11 selsta

OK. Thanks again for the great project.

e2iplayer avatar Nov 01 '18 21:11 e2iplayer

hi!

Thanks!

failed http_code[404]

Error: Getting key-file [ https://nbanlds245vod.akamaized.net/nlds_vod/nba/vod/2018/10/22/drm/nlncp/21800045/3efa4860-5d26-3de3-eb85-0024d05c25c8/v1/stream/2_21 00045_mem_uta_2018_b_whole_1_6000_ipad.mp4.m3u8/../skd://584F18B125FFC2735ED1806F79D15CFB] failed http_code[404]. {"t_d":7136,"d_d":440,"d_s":329743916} Downloading part 44

пт, 2 нояб. 2018 г. в 0:22, samsamsam-iptvplayer [email protected]:

If you are interested with Windows version here you can find prebuilded binary on fork: https://github.com/samsamsam-iptvplayer/hlsdl/releases/tag/hlsdlv0.22

There is no dependency to ffmpeg because SAMPLE-128 mode is now handled using own TS muxer/demuxer. Also AES CBC is now handled using OpenSSL which decrease CPU overload.

There is also solution for MS Visual Studio 2017 ( https://github.com/samsamsam-iptvplayer/hlsdl/blob/master/msvc/hlsdl.sln) and description how to build dependencies (openssl, libcurl, pthreads) https://github.com/samsamsam-iptvplayer/hlsdl/blob/master/msvc/BUID_WINDOWS.txt

This version is also able to download and merge HLS VOD were audio and video are in separate playlists for example: https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8 or

https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8

I hope it will be useful for someone.

Regards, SSS

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/selsta/hlsdl/issues/31#issuecomment-435191950, or mute the thread https://github.com/notifications/unsubscribe-auth/ATETKHL1-b6mkOJSU6FGTNcDWW4Yp1utks5uq2YbgaJpZM4Q5N0A .

nickomaru avatar Nov 02 '18 07:11 nickomaru

@nickomaru If your HLS stream is protected with DRM then you will not be able to download it. and your stream is protected with DRM.

e2iplayer avatar Nov 02 '18 08:11 e2iplayer

but then what's the point? they are already tons of script to download hls streams I thought this was meant to decrypt drm'ed streams.

campones avatar Nov 06 '18 00:11 campones

@campones

Please let point me these tons of script which are able to decrypt HLS stream using SAMPLE AES.

Maybe you don't know but not all SAMPLE AES encrypted streams use DRM. DRM is only one of the method providing AES keys.

Some streams providers use uri to key file, which is authenticated for example with HTTP cookie.

If you will be able to get AES keys then hlsdl will be able to decrypt stream for you. Do you have any more questions?

e2iplayer avatar Nov 06 '18 11:11 e2iplayer

Please, could someone tell me where I can find regularly updated binaries/windows versions (like source files are updated), of this perfect program? Because I can not make such versions using this description "https://github.com/samsamsam-iptvplayer/hlsdl/blob/master/msvc/BUID_WINDOWS.txt'. I just do not know how to do all this!!! I am sure I can not do this!!!

Please, HELP me!!!!!

kokolino2 avatar Sep 19 '19 08:09 kokolino2

Any chance anyone could provide those?

hlsdl-g15e64f8(ffmpeg-N-91127-g411f714)-win32.7z

Is this already merged ffmpeg? why it's big size?

zackmark29 avatar Apr 17 '20 15:04 zackmark29

Not as far as I know. Because I linked a full blown ffmpeg binary to it back then.

To create a smaller hlsdl binary maybe selsta could show us the minimum amount of ffmpeg configure-options needed to build a ffmpeg binary that would work with hlsdl.
...or is ffmpeg not necessary anymore? I do still see libavformat libavutil libavcodec in the makefile.

Reino17 avatar Apr 23 '20 21:04 Reino17

@Reino17 Only libcurl and libcrypto libraries is required. There is also a Visual Studio project now which might help. I have to update the makefile.

selsta avatar Apr 23 '20 21:04 selsta

@Reino17 Only libcurl and libcrypto libraries is required. There is also a Visual Studio project now which might help. I have to update the makefile.

Hi Selsa. Could you share the Visual Studio project file?

Are you still planning to update to new version?

zackmark29 avatar Apr 23 '20 21:04 zackmark29

@Reino17 Only libcurl and libcrypto libraries is required. There is also a Visual Studio project now which might help. I have to update the makefile.

Is it possible that we can automatically download from url without getting the m3u8 file?

zackmark29 avatar Apr 23 '20 21:04 zackmark29

Are you still planning to update to new version?

Update what? Clone the project and look into the msvc folder. I’m not a Windows users so can’t help.

Is it possible that we can automatically download from url without getting the m3u8 file?

m3u8 is required. youtube-dl might be interesting for your use case.

selsta avatar Apr 23 '20 21:04 selsta

Are you still planning to update to new version?

Update what? Clone the project and look into the msvc folder. I’m not a Windows users so can’t help.

Is it possible that we can automatically download from url without getting the m3u8 file?

m3u8 is required. youtube-dl might be interesting for your use case.

I much like to use your tool because I can download from the site that can't youtube-dl do I'm planning to make a gui version in vb.net but I'm still gathering some information

zackmark29 avatar Apr 23 '20 22:04 zackmark29

If youtube-dl doesn't support a website you'd like to download a video from, then you could request it, use another tool that does, or do it manually.

https://github.com/selsta/hlsdl/issues/31#issuecomment-390519537:

hlsdl-g15e64f8(ffmpeg-N-91127-g411f714)-win32.7z

I've had another look and I've created a new binary: [edit]
hlsdl-0.26-2bc52ab-win32-static-xpmod-sse.7z
Compiled with Curl 7.69.1 using OpenSSL 1.1.1g. [/edit]

I haven't encountered non-DRM SAMPLE_AES HLS-videostreams yet, so I can't test it.

@selsta Besides make "CC=/cygdrive/[...]/bin/i686-w64-mingw32-gcc PREFIX=/cygdrive/m/[...]/i686-w64-mingw32" (as mentioned here) I've also had to apply the following patch to add support for my environment, Cygwin:

diff --git a/makefile b/makefile
index 197c249..4bb00b2 100644
--- a/makefile
+++ b/makefile
@@ -14,20 +14,22 @@ ifeq ("$(OSNAME)", "darwin")
 	LDFLAGS+=-L$(OPENSSL_MACOS)/lib
 else ifeq ("$(OSNAME)", "linux")
 	CFLAGS+=-D_GNU_SOURCE=1 -std=gnu99
-else ifneq ($(findstring "$(OSNAME)","mingw32" "mingw64"),)
+else ifneq ($(findstring "$(OSNAME)","mingw32" "mingw64" "cygwin"),)
 	CFLAGS+=-D_GNU_SOURCE=1 -std=gnu99 -DCURL_STATICLIB
 	S_SRC+=msvc/win/memmem.c
 else
 endif
 S_OBJS=	$(S_SRC:.c=.o)
 
-PKGCONFIG= pkg-config libcurl libavformat libavutil libavcodec
+PKGCONFIG= pkg-config libcurl
 CFLAGS+=-Wall -Wstrict-prototypes -Wmissing-prototypes
 CFLAGS+=-Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual
 CFLAGS+=-Wsign-compare -Iincludes
 CFLAGS+=-DPREFIX='"$(PREFIX)"'
 
-ifneq ($(findstring "$(OSNAME)","mingw32" "mingw64"),)
+ifeq ("$(OSNAME)", "cygwin")
+	LDFLAGS+=-lpthread $(shell $(PKGCONFIG) --static --libs)
+else ifneq ($(findstring "$(OSNAME)","mingw32" "mingw64"),)
 	LDFLAGS+=-Wl,-Bstatic -lpthread -lcurl -lnghttp2 -lssh2 -lbrotlidec-static -lbrotlicommon-static -lssl -lcrypto -lcrypt32 -lwsock32 -lws2_32 -lwldap32 -lz
 else
 	LDFLAGS+=-lpthread -lcurl -lcrypto -lssl

I've compiled curl from source without ssh2, nghttp2, or brotli and so LDFLAGS+=-lpthread $(shell $(PKGCONFIG) --static --libs) works fine for me. These don't seem needed anyway.
(Somehow I can't seem to find the original line LDFLAGS=$(shell $(PKGCONFIG) --libs) (as mentioned here) anywhere in the entire (history of the) repo. As if that line never existed. Strange.)

Reino17 avatar Apr 24 '20 17:04 Reino17

@Reino17 Can you PR your changes? I tried to add Windows CI support here but it did not seem to work: https://github.com/selsta/hlsdl/runs/616171505

selsta avatar Apr 24 '20 17:04 selsta