воспроизводить mp3-файл сразу после его загрузки

Как объединить эти две разные команды в один скрипт:

$ wget http://mymusic.store.com/musicfoo.mp3 #file gets saved as musicfoo.mp3 $ mplayer musicfoo.mp3 

wget пытается сохранить файл на диск с именем / расширением по умолчанию файла (как в Интернете) … в моем mp3-файле … mplayer использует этот файл в качестве аргумента для его воспроизведения.

Любая идея, как я могу объединить это с одним сценарием?

  • Загрузка с динамически изменяющихся URL-адресов через скрипт
  • Не удалось загрузить содержимое веб-сайта
  • wget -k не конвертирует все ссылки
  • Почему wget сохраняет рекурсивные данные, несмотря на -l5?
  • вывод команды curl в переменной
  • Есть ли способ использовать завиток в интерактивном режиме? Или есть интерактивная оболочка curl / wget?
  • Как запустить HTTP-запрос без использования CURL
  • Wget не загружает изображения в рекурсивную загрузку
  • 4 Solutions collect form web for “воспроизводить mp3-файл сразу после его загрузки”

    Воспроизвести файл напрямую

    Вам не нужно даже загружать эти файлы, прежде чем воспроизводить их с помощью mplayer . На странице mplayer man:

    выдержка

      mplayer [options] [file|URL|playlist|-] 

    Таким образом, mplayer может напрямую воспроизводить URL-адреса.

    пример

     $ mplayer http://mymusic.store.com/musicfoo.mp3 

    Представление

    Вам, вероятно, придется настроить значения кеша, чтобы заставить mplayer плавно воспроизводить ваш контент. В mplayer есть несколько переключателей, которые позволяют это делать.

    выдержка из mplayer man page

     -cache <kBytes> This option specifies how much memory (in kBytes) to use when precaching a file or URL. Especially useful on slow media. -cache-min <percentage> Playback will start when the cache has been filled up to <percentage> of the total. 

    Поэтому, возможно, что-то вроде этого, вы будете играть с этими значениями, чтобы добиться плавного воспроизведения вашей ситуации.

     $ mplayer -cache 8000 -cache-min 30 http://mymusic.store.com/musicfoo.mp3 

    Скачать и играть

    Другой способ, обсуждаемый в некоторых других ответах, – использовать wget для загрузки, а затем воспроизвести файл. Врожденная проблема с этим подходом заключается в том, чтобы получить имя файла, после того как файл будет загружен.

    скручивание в mplayer

    При таком подходе в нем есть фактически 2 метода. Первый заключается в использовании wget или curl для запуска загрузки, а затем для передачи данных в mplayer .

    пример

     $ wget http://mymusic.store.com/musicfoo.mp3 -O - | mplayer - 

    Вы также можете кэшировать загрузку здесь, как и раньше:

     $ wget http://mymusic.store.com/musicfoo.mp3 -O - | mplayer -cache 8192 - 

    curl 1st, затем mplayer

    Другой способ – загрузить файл, а затем воспроизвести его. Вы можете использовать функцию Bash для ее переноса, поскольку теперь она становится двухэтапным процессом, когда файл полностью загружается первым, а затем воспроизводится потом.

    пример

     $ function smplayer() { wget $@ && mplayer $(basename $@); } 

    Затем, чтобы выполнить загрузку и воспроизведение, вы должны запустить такую ​​функцию:

     $ smplayer http://mymusic.store.com/musicfoo.mp3 

    Пытаться:

     wget http://mymusic.store.com/musicfoo.mp3 && mplayer musicfoo.mp3 

    && означает «после успешного завершения левой команды». Это предполагает, что команда на левой стороне не вилка или использование нестандартных значений статуса выхода . Я сомневаюсь, что wget делает последнее, и до тех пор, пока вы не используете ключ -b , он тоже не должен делать первый.

    Попробуй это :

     mkdir /tmp/download_$$ cd /tmp/download_$$ wget http://mymusic.store.com/musicfoo.mp3 mplayer * 

    У меня есть решение:

     fpath=$(basename "$1") wget $1 mplayer $fpath 

    Вышеупомянутая проблема заключается в том, что wget присваивает имя файла загруженному файлу (добавляет конец .1 к его концу), если имя файла уже существует. Следовательно, значение fpath не является правильным файлом, так сказать.

    Interesting Posts

    Перенаправить stdout и stderr и переопределить опцию noclobber

    Как использовать bindfs для создания общей папки между окружением chroot и ее хостом

    Проблема с libx11.so.6: undefined symbol: xcb_wait_for_reply64

    Выключение ПК после приостановления процесса терминала (apt-get upgrade)

    Как установить трубку процесса после замены процесса в bash, чтобы процесс продолжался после завершения скрипта?

    список графических процессов из терминала

    Ошибка авторизации сервера!

    Как узнать, как совпадают матчи соответствия fc?

    sed заменяет только строки с соответствующими группами

    Почему пакеты .so предоставляются пакетами devel?

    m4, используя переменное количество вкладок для выравнивания столбца

    Убитые `rm` и` cp` на долю nfs

    Пользовательские живые режимы – способы обнаружить, что он запущен внутри виртуальной машины (или вообще не запускается в виртуальной машине)

    Как проверить / протестировать внутреннюю скорость чтения карт

    Как init определяет, какие устройства должны modprobe?

    Linux и Unix - лучшая ОС в мире.