猿问

不输出 Opus 原始音频

我目前正在编写一个小脚本,可以将 MP4 动态转换为 Opus 音频并将其发送到golang 中的Discord。最初,我的脚本会在通过 stdin 下载到 ffmpeg 时传递 MP4,然后将 stdout 传递给 Opus 编码器,然后传递给 Discord(就像这样)。在学习了我可以用 Opus 构建 ffmpeg 之后,我想剪掉我以前拥有的 opus 编码器并将 ffmpeg 的输出直接传递给 Discord。

以前,我的 ffmpeg 命令看起来像这样(使用第二个 opus 编码器)

ffmpeg -i - -f s16le -ar 48000 -ac 2 pipe:1

现在,没有编码器并让 ffmpeg 完成所有工作,这就是我到目前为止所想到的。

ffmpeg -i - -f s16le -ar 48000 -ac 2 -acodec libopus -b:a 192k -vbr on -compression_level 10 pipe:1

但是,使用此命令,Discord 的服务器不会接受音频,这意味着我怀疑 opus 音频不会从另一端发出。没有错误输出。我是否对 ffmpeg 做错了什么可能导致这种情况?


子衿沉夜
浏览 170回答 1
1回答

拉丁的传说

尝试ffmpeg -i - -sample_fmt s16 -ar 48000 -ac 2 -acodec libopus -b:a 192k -vbr on -compression_level 10 -f opus pipe:1您不能使用-f s16leas 指定未压缩的输出格式(特定样本类型的),而您需要某个编解码器的压缩数据流。相反,您可以使用sample_fmt和-f opus
随时随地看视频慕课网APP

相关分类

Go
我要回答