发新帖

下一代跨平台播放器TheNewPlayerFree for macOS, Linux and FreeBSD

user0001 / 2020-6-28 18:30
浏览: 2039 / 回复: 96
楼主: user0001

下一代跨平台播放器TheNewPlayerFree for macOS, Linux and FreeBSD

[复制链接]

11

主题

152

帖子

563

积分

-r--r--r--

Rank: 3Rank: 3

积分
563
zty199 发表于 7 天前 | 显示全部楼层

那个......请问楼主,我打包的时候把sh脚本改成这样了:
  1. #!/bin/sh

  2. appname='thenewplayerfree'
  3. dirname='/opt/durapps/thenewplayerfree/bin'

  4. tmp="${dirname#?}"
  5. if [ "${dirname%$tmp}" != "/" ]; then
  6.     dirname=$PWD/$dirname
  7. fi

  8. libpath='$dirname/../lib'
  9. export LD_LIBRARY_PATH=$libpath:$LD_LIBRARY_PATH

  10. #this option is in qt.conf
  11. #pluginpath="$dirname/../plugins"
  12. export QT_QPA_PLATFORM_PLUGIN_PATH=$pluginpath:$QT_QPA_PLATFORM_PLUGIN_PATH

  13. #export QT_DEBUG_PLUGINS=1

  14. $dirname/$appname "$@"
复制代码

不知道这么写会有什么问题吗?我这里安装运行好像没发现啥问题......就是改成绝对路径了......

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 7 天前 | 显示全部楼层
本帖最后由 user0001 于 2020-6-29 16:03 编辑
zty199 发表于 2020-6-29 15:44
那个......请问楼主,我打包的时候把sh脚本改成这样了:

不知道这么写会有什么问题吗?我这里安装运行好 ...

没有问题的。
这个脚本的目的其实就是设置运行的环境为打包“沙盒”自己带的lib和plugins,这样app到大部分平台都可以正常跑没有依赖。


我记得raw包里面的脚本其实是可以自动获取当前位置的。理论上不需要修改。

执行thenewplayer的时候,最终会从 thenewplayer/lib和thenewplayer/plugins中加载必要的动态库,而不会去系统中找依赖。
所以deb的control中依赖是没有的。
这样本质上其实就是一个appimage了,质差最后整合为一个大文件了。

#!/bin/sh

#获取当前脚本的完整路径
realpath="`realpath $0`"
#获取thenewplayerfree.sh中的thenewplayerfree
appname="`basename $realpath | cut -d. -f1`"

#获取真实路径
dirname="`dirname $realpath`"
cd $dirname
dirname="`pwd`"
cd -


#tmp="${dirname#?}"

#if [ "${dirname%$tmp}" != "/" ]; then
#    dirname=$PWD/$dirname
#fi

#获取打包自带的依赖库路径
libpath="$dirname/../lib"

#获取依赖库的绝对路径
cd $libpath
libpath="`pwd`"
cd -

#设置动态库优先搜索打包文件所在的lib
#这里注释是因为在qt.conf中已经配置了。不需要这里设置。
#export LD_LIBRARY_PATH=$libpath:$LD_LIBRARY_PATH


#设置Qt平台插件路径
#这里注释是因为在qt.conf中已经配置了。 不需要这里设置。
#this option is in qt.conf
#pluginpath="$dirname/../plugins"
#cd $pluginpath
#pluginpath="`pwd`"
#cd -

#设置插件搜索路径
export QT_QPA_PLATFORM_PLUGIN_PATH=$pluginpath:$QT_QPA_PLATFORM_PLUGIN_PATH

#是否开启调试信息输出
#export QT_DEBUG_PLUGINS=1


# 所有设置已经完成,执行播放器真正的二进制
# 用exec是因为没有必要保留此脚本pid,这里会自动替换为真正二进制的执行pid
exec "$dirname/$appname" "$@"


11

主题

152

帖子

563

积分

-r--r--r--

Rank: 3Rank: 3

积分
563
zty199 发表于 7 天前 | 显示全部楼层
user0001 发表于 2020-6-29 15:52
没有问题的。
这个脚本的目的其实就是设置运行的环境为打包“沙盒”自己带的lib和plugins,这样app到大部 ...

哇谢谢楼主,收藏了下次打包qt程序用的上了

76

主题

1874

帖子

5543

积分

drw-r--r--

Rank: 7Rank: 7Rank: 7

积分
5543
shenmo 超级版主 发表于 7 天前 | 显示全部楼层
楼主若能提供Appimage包那就简单了
提问前请看置顶的《提问的智慧》提高效率,标题党是不受欢迎的
点进来康康distrowatch?
点我进入聊天室,讨论深度的一切

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 7 天前 | 显示全部楼层
shenmo 发表于 2020-6-29 17:15
楼主若能提供Appimage包那就简单了

