Media Awesome
Player
- mpv
- vlc
- 命令行音乐播放器
- MusicPlayerDaemon
Metadata
- Audio/Music
- taglib/taglib
- https://taglib.org/
- TagLib Audio Meta-Data Library
- taglib/taglib
- Anime
- Movie & Shows
- Subtitles
- opensubtitle
- https://www.media.io/
- Artwork
- Discogs https://www.discogs.com/
- Cover Art Archive https://coverartarchive.org/
Music Server
- navidrome/navidrome
- GPLv3, Go
- Modern Music Server and Streamer compatible with Subsonic/Airsonic
- owntone/owntone-server
- GPLv2, C+Vue
- 🌟 推荐 - WebUI, 支持较多客户端
- DAAP (iTunes), MPD (Music Player Daemon) and RSP (Roku) media server
- forked-daapd
- DAAP - Digital Audio Access Protocol
- sentriz/gonic
- GPLv3, Golang
- epoupon/lms
- GPLv3, C++
- blackcandy-org/black_candy
- MIT, Ruby
- koel/koel
- MIT, PHP+Laravel+Vue
- koel/docker
- koel/player
- Mobile
- mopidy/mopidy
- Apache-2.0, Python
- MusicPlayerDaemon/MPD
- GPLvv2, C++
- nukeop/nuclear
- AGPLv3, TS
- Streaming music player that finds free music for you
- airsonic-advanced/airsonic-advanced
- GPL-3.0, Java
- mpache/ampache
- PHP
- Icecast
- Ogg Vorbis and MP3 streaming media server
- Gerbera
- UPnP media server
- Subsonic
- Airsonic
- ironsmile/euterpe
- GPLv3, Go
Media Server
- jellyfin
- C#
- fork of Emby
- 🌟 推荐 - 简单易用,开发活跃
- advplyr/audiobookshelf
- GPLv3, JS, Vue
- Radarr/Radarr
- GPLv3, C#
- fork of Sonarr
- Red5/red5-server
- Apache-2.0, Java
- ant-media/Ant-Media-Server
- GPL-3.0, Java
- Red5 fork
- GPL-3.0, Java
- midarrlabs/midarr-server
- MIT, Elixir
- Wizarrrr/wizarr
- user invitation and management system for Jellyfin, Plex, Emby
- causefx/Organizr
- streamaserver/streama
- Kareadita/Kavita
- 漫画
Video Server
- ossrs/srs
- MIT, C++
- RTMP, WebRTC, SRT, GB28181, HLS, HTTP-FLV
- illuspas/Node-Media-Server
- bluenviron/mediamtx
Streaming
- Web/Client
- xqq/mpegts.js
- Apache-2.0, JS, TS
- HTML5 MPEG2-TS / FLV Stream Player
bilibili/flv.js- Apache-2.0, JS
- mediaelement/mediaelement
- HTML5 audio, video
- 支持 MP4, WebM, MP3
- 支持 HLS, Dash, YouTube, Facebook, SoundCloud
- http://www.mediaelementjs.com/
- xqq/mpegts.js
Converter
- ffmpegwasm/ffmpeg.wasm
- C4illin/ConvertX
- AGPLv3, TS
- based on libjxl, resvg, vips, libheif, xelatex, calibre, pandoc, GraphicsMagick, inkscape, assimp, ffmpeg
- https://vididoo.vercel.app/
Library
- livekit/livekit
- Golang
Container
- Matroska
- mkv - viedo
- mka - audio
- mks - subtitle
- mk3d - stereoscopic/3d video
- webm 的基础
Formats
Audio
音乐最佳选择 AAC
- 支持广泛
- 码率支持好
- 音质优先
一般最佳选择 Opus
- 面向 low bit rate, low latency, speech 设计
- 低码率人声 优于 speedx - 适用于 VoIP, WebRTC
- Web 支持程度高, 压缩率高, 同等码率音质优于 mp3, 没有 License 问题
- 支持范围非常广
- amr - Adaptive Multi-Rate
- 专为语音编码设计的压缩格式
- 用于移动电话和语音
- 能够根据网络条件和通话质量自适应地调整编码速率
- 保持相对较低的数据传输速率的同时,最大限度地提高语音质量。
- AMR-NB(Narrowband)
- AMR-WB(Wideband)
- 3GPP标准化
- mp3
- ac3
- aac
- opus
- since 2012
- 非常适合人声
- 目前主流平台都支持
- Rillke/opusenc.js
- Ogg Vorbis
- zero licensing costs
- .dff
- Direct Stream Digital - DSD
- by Sony and Philips for Super Audio CD - SACD
- DST - Direct Stream Transfer 压缩
- wikipedia Direct Stream Digital
- 音乐大多 44.1
- 48 <-> 44.1 无法很好 resample
- https://support.spotify.com/us/article/audio-quality/
- AAC 128kbit/s
- AAC 256kbit/s
- Audio file formats for Spotify
- FLAC/WAV
- Ogg/Vorbis (96, 160, 320 kbps)
- AAC (128, 256 kbps)
- HE-AACv2 (24kbps)
- Youtube Music Audio Quality
- 48kbps AAC
- 128kbps AAC
- 256kbps AAC
- https://superuser.com/questions/1049075
- Low-Bitrate
- TSAC
- Very Low Bitrate Audio Compression
- google/lyra
- Apache-2.0, C++
- Very Low-Bitrate Codec for Speech
- MLow: Meta’s low bitrate audio codec
- TSAC
Image
tip
- 考虑兼容选择 WebP
- Chrome 23+, Firefox 65+, Safari 14+
- 考虑多环境和历史选择 PNG, JPEG
- 考虑未来和成本选择 AVIF
- Chrome 85+, Firefox 93+, Safari 16.1+, 2022+
- https://caniuse.com/avif
- 已有 JPEG 的可以考虑 JPEG XL
- 无损转换JPEG - 对 JPEG 二次压缩体积能减少约20%
Initial | format | name | author | notes |
---|---|---|---|---|
2022-03-13 | .jxl | JPEG XL | JPEG Committee | 可无损重编码JPEG, HDR, 动画, 有损,无损 |
2019-02-19 | .avif | AV1 Image File Format | AOMedia | AV1编码,支持 HDR(10bit/12bit) |
2015-06-29 | .heic, .heif | High Efficiency Image File Format | MPEG | HEVC/H.265 编码,支持无损/有损,支持 HDR(10bit/12bit) |
2010-09-30 | .webp | WebP | 无损/有损,压缩比优于 png,支持动画 | |
1996-10-01 | .png | Portable Network Graphics | PNG Development Group / W3C | RFC 2083, 无损压缩, deflate, 支持透明 |
1992-09-18 | .jpeg, .jpg | JPEG | JPEG Committee | DCT 有损压缩 |
1987-06-15 | .gif | GIF | CompuServe | 支持动画, 8bit,256 色,LZW 压缩 |
1986-09-12 | .tiff, .tif | Tagged Image File Format | Aldus -> Adobe | 无损/有损, LZW, ZIP, 图层、通道、路径,类似 PSD,无 Web 支持 |
1985-11-20 | .bmp | Bitmap | Microsoft | 无损,未压缩, RLE,Windows 位图格式 |
- 矢量
- .svg, .pdf, .eps, .ai
- emf
- Windows Enhanced Metafile
- 相机原始数据格式:
- 相机传感器记录的最原始、未经处理的数据
- .CR2, .CR3 (Canon), .NEF (Nikon), .ARW (Sony)
- 各大相机厂商自己的私有RAW格式
- .dng - (Digital Negative)
- by Adobe
- 标准化 RAW 格式
- 软件专用/工程文件格式
- .psd - Photoshop Document
- .xcf - GIMP
- 专用格式
- .icns - macOS 图标文件
- .ico - Windows 图标文件
- .icb, .tga - Targa 图像文件
- 游戏开发、三维动画
- GoogleChromeLabs/squoosh
- https://squoosh.app
- 对比不同算法
- https://storage.googleapis.com/demos.webmproject.org/webp/cmp/2021_08_10/index.html
- https://storage.googleapis.com/demos.webmproject.org/webp/cmp/2021_06_08/plots.html
- bpp - bits per pixel
- https://web.dev/fast/#optimize-your-images
- Tools
- libvips/libvips
- fast image processing library
- libvips/nip2
- spreadsheet-like GUI for libvips
- lovell/sharp
- Node.js image processing
- 底层基于 vips
- online butteraugli
- libvips/libvips
- Service
- thumbor/thumbor
- MIT, Python
- photo thumbnail service
- imgproxy
- MIT, Go
- JPEG, PNG, WebP, AVIF, GIF, SVG, ICO, HEIC, BMP, TIFF, and animated GIF and WebP
- cshum/imagor
- Apache-2.0, Go
- jpeg, png, gif, webp, tiff, avif, jp2, pdf
- cactus/go-camo
- MIT, Go
- joe-bell/plaiceholder
- 生成 blur dataURL
- strapi-plugin-placeholder
- thoas/picfit
resizing server
- 开发停滞
- cshum/imagorvideo
- Apache-2.0, Go
- video thumbnail
- thumbor/thumbor
- optimizer
- Optimizilla
- TinyPNG
- TinyJPG
- Squoosh
- jpegtran
- pngquant
- imagemin
- jamsinclair/jSquash
- WebAssembly image codecs
- 从 Squoosh 提取
- eval
- cloudinary/ssimulacra2
- BSD-3, C++
- SSIMULACRA 2 - Structural SIMilarity Unveiling Local And Compression Related Artifacts
- google/butteraugli
- Apache-2.0, C++
- HVS-aware image differences
- cloudinary/ssimulacra2
- image difference metrics - RD - rate distortion
- butteraugli
- good detail retention and best color
- slower than PSNR
- 8b image
- SSIM
- better detail retention, worse color handling
- 支持 8b, 10b, 16b
- PSNR
- PSNRHVS-M
- MAE
- FUZZ
- NCC
- SSIMULACRA
- butteraugli
- AVIF
- AV1 的图片格式
- WebP is superior below quality 70
- JPEG is often better than WebP at quality 90 and above
- psycho-visual quality - 心理视觉质量
- YUV/RGB 4:4:4/4:2:2 - Chroma subsampling
- nearly always 4:4:4 originally
- 4:4:4/4:2:2, RGB and lossless isn't supported by main profile HW decoders
- no image editor works in 4:2:0
- JPEG compression, 4:2:0 can be useful
- modern codecs 4:2:0 is not really useful anymore from the compression point of view
- https://twitter.com/kornelski/status/1328786564416200709
- https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4
- compression ratio = uncompressed size / compressed size
- Lossless Image Compression in O(n) Time
- 参考
# squoosh 可通过命令行使用
npx @squoosh/cli --wp2 '{"effort":5,"quality":100,"alpha_quality":95,"pass":1,"sns":50,"uv_mode":3,"csp_type":0,"error_diffusion":0,"use_random_matrix":false}'
Metrics
- How to compare images fairly
- https://ece.uwaterloo.ca/~z70wang/research/ssim/
- https://cloudinary.com/labs/cid22/plots
- https://cloudinary.com/blog/jpeg-xl-and-the-pareto-front
- https://almanac.httparchive.org/en/2024/media#format-adoption
- 2022 -> 2024
- format: jpeg -20%, webp+34%, svg+36%, avif+386%
- bpp: webp 1.1, avif 1.2, jpeg 2.0, png 3.9
- 2022 -> 2024
- https://almanac.httparchive.org/en/2024/media#bits-per-pixel-by-format
# 使用 ImageMagick 比较图片
# SSIM (结构相似性指数) 越高越好 (0-1)
magick compare -metric SSIM original.png compressed.jpg diff.png
# 计算 PSNR (峰值信噪比) 越高越好
magick compare -metric PSNR original.png compressed.jpg diff.png
# 心理视觉
# 越低越好, 0-1.0+
butteraugli original.png compressed.jpg
# https://github.com/cloudinary/ssimulacra2
# -inf..100
ssimulacra2 original.png compressed.jpg
JPEG
tip
- JPEG 依然很有活力
- JPEG 规范没有再更新,但 Encoder/Decoder 还在进化,支持更要的压缩率
- https://jpeg.org/
- impl/encoder/decoder/实现/编码/解码
- mozilla/mozjpeg
- patch for libjpeg-turbo
- google/jpegli
- BSD-3, C++
- 参考
- gen2brain/jpegli
- BSD-3, Go
- wasm, wazero rt
- Go encoder/decoder for JPEG based on jpegli
- https://optimize.photos/
- gen2brain/jpegli
- google/brunsli
- 用于 Google Photos 节省空间
- 无损 JPEG 重压 - 被包含到 JPEG-XL
- lossless JPEG recompression
- https://brunsli.dev
- 实测 16 MB -> 14 MB
- google/guetzli
- JPEG encoder with denser packing
- perceptual JPEG encoder
- https://en.wikipedia.org/wiki/Guetzli
- google/knusperli
- Apache-2.0, C++
- deblocking JPEG decoder
- libjpeg-turbo/libjpeg-turbo
- BSD-3, C
- SIMD 加速
- mozilla/mozjpeg
google/pik- MIT, C++
- JPEG variant
- danielgtaylor/jpeg-archive
- archiving JPEGs for long term storage
- https://cloudinary.com/blog/time_for_next_gen_codecs_to_dethrone_jpeg
- dropbox/lepton
JPEG-XL
- libjxl/libjxl
- BSD-3, C++
EBook
tip
- 书籍推荐 epub
- cb? - Comic Book Archive file - 漫画
- r - RAR
- z - ZIP
- 7 - 7z
- t - tar
- a - ACE
- .chm - Compiled HTML
- .djvu
- scanned documents
- Kindle - .azw; .azw3 or .kf8; .kfx
- Mobipocket - .prc, .mobi
Playlist
Metadata
Misc
Tools
- nanozuki/dantalian
- nilaoda/N_m3u8DL-CLI
- yuanqing/vdx
- MiSTer-devel/Presets_MiSTer
- exiftool
- 不能 write mkv
- mkvtoolnix
- mediainfo
exiftool -ext mp4 -Title= /path/to/files/
# mkvtoolnix
mkvpropedit -l # 属性列表
mkvinfo input.mkv
mkvpropedit input.mkv --tags all: # 移除所有 tag
mkvpropedit input.mkv -d title # 删除 title
mkvpropedit input.mkv --edit track:v1 --delete name # 删除 track:v1 的名字
for i in *.mkv; do mkvpropedit $i -d title; done
for i in *.mkv; do mkvpropedit $i --edit track:v1 --delete name; done
Protocol
- DLNA
- UPnP
- HLS
- Streaming MP3
Online
- https://bigjpg.com/
- 图片放大
- https://jpghd.com/
- 黑白照片上色
- https://remover.zmo.ai/
- 去水印
ML
Awesome
- CoderLine/alphaTab
- MPL-2.0, TS
- cross platform music notation and guitar tablature rendering