Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

想输出4K,但强制设置分辨率无效,也无法追加使用-vf scale #8

Open
YRFBK opened this issue Nov 6, 2022 · 25 comments
Labels
enhancement New feature or request

Comments

@YRFBK
Copy link

YRFBK commented Nov 6, 2022

录的直播最近推流变成了20M,1080P下B站转码后会糊很多,想使用4K进行上传,但经测试强制设置分辨率无效,也无法追加使用-vf scale
image
设置分辨率无效,文件仍为1080P
image
使用-vf scale无效,报错提示Filtergraph 'scale=3840:2160' was specified through the -vf/-af/-filter option for output stream 0:0, which is fed from a complex filtergraph.

@windowsair
Copy link
Owner

windowsair commented Nov 6, 2022

我不清楚实际的使用场景,我先问几个问题:

  1. 直播源有没有4K输出?
  2. 如果有4K输出,目前项目是不是没有正确获取到4K的输出?
  3. 如果没有4K输出,目前您想做的是不是强制将1080P转为4K?

@YRFBK
Copy link
Author

YRFBK commented Nov 6, 2022

直播源无4K,是20M码率的1080P,想要强制转为4K

@windowsair
Copy link
Owner

但是这样强制转的话,效果肯定是比AI超分的效果差的。

您可以先试试裸视频用ffmpeg放缩到4K,看效果是不是符合您的预期。如果您觉得有必要,后续我可以考虑添加这个功能

@YRFBK
Copy link
Author

YRFBK commented Nov 6, 2022

有进行过ffmpeg放缩测试,效果还算良好
这边推流的码率为20M,1080P经B站转码过审后稿件在2M左右,4K标准的话可以达到10M-16M
BV14D4y1t7Cy 这份是用-vf scale=2664:1442拉出来的稿件,蹭4K观感会比1080P强上很多
有考虑过AI超分,但时效性就……
确有需求,可以的话辛苦添加了

@windowsair
Copy link
Owner

放缩的话不知道会不会很吃性能,待我后续测试下

@YRFBK
Copy link
Author

YRFBK commented Nov 6, 2022

测试了下R5 5600G,使用如下指令处理1080P 20M的视频文件,速率为3.4x
ffmpeg -i input.mp4 -c:v h264_amf -vf scale=-1:1442 -c:a copy -b:v 20m -y output.mp4
改为scale=-1:2160后,速率仅有1.6X了
1442P是蹭B站4K的最低标准,可以的话希望对这个分辨率进行适配添加

@windowsair
Copy link
Owner

N卡这边可以用硬件放缩,但是好像需要专有版本的ffmpeg
A卡似乎没有可以利用的硬件加速= =

@YRFBK
Copy link
Author

YRFBK commented Nov 6, 2022

酱紫啊……那应该是需要专门版本的ffmpeg
群友使用5900X+3080TI进行hevc_nvenc scale=-1:2160的处理,速率为1.8X
虽然一个h265一个h264,但比起我5600G核显的1.6X,这个速度差确实更像是只受到了CPU性能差距上的影响

@windowsair
Copy link
Owner

您好,能否测试下这个版本,添加了对缩放的支持

https://github.com/windowsair/bilibili_danmaku/actions/runs/3411062366

Windows版本的下载地址为
https://github.com/windowsair/bilibili_danmaku/suites/9166890436/artifacts/426895434

在使用的时候需要在config中添加这些内容:

        "output_scale_enable": true,
        "#output_scale_enable": [ "是否要启用输出视频缩放", "该功能可以用于1080P转伪4K等需求,一般不启用",
            "true为启用", "false为不启用"
        ],

        "output_scale_value": "2564:1442",
        "#output_scale_value": [ "缩放的比例, 按照 w:h 的格式进行输入",
            "例如1442P设置为2564:1442", "UHD设置为3840:2160", "4K设置为4096:2160"
        ],

        "output_scale_hwaccel": "none",
        "#output_scale_hwaccel": [ "在缩放时是否要使用硬件加速, 目前ffmpeg仅支持Nvidia卡的硬件加速",
            "设置为nvidia使用nvidia加速",
            "设置为none使用CPU进行计算,即无加速"
        ],

        "output_scale_algo": "bicubic",
        "#output_scale_algo": [ "采用的缩放算法, 可用的算法有如下几种",
            "bicubic 双三次插值(CPU/Nvidia)",
            "bilinear 双线性插值(CPU/Nvidia)",
            "neighbor 最近邻插值(CPU/Nvidia)",
            "lanczos lanczos算法(CPU/Nvidia)",
            "bicublin 亮度分量双三次缩放插值(CPU)",
            "fast_bilinear 快速双线性插值(CPU)",
            "area 平均面积插值(CPU)",
            "gauss 高斯插值(CPU)",
            "sinc sinc插值(CPU)",
            "spline (natural bicubic spline算法)(CPU)",
            "experimental 实验性算法(CPU)"
        ],

根据实际情况进行配置。

我只进行了简单的测试,CPU的话我的机器跑不动,带N卡加速对输出速率基本无影响。

@windowsair
Copy link
Owner

注意修改了上面的内容之后,输出的码率设置也记得修改一下

@windowsair windowsair added the enhancement New feature or request label Nov 7, 2022
@YRFBK
Copy link
Author

YRFBK commented Nov 11, 2022