准备下个更新用AppImage格式打包。

17

主题

257

帖子

1797

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
1797
nowave 发表于 7 天前 | 显示全部楼层
有几个地方,下次打包 DEB 时,可以考虑修正:

1 lintian 检查 DEB 包
lintian thenewplayerfree-bin.linux.dynamic-build.1.6.6-6.amd64.deb
...
W: thenewplayerfree: missing-depends-line
E: thenewplayerfree: debian-changelog-file-missing
E: thenewplayerfree: no-copyright-file

W: thenewplayerfree: description-synopsis-starts-with-article
E: thenewplayerfree: extended-description-is-empty
E: thenewplayerfree: maintainer-address-missing sudormroot
W: thenewplayerfree: unknown-section media
...


调整 control 文件

Package: thenewplayerfree
Version: 1.6.6-6
Section: video
Priority: optional
Architecture: amd64
Depends: ffmpeg
Installed-Size: 210M
Maintainer: sudormroot <xxx@xx.com>
Description: the best IPTV/vide/iso/blue-ray player for macOS and Linux
xxx


Description 行,第一个字母不要用大写;这行最后面不要有英文标点符号(如点号,逗号,分号等。紧接着下面一行,先空一格再写内容)

-
2. 新建目录 /usr/share/doc/thenewplayerfree/, 放一个 copyright 和 changelog.Debian.gz 文件(可以参考其它软件包的样例)。
其中  changelog.Debian.gz 使用 gzip -9n 选项进行最大化压缩。

3. /usr/share/pixmaps/ 目录下,只需要一个 xxx.png 图片作为主程序图标就够了。推荐 48x48.

4. 符号链接文件,尽可能使用 DEBIAN/ 目录下的安装脚本来操作。包括:preinst (安装前执行), postinst (安装后执行);prerm (卸载前执行), postrm (卸载后执行)。这4个脚本给个 755 执行权限。
具体来说,可能需要使用其中2种: postinst 来创建符号链接,postrm 来清理失效的符号链接。

点评

感谢指正,我又学到了打包的知识。对我帮助很大。  发表于 6 天前

152

主题

816

帖子

5204

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
5204
s9209122222 发表于 7 天前 | 显示全部楼层
本帖最后由 s9209122222 于 2020-6-29 18:56 编辑

阿…在 Manjaro 開啟硬解的話就會馬上崩潰,軟解雖然能播放,但顏色非常糟糕(Samsung Chasing The Light Demo)
然後 CPU 使用率還是 MPV 比較低呀!

  1. (gdb) bt
  2. #0  0x00007ffff688d969 in QString::QString(int, Qt::Initialization) () at /usr/lib/libQt5Core.so.5
  3. #1  0x00007ffff6a4ce4e in  () at /usr/lib/libQt5Core.so.5
  4. #2  0x00007ffff6891474 in QString::fromUtf8_helper(char const*, int) ()
  5.     at /usr/lib/libQt5Core.so.5
  6. #3  0x000000000045adbd in  ()
  7. #4  0x0000000000456f76 in  ()
  8. #5  0x00007ffff680be0f in  () at /usr/lib/libQt5Core.so.5
  9. #6  0x00007ffff669f422 in start_thread () at /usr/lib/libpthread.so.0
  10. #7  0x00007ffff62aabf3 in clone () at /usr/lib/libc.so.6
复制代码



25

主题

661

帖子

2434

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
2434
jzc 发表于 7 天前 | 显示全部楼层
楼主对多媒体有深入研究,点赞  

0

主题

59

帖子

392

积分

-r--r-----

Rank: 2

积分
392
liyongjuncd 发表于 7 天前 | 显示全部楼层
user0001 发表于 2020-6-29 17:18
准备下个更新用AppImage格式打包。

点赞。支持楼主的辛勤付出。

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 6 天前 | 显示全部楼层
jzc 发表于 2020-6-29 20:04
楼主对多媒体有深入研究,点赞

