【问题标题】:How to add chapters to ogg file?如何将章节添加到 ogg 文件?
【发布时间】:2018-03-19 13:33:38
【问题描述】:

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

this link我复制了下面的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 copy,则 ffmpeg 中没有错误,但文本文件会转换为视频。即输出文件将有一个静态视频帧,其中包含 metadata_OGG.txt 的文本。此外,我在转换过程中观察到以下日志消息。

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

谁能告诉我这里出了什么问题?

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

【问题讨论】:

    标签: ffmpeg media multimedia ogg oggvorbis


    【解决方案1】:

    我发现了问题。

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

    ;FFMETADATA1
    

    我按照ffmpeg documentation for metadata中给出的步骤进行操作。

    但问题并没有完全解决。

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

    【讨论】:

      【解决方案2】:

      这是使用 ffmpeg 4.3.1 对我有用的方法。

      我有一个几乎尊重ffmpeg's metadata file format元数据文件

      ;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
      

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

      这将创建文件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 将其元数据文件格式转换为the vorbis tag/comment chapter format

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

      【讨论】:

        【解决方案3】:

        这里提到了作品。我试图让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
        

        章节key/value方案就是前面提到的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 来确认。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多