国语视界

 找回密码
 立即注册
查看: 6811|回复: 13

[技术交流] 在Windows下编译 tsMuxer 给 tsMuxerGUI 添加简体中文选项

[复制链接]

2

主题

66

帖子

214

积分

排长

大洋
1317
阅读权限
30
发表于 20-6-8 15:33 | 显示全部楼层 |阅读模式
本帖最后由 lanvas2008 于 20-6-9 14:20 编辑

废话不多说直接进主题

tsmuxer github https://github.com/justdan96/tsMuxer

首先安装 msys2
msys2官方网站
https://www.msys2.org/

msys2直接下载连接
https://github.com/msys2/msys2-installer/releases/download/2020-06-02/msys2-x86_64-20200602.exe

在使用msys2前先熟悉几个安装编译过程中要用到重要的命令行工具 make,qmake,pacman,cmake

make
是一个命令工具,它解释Makefile 中的指令。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。

qmake
qmake是 qt附带的工具,qmake能够自动生成Makefile、Microsoft Visual Studio 专案文件 和 xcode 专案文件。不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。

pacman
pacman是arclinux中的软件管理工具,也是widows上msys2默认的软件管理工具。pacman可以直接从网络上的软件仓库下载安装及删除软件,自动处理依赖关系,类似ubuntu中的apt-get。

在msys2里面最常用的几个命令为:

pacman -Sy: 从服务器下载新的软件包数据库(实际上就是下载远程仓库最新软件列表到本地)。

pacman -Su: 升级所有已安装的软件包。

这两个命令可以合并为一个命令 pacman -Syu

pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。

pacman -S --needed 软件名1 软件名2: 安装软件,但不重新安装已经是最新的软件。

CMake
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

下面开始安装msys2
直接运行 msys2-x86_64-20200602.exe 一路默认即可,全部的软件安装大概需要25g的磁盘空间吧,如C盘容量不足就不要安装在C盘了

为msys2添加国内源

打开 msys64\etc\pacman.d 文件夹找到以下3个文件
mirrorlist.mingw32
mirrorlist.mingw64
mirrorlist.msys

用文本编辑器打开,删除原来所有内容,然后添加以下内容

mirrorlist.mingw32 添加以下内容
  1. ##
  2. ## 32-bit Mingw-w64 repository mirrorlist
  3. ##

  4. ## 中国科学技术大学
  5. Server = https://mirrors.ustc.edu.cn/msys2/mingw/i686
  6. ## 中国科学技术大学 电信线路
  7. Server = https://chinanet.mirrors.ustc.edu.cn/msys2/mingw/i686
  8. ## 清华大学
  9. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
  10. ## 浙江大学
  11. Server = http://mirrors.zju.edu.cn/msys2/mingw/i686
  12. ## 华为
  13. Server = https://mirrors.huaweicloud.com/msys2/mingw/i686
复制代码

mirrorlist.mingw64 添加以下内容
  1. ##
  2. ## 64-bit Mingw-w64 repository mirrorlist
  3. ##

  4. ## 中国科学技术大学
  5. Server = https://mirrors.ustc.edu.cn/msys2/mingw/x86_64
  6. ## 中国科学技术大学 电信线路
  7. Server = https://chinanet.mirrors.ustc.edu.cn/msys2/mingw/x86_64
  8. ## 清华大学
  9. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
  10. ## 浙江大学
  11. Server = http://mirrors.zju.edu.cn/msys2/mingw/x86_64
  12. ## 华为
  13. Server = https://mirrors.huaweicloud.com/msys2/mingw/x86_64
复制代码

mirrorlist.msys 添加以下内容
  1. ##
  2. ## MSYS2 repository mirrorlist
  3. ##

  4. ## 中国科学技术大学
  5. Server = https://mirrors.ustc.edu.cn/msys2/msys/$arch
  6. ## 中国科学技术大学 电信线路
  7. Server = https://chinanet.mirrors.ustc.edu.cn/msys2/msys/$arch
  8. ## 清华大学
  9. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
  10. ## 浙江大学
  11. Server = http://mirrors.zju.edu.cn/msys2/msys/$arch
  12. ## 华为
  13. Server = https://mirrors.huaweicloud.com/msys2/msys/$arch
复制代码

