我一直在使用 ffmpeg 进行转码。
最近我有一个要求,即 ffmpeg 输出不需要到文件而是到 stdout ,稍后将被捕获然后发送回callingurl。
我在 flv 和 avi 上取得了一些初步成功,但是在使用 -f 标志时在 mp4 上失败了。
这是我的代码,需要认真研究一下
这适用于播放器:
ffmpeg -loglevel quiet -i cat_dog.mp4 -vbsf h264_mp4toannexb -vcodec copy \
-acodec copy -f mpegts -movflags frag_keyframe+empty_moov -re - 2>&1
这不能由玩家播放:
ffmpeg -loglevel quiet -i cat_dog.mp4 -vbsf h264_mp4toannexb -vcodec copy \
-acodec copy -f MP4 -movflags frag_keyframe+empty_moov -re - 2>&1
最佳答案
如前所述in the docs , 使用 -movflags
的缺点是它“与其他应用程序的兼容性较差”。
对于 flv 或 avi 格式,-movflags
选项将是无关的并被忽略,但使用 mp4 它将生效并可能破坏兼容性。
关于ffmpeg 无法转码并将输出提供给 -f mp4 的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11546845/