抱歉久等了,前几天一直是电台720P无法测试,辛苦老师添加功能,非常感谢
实际使用下来并没有很吃性能,但对GPU的占用貌似有点抽象
几份测试样本(3840:2160,bicubic)如下:

5600G+核显 :使用h264编码,CPU占用约20%,GPU占用约10%,两分钟能跑到0.9X
10750H+1650 :使用h265编码,CPU占用约40%,GPU占用约50%
5900X+3080TI :使用h265编码,CPU占用约10%,GPU占用约60%

以上样本均可正常输出,但存在一些问题:

  1. 两位N卡的朋友output_scale_hwaccel设置为nvidia后均会报错无法运行(如下图),设置为none反而可以正常使用

Cache_7f633e77d9bab1e3

  1. 三份样本输出的文件,属性里均会显示非常抽象的码率(90M-170M不等,如下图),不过实际用potplayer查看是正常的22M

`AP1IBG67 0FCCFM~23R9LG
以上是目前的测试结果。虽然存在一些问题,不过大概……能跑就行?(

@windowsair
Copy link
Owner

上面发的是个临时版本,现在又做了一个版本,这个版本基本上可以支持完全的自定义输出视频调整,比如目前的调整尺寸,添加水印等。不过文档还没有写好,得找个时间写下。

关于输出文件,目前你们是直接上传,还是会先用losslesscut等工具先粗切一下?如果有粗切,可以关注一下粗切过后的视频码率。

@YRFBK
Copy link
Author

YRFBK commented Nov 12, 2022

测试了下llc粗切后文件属性里的码率是正常的,不过这点其实没啥实际影响来着。
新版本的完全自定义输出会能帧率转换和填充黑边吗?有一个需求场景是手机推流的竖屏720P 30帧,目前是调整尺寸加黑边,处理成1080P 60帧后再压制弹幕。所用指令和实际效果如下:
ffmpeg -i input.mp4 -vf "scale=-1:1080,pad=1920:1080:656:0,fps=60" -y output.mp4
image
不过这种直播很少遇到,三个多月只出现过两次,所以不能的话也没啥(

@windowsair
Copy link
Owner

只要是用ffmpeg能够处理的,一般来说都可以做到

@YRFBK
Copy link
Author

YRFBK commented Nov 12, 2022

好好好~另外能麻烦老师添加一个是否挂载弹幕的选项吗?能直出4K纯净版的话也可以节约些时间……
直接把danmaku_show_range设置为0的话,担心稳定性还是会受到弹幕数据的影响。

@windowsair
Copy link
Owner

您好,能否尝试下最新的0.0.20版本。

https://github.com/windowsair/bilibili_danmaku/releases/tag/v0.0.20

  1. 关于竖屏720P转横屏1080P
    "adjust_input_video_width": 1920,

    "adjust_input_video_height": 1080,

    "adjust_input_video_fps": 60,
  1. 关于伪4K生成

见这篇文章的最后部分:
https://github.com/windowsair/bilibili_danmaku/blob/master/doc/live_render_custom_feature.md#%E8%B0%83%E6%95%B4%E8%BE%93%E5%87%BA%E8%A7%86%E9%A2%91%E5%B0%BA%E5%AF%B8%E4%BC%AA4k%E7%94%9F%E6%88%90

  1. 关于纯净版直出

应该不会考虑添加这个功能,有很多做得更好的工具,现在我们只专注于处理弹幕。

@YRFBK
Copy link
Author

YRFBK commented Nov 13, 2022

收到收到,辛苦老师了,等下周直播测试一下。
关于纯净版直出4K的工具老师能推荐几个吗?

@windowsair
Copy link
Owner

是说1080P转4K吗?暂时还不知道有啥😳

@YRFBK
Copy link
Author

YRFBK commented Nov 13, 2022

那做的更好的工具是指😵

@windowsair
Copy link
Owner

如果是直出直播源不做处理的,那我觉得BililiveRecorder就挺好的

@YRFBK
Copy link
Author

YRFBK commented Nov 13, 2022

那老师方便加一个弹幕流的开关来支持直出1080P转4K纯净版吗🥺
后压4K只能跑到2-3X,稍微有点慢(

@windowsair
Copy link
Owner

这个可以直接偷懒,这样设置

        "danmaku_show_range": 0,
        "#danmaku_show_range": "弹幕在屏幕上的显示范围,取值为0~1.0,为1时全屏显示",

        "danmaku_move_time": 4611686018427387903,
        "#danmaku_move_time": "滚动弹幕的停留时间(以秒计)",

danmaku_show_range设置为0,danmaku_move_time设置为一个特别大的数就行

@YRFBK
Copy link
Author

YRFBK commented Nov 13, 2022

好好好,收到收到~

@windowsair
Copy link
Owner

还有后续吗🥺

@YRFBK
Copy link
Author

YRFBK commented Nov 27, 2022

啊啊最近事情有点多忘记来反馈了……🥶
1080P转4K 输出纯净/弹幕版均使用正常,就是这俩同时开对性能的要求稍高了
例如10750H+1650,开一个弹幕版就要吃掉一半性能
5900X+3080TI的话,单个任务CPU占用约10%,GPU占用约30%
暂时还没有竖屏720P的直播,其余场景两周使用下来一切正常
之后用到竖屏720P转横屏1080P的话会及时来反馈各样本数据的,感谢充气老师捏😘

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants