时间:2021-05-18
最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是“乱码”,自己平时所见的歌词都是lrc格式的文本,这种酷狗专用的krc格式的显然是经过特别处理过的,平时用酷狗听音乐也没仔细看他的歌词有什么不同,只是与天天静听等不同的是可以逐字高亮显示歌词。
对酷狗的flash播放器进行反编译,发现这段krc解密的ActionScript代码:
public function loaderCompleteHandler(param1:ByteArray) : void{ this.newkeyBytes = [64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105]; var result:* = param1; var krcBytes:* = new ByteArray(); result.position = 4; result.readBytes(krcBytes); var l:* = krcBytes.length; var i:int; while (i < l) { krcBytes[i] = krcBytes[i] ^ this.newkeyBytes[i % this.newkeyBytes.length]; i = (i + 1); } try { krcBytes.uncompress(); } catch (error:SecurityError) { errorfun("uncompressError"); return; } krcBytes.position = 0; this.myLyric.dataStr = krcBytes.readUTFBytes(krcBytes.length); this.successfun(); return; }根据这段代码可以很快转换成php解析代码:
$enKey = array(64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105);$krc_content = substr($krc_content,4);$len = strlen($krc_content);$krc_compress = '';for ($k = 0; $k < $len; $k++){ $krc_compress .= chr(ord($krc_content[$k]) ^ $enKey[$k % 16]);}$krc_text = gzuncompress($krc_compress);上面的$krc_content为krc歌词压缩加密的文本内容,得到了解析后的krc明文文本歌词$krc_text,然后就可以很容易的转换成lrc歌词了,如下:
function krc2lrc($krc_content,$glue = "n"){ $enKey = array(64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105); $krc_content = substr($krc_content,4); $len = strlen($krc_content); $krc_compress = ''; for ($k = 0; $k < $len; $k++){ $krc_compress .= chr(ord($krc_content[$k]) ^ $enKey[$k % 16]); } $krc_text = gzuncompress($krc_compress); preg_match_all("/[(ar|ti|offset):(.+)]/",$krc_text,$matches); $lrc_text = implode($glue,$matches[0]).$glue; preg_match_all("/[(d{0,8}),(d{0,8})](.+)/",$krc_text,$matches); unset($krc_text,$krc_compress,$krc_content,$enKey); if(!empty($matches[1])){ foreach($matches[1] as $k=>$v){ list($seconds, $millis) = explode('.', $v / 1000); $lrc_time = date('i:s',1388534400 + $seconds).'.'.substr($millis,0,2); $lrc_cont = preg_replace("/<d{1,8},d{1,8},d{1,8}>/",'',$matches[3][$k]); $lrc_text .= "[{$lrc_time}]{$lrc_cont}{$glue}"; } } return $lrc_text;}简单示例如下:
$content = file_get_contents('1.krc');echo krc2lrc($content,'<br/>');声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
KRC文件(KugouResourCe,酷狗资源文件)。krc歌词文件扩展名。该格式能够实现歌词逐字精确定位,彻底改善传统LRC歌词显示不准确的问题。酷狗音乐是
酷狗下载的歌词都是KRC文件,KRC格式文件为酷狗音乐独有的同步歌词格式文件,但是我们其他音乐播放器使用的是IRC格式同步歌词,那么我们怎么才能把krc文件转换
首先,说一下一般的同步字幕的格式是lrc的,像酷我音乐盒的歌词就是lrc的,但是酷我的同步歌词确实krc的。咱们买的资料里的同步字幕就是lrc的,所以酷狗不能自
这里是说srt格式的歌词字幕文件,这个是lrc的歌词文件转为SRT的,有些人可能是酷狗的KRC格式或者其他,你可以转为lrc【因为威力导演只支持LRC和TXT,
怎么把krc转换成lrc,现在大部分的朋友,都用手机或者移动设备听歌,听歌的过程一定会看这歌词,然后我们一起哼着小曲唱着歌,开开心心过着每天,但是krc是酷狗专