2020.7.21 AbemaTV 「ANIMA」発売前夜 ReoNa×SAO 生ライブSP特番 in ABEMA

直接抓源很难办到,因为PC的WEB端用了widevine加密,不过感谢streamlink提供了现成的轮子,一步解决了抓源的问题。streamlink安装方法:

1
pip install streamlink
1
streamlink https://abema.tv/now-on-air/abema-anime best -o live.ts

输出格式直接选择TS流的话显然效率会更高,虽然对于hls传输来说mp4也不存在什么问题,但是还是要多一步处理,就把这一步留到后面好了。

此外,streamlink会直接读到环境变量里的http代理参数,所以在使用代理访问的环境下还需要事先配置好参数。

喜闻乐见一小时后TS流出炉,但由于众所周知的原因,AbemaTV的广告和正篇并不在同一个playlist里,时间戳自然而然的炸了。于是接下来和时间戳开始斗智斗勇。

  • PLAN A:塞到PR里修

    毫无疑问这个方案被枪毙了,重编码程度过大。

  • PLAN B:转封装

    根据以往经验,只要过ffmpeg重封装一次就能解决80%的时间戳问题。于是直接-c copy尝试转出。

    看结果很成功,但是输出文件大小从1.3G变成了不到800MB,很显然一部分数据被丢掉了。播放之后结果印证了预想,第一次广告之后的视频流全都不见了。

  • PLAN C:ffmpeg重建时间戳

    在过去B站直播时间戳满天飞的时候,这个办法的确有效解决了问题。不过一番实操过后,广告后的视频流永远无法被提取出来,遂作罢。

  • FINAL PLAN:求救TMPGEnc

    不幸地,我还是走到了最终方案。

    以往修TV档的时候用到的大杀器解决这种问题简直是轻而易举。但另一个问题不幸发生了:几乎整个视频都要重新经历一次重编码。虽然相比PLAN A又或是直接塞进x264来说,TMPGEnc会进行智能分析,只对有需要的片段重编码,但实操过后还是几乎把整个视频都重新编码了一遍。

    我没能发现这个问题为什么发生了,不过用最低代价解决了时间戳乱飞,也姑且算达成了目的。

理论上PLAN B和PLAN C应该能有效的解决问题,但又可能是因为我参数设置不当没能实现预期效果,这个问题只能先暂时搁置等待好哥哥来帮助解答了。不过在日后的工作流中,我依赖TMPGEnc的场合怕是只会更多了罢(悲)。