I'm developing video downloader (only for free videos) for korean anime streaming site https://laftel.net/
I guess laftel.net uses mpeg-dash for their streaming. I found "init.mp4" file and "segments-number.m4s" files in chrome developer tools.
Code below downloads seg-1.m4s (name of the first segment) to seg-239.m4s (name of the last segment) file and init.mp4 file and it works.
(Skip the beginning becasue there is a code that collects "Request-URL" for each .m4s files in network stream)
#variable "found" is part of the "Request-URL"
def curl_m4s():
for i in range(1,240): #number of the .m4s segment file is constant at 239
vid_url = f"https://mediacloud.laftel.net/{found}/video/avc1/2/seg-{i}.m4s"
aud_url = f"https://mediacloud.laftel.net/{found}/audio/mp4a/eng/seg-{i}.m4s"
if i < 10: #for single digit num
os.system(f"curl {vid_url} > {location}/vids/vid00{i}.m4s")
os.system(f"curl {aud_url} > {location}/auds/aud00{i}.m4s")
sleep(random.randint(1,3))
elif i < 100: #for double digit num
os.system(f"curl {vid_url} > {location}/vids/vid0{i}.m4s")
os.system(f"curl {aud_url} > {location}/auds/aud0{i}.m4s")
sleep(random.randint(1,3))
else: #for three digit num
os.system(f"curl {vid_url} > {location}/vids/vid{i}.m4s")
os.system(f"curl {aud_url} > {location}/auds/aud{i}.m4s")
sleep(random.randint(1,3))
location = os.getcwd()
os.system(f"curl https://mediacloud.laftel.net/{found}/video/avc1/2/init.mp4 > {location}/vids/vid_init.mp4")
os.system(f"curl https://mediacloud.laftel.net/{found}/audio/mp4a/eng/init.mp4 > {location}/auds/aud_init.mp4")
os.system(f"curl https://mediacloud.laftel.net/{found}/stream.mpd > {location}/stream.mpd")
curl_m4s()
#use curl in cmd and downloads each of the .m4s (001 ~ 239)
So in the vids folder i have "init.mp4" for video and "seg-1.m4s ~ seg-239.m4s" for video and in the auds folder i have "init.mp4" for audio and "seg-1.m4s ~ seg-239.m4s" for audio
Problem is, I cannot merge init file and segment files. I have no idea about combining .mp4 and .m4s together. There are a lot of example codes for merging init.m4s + seg-.m4s but I couldn't find init.mp4 + seg-.mp4 codes.
I tried to merge segments together first, like this and it works.
location = os.getcwd()
os.system(f"cd {location}")
os.system("copy /b vid*.m4s vid_full.m4s")
and now, i want to merge init.mp4 becasue it has very much information about whole video files. But how??
I tried these and none of them worked (looks like Successfull merge but it do not contain any watchable video)
# vid_full is merged segment files (seg-1.m4s + ... + seg-239.m4s)
1.
os.system("copy /b init.mp4 + vid*.m4s video_full.m4s")
os.system("ffmpeg -i video_full.m4s -c:a copy video_full.mp4")
2.
os.system("type vid_init.mp4 index.txt > Filename.mp4")
3.
import os
os.system("ffmpeg -i vid_full.m4s -c:a copy vid_full.mp4")
os.system("copy /b vid_init.mp4 + vid_full.mp4 VIDEO.mp4")
All problem occurs the format of the init file is .mp4. If it was .m4s I guess I could merge it.
and I guess i must merge init file and segments files together both in .m4s format. Is it right? Via ffmpeg, i couldn't encode init.mp4 to init.m4s so this is the problme also.
So, Please help me merge init.mp4 and segments.m4s
All methods are wellcome at least it is based on python.
- I tried to merge init.mp4 + merged_segment.m4s but it failed
- I tried to convert init.mp4 to init.m4s via ffmpeg but it failed
- I tried to convert all the segments to .mp4 files and merge into init.mp4 but it failed
I want to merge init file and segment files and make playable video. Pleas Teach me how to do this.
Links below are what I used for my test :
[Laftel.net URL] https://laftel.net/player/40269/46123
[Request URL for init.mp4 (video)] https://mediacloud.laftel.net/2021/04/46773/v15/video/dash/video/avc1/2/init.mp4
[Request URL for init.mp4 (audio)] https://mediacloud.laftel.net/2021/04/46773/v15/video/dash/audio/mp4a/eng/init.mp4
[Request URL for seg-1.m4s (video)] https://mediacloud.laftel.net/2021/04/46773/v15/video/dash/video/avc1/2/seg-1.m4s
[Request URL for seg-1.m4s (audio)] https://mediacloud.laftel.net/2021/04/46773/v15/video/dash/audio/mp4a/eng/seg-1.m4s