给定命令行ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -ar 8000 -c:a FOO pipe:1
,ffmpeg可能会抱怨它“无法找到合适的输出格式”。对于某些编解码器,ffmpeg具有默认的容器格式,例如-c:a libmp3lame
会产生MP3的。对于其他编解码器,你只需重复自己(排序):-c:a pcm_alaw -f alaw
ffmpeg用于“原始”输出的格式/协议?
但是,如果我想流原始编解码器输出,并且没有匹配-f
?我可以拿-f alaw
并假设它没有做任何事情吗? (G711 alaw是一个简单的编解码器,它可以产生一个字节流,所以-f alaw
大概就是复制那个字节流)
很明显,管道的另一端需要知道数据流如何解释,如果没有容器信息。但假定我已经知道管道的另一端正在等待以8 kHz采样的音频流,编码为-c:a FOO
。
'-map 0'完成了这个技巧。 – MSalters