天道酬勤,学无止境

如何在 Android 上使用 Google 的文字转语音服务进行汉字转换?(How to use Google's Text-to-Speech service for Chinese characters on Android?)

问题

我正在尝试从 google 的文本转语音功能中提取音频文件。 基本上,您将链接放入,然后在链接的末尾连接您想说的任何内容。 我已经让下面的代码对英语工作得很好,所以我认为问题一定是中文字符是如何在请求中编码的。 这是我所拥有的:

String text = "text to be spoken";
public static final String AUDIO_CHINESE= "http://www.translate.google.com/translate_tts?tl=zh&q=";
public static final String AUDIO_ENGLISH = "http://www.translate.google.com/translate_tts?tl=en&q=";

URL url = new URL(AUDIO_ENGLISH + text);

urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setRequestProperty("Accept-Charset", Variables.UTF_8);

if (urlConnection.getResponseCode() ==200) {
     //get byte array in response
     in = new DataInputStream(urlConnection.getInputStream());
} else {
     in = new DataInputStream(urlConnection.getErrorStream());
}
//use commons io
byte[] bytes = IOUtils.toByteArray(in);

in.close();
urlConnection.disconnect();

return bytes;

但是,当我使用中文字符尝试此操作时,它会返回一些我无法在媒体播放器中播放的内容(我怀疑它不是正确的音频文件,因为绝大多数字节都是“85”)。 所以我都试过了

String chText = "你好";
URL url = new URL(AUDIO_CHINESE + URLEncoder.encode(chText, "UTF-8));

URL url = new URL(AUDIO_CHINESE + Uri.encode(chText, "UTF-8"));

然后添加

urlConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded; charset=UTF-8");

到请求头。 但是,这让情况变得更糟,因为现在它甚至不返回 200 代码,而是在 logcat 中声明“FileNotFound”。

所以一时兴起,我回去尝试用英文文本进行 URL/Uri 编码,现在英文也不会返回有效结果。 不确定这里发生了什么:如果我复制并粘贴到 Chrome 中,调试器中的原始 url 工作正常,但由于某种原因 urlConnection 不起作用。 感觉我错过了一些明显的东西。

编辑

再摆弄一些没有发现答案,只是更多的困惑(和恼怒)。 出于某种原因,当通过 httpurlconnection 发送时,Google tts 机器将 utf-8% 编码的文本读取为 utf-16,至少据我所知。 例如,字符“维”(wei2) 是%E7%B6%AD ,但是如果您通过连接传递它,您将得到一个发音为“see”(准确地说是“ç”)的文件。

ç,事实证明,在 UTF-16 中是0x00E7 (它的 utf-8 百分比编码版本是%C3%A7 )。 我不知道它为什么在 Java 中这样做,因为在任何浏览器中将适当的 % 放在链接的末尾都可以正常工作。 到目前为止,我已经尝试了各种尝试让 tts 读取整个%E7%B6%AD但没有取得多大成功。

编辑2

找到了我的问题的解决方案! 答案见下文。 问题不在于编码,而在于谷歌的解析。 相应地编辑了标题。 干杯!

回答1

所以,事实证明,最后的问题根本不是编码; 这是谷歌最后的处理。 要让服务正确识别 UTF-8,您需要使用此链接http://www.translate.google.com/translate_tts?ie=utf-8&tl=zh-cn&q=而不是上面的链接。 注意ie=utf-8添加到参数中。 所以你可以只是URLEncoder.encode("你好嗎", "UTF-8") ,将它附加到链接,然后像往常一样发送它。 哇!

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Java 字符编码与解码
    Java的字符集编码与解码1、字符编码的发展历程  ①、ASCII 码  因为计算机只认识数字,所以我们在计算机里面的一切数据都是以数字来表示,因为英文字符有限,所以规定使用的字节的最高位是 0,每一个字节都是以 0-127 之间的数字来表示。比如 A 对应 65,a 对应 97。这便是 美国标准信息交换码,ASCII String str = new String("Aa"); byte[] strASCII = str.getBytes("ASCII"); System.out.println(Arrays.toString(strASCII));//[65, 97]    ②、GB2312 码  随着计算机在全球的普及,很多国家和地区都把自己的字符引入了计算机,比如汉字。此时发现一个字节能表示的数字范围太小,不能包含所有的中文汉字。那么就规定使用两个字节来表示一个汉字。  规定:原有的 ASCII 字符的编码保持不变,仍然使用一个字节表示,为了区别一个中文字符与两个 ASCII 码字符相区别。中文字符的每个字节最高位规定为 1(即中文的二进制是负数),这便是 GB2312 编码 String str = new String("Aa帅锅"); byte[] strASCII = str.getBytes("GB2312"); System.out.println(Arrays
  • Java 字符编码与解码
    Java的字符集编码与解码 1、字符编码的发展历程   ①、ASCII 码   因为计算机只认识数字,所以我们在计算机里面的一切数据都是以数字来表示,因为英文字符有限,所以规定使用的字节的最高位是 0,每一个字节都是以 0-127 之间的数字来表示。比如 A 对应 65,a 对应 97。这便是 美国标准信息交换码,ASCII String str = new String("Aa"); byte[] strASCII = str.getBytes("ASCII"); System.out.println(Arrays.toString(strASCII));//[65, 97]      ②、GB2312 码   随着计算机在全球的普及,很多国家和地区都把自己的字符引入了计算机,比如汉字。此时发现一个字节能表示的数字范围太小,不能包含所有的中文汉字。那么就规定使用两个字节来表示一个汉字。   规定:原有的 ASCII 字符的编码保持不变,仍然使用一个字节表示,为了区别一个中文字符与两个 ASCII 码字符相区别。中文字符的每个字节最高位规定为 1(即中文的二进制是负数),这便是 GB2312 编码 String str = new String("Aa帅锅"); byte[] strASCII = str.getBytes("GB2312"); System.out.println
  • ASCII,UTF,GBK 是什么
    一、编码历史与区别一直对字符的各种编码方式懵懵懂懂,什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们。Let's go!很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00x10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0x20以下的字节状态称为"控制码"。他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的"Ascii"编码(American Standard Code
  • javacv教程文档手册开发指南汇总篇
    本章作为javacv技术栈系列文章汇总前言写了不少关于javacv的文章,不敢说精通 ,只能说对javacv很熟悉。虽然偶尔也提交pull request做做贡献,但是javacv包含的库实在太多了。有些库也不太可能每个应用场景都会用到,所以平时主要还是以ffmpeg音视频处理为主,顺带着写一点opencv图像处理,图像检测识别和tessert文字识别等等。javacv是什么?javacv技术栈能做什么?一个老生常谈的问题,相信大家各种搜索引擎搜一下应该知道它能做了什么了。 首先是音视频处理,编解码,装封装,只要ffmpeg可以的javacv就可以,他们没有什么不同。 再者是图像处理和图像识别,可以借助opencv图像检测识别和tessert字符识别,他们也没有什么不同,只是javacv通过jni让它们跨平台了而已,不需要自己再去封装了。 剩下的包含矩阵计算,深度学习等方面的内容,了解不多,不多赘述。javacv技术栈的应用场景很多人好奇,现在javacv常被用在哪些应用场景下? javacv跨平台,不仅可以在windows,linux,macos等服务器或者客户都安机器上工作,在各种嵌入式板子上也不在话下。嵌入式领域: 很多人把javacv用在树莓派等等的一些基于arm芯片的板子上,外挂摄像头或者音频设备就可以实现音视频上传,图像处理,图像识别等等操作。流媒体:
  • javacv教程文档手册开发指南汇总篇
    本章作为javacv技术栈系列文章汇总前言写了不少关于javacv的文章,不敢说精通 ,只能说对javacv很熟悉。虽然偶尔也提交pull request做做贡献,但是javacv包含的库实在太多了。有些库也不太可能每个应用场景都会用到,所以平时主要还是以ffmpeg音视频处理为主,顺带着写一点opencv图像处理,图像检测识别和tessert文字识别等等。javacv是什么?javacv技术栈能做什么?一个老生常谈的问题,相信大家各种搜索引擎搜一下应该知道它能做了什么了。首先是音视频处理,编解码,装封装,只要ffmpeg可以的javacv就可以,他们没有什么不同。再者是图像处理和图像识别,可以借助opencv图像检测识别和tessert字符识别,他们也没有什么不同,只是javacv通过jni让它们跨平台了而已,不需要自己再去封装了。剩下的包含矩阵计算,深度学习等方面的内容,了解不多,不多赘述。javacv技术栈的应用场景很多人好奇,现在javacv常被用在哪些应用场景下?javacv跨平台,不仅可以在windows,linux,macos等服务器或者客户都安机器上工作,在各种嵌入式板子上也不在话下。嵌入式领域:很多人把javacv用在树莓派等等的一些基于arm芯片的板子上,外挂摄像头或者音频设备就可以实现音视频上传,图像处理,图像识别等等操作。流媒体:利用javacv的流媒体优势
  • 都2021年了,还在用c++搞音视频?来来来,javacv了解一下
    javacv是什么?javacv技术栈能做什么?大家肯定对javacv很感兴趣,恰巧博主对javacv稍有涉猎,这就来给各位小伙伴们安利一番,javacv到底可以做什么,可以在哪些领域独领风骚。javacv凭借强大的跨平台性和快速开发,既降低了跨平台要求,又提高了开发速度。不管你是Windows,Mac,Linux,树莓派嵌入式,javacv都可以随心所欲。音视频处理(ffmpeg)首先是音视频处理,编解码,装封装,只要ffmpeg可以的javacv就可以,他们没有什么不同。图像处理和图像识别(opencv)再者是图像处理和图像识别,可以借助opencv图像检测识别和tessert字符识别,他们也没有什么不同,只是javacv通过jni让它们跨平台了而已,不需要自己再去封装了。 剩下的包含矩阵计算,深度学习等方面的内容,了解不多,不多赘述。javacv技术栈的应用场景 很多人好奇,现在javacv常被用在哪些应用场景下? javacv跨平台,不仅可以在windows,linux,macos等服务器或者客户都安机器上工作,在各种嵌入式板子上也不在话下。嵌入式开发(树莓派等):很多人把javacv用在树莓派等等的一些基于arm芯片的板子上,外挂摄像头或者音频设备就可以实现音视频上传,图像处理,图像识别等等操作。 可以用在各种图像采集设备、机器人视觉、人脸打卡和小区门禁等各项领域
  • 2021年都快过半了,你还在傻乎乎的用python搞图像处理和人脸识别?
    javacv是什么?javacv技术栈能做什么?大家肯定对javacv很感兴趣,恰巧博主对javacv稍有涉猎,这就来给各位小伙伴们安利一番,javacv到底可以做什么,可以在哪些领域独领风骚。javacv不仅能够搞图像处理,凭借javacv强大的跨平台性和快速开发,不管你是Windows,Mac,Linux,树莓派嵌入式,javacv都可以随心所欲的让你在图像处理、人脸检测识别、字符识别、音视频流媒体、树莓派(嵌入式)和深度学习等领域独领风骚。图像处理和图像识别再者是图像处理和图像识别,可以借助opencv图像检测识别和tessert字符识别,他们也没有什么不同,只是javacv通过jni让它们跨平台了而已,不需要自己再去封装了。 剩下的包含矩阵计算,深度学习等方面的内容,了解不多,不多赘述。音视频处理(ffmpeg)首先是音视频处理,编解码,装封装,只要ffmpeg可以的javacv就可以,他们没有什么不同。嵌入式开发(树莓派等):很多人把javacv用在树莓派等等的一些基于arm芯片的板子上,外挂摄像头或者音频设备就可以实现音视频上传,图像处理,图像识别等等操作。 可以用在各种图像采集设备、机器人视觉、人脸打卡和小区门禁等各项领域。音视频流媒体:利用javacv的流媒体优势,可以轻松实现音视频采集,推流,编解码,装封装等等操作。深度学习
  • javaCV入门指南:序章
    JavaCV入门指南系列:JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到《快速上手篇》)JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作JavaCV入门指南:帧抓取器(FrameGrabber)的原理与应用JavaCV入门指南:帧录制器/推流器(FrameRecorder)的原理与应用JavaCV入门指南:帧过滤器(FrameFilter)的原理与应用JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(完结篇)《快速上手篇》(为了区别,单独划分):JavaCV入门指南之快速上手篇:快速上手视频拉流、推流、录制文件、录屏、截图和编解码复用解复用等常用音视频处理操作javaCV实战系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器
  • javacv开发详解之1:调用本机摄像头视频(建议使用javaCV最新版本)JavaCV开发详解之22:http-flv拉流和http-flv推流及rtmp拉流和rtmp推流实例和flv,live_flv格式说明
    javacv汇总篇:javacv教程文档手册开发指南汇总篇JavaCV入门指南系列:JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到《快速上手篇》)JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作JavaCV入门指南:帧抓取器(FrameGrabber)的原理与应用JavaCV入门指南:帧录制器/推流器(FrameRecorder)的原理与应用JavaCV入门指南:帧过滤器(FrameFilter)的原理与应用JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类《快速上手篇》(为了区别,单独划分):JavaCV入门指南之快速上手篇:快速上手视频拉流、推流、录制文件、录屏、截图和编解码复用解复用等常用音视频处理操作javaCV实战系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG
  • 如何在“文字转语音”中使用印地语(印度母语)?(How to use Hindi(Indian Mother Tongue) language in Text-To-Speech?)
    问题 我正在为学生创建一个应用程序。 我需要在印地语或马拉地语中输入数据。 当用户单击特定主题时,用户应该可以在北印度语或马拉地语中收听此主题。 我知道如何在TextToSpeech中设置语言 Tts.setLanguage(Locale.US); 我需要设置印地语或马拉地语。 我的问题是如何使用马拉地语或北印度语 TextToSpeech中的语言。 请给我任何参考或提示。 回答1 您需要支持印地语的文本语音转换(TTS)引擎。 每个TTS引擎都有其支持的特定语言。 这是一个支持印地语的TTS引擎,但是它可以在Windows上运行。 我从您想在Android上支持此功能的标签中看到。 这是有关在Android上支持印地语TTS的帖子。 Android上的本机TTS不支持北印度语。 您可能要做的就是创建一个使用印地语文本并将其转换为音频文件的服务。 然后,您可以将音频文件流式传输到Android应用程序。 我认为,尽管您不想将TTS用于教育应用。 我认为您会发现TTS的输出非常机器人化,学生很难理解。 我会记录课程/信息,然后将其流式传输到您的应用程序中。 在购买任何TTS引擎之前,我会先尝试一下以确保生成的语音是可以接受的。 如今,大多数顶级教育应用程序(例如:汗学院)都使用预先录制的音频和/或视频。 回答2 您应该使用msg.lang ='hi-IN'; 回答3 您应该使用:-
  • 【转】Java中弄懂Unicode和UTF-8编码方式
    原文链接:https://blog.csdn.net/qq_22771739/article/details/84261165 1.Unicode Unicode 是全球文字统一编码。它把世界上的各种文字的每一个字符指定唯一编码,实现跨语种、跨平台的应用。 Unicode 只是一个符号集,它只规定了每个符号的二进制数,却没有规定这个二进制数应该如何存储。比如,汉字‘严’的 Unicode 是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说,这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。 注意:提及一下我们一般用来验证中文的正则表达式:[\u4e00-9fa5],这个是不全面的,这只是常用汉字的Unicode范围,下面给出所有汉字的范围(下面的扩展A、扩展B等等等等也都都是中文的)以及查询的网址: 查询地址:https://www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php 代码实验: public class Main { public static void main(String[] args) { //4E00-9FA5是基本汉字,只占一个字符,也就是一个char,也就是2字节,也就是16位 String s = "一";//Unicode编码:4E00
  • Kaptcha 图像验证码
    简介: kaptcha是一个可高度配置的使用验证码生成工具,可自由配置的选项如: 验证码字体 验证码字体的大小 验证码字体的字体颜色 验证码内容的范围(数字、字母、中文汉字!) 验证码图片的大小、边框、边框粗细、边框颜色 验证码干扰线 验证码的样式(鱼眼样式、3D、普通模糊) Kaptcha详细配置表 Constant描述默认值kaptcha.border图片边框,合法值:yes , noyeskaptcha.border.color边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.blackkaptcha.image.width图片宽200kaptcha.image.height图片高50kaptcha.producer.impl图片实现类com.google.code.kaptcha.impl.DefaultKaptchakaptcha.textproducer.impl文本实现类com.google.code.kaptcha.text.impl.DefaultTextCreatorkaptcha.textproducer.char.string文本集合,验证码值从此集合中获取abcde2345678gfynmnpwxkaptcha.textproducer.char.length验证码长度5kaptcha
  • javaCV开发详解之15:视频帧像素格式转换
    javaCV系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗,更好的性能,更低延迟)javaCV开发详解之9:基于gdigrab的windows屏幕画面抓取/采集(基于javacv的屏幕截屏、录屏功能)javaCV开发详解之10
  • javaCV开发详解之GIF动态图片录制补充篇:windows桌面屏幕画面录制成gif动态图片,支持桌面屏幕任意区域生成gif,可扩展支持MacOS/安卓/linux等平台,可扩展支持apng动态图片
    javaCV系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗,更好的性能,更低延迟)javaCV开发详解之9:基于gdigrab的windows屏幕画面抓取/采集(基于javacv的屏幕截屏、录屏功能)javaCV开发详解之10
  • javacv教程文档手册开发指南汇总篇
    本章作为javacv技术栈系列文章汇总 前言 写了不少关于javacv的文章,不敢说精通 ,只能说对javacv很熟悉。虽然偶尔也提交pull request做做贡献,但是javacv包含的库实在太多了。有些库也不太可能每个应用场景都会用到,所以平时主要还是以ffmpeg音视频处理为主,顺带着写一点opencv图像处理,图像检测识别和tessert文字识别等等。 javacv是什么?javacv技术栈能做什么? 一个老生常谈的问题,相信大家各种搜索引擎搜一下应该知道它能做了什么了。 首先是音视频处理,编解码,装封装,只要ffmpeg可以的javacv就可以,他们没有什么不同。 再者是图像处理和图像识别,可以借助opencv图像检测识别和tessert字符识别,他们也没有什么不同,只是javacv通过jni让它们跨平台了而已,不需要自己再去封装了。 剩下的包含矩阵计算,深度学习等方面的内容,了解不多,不多赘述。 javacv技术栈的应用场景 很多人好奇,现在javacv常被用在哪些应用场景下? javacv跨平台,不仅可以在windows,linux,macos等服务器或者客户都安机器上工作,在各种嵌入式板子上也不在话下。 嵌入式领域: 很多人把javacv用在树莓派等等的一些基于arm芯片的板子上,外挂摄像头或者音频设备就可以实现音视频上传,图像处理,图像识别等等操作。 流媒体:
  • javaCV开发详解之16:使用一张图片推流和一张图片录制成视频文件
    javaCV系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗,更好的性能,更低延迟)javaCV开发详解之9:基于gdigrab的windows屏幕画面抓取/采集(基于javacv的屏幕截屏、录屏功能)javaCV开发详解之10
  • javaCV开发详解之11:视频文件转gif动态图片实现,也支持摄像机、桌面屏幕、流媒体等视频源转gif
    javaCV系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗,更好的性能,更低延迟)javaCV开发详解之9:基于gdigrab的windows屏幕画面抓取/采集(基于javacv的屏幕截屏、录屏功能)javaCV开发详解之10
  • 深入理解Python字符编码
    不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError、UnicodeDecodeError 错误,每当遇到错误我们就拿着 encode、decode 函数翻来覆去的转换,有时试着试着问题就解决了,有时候怎么试都没辙,只有借用 Google 大神帮忙,但似乎很少去关心问题的本质是什么,下次遇到类似的问题重蹈覆辙,那么你有没有想过一次性彻底把 Python 字符编码给搞懂呢? 完全理解字符编码 与 Python 的渊源前,我们有必要把一些基础概念弄清楚,虽然有些概念我们每天都在接触甚至在使用它,但并不一定真正理解它。比如:字节、字符、字符集、字符码、字符编码。 字节 字节(Byte)是计算机中数据存储的基本单元,一字节等于一个8位的比特,计算机中的所有数据,不论是保存在磁盘文件上的还是网络上传输的数据(文字、图片、视频、音频文件)都是由字节组成的。 字符 你正在阅读的这篇文章就是由很多个字符(Character)构成的,字符一个信息单位,它是各种文字和符号的统称,比如一个英文字母是一个字符,一个汉字是一个字符,一个标点符号也是一个字符。 字符集 字符集(Character Set)就是某个范围内字符的集合,不同的字符集规定了字符的个数,比如 ASCII 字符集总共有128个字符,包含了英文字母、阿拉伯数字
  • javaCV开发详解之17:GIF和APNG动态图片推流和录制成视频文件(以gif转mp4和apng转mp4为例)
    javaCV系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗,更好的性能,更低延迟)javaCV开发详解之9:基于gdigrab的windows屏幕画面抓取/采集(基于javacv的屏幕截屏、录屏功能)javaCV开发详解之10
  • javaCV开发详解之12:视频转apng动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转apng动态图
    wjavaCV系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗,更好的性能,更低延迟)javaCV开发详解之9:基于gdigrab的windows屏幕画面抓取/采集(基于javacv的屏幕截屏、录屏功能)javaCV开发详解之10