Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请求添加西瓜视频下载支持 #481

Open
5 tasks done
toorich opened this issue Jan 25, 2020 · 31 comments
Open
5 tasks done

请求添加西瓜视频下载支持 #481

toorich opened this issue Jan 25, 2020 · 31 comments

Comments

@toorich
Copy link
Contributor

toorich commented Jan 25, 2020

在提交前,请确保您已经检查了以下内容!

请将错误输出粘贴在下面:

ykdl -i https://www.ixigua.com/i6785489916194193928/ --debug
DEBUG:common:video_host> www.ixigua.com
DEBUG:common:short_name> ixigua
DEBUG:common:> Try HTTP Redirection!
DEBUG:common:> NO HTTP Redirection
DEBUG:common:> Go Generalembed
DEBUG:html:get_content> URL: https://www.ixigua.com/i6785489916194193928/
DEBUG:html:get_content> Charset: utf-8
ERROR:YKDL:Playlist is not supported for GeneralEmbed ( 通用嵌入视频)with url: https://www.ixigua.com/i6785489916194193928/

如果您有其他附言,例如问题只在某个视频发生,或者是一般性讨论或者提出新功能,请在下面添加:

如题,you-get原版是支持的,但是只能支持到480p,如果可能最好连1080p一起支持上

@airdge
Copy link
Collaborator

airdge commented Jan 27, 2020

现在的头条接口好像不能获取1080P.mp4,只能获取到720P
1080P是dash格式,加密过的

    try:
        isDash = 0  # 1:dash , 0:mp4
        getToken = common.curl(
            "https://www.ixigua.com/api/videov2/video_token?_signature=&vid=%s&isDash=%s&isLVideo=0"
            % (vid, isDash)
        )
        getJson = common.loads(getToken)
        authToken = getJson["data"]["AuthToken"]
        pToken = getJson["data"]["BusinessToken"]

        headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:72.0) Gecko/20100101 Firefox/72.0",
            "Accept": "application/json, text/plain, */*",
            "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
            "Authorization": authToken,
            "Origin": "https://www.ixigua.com",
            "Connection": "keep-alive",
            "Referer": "https://www.ixigua.com/",
        }

        params = (
            ("action", "GetPlayInfo"),
            ("video_id", vid),
            ("nobase64", "1"),
            ("ptoken", pToken),
            ("vfrom", "xgplayer"),
        )

        url = "https://vas.snssdk.com/video/openapi/v1/"
        html = common.curl(url, {"method": "get", "header": headers, "params": params})
        ....

    except:
        url = "http://i.snssdk.com/video/urls/1/toutiao/mp4/%s?nobase64=1" % vid
        html = common.curl(url)

图片

@xhlove
Copy link

xhlove commented Jan 29, 2020

@airdge
Copy link
Collaborator

airdge commented Jan 29, 2020

可以用这个接口(使用iPhone的UA访问):https://api-hl.amemv.com/aweme/v1/play/?video_id=v02004140000boleciimac2vul5c8dr0&ratio=1080p&watermark=0&h265=0

供参考

额 这个接口还能用 ratio参数可用

但单独使用这个接口是有问题的,还得配合其他接口来获取正确的分辨率

https://aweme.snssdk.com/aweme/v1/play/?video_id=v020430e0000boa819feqk8cg329n6i0&line=0&ratio=720p&watermark=0
https://aweme.snssdk.com/aweme/v1/play/?video_id=v020430e0000boa819feqk8cg329n6i0&line=0&ratio=1080p&watermark=0

@xhlove
Copy link

xhlove commented Jan 29, 2020

在名字中有xgplayer_encrypt的js中,于f = window.Module.UTF8ToString(p)处可以获取到解密需要的key(f值)。
例如该视频的1080对应的视频流可以通过下面的命令解密,其中

  • 5e2ae64a565305ff54ac43760002004b是license接口返回的kid(也是视频文件本身的id,可以通过bento4的mp4dump工具查看到)
  • 824f9b328d264c10b148488fd5ccd40a是f的值
mp4decrypt.exe --key 5e2ae64a565305ff54ac43760002004b:824f9b328d264c10b148488fd5ccd40a media-video-avc1.mp4 decrypt.mp4

mp4decrypt.exe文件可于此下载。

