0

我正在尝试将章节添加到包含 vorbis 音频的 ogg 文件中。

这个链接我复制了以下 ffmpeg 命令。

ffmpeg -threads auto -y -i in.ogg -i metadata_OGG.txt -map_metadata 1 -codec copy out_METADATA.ogg

我的 metadata_OGG.txt 文件如下所示。

CHAPTER00=00:00:00.000
CHAPTER00NAME=Chapter 01
CHAPTER01=00:00:05.000
CHAPTER01NAME=Chapter 02
CHAPTER02=00:00:10.000
CHAPTER02NAME=Chapter 03

我收到以下错误。

[ogg @ 00000000006d6900] Unsupported codec id in stream 0
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

但是,如果我更改-codec copy-acodec copyffmpeg 中没有错误,但文本文件将转换为视频。即输出文件将有一个静态视频帧,其中包含 metadata_OGG.txt 的文本。此外,我在转换过程中观察到以下日志消息。

  Stream #1:0 -> #0:0 (ansi (native) -> theora (libtheora))
  Stream #0:0 -> #0:1 (copy)

有人请告诉我这里出了什么问题吗?

另外,我想知道将章节添加到 ogg 的正确方法是什么。我也搜索了一些工具。我没有得到任何东西。

4

3 回答 3

0

Opus 在这里被提到过。我试图在编码opusencopus-tools添加章节,但在任何地方都找不到命令行示例。感谢这个线程中的提示,我设法弄清楚了,也许有人会觉得它有帮助。

opusenc --comment "CHAPTER000=00:00:00.000" --comment "CHAPTER000NAME=Hello" --comment "CHAPTER001=01:23:45.678" --comment "CHAPTER001NAME=World" input.wav output.opus

章节键/值方案是前面提到的Ogg/Matroska方案。当然,--title, --artist可以添加更多元数据选项等。

使用ffmpeg添加章节给我带来了两个问题:ogg/opus 输入文件中的艺术品图像在输出文件中丢失,ffmpeg 拒绝空END章节时间。

我在 Windows 10 上使用

  • opusenc opus-tools 0.2-3-gf5f571b (using libopus 1.3)
  • ffmpeg version 4.4.1-essentials_build-www.gyan.dev
  • opusinfo, MPC-HC (64-bit) v1.7.11 和 VLC Media Player 3.0.14 Vetinari 确认。
于 2021-11-17T10:27:25.400 回答
0

我发现了这个问题。

要使 ffmpeg 正常工作,元数据文件应具有以下标头。

;FFMETADATA1

我按照ffmpeg 文档中为 metadata给出的步骤。

但问题并没有完全解决。

通过上述步骤,我可以将元数据添加到 mp4、mkv 和其他容器文件,但不能添加到 ogg 文件。我不确定 ffmpeg 是否支持向 ogg 文件添加章节。

于 2018-03-21T05:17:56.207 回答
0

这是使用ffmpeg4.3.1 对我有用的方法。

我有一个几乎尊重ffmpeg数据文件格式的元数据文件

;FFMETADATA1
title=Evolution theory

[CHAPTER]
TIMEBASE=1/1000
START=0
END=
title=Darwin's point of view

[CHAPTER]
TIMEBASE=1/1000
START=78880
END=
title=Genghis Khan's children

请注意,文件格式需要END时间,但在我的情况下,将其留空并不麻烦。

现在我将章节信息添加到我的 opus/ogg 文件中:

ffmpeg -i darwin.opus.ogg -i darwin_chapters.txt -map_metadata 1 -c copy darwin_withchapters.opus.ogg

注意:如果你想从文件中覆盖现有的章节信息,你可能需要在上面的命令行中添加一个-map_chapters 1参数。ffmpeg

这将创建文件darwin_withchapters.opus.ogg。我检查章节信息是否确实已添加到文件中:

opusinfo darwin_withchapters.opus.ogg

您将ogginfo用于 Ogg/Vorbis 文件。

这是结果(我删除了一些不相关的行):

ENCODER=opusenc from opus-tools 0.1.10
ENCODER_OPTIONS=--bitrate 112
title=Evolution theory
CHAPTER000=00:00:00.000
CHAPTER000NAME=Darwin's point of view
CHAPTER001=00:01:19.880
CHAPTER001NAME=Genghis Khan's children
[...]

干得好。ffmpeg将其元数据文件格式转换为 vorbis 标签/评论章节格式

您也可以直接以 Vorbis 章节扩展格式编写元数据,并使用经典vorbiscomment工具或其他允许编辑 opus/ogg 文件内标签的工具。

于 2021-02-21T21:07:44.553 回答