def METHOD_NAME(self, video_id, video_info):
    playjson = self._parse_json(video_info['ksPlayJson'], video_id)
    formats, subtitles = [], {}
    for video in traverse_obj(playjson, ('adaptationSet', 0, 'representation')):
        fmts, subs = self._extract_m3u8_formats_and_subtitles(video['url'], video_id, 'mp4', fatal=False)
        formats.extend(fmts)
        self._merge_subtitles(subs, target=subtitles)
        for f in fmts:
            f.update({
                'fps': float_or_none(video.get('frameRate')),
                'width': int_or_none(video.get('width')),
                'height': int_or_none(video.get('height')),
                'tbr': float_or_none(video.get('avgBitrate')),
                **parse_codecs(video.get('codecs', ''))
            })
    return {
        'id': video_id,
        'formats': formats,
        'subtitles': subtitles,
        'duration': float_or_none(video_info.get('durationMillis'), 1000),
        'timestamp': int_or_none(video_info.get('uploadTime'), 1000),
        'http_headers': {'Referer': 'https://www.acfun.cn/'},
    }