如何从 OGG 文件中删除初始偏移量?

问题描述 投票:0回答:2

===背景===

前一段时间,我从一个网络电台上盗取了很多音乐。不幸的是,似乎出了问题,因为大多数文件的长度显示为几个小时,但它们开始在正确的位置播放。

示例:如果文件确实有 3 分钟长,并且显示为 3 小时,则播放会在 2 小时 57 分钟时开始。

在我升级系统之前,gstreamer是旧版本,它的行为会如上所述,所以我没有太关注。现在我有一个新版本的 gstreamer,它无法正确处理这些文件:它“播放”整个初始偏移量。

=== /背景===

所以这是我的问题:如何修改 OGG/Vorbis 文件以消除无用的初始偏移量?尽管我尝试了多个标签编辑程序,但它们都不允许我编辑这些值。 (有趣的是,easytag 两次都会显示我,但写错了......)

ogg oggvorbis
2个回答
0
投票

我终于找到解决办法了!虽然不太符合我的预期...

尝试了其他几个选项后,我最终得到了以下代码:

#!/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)
...

重新编码文件后消失...

按照我目前编码的速度,可能需要几个小时才能完全重新编码我的整个媒体库......但至少我用几个样本验证了它的工作原理:)


-1
投票

我该如何使用这个,抱歉,我编写的代码不多,而且我有一个显然无限长的文件,我真的很想在我的服务器上使用它,discord soundboard 和 audacity 也无法读取它。这是一个 .ogg 文件。

© www.soinside.com 2019 - 2024. All rights reserved.