Я хочу сохранить файл .ogg внутри скрипта bash и воспроизвести его позже в скрипте. Я пробовал:
Архивирование .ogg в файл .7z (экономия некоторого пространства), кодирование архива .7z в base64, сохранение этого base64 в моем сценарии и декодирование -> разархивирование -> воспроизведение необработанного потока .ogg.
Кодирование .ogg в base64, сохранение этого base64 в моем скрипте и декодирование-> воспроизведение необработанного потока ogg.
Создание шестнадцатеричного дампа файла .ogg, сохранение этого гексагона в моем скрипте, использование sed для размещения \x
перед каждыми двумя символами гексагона, использование printf для печати гексагона и <<<
его в ogg123
(мой ogg player)
Архивирование .ogg в файл .7z (экономит место), создание шестнадцатеричного дампа файла .7z, сохранение этого гексагона в моем скрипте, используя sed для размещения \x
перед каждыми двумя символами гекс, используя printf для печати гекса, перенаправьте вывод в 7za e -si
и <<<
в ogg123
(мой ogg player)
Ни одна из этих работ. Самый успешный подход, который у меня был:
ogg123 <<< cat sound.ogg
Однако я бы действительно предпочел, чтобы на диск не записывались никакие файлы (я хотел бы сохранить все это в моем сценарии) и, если возможно, не использовать переменную (и) для хранения каких-либо необработанных данных.
Другая проблема заключается в том, что ogg123
не поддерживает чтение из стандартного ввода, поэтому я не могу передать в него любые необработанные данные ogg.
Команды, которые я пробовал: (hex и base64, конечно, усекаются)
$ ogg123 <<< printf 'xae\x0f\x00\xad\x83' # .ogg data
/usr/local/bin/ogg123: Argument list too long
$ ogg123 <(printf 'xae\x0f\x00\xad\x83') # .ogg data
Error opening /dev/fd/63 using the oggvorbis module. The file may be corrupted.
$ S=<<SOUND
dGhpcyBiYXNlNjQgd291bGQgYmUgdGhlIGJhc2U2NCBvZiBteSBvZ2cgZmlsZQ==
SOUND
$ ogg123 <(echo $S | openssl base64 -d)
Error opening /dev/fd/63 using the oggvorbis module. The file may be corrupted.
$ ogg123 <<< echo $S | openssl base64 -d
5?w?k譸?
Я попробовал несколько других команд, однако я случайно вышел из терминала, и эти две были единственными командами, сохраненными в моей .bash_history. Но, поверьте мне, все, что я пытался, ни к чему не привело (я потратил 3,5 часа на это уже безуспешно).
Использование macOS High Sierra 10.13.6, выпуска bash 3.2.57 (1), ogg123 от vorbis-tools 1.4.0, 7za 16.02 (x64), openssl base64
(LibreSSL 2.2.7).