如何使用ffmpeg管道?

Dig*_*ato 17 ffmpeg

我的目标是使用wget下载一个flv文件,并将输出传输到ffmpeg以将其转换为MP3.这样用户可以下载MP3而无需等待FLV首先下载到我的服务器.我一直在玩它,似乎ffmpeg只能在原始视频上进行管道传输.所以我正在使用这样的东西:

wget -O - 'videoinput.flv' | ffmpeg -y -i - -vcodec rawvideo -f yuv4mpegpipe - |  ffmpeg -y -i - -ab 128k audiooutput.mp3
Run Code Online (Sandbox Code Playgroud)

有没有人有这种类型的即时ffmpeg编码过程的经验?

小智 16

我没有测试过,但应该是这样或非常接近.

wget [URL] | ffmpeg -i pipe:0 -vcodec mpeg4 -s qcif -f m4v -y output.flv
Run Code Online (Sandbox Code Playgroud)


小智 5

从单独的HTTP客户端进行管道传输的更好的选择是使用ffmpeg的内置客户端。至少新版本可以将URL作为输入文件参数。FFmpeg可以通过这种方式将文件本身拉下来,对于在文件末尾附近具有容器数据的格式,它可以(如果服务器支持的话)首先抓取文件的该部分,这与从curl或wget进行管道传送不同文件顺序。参见http://ffmpeg.org/ffmpeg-all.html#http


9da*_*dan 2

“ffmpeg 只能在原始视频上进行管道传输” <-- 事实并非如此。

您可以通过管道输入/输出 ffmpeg 支持的任何格式。

在命令行示例中,您从 FLV 中提取原始视频并编码为 MP3。绝对不能这样。