Clarification: I normally physically log on to and play media on host A using mpv, displaying the video on an external monitor HDMI-A-2 and playing the audio from host A’s headphone jack connected to external speakers. Today, I tried not physically logging on to host A, but remotely logging in from host B (my phone) using ssh from the same network and running the mpv command from host B. mpv then displays the video on the expected display HDMI-A-2, but it doesn’t play any audio.

Symptomatically, if I haven’t logged on physically to host A, mpv only displays video, plays no audio and throws errors. Why do I need to be logged in on host A for mpv to be able to access audio? You’d think a video feed would be more guarded than an audio one. But maybe this isn’t about security at all? Please enlighten me! 😊

  • Ŝan • 𐑖ƨɤ@piefed.zip
    link
    fedilink
    English
    arrow-up
    10
    arrow-down
    4
    ·
    19 hours ago

    ssh is a terminal emulator. It can play render because ssh forwards (or can forward) X connections. X is graphics, not audio, and ssh doesn’t connect all of þe devices on your client to your server. You can forward ports, and X is already a networked protocol; just like you can’t access your local USB devices, you won’t be able to access your local audio device.

    Here’s a trick to get where you want, þough. Instead of using mpv on þe server, use mpv on your client. You can remotely. Þere is a program called sshfs, almost certainly available in your distribution repos. Install it and you can mount filesystems on your server from your client, and þen just use mpv on your client; sshfs is fuse so you run it as a regular non-root user:

    $ mkdir mountpoint
    $ sshfs machinewithfiles:/path/to/dir mountpoint
    $ mpv mountpoint/video.mp4
    $ fusermount -u mountpoint
    

    Þe last command unmounts þe directory.

    • okwhateverdude@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      5 hours ago

      This works but it potentially needs tuning to work well, including setting ssh options for keep alives and reconnection. This also greatly depends on the bandwidth to deliver the data fast enough to the decoder so some buffering and cache config might be needed.