@mengmo
Copy link
Collaborator

mengmo commented Jan 29, 2020

mp4decrypt 是 Bento4 中的一个工具,完整的 Binary Releases 下载地址
https://www.bento4.com/downloads/

Bento4 的 git repository
https://github.com/axiomatic-systems/Bento4

@xhlove
Copy link

xhlove commented Jan 29, 2020

mp4decrypt 是 Bento4 中的一个工具,完整的 Binary Releases 下载地址
https://www.bento4.com/downloads/

Bento4 的 git repository
https://github.com/axiomatic-systems/Bento4

这你就naive了,在这里官方的并不能成功解密。

@mengmo
Copy link
Collaborator

mengmo commented Jan 29, 2020

mp4decrypt 是 Bento4 中的一个工具,完整的 Binary Releases 下载地址
https://www.bento4.com/downloads/
Bento4 的 git repository
https://github.com/axiomatic-systems/Bento4

这你就naive了,在这里官方的并不能成功解密。

这就是用的就是 Bento4 官方 Binary Releases 中的 mp4decrypt
media-video-avc1_decrypt

@mengmo
Copy link
Collaborator

mengmo commented Jan 29, 2020

另外,KID 也写在了 manifest 的</ContentProtection>

<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT5.00S" type="static" mediaPresentationDuration="PT5M10.800S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
        <Period>
                <AdaptationSet segmentAlignment="true" maxWidth="854" maxHeight="480" mimeType="video/mp4" startWithSAP="1">
                        <Representation id="1" codecs="avc1.640032" width="1920" height="1080" frameRate="30" bandwidth="3207270" scanType="progressive">
                                <BaseURL>tos-cn-vd-0026/1e1c998b037141d594b0e11d887bcd85/media-video-avc1</BaseURL>
                                <SegmentBase indexRange="1347-2134">
                                        <Initialization range="0-1346"></Initialization>
                                </SegmentBase>
                                <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="5e2ae64a-5653-05ff-54ac-43760002004b"></ContentProtection>
                        </Representation>
                        <Representation id="2" codecs="avc1.64001F" width="1280" height="720" frameRate="30" bandwidth="1793630" scanType="progressive">
                                <BaseURL>tos-cn-vd-0026/aa4cf1585af24c73ba0145c3c5696fe7/media-video-avc1</BaseURL>
                                <SegmentBase indexRange="1345-2132">
                                        <Initialization range="0-1344"></Initialization>
                                </SegmentBase>
                                <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="5e2ae64a-5653-05ff-54ac-43760002004b"></ContentProtection>
                        </Representation>
                        <Representation id="3" codecs="avc1.64001E" width="640" height="360" frameRate="30" bandwidth="489857" scanType="progressive">
                                <BaseURL>tos-cn-vd-0026/f31e99f87ce0416e92b21bdbd75aff5e/media-video-avc1</BaseURL>
                                <SegmentBase indexRange="1347-2134">
                                        <Initialization range="0-1346"></Initialization>
                                </SegmentBase>
                                <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="5e2ae64a-5653-05ff-54ac-43760002004b"></ContentProtection>
                        </Representation>
                        <Representation id="4" codecs="avc1.64001F" width="854" height="480" frameRate="30" bandwidth="781957" scanType="progressive">
                                <BaseURL>tos-cn-vd-0026/18f3b6f56a5946f5b78ec3eaac9293f9/media-video-avc1</BaseURL>
                                <SegmentBase indexRange="1347-2134">
                                        <Initialization range="0-1346"></Initialization>
                                </SegmentBase>
                                <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="5e2ae64a-5653-05ff-54ac-43760002004b"></ContentProtection>
                        </Representation>
                </AdaptationSet>
                <AdaptationSet segmentAlignment="true" mimeType="audio/mp4" startWithSAP="1">
                        <Representation id="5" codecs="mp4a.40.2" bandwidth="72383">
                                <BaseURL>tos-cn-vd-0026/1e1c998b037141d594b0e11d887bcd85/media-audio-und-mp4a</BaseURL>
                                <SegmentBase indexRange="1187-1974">
                                        <Initialization range="0-1186"></Initialization>
                                </SegmentBase>
                                <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration>
                        </Representation>
                        <Representation id="6" codecs="mp4a.40.2" bandwidth="72383">
                                <BaseURL>tos-cn-vd-0026/aa4cf1585af24c73ba0145c3c5696fe7/media-audio-und-mp4a</BaseURL>
                                <SegmentBase indexRange="1187-1974">
                                        <Initialization range="0-1186"></Initialization>
                                </SegmentBase>
                                <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration>
                        </Representation>
                        <Representation id="7" codecs="mp4a.40.2" bandwidth="72383">
                                <BaseURL>tos-cn-vd-0026/f31e99f87ce0416e92b21bdbd75aff5e/media-audio-und-mp4a</BaseURL>
                                <SegmentBase indexRange="1187-1974">
                                        <Initialization range="0-1186"></Initialization>
                                </SegmentBase>
                                <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration>
                        </Representation>
                        <Representation id="8" codecs="mp4a.40.2" bandwidth="72383">
                                <BaseURL>tos-cn-vd-0026/18f3b6f56a5946f5b78ec3eaac9293f9/media-audio-und-mp4a</BaseURL>
                                <SegmentBase indexRange="1187-1974">
                                        <Initialization range="0-1186"></Initialization>
                                </SegmentBase>
                                <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration>
                        </Representation>
                </AdaptationSet>
        </Period>
