Megjelent az MPlayer fork, az mpv-player új kiadása

Címkék

Az mpv egy MPlayer-fork, ami néhány évvel ezelőtt indult útjára. A projekt most bejelentette, hogy elérhető 0.36.0-s kiadása. Ez a kiadás FFmpeg 4.4-et vagy újabbat igényel.

New

  • player: add window-id property
  • vo_kitty: introduce modern sixel alternative
  • wayland: add wp-fractional-scale-v1 support
  • player/command: add user-data property (replacement for shared-script-properties)
  • vo_gpu_next: support mapping HDR10+ dynamic metadata
  • vo_gpu_next: allow screenshots in native colorspace
  • vo_gpu_next: parse Dolby Vision metadata for dynamic scene brightness
  • video: allow csp equalizer adjustments with floating point precision
  • command: add platform property
  • demux_mkv: support ARIB captions
  • hwdec_vulkan: add support for Vulkan-based hardware decoding
  • player: better handling of forced-only subtitles and a toggle in the OSC
  • vo_dmabuf_wayland: add osd support

Changed

  • TOOLS/umpv: prefer $XDG_RUNTIME_DIR
  • ffmpeg: increase minimum required version to 4.4
  • player: choose speed of smallest acceptable factor for display sync
  • player: don't force saving start in watch-later-options
  • build: officially deprecate waf
  • vf_sub: undeprecate
  • player: set playlist title to media title if not set already
  • player: use and respect XDG_STATE_HOME and XDG_CACHE_HOME by default
  • wayland: bump required version to 1.20 and wayland-protocols to 1.25
  • ao_pipewire: require at least libpipewire 0.3.48
  • vo: hwdec: prioritise drmprime over drmprime_overlay
  • vo_gpu/vo_gpu_next: enable gpu shader and icc cache by default

Removed

  • drm: remove support for legacy (non-atomic) API
  • stream/dvb: drop support for DVB API before Linux 3.7
  • hwdec_cuda: drop support for PL_HANDLE_WIN32_KMT (Windows 7 only)
  • vo_dmabuf_wayland: drop linux-dmabuf-v2 support

Options and Commands

Added

  • player: add --force-render option
  • demux: add --demuxer-hysteresis-secs option to save power with caching
  • ao_pipewire: allow usage of global volume control via --pipewire-volume-mode
  • vo_gpu_next: add --tone-mapping-visualize
  • sub: add --sub-fonts-dir and --osd-fonts-dir options
  • player: add --auto-window-resize
  • console.lua: add a script-opt for the border size
  • player: add --drag-and-drop option
  • vo_gpu_next: add --corner-rounding option
  • player: add more precise sub fallback options --subs-fallback and --subs-fallback-forced
  • player: add --input-cursor-passthrough option
  • TOOLS/lua/autoload: allow extending ext sets from script-opts
  • demux_playlist: add --directory-mode option to control recursive directory loading
  • vo_gpu_next: add --target-contrast and --hdr-contrast-recovery/smoothness

Changed

  • vd_lavc: add "auto" choice for --vd-lavc-dr and make it the default
    (notably this change was also backported to v0.35.1)
  • wayland: add auto choice to --wayland-configure-bounds
  • image_writer: change --screenshot-tag-colorspace default to yes
  • vo_gpu_next: expose --tone-mapping=st2094-40 and st2094-10
  • wayland: make --wayland-edge-pixels-pointer default to 16
  • options: enable scripts related opts also with cplugins
  • player/screenshot: add filename return field
  • options: set --subs-with-matching-audio to off by default
  • options: default --slang to auto, which uses the settings of the user's OS
  • vd_lavc: allow user to specify a priority list in --hwdec
  • vd_lavc: map hwdec=yes to hwdec=auto-safe and change ctrl+h to use auto-safe

Deprecated

  • drm: deprecate --drm-atomic (now always enabled)

Removed

  • vo_gpu_next: remove --tone-mapping-crosstalk

