nilaoda / BBDown

Bilibili Downloader. 一个命令行式哔哩哔哩下载器.
MIT License
10.01k stars 1.29k forks source link

Metadata写入description时存在bug,请求增加 跳过写入description信息 功能,或者增加 精简混流 功能 #742

Closed AdiEcho closed 1 year ago

AdiEcho commented 1 year ago

1. 你使用的BBDown版本是什么?(指明 Release / Actions / DotnetTool)

Release最新版和Actions最新版均可复现

2. 你在什么系统使用本软件?(Win/Linux/Mac)

Win

3. 你使用的完整命令是什么?

.\BBDown.exe https://www.bilibili.com/bangumi/play/ep779129 -ia
.\BBDown.exe https://www.bilibili.com/bangumi/play/ep779129 --use-mp4box -ia

4. 遇到了什么问题?

在下载视频后,无论是使用ffmpeg混流还是mp4box混流,使用ffprobe获取视频描述时都存在乱码,且输出不全 其他仓库在混流时没有增加多余的信息,所以想提建议增加一个精简混流功能,只保留视频的基本信息 或者在混流时跳过metadata description参数

5. 运行截图(最好开启--debug;注意自行将Cookie/Token等敏感信息隐藏)

ffmpeg debug输出 image

mp4box开启debug输出后无法成功混流 image

mp4box关闭debug后正常混流 image

ffprobe输出(ffmpeg混流和mp4box混流输出基本一致,都有箭头的乱码) image

bbdown与downkyi下载的视频的ffprobe输出对比 image

gnattu commented 1 year ago

这个有可能是ffprobe默认输出时会truncate metadata导致的,你能不能试试ffprobe -show_format test.mp4,然后看看输出里面的metadata是否是完整的,也就是说或许视频文件是没有问题的

AdiEcho commented 1 year ago

这个有可能是ffprobe默认输出时会truncate metadata导致的,你能不能试试ffprobe -show_format test.mp4,然后看看输出里面的metadata是否是完整的,也就是说或许视频文件是没有问题的

确实是truncate导致的,我这边windows加上-show_format后输出中文乱码了,linux下正常。 而且截断导致的错误的utf8字符仍然存在 image

gnattu commented 1 year ago

我也在本地验证了一下 我认为现在的写入行为是正确并且没有问题的:

  1. ffmpeg正确的将简介用UTF-8编码完整的嵌入了视频文件中,并没有缺损
  2. 使用能够正确读取UTF-8编码的软件可以完整的读到视频文件中的简介

那么出现神秘字符的根源是什么呢?ffmpeg在truncate输出长度的时候并没有按照UTF-8的字符数量去截取,而是简单粗暴的直接截断了一个定长的byte array,这样就很容易导致最后一个字符被从中间截断,成为了UTF-8的无效字符,这个并不是metadata写入出了错而是读取的时候出了错。

应该总体上不影响使用,毕竟最后播放器也好媒体库也好应该都是能正常读取UTF-8的metadata的。Windows Powershell的兼容性问题和ffprobe粗暴的截断不太能从下载器这边来解决

不过精简元数据的下载模式依然是有用的,确实不是所有下载的视频都需要带一大堆metadata