parent
4ee319a41b
commit
1f6f8b89d4
|
|
@ -1,7 +1,7 @@
|
||||||
## m3u8d 一款m3u8下载工具
|
## m3u8d 一款m3u8下载工具
|
||||||
* 提供windows图形界面(Qt), mac、linux命令行, linux支持arm和386
|
* 提供windows图形界面(Qt), mac、linux命令行, linux支持arm和386
|
||||||
* 使用gomedia转换、合并ts格式为mp4
|
* 使用gomedia转换、合并ts格式为mp4
|
||||||
* windows自带GUI界面的版本下载: [m3u8d_qt_v1.4_windows_amd64.exe](https://github.com/orestonce/m3u8d/releases/download/v1.4/m3u8d_qt_v1.4_windows_amd64.exe):
|
* windows自带GUI界面的版本下载: [m3u8d_qt_v1.4.2_windows_amd64.exe](https://github.com/orestonce/m3u8d/releases/download/v1.4.2/m3u8d_qt_v1.4.2_windows_amd64.exe):
|
||||||

|

|
||||||
* 全部版本下载, 包括windows图形界面/linux命令行/mac命令行: https://github.com/orestonce/m3u8d/releases
|
* 全部版本下载, 包括windows图形界面/linux命令行/mac命令行: https://github.com/orestonce/m3u8d/releases
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
* [x] 充分测试后,使用 https://github.com/yapingcat/gomedia 代替ffmpeg进行格式转换
|
* [x] 充分测试后,使用 https://github.com/yapingcat/gomedia 代替ffmpeg进行格式转换
|
||||||
* [x] 支持嵌套m3u8的url
|
* [x] 支持嵌套m3u8的url
|
||||||
* [x] 支持设置代理
|
* [x] 支持设置代理
|
||||||
* [ ] 增加openwrt路由器的mipsle二进制
|
* [x] 增加openwrt路由器的mipsle二进制
|
||||||
* [ ] 支持从curl命令解析出需要的header、auth-basic、cookie等信息,正如 https://github.com/cxjava/m3u8-downloader 一样
|
* [ ] 支持从curl命令解析出需要的header、auth-basic、cookie等信息,正如 https://github.com/cxjava/m3u8-downloader 一样
|
||||||
## 二次开发操作手册:
|
## 二次开发操作手册:
|
||||||
* 如果只开发命令行版本, 则只需要修改*.go文件, 然后编译 cmd/main.go 即可
|
* 如果只开发命令行版本, 则只需要修改*.go文件, 然后编译 cmd/main.go 即可
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,10 @@ import (
|
||||||
var rootCmd = cobra.Command{
|
var rootCmd = cobra.Command{
|
||||||
Use: "m3u8下载工具",
|
Use: "m3u8下载工具",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
if gRunReq.M3u8Url == "" {
|
||||||
|
cmd.Help()
|
||||||
|
return
|
||||||
|
}
|
||||||
m3u8d.SetShowProgressBar()
|
m3u8d.SetShowProgressBar()
|
||||||
resp := m3u8d.RunDownload(gRunReq)
|
resp := m3u8d.RunDownload(gRunReq)
|
||||||
fmt.Println() // 有进度条,所以需要换行
|
fmt.Println() // 有进度条,所以需要换行
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import (
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
BuildCliBinary() // 编译二进制
|
BuildCliBinary() // 编译二进制
|
||||||
//CreateLibForQtUi() // 创建Qt需要使用的.a库文件
|
CreateLibForQtUi() // 创建Qt需要使用的.a库文件
|
||||||
}
|
}
|
||||||
|
|
||||||
func BuildCliBinary() {
|
func BuildCliBinary() {
|
||||||
|
|
@ -43,7 +43,7 @@ func BuildCliBinary() {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, cfg := range list {
|
for _, cfg := range list {
|
||||||
name := "m3u8d_cli_v1.4.1_" + cfg.GOOS + "_" + cfg.GOARCH + cfg.Ext
|
name := "m3u8d_cli_v1.4.2_" + cfg.GOOS + "_" + cfg.GOARCH + cfg.Ext
|
||||||
cmd := exec.Command("go", "build", "-ldflags", "-s -w", "-o", filepath.Join(wd, "bin", name))
|
cmd := exec.Command("go", "build", "-ldflags", "-s -w", "-o", filepath.Join(wd, "bin", name))
|
||||||
cmd.Dir = filepath.Join(wd, "cmd")
|
cmd.Dir = filepath.Join(wd, "cmd")
|
||||||
cmd.Env = append(os.Environ(), "GOOS="+cfg.GOOS)
|
cmd.Env = append(os.Environ(), "GOOS="+cfg.GOOS)
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -7,7 +7,7 @@ require (
|
||||||
github.com/orestonce/go2cpp v0.0.0-20220605110533-c77a8dd7fdfd
|
github.com/orestonce/go2cpp v0.0.0-20220605110533-c77a8dd7fdfd
|
||||||
github.com/orestonce/gopool v0.0.0-20220508090328-d7d56d45b171
|
github.com/orestonce/gopool v0.0.0-20220508090328-d7d56d45b171
|
||||||
github.com/spf13/cobra v1.4.0
|
github.com/spf13/cobra v1.4.0
|
||||||
github.com/yapingcat/gomedia v0.0.0-20220621113316-0cd64b0770ac
|
github.com/yapingcat/gomedia v0.0.0-20220621130152-95fa86fac794
|
||||||
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9
|
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
4
go.sum
4
go.sum
|
|
@ -12,8 +12,8 @@ github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q=
|
||||||
github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g=
|
github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g=
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/yapingcat/gomedia v0.0.0-20220621113316-0cd64b0770ac h1:BIZyaWddLxEAJuegSdb+SUlestsy0gUP5AvdaP8ilzc=
|
github.com/yapingcat/gomedia v0.0.0-20220621130152-95fa86fac794 h1:6LKuTqBiq0t7gdwYtWZf2Eq8eOQWcpaSxufybzqj3vo=
|
||||||
github.com/yapingcat/gomedia v0.0.0-20220621113316-0cd64b0770ac/go.mod h1:WSZ59bidJOO40JSJmLqlkBJrjZCtjbKKkygEMfzY/kc=
|
github.com/yapingcat/gomedia v0.0.0-20220621130152-95fa86fac794/go.mod h1:WSZ59bidJOO40JSJmLqlkBJrjZCtjbKKkygEMfzY/kc=
|
||||||
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 h1:Yqz/iviulwKwAREEeUd3nbBFn0XuyJqkoft2IlrvOhc=
|
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 h1:Yqz/iviulwKwAREEeUd3nbBFn0XuyJqkoft2IlrvOhc=
|
||||||
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
|
|
||||||
11
merge.go
11
merge.go
|
|
@ -24,7 +24,10 @@ func MergeTsFileListToSingleMp4(req MergeTsFileListToSingleMp4_Req) (err error)
|
||||||
}
|
}
|
||||||
defer mp4file.Close()
|
defer mp4file.Close()
|
||||||
|
|
||||||
muxer := mp4.CreateMp4Muxer(mp4file)
|
muxer, err := mp4.CreateMp4Muxer(mp4file)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
vtid := muxer.AddVideoTrack(mp4.MP4_CODEC_H264)
|
vtid := muxer.AddVideoTrack(mp4.MP4_CODEC_H264)
|
||||||
atid := muxer.AddAudioTrack(mp4.MP4_CODEC_AAC, 0, 16, 44100)
|
atid := muxer.AddAudioTrack(mp4.MP4_CODEC_AAC, 0, 16, 44100)
|
||||||
|
|
||||||
|
|
@ -68,6 +71,10 @@ func MergeTsFileListToSingleMp4(req MergeTsFileListToSingleMp4_Req) (err error)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
DrawProgressBar(1, 1)
|
err = mp4file.Sync()
|
||||||
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
}
|
||||||
|
DrawProgressBar(1, 1)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue