记一次m3u8下载ts解密后,ts文件无法播放

这个问题搞了我两天,一直以为是解密的问题,虽然我也不会解密m3u8直接是下载开源项目拿来用的,

拉取ts文件后放到服务器上,发现无法使用,显示“Playback cannot continue. No available working or supported playlists.”

然后我单独吧ts下载到本地,发现播放器可以播放,但是放到服务器上,video-js始终解析不了。

查阅了诸多资料,着一篇文章给了我灵感(非常感谢?)

https://www.codercto.com/a/89645.html

看到 “4.2、加密 TS 的陷阱“ 我可能大概遇到和他类似的问题了,

然后我就用”WinHex“工具对比了同一个ts文件(一个可以播放,一个不能播放)

发现不能播放的头部缺少了一块

记一次m3u8下载ts解密后,ts文件无法播放插图

我发现把这个神秘的代码加进去,ts就可以放了,虽然我不知道这个神秘的代码什么用,但是解决问题了。头痛

package main

import (
	"encoding/hex"
	"fmt"
	"io/ioutil"
	"os"
)

func main() {

	f, err := os.OpenFile("./消失的情人节/0002no.ts", os.O_RDONLY, 0600)
	defer f.Close()
	if err != nil {
		fmt.Println(err.Error())
	} else {
		contentByte, err := ioutil.ReadAll(f)
		if err != nil {
			fmt.Println(err.Error())
		}

		ufo := "474000100000B00D0001C100000001EFFF3690E23DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + hex.EncodeToString(contentByte)

		test, _ := hex.DecodeString(ufo)
		ioutil.WriteFile("./消失的情人节/oktest.ts", test, 0666) //写入文件(字节数组)

	}

作者: 道非

发表回复

返回顶部