ffmpeg使用的格式/协议是什么;生的;输出?

ffmpeg使用的格式/协议是什么;生的;输出?,ffmpeg,containers,audio-streaming,Ffmpeg,Containers,Audio Streaming,给定命令行ffmpeg-f lavfi-i“sine=frequency=1000:duration=5”-ar 8000-c:a FOO-pipe:1,ffmpeg可能会抱怨它“找不到合适的输出格式”。对于某些编解码器,ffmpeg具有默认的容器格式,例如,-c:libmp3lame将生成MP3。对于其他编解码器,您只需重复自己(某种程度上):-c:pcm\u alaw-f alaw 但是如果我想要流式传输原始编解码器输出,并且没有匹配的-f?我可以假定它没有任何作用吗?(G711 alaw是

给定命令行
ffmpeg-f lavfi-i“sine=frequency=1000:duration=5”-ar 8000-c:a FOO-pipe:1
,ffmpeg可能会抱怨它“找不到合适的输出格式”。对于某些编解码器,ffmpeg具有默认的容器格式,例如,
-c:libmp3lame
将生成MP3。对于其他编解码器,您只需重复自己(某种程度上):
-c:pcm\u alaw-f alaw

但是如果我想要流式传输原始编解码器输出,并且没有匹配的
-f
?我可以假定它没有任何作用吗?(G711 alaw是一种产生字节流的简单编解码器,因此
-f alaw
可能只是复制该字节流)


显然,如果没有容器信息,管道的另一端需要知道数据流需要如何解释。但是假设我已经知道管道的另一端需要一个音频流,采样频率为8 kHz,用
-c:a FOO
编码。我猜“raw”是指未压缩的音频样本(PCM)

除了
alaw
ffmpeg
还支持PCM格式的其他变体

ffmpeg -formats | grep PCM
显示


将显示PCM格式的音频编解码器列表。

是的,原始流只是:没有编解码器负载的封装

为了使命令语法清晰,可以使用
data

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -ar 8000 -c:a FOO -map 0 -f data pipe:1  

不;无论编解码器输出什么,都是原始的,这可能是PCM的风格,也可能不是。注意,alaw和mulaw本质上是有损压缩方案;16到8位。感谢您的澄清。我认为@Mulvya回答的
-f data
应该有效。
ffmpeg -codecs | grep PCM
ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -ar 8000 -c:a FOO -map 0 -f data pipe:1