</MPD>

@xhlove
Copy link

xhlove commented Jan 30, 2020

mp4decrypt 是 Bento4 中的一个工具,完整的 Binary Releases 下载地址
https://www.bento4.com/downloads/
Bento4 的 git repository
https://github.com/axiomatic-systems/Bento4

这你就naive了,在这里官方的并不能成功解密。

这就是用的就是 Bento4 官方 Binary Releases 中的 mp4decrypt
media-video-avc1_decrypt

这就奇怪了,我用官方的解密出来的文件没有变化。
http://puui.qpic.cn/vshpic/0/UnPPXGE0dluWr0kALx3CzUSiM0vlKE56c0hR_i2Lkjr8HXwp_0/0

@xhlove
Copy link

xhlove commented Jan 30, 2020

用我发的那个版本却是可以的,解密出来也是正常的。
http://puui.qpic.cn/vshpic/0/C2-fa6rTcRic1efztuIZFm2VygDRDUT-puueV_HJLg1nkpVv_0/0

环境是 win10 家庭版1809

@mengmo
Copy link
Collaborator

mengmo commented Jan 30, 2020

经测试确认 Bento4 1.5.1-628 Binary Releases 中的 mp4decrypt 存在这个问题
http://puui.qpic.cn/vshpic/0/UnPPXGE0dluWr0kALx3CzUSiM0vlKE56c0hR_i2Lkjr8HXwp_0/0

sha1sum mp4decrypt.exe
11997148a8411e3ae6a3d8d4d131e7d6283de972 *mp4decrypt.exe

Bento4 最新版 1.5.1-629 Binary Releases 中的 mp4decrypt 不存在此问题

sha1sum mp4decrypt.exe
2b245ab77b54c9741cbd4ba947f8e034c345cbf9 *mp4decrypt.exe

@xhlove
另外,你只发了 Windows 版的 mp4decrypt.exe
没看到 @airdge 用的 Mac 吗?

@airdge
Copy link
Collaborator

airdge commented Jan 30, 2020

能直接解析的 没必要用到解密工具
用上面那个抖音api就行了

@xhlove
Copy link

xhlove commented Jan 30, 2020

一开始测试官网下载的mp4decrypt.exe发现不行,用其他来源(没有去验证是不是和官方的某一个版本一致)的可以,然后就只发了Windows这个版本。因为我也没法保证MAC的就能用,但是能保证我发出来的是可用的,这样做有什么问题吗? @mengmo

@xhlove
Copy link

xhlove commented Jan 30, 2020

能直接解析的 没必要用到解密工具
用上面那个抖音api就行了

虽然是这样说,但是目前国内视频网站也在推进各类drm,这方面的探究是有必要的。比如最近优酷改m3u8链接的type绕过加密的方法就不太灵了。

@mengmo
Copy link
Collaborator

mengmo commented Jan 30, 2020

一开始测试官网下载的mp4decrypt.exe发现不行,用其他来源(没有去验证是不是和官方的某一个版本一致)的可以,然后就只发了Windows这个版本。因为我也没法保证MAC的就能用,但是能保证我发出来的是可用的,这样做有什么问题吗? @mengmo

