0

=== 背景 ===

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

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

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

=== /背景===

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

4

1 回答 1

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

...
New logical stream (#1, serial: 74a4ca90): type vorbis
WARNING: Vorbis stream 1 does not have headers correctly framed. Terminal header page contains additional packets or has non-zero granulepos
Vorbis headers parsed for stream 1, information follows... Version: 0
Vendor: Xiph.Org libVorbis I 20101101 (Schaufenugget)
...

Which disappears after reencoding the file...

At the rate at which I'm currently encoding it will probably take several hours until my whole media library will be completely reencoded... but at least I verified with several samples that it works :)

于 2012-05-17T20:56:55.147 回答