libobjc / SGPlayer

A powerful media play framework for iOS, macOS, and tvOS.
MIT License
2.13k stars 413 forks source link

有两个MP4文件不能播放,其他播放器可正常播放(VLC\MPV) #152

Open dosedo opened 1 month ago

dosedo commented 1 month ago

在iOS真机上有两个文件mp4播放失败。 其他的MP4都正常播放,就这俩不行。mkv也可以正常播放。

第一个mp4文件 https://cloud.189.cn/t/aQ7vMjYZfEJr(访问码:akj8) 这是一首3分钟的视频,比较小。格式可能比较特殊。quickplayer不能播放,但vlc与mpv都可以,ffplay也可以。 播放方式,直接拷贝文件到app内。

第二个mp4文件 https://cloud.189.cn/t/J7faqaRb6nYn(访问码:ql0w) 这个是一个电影,1个半小时的时长,文件比较大800多M。 所有其他的播放器都可以播放,ffplay也可以。 播放方式,使用mac自带的阿帕奇映射的http链接。safari浏览器也可以直接播放的链接.

dosedo commented 1 month ago

我发现了第二个mp4文件为什么播放失败了。 在获取metadata的title的值时,char 转NSString失败了,因为UTF8编码,但该视频的title 不是UTF8编码。具体代码在:SGMapping.m 文件的SGDictionaryFF2NS函数的118行代码: `NSString value = [NSString stringWithUTF8String:entry->value];` 我想这里可以对value进行空值判断,UTF8编码失败,转换其他编码。