LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1955|回复: 11

mp3文件的Tag编码修改程序

[复制链接]
发表于 2006-10-20 19:14:04 | 显示全部楼层 |阅读模式
原先是想让XMMS好看一些, 但后来XMMS总是乱码, 连菜单也是乱码, 就没有耐心了 ......
最近在试用EMMS时看见有(setq emms-info-mp3info-coding-system 'gbk)
设了还是没用,

就干脆想把tag的编码转了.
找了, 没找到好用的.

程序可以用, mp3info显示正常, 不象试过的EasyTag程序, 可以批量对目录递归修改
会直接修改文件, 小心点.

用了 libid3(ID3 Tag Library)

使用示例:
convid3 -f gbk -t utf8 -R ./  ~/music/ ~/origmusic/
convid3 -f gbk -t utf8  song.mp3 songb.mp3

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-10-26 11:43:55 | 显示全部楼层
這一句應該是有效的哦.. (setq emms-info-mp3info-coding-system 'gbk)
我這邊的 mp3 的 info 也是用 gbk 的。
回复 支持 反对

使用道具 举报

发表于 2006-12-19 13:06:40 | 显示全部楼层
编译不过去:


gcc -o convid3 convid3.cpp
convid3.cpp:18:20: error: id3/tag.h: 没有那个文件或目录
convid3.cpp:68: error: ‘ID3_Tag’ has not been declared
convid3.cpp:69: error: ‘ID3_Tag’ has not been declared
convid3.cpp: In function ‘int main(int, char**)’:
convid3.cpp:164: error: ‘ID3_Tag’ was not declared in this scope
convid3.cpp:164: error: expected `;' before ‘tag’
convid3.cpp:172: error: ‘tag’ was not declared in this scope
convid3.cpp:177: error: ‘tag’ was not declared in this scope
convid3.cpp: At global scope:
convid3.cpp:199: error: ‘ID3_Tag’ has not been declared
convid3.cpp: In function ‘int do_conv(char*, void**, int*)’:
convid3.cpp:205: error: request for member ‘Clear’ in ‘* tag’, which is of non-class type ‘int’
convid3.cpp:206: error: request for member ‘Link’ in ‘* tag’, which is of non-class type ‘int’
convid3.cpp:208: error: ‘ID3_Tag’ has not been declared
convid3.cpp:208: error: ‘iter_frame’ was not declared in this scope
convid3.cpp:208: error: request for member ‘CreateIterator’ in ‘* tag’, which is of non-class type ‘int’
convid3.cpp:209: error: ‘ID3_Frame’ was not declared in this scope
convid3.cpp:209: error: ‘frame’ was not declared in this scope
convid3.cpp:210: error: ‘ID3_Field’ was not declared in this scope
convid3.cpp:210: error: ‘field’ was not declared in this scope
convid3.cpp:211: error: ‘ID3_Frame’ is not a class or namespace
convid3.cpp:211: error: ‘iter_field’ was not declared in this scope
convid3.cpp:221: error: ‘ID3FTY_TEXTSTRING’ was not declared in this scope
convid3.cpp:224: error: ‘ID3TE_NUMENCODINGS’ was not declared in this scope
convid3.cpp:229: error: ‘ID3TE_IS_SINGLE_BYTE_ENC’ was not declared in this scope
convid3.cpp:232: error: ‘unicode_t’ was not declared in this scope
convid3.cpp:232: error: expected primary-expression before ‘)’ token
convid3.cpp:249: error: ‘ID3TE_IS_SINGLE_BYTE_ENC’ was not declared in this scope
convid3.cpp:252: error: ‘unicode_t’ was not declared in this scope
convid3.cpp:252: error: expected primary-expression before ‘)’ token
convid3.cpp:258: error: ‘ID3_TextEnc’ was not declared in this scope
convid3.cpp:265: error: type ‘<type error>’ argument given to ‘delete’, expected pointer
convid3.cpp:267: error: type ‘<type error>’ argument given to ‘delete’, expected pointer
convid3.cpp:269: error: request for member ‘Update’ in ‘* tag’, which is of non-class type ‘int’
convid3.cpp: At global scope:
convid3.cpp:274: error: ‘ID3_Tag’ has not been declared
linux-d1vo:/home/superman # ./convid3
bash: ./convid3: 没有那个文件或目录
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-19 17:12:49 | 显示全部楼层
你需要安装相应的开发头文件
in debian, try

apt-get install libid3-3.8.3-dev

the version maybe depend on you system.
回复 支持 反对

使用道具 举报

发表于 2006-12-19 20:03:48 | 显示全部楼层
下 foobar2000, 用 wine 启动,把 tag 全部转换成2.4的就可以了。
回复 支持 反对

使用道具 举报

发表于 2006-12-21 11:45:46 | 显示全部楼层
解决了!在windows下用千千静听转换成v2.4是最简便的方法。
回复 支持 反对

使用道具 举报

发表于 2007-6-7 23:17:03 | 显示全部楼层
似乎仅限于mp3info,多数软件都不能认的
回复 支持 反对

使用道具 举报

发表于 2007-6-7 23:38:18 | 显示全部楼层
用 mpd 吧,支持编码转换
回复 支持 反对

使用道具 举报

发表于 2007-6-8 07:58:35 | 显示全部楼层
我晕噢,头两天遇到这个问题没解决,后来用id3v2 把所有的mp3 tag删除了,播放器只认文件名了。还凑合 ;D
回复 支持 反对

使用道具 举报

发表于 2007-6-8 15:30:09 | 显示全部楼层
mpd怎么编码转换呢?好像是一个Daemon。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表