推送即时转码视频以嵌入没有搜索栏的 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 或通过代理视频服务器等中间件支持它。
我正在尝试实现一个简单的基于家庭的解决方案,用于 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 或通过代理视频服务器等中间件支持它。