@xhlove
当然没问题,不过就只能使用 Windows 的人测试了。
而我又发了 Bento4 的官方下载链接就是方便使用其他系统的人测试

@mengmo
Copy link
Collaborator

mengmo commented Jan 30, 2020

能直接解析的 没必要用到解密工具
用上面那个抖音api就行了

虽然是这样说,但是目前国内视频网站也在推进各类drm,这方面的探究是有必要的。比如最近优酷改m3u8链接的type绕过加密的方法就不太灵了。

附议。
多一种方法就多一重保险。
而且这不就是在探讨吗?
@airdge

@toorich
Copy link
Contributor Author

toorich commented Jan 31, 2020

在名字中有xgplayer_encrypt的js中,于f = window.Module.UTF8ToString(p)处可以获取到解密需要的key(f值)。
例如该视频的1080对应的视频流可以通过下面的命令解密,其中

  • 5e2ae64a565305ff54ac43760002004b是license接口返回的kid(也是视频文件本身的id,可以通过bento4的mp4dump工具查看到)
  • 824f9b328d264c10b148488fd5ccd40a是f的值
mp4decrypt.exe --key 5e2ae64a565305ff54ac43760002004b:824f9b328d264c10b148488fd5ccd40a media-video-avc1.mp4 decrypt.mp4

mp4decrypt.exe文件可于此下载。

但如果像是《囧妈》这种只能在app播放的怎么办呢?
截至2020年2月1日4时(UTC+8),《囧妈》已经可以在PC端浏览器观看,但you-get似乎无法解析西瓜视频放映厅的视频

@xhlove
Copy link

xhlove commented Feb 1, 2020

@toorich 基本是一样的,只是稍微有一点区别,研究下mp4decrypt.exe用法就知道了。

@airdge
Copy link
Collaborator

airdge commented Feb 1, 2020

可用,mp4decrypt解密音视频后,用ffmpeg合并

$ ./mp4decrypt --key 5e2ae64a565305ff54ac43760002004b:824f9b328d264c10b148488fd5ccd40a 360en.mp4 360de.mp4
$ ./mp4decrypt --key 5e2ae64a565305ff54ac43760002004b:824f9b328d264c10b148488fd5ccd40a 1080en.mp4 1080de.mp4
$ ./mp4decrypt --key 5e2ae64a565305ff54ac43760002004b:824f9b328d264c10b148488fd5ccd40a aen.m4a ade.m4a
$  ffmpeg -i 1080de.mp4 -i ade.m4a -c copy 1080full.mp4

图片

@airdge
Copy link
Collaborator

airdge commented Feb 1, 2020

在名字中有xgplayer_encrypt的js中,于f = window.Module.UTF8ToString(p)处可以获取到解密需要的key(f值)。
例如该视频的1080对应的视频流可以通过下面的命令解密,其中

  • 5e2ae64a565305ff54ac43760002004b是license接口返回的kid(也是视频文件本身的id,可以通过bento4的mp4dump工具查看到)
  • 824f9b328d264c10b148488fd5ccd40a是f的值
mp4decrypt.exe --key 5e2ae64a565305ff54ac43760002004b:824f9b328d264c10b148488fd5ccd40a media-video-avc1.mp4 decrypt.mp4

mp4decrypt.exe文件可于此下载。

但如果像是《囧妈》这种只能在app播放的怎么办呢?
截至2020年2月1日4时(UTC+8),《囧妈》已经可以在PC端浏览器观看,但you-get似乎无法解析西瓜视频放映厅的视频


https://www.ixigua.com/i6785164824050401799/

手机访问就行,这个不是大问题

@mengmo
Copy link
Collaborator

mengmo commented Feb 1, 2020

在名字中有xgplayer_encrypt的js中,于f = window.Module.UTF8ToString(p)处可以获取到解密需要的key(f值)。
例如该视频的1080对应的视频流可以通过下面的命令解密,其中

  • 5e2ae64a565305ff54ac43760002004b是license接口返回的kid(也是视频文件本身的id,可以通过bento4的mp4dump工具查看到)
  • 824f9b328d264c10b148488fd5ccd40a是f的值
