请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
查看: 455|回复: 2

[求助] 管道操作 ffprobe读取文件信息乱码,怎么破,求指点

[复制链接]

4

主题

6

帖子

8

积分
交易币
0

新手入门

Rank: 1

发表于 2021-1-16 03:40:08 | 显示全部楼层 |阅读模式

[aardio] 纯文本查看 复制代码
url = "D:\Users\Music\光辉岁月.mp3" //一定要有中文文件名

basePath = ..io.fullpath("/res");

import process.popen

var p = process.popen(basePath+"\ffprobe.exe",'-i "'+url+'" -hide_banner -show_format -of json');

p.logResponse(function( all,out,err){

	console.dump(string.toUnicode( out,65001))

},500);


结果,
[JavaScript] 纯文本查看 复制代码
{
    "format": {
        "filename": "D:\\Users\\Music\\鍏夎緣宀佹湀.mp3",
        "nb_streams": 2,
        "nb_programs": 0,
        "format_name": "mp3",
        "format_long_name": "MP2/3 (MPEG audio layer 2/3)",
        "start_time": "0.025056",
        "duration": "297.952653",
        "size": "4840643",
        "bit_rate": "129970",
        "probe_score": 51,
        "tags": {
            "title": "鍏夎緣宀佹湀",
            "artist": "BEYOND",
            "album": "鍏夎緣宀佹湀-浜屽崄鍛ㄥ勾绮鹃€?,
            "genre": "Other"
        }
    }
}

手动在cmd输入命令也乱码, 如果在执行之前ffprobe先chcp 65001, 控制台不乱码了,但是在aardio里面实现不了


回复

使用道具 举报

0

主题

1

帖子

1

积分
交易币
0

新手入门

Rank: 1

发表于 2021-1-16 14:59:36 | 显示全部楼层
本帖最后由 xwdev 于 2021-1-16 15:00 编辑

aardio 的门槛还是太低了。
这么一个简单问题,都要强调自己搞了 3天是不是太夸张了点。

你写代码难道都不看文档?!
加一句代码就可以解决:
import process.popen

var prcs = process.popen("/res/ffprobe.exe");

prcs.codepage = 65001;

prcs.logResponse();

aardio 编码本来就是 UTF8( codepage =65001 )
但是控制台程序默认都是 ANSI( codepage = 0 ),所以你要加上面的代码,告诉 aardio  不要转换编码。
按你那样去改标准库,下次有乱码你又要搞 3 天了

一个程序员需要具备一些基本常识:
控制台只有2种编码,乱码就一定是用了 UTF-8。

回复 支持 1 反对 0

使用道具 举报

4

主题

6

帖子

8

积分
交易币
0

新手入门

Rank: 1

 楼主| 发表于 2021-1-16 04:41:58 | 显示全部楼层
搞了3天,自己解决了,aardio的库里面有一个this.codepage = 0;改成this.codepage=65001就行了
回复 支持 反对

使用道具 举报

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

本版积分规则



GMT+8, 2021-3-8 10:53 , Processed in 0.085926 second(s), 26 queries .

© 2001-2011 Powered by Discuz! X3.2.

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