dav*_*off 4 ffmpeg transcoding vorbis
为了弄清问题的关键,第一个命令为什么起作用,而第二个命令却不起作用。它们产生的大小略有不同的文件具有不同的内容:
ffmpeg -i test.wav -f ogg -acodec libvorbis test.a.ogg
ffmpeg -i test.wav -f ogg -acodec libvorbis - > test.b.ogg
Run Code Online (Sandbox Code Playgroud)
test.a.ogg可以正常播放,没有问题。test.b.ogg从源音频的中间开始,并且在音频中具有停止和间隙。它还不报告轨道的长度。
我想将正在编写的程序动态地将源文件转码为ogg,并且尝试将ffmpeg的stdout传送到我的程序中。将结果放入中间文件会降低性能,因为代码转换应该按需进行。
OGG可能需要寻找。从ffmpeg docs:
使用ffmpeg写入标准输出:
ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
Run Code Online (Sandbox Code Playgroud)
...与...相同
ffmpeg -i test.wav -f avi pipe: | cat > test.avi
Run Code Online (Sandbox Code Playgroud)
请注意,某些格式(通常为MOV)要求输出协议是可搜索的,因此它们将因管道输出协议而失败。