mp4decrypt.exe --key 5e2ae64a565305ff54ac43760002004b:824f9b328d264c10b148488fd5ccd40a media-video-avc1.mp4 decrypt.mp4

mp4decrypt.exe文件可于此下载。

但如果像是《囧妈》这种只能在app播放的怎么办呢?
截至2020年2月1日4时(UTC+8),《囧妈》已经可以在PC端浏览器观看,但you-get似乎无法解析西瓜视频放映厅的视频


https://www.ixigua.com/i6785164824050401799/

手机访问就行,这个不是大问题

https://www.ixigua.com/cinema/album/85dS526nogC/
《囧妈》这个我记得2020年1月30日(UTC+8)就已经能在 PC 浏览器上看了
而且到目前为止,我这儿获取到的播放链接一直就是未加密的

@airdge
Copy link
Collaborator

airdge commented Feb 1, 2020

那个是25号时app分享的链接,只能手机UA访问,并且西瓜视频api解析出来的数据是加密的

       tvid = '6785489916194193928'
       vid = 'v02004140000boleciimac2vul5c8dr0'

        isDash = 0
        try:
            acParams = (
                ("version_code", "8.2.1"),
                ("tma_jssdk_version", "1.29.1.1"),
                ("app_name", "video_article"),
                ("aid", "32"),
                ("ab_feature", "z1"),
                ("live_sdk_version", "1.3.0"),
                ("ac", "WIFI"),
                ("os_version", "12.2"),
                ("user_version", "4.2.1"),
                ("ssmix", "a"),
                ("device_platform", "iphone"),
                ("anti_addiction_model", "0"),
                ("ab_client", "a1,f2,f7,e1"),
                ("device_type", "iPhone SE"),
                ("itemID", tvid),
                ("prefix", "https://is.snssdk.com/video/app/article/full/"),
                ("category", "xg_search_inner"),
                ("commandID", "0"),
                ("aggrType", "1"),
                ("enter_type", "1"),
            )

            acUrl = "https://is-lq.snssdk.com/video/app/article/full/15/2/{0}/{0}/1/0/".format(
                tvid
            )
            getAccess = common.curl(
                acUrl,
                {
                    "method": "get",
                    "params": acParams,
                    "useragent": "Video 4.2.1 rv:4.2.1.4 (iPhone; iOS 12.2; zh_CN) Cronet",
                },
            ) 
            getJson = common.loads(getAccess)
            authToken = getJson["data"]["play_auth_token"]
            pToken = getJson["data"]["play_biz_token"]
        except:
            isDash = 1
            getToken = common.curl(
                "https://www.ixigua.com/api/videov2/video_token?_signature=&vid=%s&isDash=%s&isLVideo=0"
                % (vid, isDash)
            ) 
            getJson = common.loads(getToken)
            authToken = getJson["data"]["AuthToken"]
            pToken = getJson["data"]["BusinessToken"]

第一个api可以直接获取到未加密的1080P.MP4
但对于一些加密限制视频(https://www.ixigua.com/i6785164824050401799/) 无法解析不到ptoken和Authorization

第二个api获取到的是加密1080p.mp4,配合抖音api跳转未加密1080p.mp4

@xhlove
Copy link

xhlove commented Feb 1, 2020

补充 nilaoda/Blog#17

@toorich
Copy link
Contributor Author

toorich commented Feb 2, 2020

现在的头条接口好像不能获取1080P.mp4,只能获取到720P
1080P是dash格式,加密过的

    try:
        isDash = 0  # 1:dash , 0:mp4
        getToken = common.curl(
            "https://www.ixigua.com/api/videov2/video_token?_signature=&vid=%s&isDash=%s&isLVideo=0"
            % (vid, isDash)
        )
        getJson = common.loads(getToken)
        authToken = getJson["data"]["AuthToken"]
        pToken = getJson["data"]["BusinessToken"]

        headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:72.0) Gecko/20100101 Firefox/72.0",
            "Accept": "application/json, text/plain, */*",
            "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
            "Authorization": authToken,
            "Origin": "https://www.ixigua.com",
            "Connection": "keep-alive",
            "Referer": "https://www.ixigua.com/",
        }

        params = (
            ("action", "GetPlayInfo"),
            ("video_id", vid),
            ("nobase64", "1"),
            ("ptoken", pToken),
            ("vfrom", "xgplayer"),
        )

        url = "https://vas.snssdk.com/video/openapi/v1/"
        html = common.curl(url, {"method": "get", "header": headers, "params": params})
        ....

    except:
        url = "http://i.snssdk.com/video/urls/1/toutiao/mp4/%s?nobase64=1" % vid
        html = common.curl(url)