哈哈。我其实一知半解。疫情期间为了解决在macOS上看视频的问题,又不满意用现成的libmpv, VLC或者QMultimedia库,打算从底层的OpenGL渲染到编解码重新写一个。于是有了这个项目。其实我还是啥也不懂。毕竟我不是专业搞音视频编解码的。

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 6 天前 | 显示全部楼层
s9209122222 发表于 2020-6-29 18:45
阿…在 Manjaro 開啟硬解的話就會馬上崩潰,軟解雖然能播放,但顏色非常糟糕(Samsung Chasing The Light D ...

HEVC的硬解可能不支持,导致硬件报错。

你可能对硬件解码有误解。硬件解码的优势是速度,而非质量。对于HEVC, x265这些,特别是10bit的解码,硬件解码的精度是很低的。如果要获得更好的色彩,软件解码是高于硬件解码的。

硬件只支持几种固定格式和基线(baseline)的视频格式,无法做到所有的视频都是硬件解码。这个由显卡硬件解码引擎确定。不是由上层的软件确定的。

3

主题

54

帖子

480

积分

-r--r--r--

Rank: 3Rank: 3

积分
480
vik993 发表于 6 天前 | 显示全部楼层
Ubuntu20.04LTS 系统
安装以后播放视频没有声音 按照说明在设置里将默认音频输出设备改为pulse以后问题解决

希望像PotPlayer一样 加入播放速度调节的功能,同时可以自定义调整步长

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 6 天前 | 显示全部楼层
shenmo 发表于 2020-6-28 19:08
官方和社区商店都欢迎投递


AppImage包已经出来啦。

https://github.com/sudormroot/th ... .6-7.amd64.AppImage

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 6 天前 | 显示全部楼层
zty199 发表于 2020-6-29 14:51
楼主辛苦了......发现一个离谱的问题......我用了某些方法去你的github上下载了新的1.6.6-6(百度云太慢 ...

我已经出了AppImage包。貌似投递更简单了。

152

主题

816

帖子

5204

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
5204
s9209122222 发表于 6 天前 | 显示全部楼层
本帖最后由 s9209122222 于 2020-6-30 10:38 编辑
user0001 发表于 2020-6-30 07:45
HEVC的硬解可能不支持,导致硬件报错。

你可能对硬件解码有误解。硬件解码的优势是速度,而非质量。对于 ...

硬解和軟解的結果應該是要一樣的,有差別的是硬壓和軟壓,顏色好壞應該取決於渲染器。
MPV 的 vaapi 硬解沒有這些問題。

由於不能上傳圖片,沒辦法告訴你實際上差距多大。

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 6 天前 | 显示全部楼层
s9209122222 发表于 2020-6-30 10:31
硬解和軟解的結果應該是要一樣的,有差別的是硬壓和軟壓,顏色好壞應該取決於渲染器。
MPV 的 vaapi 硬解 ...

thenewplayerfree的硬解可能存在bug,这个是事实。

thenewplayerfree是从底层重新实现的,没有依赖于libmpv, VLC或者Qt multimedia库
这个软解的解码和OpenGL渲染都是我手写的。我对渲染和编解码的流程应该是比很多人清楚一些的。。。


渲染器的意思是把解码后的图像,有很多格式,比如软解一般是YUV420P(plannar 422)格式,一些显卡或者处理器硬解的格式是NV12(这个也属于422,属于packed 422格式)

渲染器的意思是把这些像素用贴图的方式送到显卡,显示的方式不是CPU的代码,是所谓的shader(着色器语言)来使用GPU管线进行自动化渲染。

而解码视频的过程,先要进行解复用,所谓的demuxer,然后里面找到对应的视频流,这个时候根据硬件是否支持分别调用底层硬件API进行解码或者软解。

硬件解码的格式是固定的,浮点计算的精度是略低的。不过一般可能不仔细看是分辨不出来的。你这个问问玩高清的人,应该都知道的。

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 6 天前 | 显示全部楼层
v1.6.6-8 is released with the format AppImage and deb respectively. I also provide the raw package for further development purposes.

Enjoy the app!

152

主题

816

帖子

5204

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
5204
s9209122222 发表于 6 天前 | 显示全部楼层
user0001 发表于 2020-6-30 10:46
thenewplayerfree的硬解可能存在bug,这个是事实。

thenewplayerfree是从底层重新实现的,没有依赖于lib ...

那麼你會推薦 vaapi-copy 嗎?
這是 thenewplayerfree 軟解的結果:

這是 mpv 硬解的結果:

7

主题

180

帖子

922

积分

-rw-r--r--

Rank: 4

积分
922
user0001 发表于 6 天前 | 显示全部楼层
update: v1.6.6-9

152

主题

816

帖子

5204

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
5204
s9209122222 发表于 6 天前 | 显示全部楼层
在 Kodi 論壇查到的也是說硬解和軟解沒差耶
For quality purposes, assuming we are not factoring in any kind of 'post processing' effects, no, there will be no difference. Video compression codecs are designed to all decode the same result. If one decoder gave a different output than another, that would mean something was implemented incorrectly.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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