2016-03-02 76 views
1

我目前正在编写一个小脚本,将MP4转换为Opus音频,并将其发送到golang的Discord。最初,我的脚本会通过一个MP4,因为它通过stdin下载到ffmpeg,然后将stdout传递到Opus编码器,然后传递到Discord(完全像this)。在学习之后,我可以用Opus创建ffmpeg,我想剪掉我以前的opus编码器,并将ffmpeg的输出直接传递给Discord。不输出Opus原始音频

以前,我的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 

使用此命令,不过声音没有得到通过不和谐的服务器所接受,这意味着我怀疑巨著音频不出来的另一端。没有错误输出。我有没有做过错误的ffmpeg可能造成这种情况?

回答

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 s16le作为指定的未压缩输出格式(特定样品类型),而你需要一定的编解码器的压缩数据流。相反,你可以使用sample_fmt-f opus

+0

尝试更详细的答案 – kwarunek

+0

@Mulvya这肯定会输出一个opog文件在一个ogg容器中,谢谢!虽然它可能输出没有ogg容器的原始opus编码数据? – Dustin

+0

你可以试试'-map 0:a -f data pipe:1' – Mulvya