debugly / ijkplayer

【持续更新】macOS/iOS video player based on ijkplayer, using FFmpeg 5.1, support Metal、hw accel、HDR、ass subtitle effect...
GNU General Public License v2.0
69 stars 14 forks source link

怎么监听 metadata 变化? #28

Open zhoudajun-ola opened 2 days ago

zhoudajun-ola commented 2 days ago

radio 源:http://stream-uk1.radioparadise.com/aac-320 开始播放会打印如下 metadata 相关日志: [IJKMEDIA] Metadata: icy-br : 320 icy-description : DJ-mixed blend of modern and classic rock, electronica, world music, and more. Always 100% commercial-free icy-genre : Eclectic icy-name : Radio Paradise (320k aac) icy-pub : 1 icy-url : https://radioparadise.com StreamTitle : Montaigne - Gravity (feat. David Byrne) StreamUrl : http://img.radioparadise.com/covers/l/19255_32719d4a-7ef6-4d38-a1da-0bcf96118848.jpg

如何监听 这个MetaData有变化呢;

debugly commented 1 day ago

IJK 当前只解析了通用的一部分Key,如下: https://github.com/debugly/ijkplayer/blob/28eb304416622daadb2e38e43a7788f59979a376/ijkmedia/ijkplayer/ijkmeta.h#L30-L77

你列举的这些应该是自己定义的,meta 处理逻辑没有解析。

zhoudajun-ola commented 1 day ago

我找到了相关信息: https://stackoverflow.com/questions/15245046/how-to-retrieve-http-headers-from-a-stream-in-ffmpeg

https://github.com/wseemann/FFmpegMediaPlayer/blob/788ca8bbd30c0d6dfcd05b7b00c5f72219318366/core/src/main/jni/player/ffmpeg_utils.c#L36 是可以读取icy_metadata 相关信息的; 就是不知道如何监听有变化,大佬能再指教一下吗?感谢

debugly commented 1 day ago

你能告诉我 icy信息多久变化一次吗?我需要测试下

zhoudajun-ola commented 1 day ago

就这个流:http://stream-uk1.radioparadise.com/aac-320 每首歌播放完,推新歌时就会变;

代码中字段:https://www.ffmpeg.org/doxygen/3.0/structHTTPContext.html#a5215502e4b3ef0521e57381151352d08 文档出处:@item icy_metadata_packet https://github.com/FFmpeg/FFmpeg/blob/master/doc/protocols.texi

debugly commented 1 day ago

icy meta 标准都包含了哪些字段知道吗?

zhoudajun-ola commented 1 day ago

可以参考这个说明:https://cast.readme.io/docs/icy 一般只包含 StreamTitle 和 StreamURL

debugly commented 20 hours ago

已经支持,使用 https://github.com/debugly/ijkplayer/releases/tag/0.11.3 试试。