图片

从《囧妈》的缓存内容来看应该是有办法能获取到整段视频的(但是也加密过)

@airdge
Copy link
Collaborator

airdge commented Feb 2, 2020

现在的头条接口好像不能获取1080P.mp4,只能获取到720P
1080P是dash格式,加密过的

    try:
        isDash = 0  # 1:dash , 0:mp4
        getToken = common.curl(
            "https://www.ixigua.com/api/videov2/video_token?_signature=&vid=%s&isDash=%s&isLVideo=0"
            % (vid, isDash)
        )
        getJson = common.loads(getToken)
        authToken = getJson["data"]["AuthToken"]
        pToken = getJson["data"]["BusinessToken"]

        headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:72.0) Gecko/20100101 Firefox/72.0",
            "Accept": "application/json, text/plain, */*",
            "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
            "Authorization": authToken,
            "Origin": "https://www.ixigua.com",
            "Connection": "keep-alive",
            "Referer": "https://www.ixigua.com/",
        }

        params = (
            ("action", "GetPlayInfo"),
            ("video_id", vid),
            ("nobase64", "1"),
            ("ptoken", pToken),
            ("vfrom", "xgplayer"),
        )

        url = "https://vas.snssdk.com/video/openapi/v1/"
        html = common.curl(url, {"method": "get", "header": headers, "params": params})
        ....

    except:
        url = "http://i.snssdk.com/video/urls/1/toutiao/mp4/%s?nobase64=1" % vid
        html = common.curl(url)

图片

从《囧妈》的缓存内容来看应该是有办法能获取到整段视频的(但是也加密过)

部分加密视频好像是无法直接获取到1080p,不清楚有没其他api
配合抖音API可以解析1080P,不过要先确定该片源有没有1080P分辨率
从ptoken来看,信息是加密的

一般:{"exp":1580823937,"ver":"v1","ak":"bab42eac5b9e4a8eb25a91fc371ad533","sub":"pgc_1080p"} 
囧妈:{"exp":1580653162,"ver":"v1","ak":"cfc067bb39feff592af82085b42e6dc3","sub":"ixiguaweb_dash_encrypt_1min"}

从数据上看,api返回获取不到数据
图片

图片

@airdge
Copy link
Collaborator

airdge commented Feb 20, 2020

https://www.ixigua.com/cinema/album/7YryFjfa3PE/

https://aweme.snssdk.com/aweme/v1/play/?video_id=v02043ae0000bjhr6a4qs4su94hpa0e0&line=0&ratio=1080p&watermark=0

一部分影视数据,用抖音api获取不到的跳转链接

@hlyzh
Copy link

hlyzh commented Mar 9, 2020

哪位知道无水印接口怎么搞的,
能搞到的都是 /video/tos/hxsy/tos-hxsy-ve- 接口,
无水印接口 /video/tos/cn/tos-cn-v- 搞不到啊

@toorich
Copy link
Contributor Author

toorich commented Jul 17, 2020

https://www.ixigua.com/cinema/album/7YryFjfa3PE/

https://aweme.snssdk.com/aweme/v1/play/?video_id=v02043ae0000bjhr6a4qs4su94hpa0e0&line=0&ratio=1080p&watermark=0

一部分影视数据,用抖音api获取不到的跳转链接

可能全部影视都不行了(悲)

@toorich
Copy link
Contributor Author

toorich commented Jul 17, 2020

可以用这个接口(使用iPhone的UA访问):https://api-hl.amemv.com/aweme/v1/play/?video_id=v02004140000boleciimac2vul5c8dr0&ratio=1080p&watermark=0&h265=0

供参考

抖音API貌似搞不到2K和4K分辨率的视频?测试视频:https://www.ixigua.com/6785489916194193928/

@dcy0701
Copy link

dcy0701 commented Feb 3, 2021

@hlyzh 你解决了吗

@orestonce
Copy link

这个问题解决了吗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants