我有很多 ADTS 编码的 MP3 音频文件。不幸的是,我的汽车收音机不支持 ADTS,所以我需要将它们转换为没有传输流的普通 MP3 文件。
有很多人问过同样的问题,但我找到的唯一答案是转换为 wav,然后再将lameenc
其转换回 MP3。
我确信有一种方法可以在不解码/重新编码的情况下转换这些文件。
我已经尝试过ffmpeg
/ avconv
,但该参数-acodec copy
似乎没有输出与 ADTS 不同的任何内容。
我也玩过 GStreamer。有趣的是,我认为是模块 aacparse 至少理解格式,但它不是多路复用器。
我可以使用哪种工具?
$ file badfile.mp3 goodfile.mp3
badfile.mp3: MPEG ADTS, layer III, v2, 64 kbps, 22.05 kHz, JntStereo
goodfile.mp3: Audio file with ID3 version 2.4.0
Run Code Online (Sandbox Code Playgroud)
更新: 我仍在测试,但似乎 1) 还跛脚产生 ADTS 文件和 2) ADTS 并不是我的汽车收音机的真正问题,它必须有所不同。我现在正在使用不同的配置文件和比特率、VBR 和 CBR 进行测试。但是如果有人对 ADTS 有更多了解,这仍然很有帮助。
我想将我在破折号脚本中设置的一些环境变量导出到一个文件中:
myvariable="line 1
LINE=3
some characters: # \" \$
line 5"
myvariable2="abc"
export myvariable myvariable2
Run Code Online (Sandbox Code Playgroud)
预期结果(可用脚本):
declare -x myvariable="line 1
LINE=3
some characters: # \" \$
line 5"
declare -x myvariable2="abc"
Run Code Online (Sandbox Code Playgroud)
结果就是我使用export
命令得到的结果。但它导出所有 envvars 并且不允许过滤。由于变量的多行字符,grep
结果是不可能的。
相比之下,该printenv
命令只允许输出选择的变量,但它不关心转义,并且在此用例中不输出变量名称。
很明显,cp --reflink foo bar
我可以在 btrfs 上复制文件而不会浪费空间。但是我如何检测这两个文件(此处为 foo 和 bar)使用相同的“空间单位”?
如果它们是硬链接,我将用于[ foo -ef bar ]
比较或stat -c%i foo
获取唯一的 id(在本例中为索引节点)。
btrfs reflinked 文件是否有类似的命令?
我想将其应用到 300G 卷上,由于重复数据删除,该卷的大小实际上为 6T,所以我想避免校验和......
在具有 39 个擦除块 (= 4.9 MiB) 的 mtd 分区上,我尝试格式化 ubifs。当保留块减少到最小可能的 1 块时(我知道这不好),生成的文件系统具有 2.2M 未压缩数据的可用空间。这意味着只有 45% 的空间可用于数据。
使用 jffs2 格式化的同一区域允许我写入 4.6 MB 的数据,这是 ubifs 设置中大小的 93% 或两倍以上。
问题是我无法使用 jffs2,因为我的 64 字节 OOB 大小没有为 BCH8 和 JFFS2 OBB 数据提供足够的空间,如TI 警告中所述。
我已阅读常见问题解答章节 为什么我的 UBIFS 卷的容量明显低于同等 JFFS2 卷的容量? 为什么 df 报告可用空间太少? 但我还是不敢相信开销这么大。
我可以做些什么来增加我的(可写)ubifs 卷的可用空间吗?
合并 ubi0 和 ubi1 时是否节省空间?(超过保留块?)
这是我的设置:
$ mtdinfo -a
mtd10
Name: NAND.userdata
Type: nand
Eraseblock size: 131072 bytes, 128.0 KiB
Amount of eraseblocks: 39 (5111808 bytes, 4.9 MiB) …
Run Code Online (Sandbox Code Playgroud) 我只是(再次)为此而挣扎:
# only in bash
NORM=$'\033[0m'
NORM=$'\e[0m'
# only in dash
NORM='\033[0m'
# only in bash and busybox
NORM=$(echo -en '\033[0m')
Run Code Online (Sandbox Code Playgroud)
目标是在字符串中包含特殊字符,不仅用于输出使用echo
,还用于管道到 cli 工具等。
在上面的特定用例中,使用$(tput ...)
可能是最好的方法,但我要求一个通用的转义解决方案,对外部工具的要求最低,但兼容性最高。
通常,我会使用类似[ -z "$BASH_VERSION" ]
但的条件帮助自己
有时,我在剪贴板中有一个文件或字符串列表,并希望将其作为参数列表粘贴到 bash shell 中:
示例文件列表(仅为示例):
createsnapshot.sh
directorylisting.sh
fetchfile.sh
Run Code Online (Sandbox Code Playgroud)
我想要的是:
md5sum createsnapshot.sh directorylisting.sh fetchfile.sh
Run Code Online (Sandbox Code Playgroud)
目前,我输入以下 hacky 命令行(文件名是从剪贴板粘贴的;列表可以包含数十行):
md5sum $(echo $(echo "
createsnapshot.sh
directorylisting.sh
fetchfile.sh
"))
Run Code Online (Sandbox Code Playgroud)
这有几个缺点:
我还有什么其他选择?md5sum "
不起作用,因为在这种情况下,我只得到一个带有多行字符串的参数。类似于here-documents。
并非总是如此md5sum
。它也可以是tar
orgit add
或du -hsc
。我不只是要求一种方法来获取这些文件的 md5 校验和。这种情况每天大约发生 2-5 次。