把msys2添加到右键菜单 方便在任何地方打开msys2,把下面的内容复制到文本文件中 然后另存为批处理 文件后缀为 cmd 或 bat。

导入后的右键菜单。

  1. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-32" /f /d "MSYS2 MinGW 32-Bit"
  2. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-64" /f /d "MSYS2 MinGW 64-Bit"

  3. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-32" /f /v "icon" /d "%cd%\msys2.ico"
  4. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-64" /f /v "icon" /d "%cd%\msys2.ico"

  5. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-32\command" /f /d "%cd%\msys2_shell.cmd -mingw32 -here"
  6. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-64\command" /f /d "%cd%\msys2_shell.cmd -mingw64 -here"
复制代码

到这里msys2的基本安装和设置就完成了,接下来就是安装编译器了。

打开msys64.运行 msys2.exe 首先同步最新数据和更新
  1. pacman -Syu
复制代码

全部更新完成后开始安装编译环境

MSYS2 基础包安装
  1. pacman -S --needed git yasm cvs svn zlib-devel libelf-devel base-devel zip p7zip sshpass
复制代码

mingw32 gcc编译器安装
  1. pacman -S --needed mingw-w64-i686-SDL2 mingw-w64-i686-SDL2_ttf mingw-w64-i686-nasm mingw-w64-i686-ninja mingw-w64-i686-zlib mingw-w64-i686-clang mingw-w64-i686-cmake mingw-w64-i686-freetype mingw-w64-i686-toolchain
复制代码


mingw64 gcc编译器安装
  1. pacman -S --needed mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-nasm mingw-w64-x86_64-ninja mingw-w64-x86_64-zlib mingw-w64-x86_64-clang mingw-w64-x86_64-cmake mingw-w64-x86_64-freetype mingw-w64-x86_64-toolchain mingw-w64-cross-toolchain
复制代码


QT5 安装
  1. pacman -S --needed mingw-w64-x86_64-qt5-static mingw-w64-i686-qt5-static
复制代码


可以分开安装 也可以合在一起一次输入安装
  1. pacman -S --needed git yasm cvs svn zlib-devel libelf-devel base-devel zip p7zip sshpass mingw-w64-i686-SDL2 mingw-w64-i686-SDL2_ttf mingw-w64-i686-nasm mingw-w64-i686-ninja mingw-w64-i686-zlib mingw-w64-i686-clang mingw-w64-i686-cmake mingw-w64-i686-freetype mingw-w64-i686-toolchain mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-nasm mingw-w64-x86_64-ninja mingw-w64-x86_64-zlib mingw-w64-x86_64-clang mingw-w64-x86_64-cmake mingw-w64-x86_64-freetype mingw-w64-x86_64-toolchain mingw-w64-cross-toolchain mingw-w64-x86_64-qt5-static mingw-w64-i686-qt5-static
复制代码


等待全部安装完成后 编译环境就算安装好了

把qt添加到环境变量
打开 msys64\etc\skel 文件夹 .bashrc 文件 用文本编辑器打开 在前面插入
  1. # QT5
  2. export PATH=$PATH:$MINGW_PREFIX/qt5-static/bin
复制代码

接下来去 tsmuxer github 仓库 下载源代码

解压缩源代码到任意盘的根目录,打开源代码文件夹新建 build 文件夹 进入 build 文件夹 右键 MSYS2 MinGW 32-Bit 或 MSYS2 MinGW 64-Bit

生成 tsmuxer 的 makefile 文件
  1. cmake ../ -G Ninja -DTSMUXER_STATIC_BUILD=true
复制代码

编译tsmuxer 并把 tsmuxer.exe 复制到 bin 文件夹
  1. ninja && cp -u tsMuxer/tsmuxer.exe ../bin/
复制代码

生成 tsmuxergui 的 makefile 文件
  1. qmake ../tsMuxerGUI
复制代码

编译 tsmuxergui 并把 tsmuxergui.exe 复制到 bin 目录
  1. make release && cp -u release/tsMuxerGUI.exe ../bin/
复制代码