Fixes and Minor Enhancements

  • ao_pipewire: log version and other useful debug info
  • wayland: error out if essential protocol support is missing
  • wayland: add support for content-type protocol
  • wayland: also log refresh rate on surface entrance
  • vo_gpu_next: fix undefined behavior on alpha-first formats
  • meson: prepend MPV_CONFDIR path with prefix
  • meson: unbreak dl check on BSDs without libdl
  • lcms: fix crash with lcms2-related options if lcms is disabled
  • meson: fix stdatomic detection on bsd
  • osc: don't spam window-controls bindings on every render
  • wayland: check for resize/move in touch event first
  • ao_coreaudio: use device's nominal sample rate for latency properties
  • hwdec_drmprime: support yuv420p format
  • ao_pipewire: properly clean up resources
  • vo/{sixel,tct}: use the alternate buffer to restore terminal
  • vo_sixel: add option to skip clear while drawing
  • filter_kernels: fix kaiser
  • hwdec/d3d11va: fix a possible memory leak
  • external_files: set log level for potential files to trace
  • external_files: recognize webp files as cover art
  • vo_opengl: do not blindly reject all Microsoft's OpenGL implementations
  • ao_coreaudio: use AudioUnitReset as ao_driver.reset to prevent long restart
  • hwdec_drmprime: fix memory leak
  • vo: hwdec: fix libdrm-related memory leak
  • draw_bmp: ensure last slice width is less than total width
  • demux: boost read EBU R128 gain values to ReplayGain's reference level
  • version.py: bump copyright year
  • TOOLS/umpv: support shell-quotes in $MPV
  • vulkan: fix build error for 32bit builds with clang
  • TOOLS/lua/autoload: improve and optimize the natural sorting
  • vo_wlshm: properly support video panscan
  • vo_dmabuf_wayland: support panscan and panning
  • ra_d3d11: fix incorrect type
  • meson: also search for rst2html with .py extension
  • audio: fix crash during uninit with ao_lavc
  • wayland: only warn about GNOME when actually missing idle inhibit support
  • mp_image: fix XYZ primaries default
  • msg: preserve early messages when log-file is set in mpv.conf
  • x11: fix issue with xpresent timing feedback
  • meson: reuse libmpv objects for cplayer to save 50% of compile steps
  • player/client: support observing sub-properties
  • m_property: implement new deletion operation on properties
  • vo_lavc: set frame rate on encoder to fix non-conforming outputs
  • player/video: don't resync audio if video is an image
  • stream: accept webdav:// and webdavs:// urls
  • video/image_writer: avoid stripping colorspace info when writing image
  • stats.lua: display HDR peak in nits
  • image_pool: fix memory leak with frames
  • options: transition from OPT_FLAG to OPT_BOOL
  • vd_lavc: sort hwdecs without hwdevices last for autoprobing
  • ytdl_hook: don't overwrite force-media-title
  • lua: use user-data for interop between osc.lua and console.lua
  • vo: fix race condition with redraw requests
  • various: more fixes to ensure correct playback of XYZ colorspace
  • ytdl_hook: fix fragment-related issue that broke YouTube DASH playback
  • command: expose hls-bitrate and program-id as track-list subproperties
  • ao_pipewire: use realtime scheduling for data thread
  • auto_profiles: check for non-existent properties
  • d3d11: retry device creation without debug, if SDK is not available
  • win32: follow Windows settings and update dark mode state
  • ytdl_hook.lua: fix clip start and end
  • hwdec_drmprime: support custom rpi4_8 and rpi4_10 formats
  • sub: fix UPDATE_SUB_HARD for converted and external subtitles
  • charset_conv: fix memory corruption in mp_iconv_to_utf8
  • options: read config file as stream
  • wayland: improve guessing when mpv is focused
  • player: always try to detect subtitle language from file name
  • vo: fix mp_frame_perf thread safety
  • lua: read_options: find script-opts prefix at index 1 exactly
  • path: handle URLs consistently in mp_basename
  • ao_wasapi: remove infinite loop hack in AOCONTROL_UPDATE_STREAM_TITLE
  • ao_wasapi: use client name instead of hardcoded string
  • vd_lavc: fix crash if hwdec devices fail to create
  • vo_drm: fix null dereference and using closed fd
  • image_writer: respect jpeg-quality when using ffmpeg for writing
  • image_writer: add support for AVIF
  • TOOLS/lua/autoload: avoid unnecessary playlist manipulation, performance
  • various: correctly ignore cache files with --no-config
  • terminal-unix: better error detection logic
  • json: raise parse depth to 50 for the sake of utils.parse_json()
  • player: delete watch_later file only after successful load
  • wayland: fix memory leak with multiple monitors
  • vd_lavc: prefer d3d11va-copy over dxva2-copy
  • vd_lavc: fix hwdec for videos with less than less than 3 frames
  • wayland: add support for suspended toplevel state
  • draw_bmp: ensure last slice is less than total width (again)
  • console.lua: sort the output from the help command
  • vd_lavc: try other hwdecs when falling back after an hwdec failure
  • sd_ass: don't reconfigure ass on every frame (performance regression)
  • sd_ass: fix converted subtitles having too-wide borders
  • loadfile: compute audio language for sub selection when using lavfi-complex
  • wayland: fix modifier keys in certain situations
  • vd_lavc: corrections towards hwdec and swdec fallback
  • zimg: fix broken sig_peak (HDR) handling
  • screenshot: implement screenshot window in sw for most VOs
  • osc: don't add margins to osc-deadzonesize
  • vo_vaapi: fix segfault in draw_osd
  • vo_dmabuf_wayland: correctly handle force-window
  • ao_pipewire: fix error with pipewire 0.3.75 or later

This listing is not complete. Check DOCS/client-api-changes.rst for a history
of changes to the client API, and DOCS/interface-changes.rst for a history
of changes to other user-visible interfaces.

A complete changelog can be seen by running git log v0.35.0..v0.36.0
in the git repository or by visiting v0.35.0...v0.36.0.

