不输出Opus原始音频
问题描述:
我目前正在编写一个小脚本,将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可能造成这种情况?
答
尝试
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
尝试更详细的答案 – kwarunek
@Mulvya这肯定会输出一个opog文件在一个ogg容器中,谢谢!虽然它可能输出没有ogg容器的原始opus编码数据? – Dustin
你可以试试'-map 0:a -f data pipe:1' – Mulvya