===背景===
前一段时间,我从一个网络电台上盗取了很多音乐。不幸的是,似乎出了问题,因为大多数文件的长度显示为几个小时,但它们开始在正确的位置播放。
示例:如果文件确实有 3 分钟长,并且显示为 3 小时,则播放会在 2 小时 57 分钟时开始。
在我升级系统之前,gstreamer是旧版本,它的行为会如上所述,所以我没有太关注。现在我有一个新版本的 gstreamer,它无法正确处理这些文件:它“播放”整个初始偏移量。
=== /背景===
所以这是我的问题:如何修改 OGG/Vorbis 文件以消除无用的初始偏移量?尽管我尝试了多个标签编辑程序,但它们都不允许我编辑这些值。 (有趣的是,easytag 两次都会显示我,但写错了......)
我终于找到解决办法了!虽然不太符合我的预期...
尝试了其他几个选项后,我最终得到了以下代码:
#!/bin/sh
cd "${1}"
OUTDIR="../`basename "${1}"`.new"
IFS="
"
find . -wholename '*.ogg' | while read filepath;
do
# Create destination directory
mkdir -p "${OUTDIR}/`dirname "${filepath}"`"
# Convert OGG to OGG
avconv -i "${filepath}" -f ogg -acodec libvorbis -vn "${OUTDIR}/${filepath}"
# Copy tags
vorbiscomment -el "${filepath}" | vorbiscomment -ew "${OUTDIR}/${filepath}"
done
此代码递归地重新编码所有 OGG 文件,然后复制所有 vorbis 注释。这不是一个非常有效的解决方案,但它仍然有效......
问题是什么:我猜这与
ogginfo
的输出有关:
...
新逻辑流(#1,序列号:74a4ca90):类型 vorbis
警告:Vorbis 流 1 没有正确构建标头。终端标头页面包含额外的数据包或具有非零的颗粒位置
为流 1 解析 Vorbis 标头,信息如下... 版本:0
供应商:Xiph.Org libVorbis I 20101101 (Schaufenugget)
...
重新编码文件后消失...
按照我目前编码的速度,可能需要几个小时才能完全重新编码我的整个媒体库......但至少我用几个样本验证了它的工作原理:)
我该如何使用这个,抱歉,我编写的代码不多,而且我有一个显然无限长的文件,我真的很想在我的服务器上使用它,discord soundboard 和 audacity 也无法读取它。这是一个 .ogg 文件。