gpt4 book ai didi

ffmpeg - 使用 ffmpeg 设置字幕语言

转载 作者:行者123 更新时间:2023-12-02 22:25:42 25 4
gpt4 key购买 nike

我尝试谷歌搜索一种使用 ffmpeg 设置字幕流语言的方法,并找到了 -slang 选项。所以我尝试了以下命令,但立即收到错误:

ffmpeg -i input.avi -i subs.srt -c:a copy -c:s mov_text -slang eng -c:v libx264 -profile:v high -level:v 4.0 output.mp4
ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 18 2013 23:00:53 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)

libavutil 52. 13.100 / 52. 13.100

libavcodec 54. 86.100 / 54. 86.100

libavformat 54. 59.106 / 54. 59.106

libavdevice 54. 3.102 / 54. 3.102

libavfilter 3. 32.100 / 3. 32.100

libswscale 2. 1.103 / 2. 1.103

libswresample 0. 17.102 / 0. 17.102

libpostproc 52. 2.100 / 52. 2.100

Unrecognized option 'slang'.

Error splitting the argument list: Option not found

经过更多谷歌搜索后,我找到了另一种使用 -metadata 命令来完成此操作的方法:

ffmpeg -i input.mp4 -i subs.srt -c:a copy -c:v copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4

这绝对没问题。但是 ffmpeg 手册页中没有提到这一点,而 -slang 却提到了,这让我认为 -metadata 命令可能已经过时,或者在其他方面不如 -slang。

  1. 使用上述两种方法(-slang 与 -metadata)有什么区别?
  2. 为什么我的 -slang 命令出错?难道是我用错了?

最佳答案

选项

-metadata:s:1 language=eng

将元数据语言设置为 eng在流 id 1 上(在典型情况下,这是第一个音频流)。而选项

-metadata:s:s:0 language=eng

将元数据语言设置为 eng在第一个字幕流上。

来自 ffmpeg 手册页:

-metadata[:metadata_specifier] key=value (output,per-metadata)
Set a metadata key/value pair.

An optional metadata_specifier may be given to set metadata on streams or chapters. See "-map_metadata" documentation for details.

s[:stream_spec]
per-stream metadata. stream_spec is a stream specifier as described in the Stream specifiers chapter. In an input metadata specifier, the first matching stream is copied from. In an output metadata specifier, all matching streams are copied to.

最后从流说明符的章节中,我们看到

Possible forms of stream specifiers are:
stream_index
Matches the stream with this index. E.g. "-threads:1 4" would set the thread count for the second stream to 4.

stream_type[:stream_index]
stream_type is one of: 'v' for video, 'a' for audio, 's' for subtitle, 'd' for data and 't' for attachments. If stream_index is given, then matches stream number stream_index of this type. Otherwise matches all streams of this type.

关于ffmpeg - 使用 ffmpeg 设置字幕语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com