推送即时转码视频以嵌入没有搜索栏的 http 结果

Pushing on-fly transcoded video to embeded http results with no seekbar

我正在尝试实现一个简单的基于家庭的解决方案,用于 streaming/transcoding 视频到无法正确播放文件的低端机器。

我正在尝试用 ffmpeg 来做(因为 ffserver 将停产) 我发现 ffmpeg 内置了可用于此目的的 http 服务器。

我正在测试(seekbar)的应用程序是 vlc

我可能在这里做错了什么(或者试图做一些其他应用程序做的事情)

我使用的ffmpeg代码是:

d:\ffmpeg\bin\ffmpeg.exe -r 24 -i "D:\test.mkv" -threads 2 -vf scale=1280:720 -c:v libx264 -preset medium -crf 20 -maxrate 1000k -bufsize 2000k -c:a ac3 -seekable 1 -movflags faststart -listen 1 -f mpegts http://127.0.0.1:8080/test.mpegts

此代码还使我能够在需要时开始观看它(与通过 udp 使用 rtmp 相反,它会在转码后立即开始播放视频)

我读到过关于在文件请求中移动 atoom 的东西,应该由 movflags faststart

处理

我也检查了 -re 选项但没有任何运气,-r 25 只是为了抑制 Past duration 0.xx too large 警告,我读到的是正常的事情。 测试文件是许多具有不同编码器设置等的文件之一。

上面的设置给了我一个 seekbar 但它不起作用并且没有总持续时间(也没有进度条),当我从 mpegts 切换到 matroska/mkv 我看到视频的持续时间(和进度)但没有搜索栏。

如果仅使用 ffmpeg 可能的话,我宁愿坚持使用它作为独立解决方案而无需额外的 rtmp/others 服务器。

一段时间后我指出:

搜索栏是玩家端的东西,版本 v6 中的 hls 支持指向开始项目,因为 v3 开始无论它是什么(从列表末尾开始不超过 3 个项目)

播放和搜索基于播放器(ios 上的 safari 支持它,其他不支持)也不需要 ffserver 来推送内容。

最后它在没有搜索的情况下工作正常,如果需要搜索,请在您的终端使用 player/js.player 或通过代理视频服务器等中间件支持它。