关于源码包里面自带的自动编译脚本 rebuild_msys2.sh ,运行这个脚本会报错无法正常编译,我把脚本修改了下这样就能在任何地方正常编译了。
  1. #!/usr/bin/bash

  2. cd ../
  3. if [ ! -d tsMuxer-master ] ; then
  4.   git clone https://github.com/justdan96/tsMuxer.git
  5. fi
  6. cd tsMuxer-master
  7. if [ ! -d build ] ; then
  8.   if [ -d $MINGW_PREFIX/qt5-static ] ; then
  9.    echo 'load(win32/windows_vulkan_sdk)' > $MINGW_PREFIX/qt5-static/share/qt5/mkspecs/common/windows-vulkan.conf
  10.    echo 'QMAKE_LIBS_VULKAN       =' >>     $MINGW_PREFIX/qt5-static/share/qt5/mkspecs/common/windows-vulkan.conf
  11.   fi
  12.   mkdir build
  13. fi
  14. git pull
  15. cd build
  16. cmake ../ -G Ninja -DTSMUXER_STATIC_BUILD=true
  17. ninja && cp -u tsMuxer/tsmuxer.exe ../bin/
  18. if [ -d $MINGW_PREFIX/qt5-static ] ; then
  19.   $MINGW_PREFIX/qt5-static/bin/qmake ../tsMuxerGUI
  20.   make release && cp -u release/tsMuxerGUI.exe ../bin/
  21. fi
  22. cd ..
复制代码

运行脚本脚本的命令是 ./脚本文件名.sh,如我们要运行 tsMuxer 自动编译脚本 rebuild_msys2.sh
  1. ./rebuild_msys2.sh
复制代码

本帖子中包含更多资源

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

x

评分

参与人数 3威望 +200 大洋 +1100 收起 理由
nnezyj + 50 + 300 dalao
why1812 + 50 + 300 赞一个!
wj102901 + 100 + 500 dalao

查看全部评分

2

主题

66

帖子

214

积分

排长

大洋
1317
阅读权限
30
 楼主| 发表于 20-6-8 15:35 | 显示全部楼层
本帖最后由 lanvas2008 于 20-6-9 14:43 编辑

给程序添加“简体中文” 语言选项

打开 tsMuxerGUI\translations 文件夹,复制 about_en.html 和 tsmuxergui_en.ts 文件,并重命名为 about_zh.html 和 tsmuxergui_zh.ts

打开 tsMuxerGUI\CMakeLists.txt 找到
  1. qt5_add_translation(QM_FILES translations/tsmuxergui_en.ts translations/tsmuxergui_ru.ts)
复制代码

把简体中文语言文件添加进去
  1. qt5_add_translation(QM_FILES translations/tsmuxergui_en.ts translations/tsmuxergui_zh.ts translations/tsmuxergui_ru.ts)
复制代码

打开 tsMuxerGUI\images.qrc 找到
  1.   <file alias="about_en.html">translations/about_en.html</file>
复制代码

在下面插入
  1.   <file alias="about_zh.html">translations/about_zh.html</file>
复制代码

打开 tsMuxerGUI\translations.qrc 找到
  1. <file alias="tsmuxergui_en.qm">tsmuxergui_en.qm</file>
复制代码

在下面插入
  1. <file alias="tsmuxergui_zh.qm">tsmuxergui_zh.qm</file>
复制代码

打开 tsMuxerGUI\tsMuxerGUI.pro 找到
  1. TRANSLATIONS = translations/tsmuxergui_en.ts translations/tsmuxergui_ru.ts
复制代码

把简体中文语言文件添加进去
  1. TRANSLATIONS = translations/tsmuxergui_en.ts translations/tsmuxergui_zh.ts translations/tsmuxergui_ru.ts
复制代码

打开 tsMuxerGUI\tsmuxerwindow.cpp 找到
  1.     comboBox->addItem("English", "en");  // 0th index is also used as default if the language isn't set in the settings.
复制代码

在下面插入
  1.     comboBox->addItem(QString::fromUtf8("简体中文"), "zh");
复制代码

这样修改完成后编译出来的程序就有 简体中文 选项了

QT使用

Qt Linguist QT语言专家
http://download.qt.io/linguist_releases/qtlinguistinstaller-5.12.2.exe

Qt Designer QT设计师用来设计QT程序的图形界面(GUI)
http://download.qt.io/official_releases/qtdesignstudio/1.5.0/qt-designstudio-windows-x86-1.5.0-community.exe

