Ffmpeg 通过命名管道通过有限的“;频道;带宽

Ffmpeg 通过命名管道通过有限的“;频道;带宽,ffmpeg,pipe,pv,Ffmpeg,Pipe,Pv,我有一个视频容器vid.mp4,我想通过命名管道播放ffplay,并能够调整“频道”允许的最大带宽。下面是我所做的: 1.创建命名管道: mkfifo pipe_in 2.在管道查看器的帮助下,以有限的带宽(150kB/s)将容器发送到管道pv: cat vid.mp4 | pv -L 150k > pipe_in 3.使用ffplay播放视频: ffplay cache:./pipe_in 我的期望:由于带宽限制,观看视频的速度会很快但很慢 实际发生的情况:只有当命令2.运行完毕时

我有一个视频容器
vid.mp4
,我想通过命名管道播放
ffplay
,并能够调整“频道”允许的最大带宽。下面是我所做的:

1.
创建命名管道:

mkfifo pipe_in
2.
在管道查看器的帮助下,以有限的带宽(150kB/s)将容器发送到管道
pv

cat vid.mp4 | pv -L 150k > pipe_in
3.
使用
ffplay
播放视频:

ffplay cache:./pipe_in
我的期望:由于带宽限制,观看视频的速度会很快但很慢

实际发生的情况:只有当命令
2.
运行完毕时,视频才会以正常速度显示


提前谢谢你

您的视频需要预先安装MOOV box

ffmpeg -i vid.mp4 -c copy -movflags +faststart newvid.mp4
现在,您应该可以使用

ffplay ./pipe_in
如果希望使用缓存协议,则需要设置缓存限制

ffplay -read_ahead_limit 65K cache:./pipe_in

如果找不到该选项,请升级ffplay。

vid.mp4前端是否有moov?如果没有,请运行
ffmpeg-i vid.mp4-c copy-movflags+faststart newvid.mp4
并进行检查。@Gyan,这里列出了vid.mp4的原子:我不确定如何读取它,所以我还是运行了您建议的命令,它使用以下原子文件生成newvid.mp4:我重新运行了实验,但结果完全相同:
ffplay
仅在命令2时开始播放。到达终点。共享ffplay尝试的完整日志。共享失败尝试的完整日志第一种方法运行良好:
ffplay./pipe\u in
。第二种方法不是真的:
ffplay-read_-ahead_limit 65K缓存:./pipe_in
。该行为与之前相同,这意味着
ffplay
仅在
cat vid.mp4 | pv-L 150k>pipe_in
完成运行时才会开始解码。这是我得到的日志:(我正在删除以前的评论以避免混淆)