¿Cómo puedo reproducir una canción en segundo plano a través de mi línea de comando?


13

He instalado play:

sudo apt-get install sox libsox-fmt-mp3

Ahora puedo reproducir mis archivos de audio de esta manera:

play Desktop/SONGS/01\ -\ Oh\ Baby\ Girl.mp3

Como estoy aprendiendo shell, desearía poder hacer algo como esto:

 (sleep 10 ; play Desktop/SONGS/01\ -\ Oh\ Baby\ Girl.mp3 ) &

Después de 10segundos, puedo ver la pantalla como:

 File Size: 7.38M     Bit Rate: 260k
  Encoding: MPEG audio    Info: 2012
  Channels: 2 @ 16-bit   Track: 01/09
Samplerate: 44100Hz      Album: Maalai Pozhudhin Mayakathilaey :::tunesinn.blogspot.com:::
Replaygain: off         Artist: Hemachandra, Achu
  Duration: 00:03:46.98  Title: Oh Baby Girl

Pero la canción no está sonando. Pero si hago esto (sin &):

(sleep 10 ; play Desktop/SONGS/01\ -\ Oh\ Baby\ Girl.mp3 ) 

Funciona como se esperaba. Pero no pude usar mi terminal mientras tanto.

¿Cómo podría resolver mi problema con el uso &?


55
Si solo desea un reproductor CLI para poder reproducir audio en segundo plano, le recomiendo que lo pruebe cmus. Incluso tiene un script cmuscrobblerpara last.fm y puede asignar teclas rápidas globales en el sistema X window a través de cmus-remote. O podría intentar usar una utilidad como screen.
jeremija

cmuses un gran programa, ¡debería ampliar este comentario a una respuesta completa!

Respuestas:


13

El fondo playcon &falla porque playquiere mostrar su estado, por ejemplo

In:12.7% 00:00:27.31 [00:03:07.52] Out:1.20M [!=====|=====!] Hd:0.0 Clip:0  

pero no puede si tiene antecedentes. Entonces sigue esperando hasta que se aborta.

Para resolver esto, simplemente ejecute playcon el -qinterruptor (silencioso). Esto lo pondrá en segundo plano con éxito y playterminará cuando la canción termine.

(sleep 10; play -q Desktop / SONGS / 01 \ - \ Oh \ Baby \ Girl.mp3) &

Puede detenerlo escribiendo killall play(si no se están ejecutando otras instancias de reproducción) o kill $!(si no ha puesto en segundo plano otros procesos en el mismo terminal después de iniciar la reproducción: $! Le proporciona el PID del último proceso en segundo plano)


Esto funciona. ¿Pero cómo es que ahora dejo de tocar la canción?
Ant

2
Puede detenerlo escribiendo killall play(si no se están ejecutando otras instancias de reproducción ) o kill $!(si no ha puesto en segundo plano otros procesos en el mismo terminal después de comenzar la reproducción , $!le da el PID del último proceso en segundo plano)
ish

3

hay una mejor manera de ejecutar cosas en el "fondo" desde la línea de comandos.

sudo apt-get install screen

Es uno de los programas de línea de comandos más ingeniosos para Linux. le permite tener algo similar a "pestañas en un navegador" y cambiar sin problemas entre ellos sin ninguna interrupción de los programas en ejecución. Sin embargo, no son pestañas en el programa del terminal. Pero dentro de ese caparazón específico has comenzado.

una vez instalado, inícielo escribiendo

screen 

en una terminal

crea nuevas "pestañas" con ctrl-A c cambia a la siguiente pestaña con ctrl-A n

Aquí hay un tutorial más completo si encuentra las páginas de manual difíciles de entender


0

Mis acciones Nautilus para agregar "Reproducir" y "Detener" al menú contextual para archivos de audio

Para agregar reproducción ...

Defina una nueva acción de la siguiente manera

"Pestaña Acción"

  1. Casilla de verificación marcada para "Mostrar elemento en el menú contextual de selección"
  2. Nueva etiqueta de contexto de acción = Jugar
  3. Información sobre herramientas = Reproducir audio
  4. Icono = inicio de reproducción de medios

"Pestaña de comandos"

  1. Etiqueta = Jugar
  2. Ruta = / usr / bin / play -q
  3. Parámetros =% f
  4. (Opcional W / Efectos) Parámetros =% f rate -v vol .25 graves +5 agudos +5 reverberación
  5. Directorio de trabajo =% d

"Pestaña Ejecución"

  1. Casilla de verificación marcada para "Normal"

"Pestaña Mimetypes"

  1. Añadir audio / MPEG
  2. Añadir audio / flac
  3. Añadir audio / x-wav

O agregue más si es necesario o déjelo solo para que aparezca en todas partes.

El resto se puede dejar solo.


Para agregar Stop ...

Defina una nueva acción de la siguiente manera

"Pestaña Acción"

  1. Casilla de verificación marcada para "Mostrar elemento en el menú contextual de selección"
  2. Etiqueta de contexto = Detener
  3. Información sobre herramientas = detener audio
  4. Icono = parada de reproducción de medios

"Pestaña de comandos"

  1. Etiqueta = Parar
  2. Ruta = killall
  3. Parámetros = jugar
  4. Directorio de trabajo =% d

"Pestaña Ejecución"

  1. Casilla de verificación marcada para "Normal"

"Pestaña Mimetypes"

  1. Añadir audio / MPEG
  2. Añadir audio / flac
  3. Añadir audio / x-wav

O agregue más si es necesario o déjelo solo para que aparezca en todas partes.

El resto se puede dejar solo.


Ajuste según sea necesario. Juegue con las opciones de efectos, consulte la página de manual de sox para más información sobre eso ... manpages.ubuntu.com/manpages/raring/en/man1/sox.1.html
eliminado el

2
¿Cómo responde esto a la pregunta sobre cómo ejecutar esto desde la línea de comandos ? Su respuesta parece ser sobre Nautilus, un administrador de archivos habilitado para GUI. Es una buena respuesta, pero para una pregunta diferente.
gertvdijk

Porque es una forma rápida y genial de hacer esto, aunque no es una respuesta de línea de comando. No se pudo encontrar una pregunta que se ajuste a la respuesta en este caso.
eliminado

0

yo suelo

cvlc --play-and-exit "$filename" &>/dev/null &

vlc es bastante ubicuo.


0

Hay muchos jugadores en el mercado. Puede probar el código abierto, que es código abierto y multiplataforma. Es mplayer. Pruebe este comando para verificar si está allí o no.

mplayer --help 
man mplayer

Verá el manual o la documentación de este comando. Puedes reproducir el archivo de audio. Revisa tus conductores. Debe tener controladores antes de usarlo. Si no tiene este reproductor, instálelo con el comando apt en Ubuntu 16.04 LTS o el comando apt-get.

sudo apt install mplayer

o

sudo apt-get install mplayer

úselo simplemente escribiendo mplayer y el nombre del archivo después de eso.

mplayer file_path

0

Esto funcionó para mí con mplayer

nohup mplayer  SomeSong.mp4 > /dev/null 2>&1 &
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.