Qt Creator QT的开发环境(IDE)
http://download.qt.io/official_releases/qtcreator/4.12/4.12.2/qt-creator-opensource-windows-x86_64-4.12.2.exe

QT集成开发工具,已包含以上3个 QT 程序
http://download.qt.io/official_releases/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe

如要修改主界面布局,运行 Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\designer.exe 打开源代码中 tsMuxerGUI 目录下的 tsmuxerwindow.ui 文件

如要汉化界面语言,运行 Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\linguist.exe 打开源代码中 tsMuxerGUI\translations 目录下的 tsmuxergui_zh.ts 文件

汉化界面语言
linguist.exe 打开 tsmuxergui_zh.ts 文件

要汉化的有2个 ui 界面 muxForm.ui 和 tsmuxerwindow.ui
muxForm.ui              是混流进度界面要汉化的不多
tsmuxerwindow.ui    是程序主界面要汉化的就多了很多

如要汉化 input 先点 源文下的 input 然后 在下面的 “Transformation to 简体中文 (中国)” 输入  “输入” 然后保存更改,再重新编译程序。


界面设计就没什么好说的了,随便折腾吧。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

34

主题

1669

帖子

1600

积分

营长

大洋
92834
阅读权限
50
发表于 20-6-9 07:31 | 显示全部楼层
这技术牛了!支持大神
回复 支持 反对

使用道具 举报

0

主题

1624

帖子

204

积分

排长

大洋
26510
阅读权限
30
发表于 20-6-9 09:03 | 显示全部楼层
这可是电脑高手必备神器
回复 支持 反对

使用道具 举报

6

主题

1万

帖子

1481

积分

营长

大洋
5545
阅读权限
50
QQ
发表于 20-6-9 10:07 | 显示全部楼层
这个真是牛逼啊,小白根本看不懂啊,要好好学习学习,感谢楼主的技术普及。。。
回复 支持 反对

使用道具 举报

34

主题

3777

帖子

3376

积分

工作组

大洋
298241
阅读权限
135

王者至尊富甲天下帅哥宣传达人突出贡献皇马褂灌水之王热心会员音轨组

QQ
发表于 20-6-9 15:09 | 显示全部楼层
这太牛了!顶起来!
回复 支持 反对

使用道具 举报

3

主题

2616

帖子

7052

积分

旅长

大洋
9710
阅读权限
70

灌水之王论坛元老悍匪之王热心会员

发表于 20-6-9 16:43 | 显示全部楼层
技术贴必须支持一个,多谢楼主分享。
回复 支持 反对

使用道具 举报

143

主题

1万

帖子

3142

积分

团长

大洋
36964
阅读权限
60
发表于 20-6-10 06:32 | 显示全部楼层
这个教程用心了。
回复 支持 反对

使用道具 举报

1

主题

710

帖子

261

积分

排长

大洋
95
阅读权限
30
QQ
发表于 20-6-12 22:46 | 显示全部楼层
小白我根本看不懂,要好好学习学习,感谢楼主的技术普及。
电影迷
回复 支持 反对

使用道具 举报

10

主题

3604

帖子

735

积分

连长

大洋
43005
阅读权限
40
发表于 20-6-22 16:24 | 显示全部楼层
这个绝对是高手贴哦!你太厉害了!
回复 支持 反对

使用道具 举报

18

主题

104

帖子

33

积分

列兵

大洋
279
阅读权限
10
发表于 20-7-13 16:35 | 显示全部楼层
大神,可以帮忙改进源码,增加demux时在文件名中注明timeshift参数的功能吗
回复 支持 反对

使用道具 举报

16

主题

654

帖子

204

积分

排长

大洋
192
阅读权限
30

灌水之王悍匪之王

QQ
发表于 20-8-27 18:43 | 显示全部楼层
谢谢楼主分享教程
回复 支持 反对

使用道具 举报

3

主题

5924

帖子

1005

积分

营长

大洋
7319
阅读权限
50
发表于 20-9-21 17:24 | 显示全部楼层
需要学习的太多了,楼主辛苦
回复 支持 反对

使用道具 举报

3

主题

704

帖子

120

积分

班长

大洋
5641
阅读权限
20
发表于 20-10-18 10:24 | 显示全部楼层
牛,有没做好的现成的可以下载的
回复 支持 反对

使用道具 举报

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

本版积分规则

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