Hozzászólások

Márciusban küldtem be pull request-et, de nem lett merge-elve egyelőre, mert a reviewer-nek is van implementációja ugyanarra, csak az nem működik még és nem igazán sieti el az én patchem review-elését. Ti mit szoktatok csinálni ilyenkor?

Gondolom v4l support meg mindig nincs. Pedig lassan kene keresni valami replacementet a 0.29.1-nek, mert igy soha nem fogok majd tudni ffmpeg-et frissiteni.

I hate myself, because I'm not open-source.

Hat nalam ez van a manpageben:

       tv://[channel][/input_id] --tv-...
          Analogue TV via V4L. Also useful for webcams. (Linux only.)

Fogalmam sincs hod kod szintjen ez tenyleg azt jelenti hogy van benne meg v4l1 tamogatas is, vagy csak nem irtak at a manpage-et, mindenesetre a mpv tv:// --tv-driver=help az v4l2-t emlit csak, ertheto okokbol. Na, de igen, ez kell nekem, language lawyer.

I hate myself, because I'm not open-source.

Hátöö, nem tudom te mit használsz, de gyanítom, hogy modernebb stuffokra nem lesz már v4l1, mivel nagyon régóta nincs kernelben sem.

Mi indokolja, hogy neked az kell és nem a v4l2? Valami egzotikus és már nem támogatott hw?

Egyébiránt az általad megadott parancs opciókat nálam már nem is ismeri az mpv, ezt a formát utoljára jó rég még mplayernél láttam.

Nem tudom miről beszélsz, hogyhogy kidobták?
Nálam a
$mpv --demuxer-lavf-format=video4linux2 --demuxer-lavf-o-set=input_format=mjpeg av://v4l2:/dev/video0
simán megy mint fentebb is írtam, az eszköz interált webcam usb buszon.

$ mpv --version
mpv 0.36.0 Copyright © 2000-2023 mpv/MPlayer/mplayer2 projects
built on Sun Jul 23 05:49:29 2023
libplacebo version: v5.264.1
FFmpeg version: n6.0 ...

Ez bőven 0.30 verzió utáni.

Jo de ez nem mpv, ez valami iszonyat ffmpeg/libavcodecs magia, ami epp hogy kifer egy sorba, meg szerencse hogy nem kell hozza egy 3 soros filter_complex. Nalam mpv tv:// es kesz. At kell irni a devicet? --tv-device=/dev/videoN. Mas resolution? --tv-width=X --tv-height=Y.

Lua scripteles meg van, vagy azt is kicserelten brainfuckra, mondvan az is turing teljes?

I hate myself, because I'm not open-source.

Megy ennyivel is: mpv av://v4l2:/dev/video0

Lásd: https://mpv.io/manual/stable/#protocols

Mondjuk tényleg szörnyű, hogy a v4l2 eszközre, ami rég nem csak tv lehet már nem tv:// a protokoll.

Paraméterezni valóban a libavformatnak átadandó paraméterekkel lehet (erre lehet mondani, hogy mágia :D ), felbontást pl így:

--demuxer-lavf-o=video_size=1280x720

De mondjuk elég jól van dokumentálva, pl lua scripting is van: https://mpv.io/manual/stable/#lua-scripting

A "kidobott" v4l support pedig itt: https://github.com/mpv-player/mpv/wiki/Video4Linux2-Input

Mondjuk tényleg szörnyű, hogy a v4l2 eszközre, ami rég nem csak tv lehet már nem tv:// a protokoll.

Mondjuk ez volt az masik bajom amig volt updatelt mpv-m, hogy minden egyes verzio update kivetel nelkul elrontrott valami scriptemet, mert mindig at kellett nevezni egy par parametert csak hogy nehogy ugy hivjak mint regen.

De amugy talaltam egy jot igy random belenezve a doksiba:

Before mpv 0.33.0, the X11 backend ran xdg-screensaver reset in 10 second intervals when not paused in order to support screensaver inhibition in these environments. This functionality was removed in 0.33.0, but it is possible to call the xdg-screensaver command line program from a user script instead.

Miert van egy olyan erzesem hogy ezutan mar a screensaver letiltas se mukodne? De nagyon kedves hogy user scriptbol megirhatom, tenyleg, igazabol ez az mpv nem is egy medialejatszo akar szerintem lenni, hanem valami lib, amivel egy hangyafasznyit egyszerubb egy media playert irni mint a nyers ffmpeg apikat felhasznalva.

I hate myself, because I'm not open-source.

Én is megerősítem, Arch Linux, ugyanazon mpv verzió, mint nálad, simán megy az mpv av://v4l2:/dev/video0, még csak ilyen demuxer mókolás se kell hozzá. Ez valami BSD-s korlát lesz inkább, ami a v4l2-t érinti, nem is az mpv-t.

Megint más, hogy én erre nem az mpv-t használom, hanem az ffmpeg-et, de kb. ugyanaz.

The world runs on Excel spreadsheets. (Dylan Beattie)