【发布时间】:2018-10-13 03:14:11
【问题描述】:
我已经为此工作了很长时间,但仍然没有找到可行的解决方案。我需要一种方法来实时转换(转码).wmv 文件以便在 html5 网络播放器中播放。
我有一个 linux 服务器 (Apache) 设置,可以通过专为 Chrome 和 Firefox 浏览器设计的 html5 网络播放器 (Video.js) 流式传输视频文件。我正在处理的文件类型是 .mp4 (H.264)、.mkv 和 .wmv。对我来说好消息是我可以原生处理 mp4 和 mkv,但是我不能播放 wmv。另外,我必须处理大量文件,定期更改,而且可能会很大。
在做了大量研究并多次阅读您如何不能直接流式传输 wmv 之后,我意识到我有两个选择。将文件转换为支持的格式或实时转码文件以在网络播放器中使用。由于文件数量及其大小(以及定期更改),转换文件根本不可行。所以我坚持使用直播/转码。我认为 ffmpeg 将是要走的路,但我还没有弄清楚如何让 ffmpeg 直播到 html5 播放器。
那么如何获取现有的 .wmv 文件并在 html5 播放器中进行直播?
到目前为止我尝试过的事情:
尝试创建一个 m3u8 播放列表,希望它能神奇地工作。
ffmpeg -i "hello.wmv" -s 640x480 -c:v libx264 -f ssegment -hls_flags delete_segments -segment_list playlist.m3u8 -segment_list_type hls -segment_list_size 10 -segment_list_flags +live -segment_time 10 out_%6d.ts
在 ffmpeg 仍在进行时,只需复制到 mp4 和流式传输即可。显然没有用。
ffmpeg -i "hello.wmv" -vcodec copy video.mp4
在 ffmpeg 仍在进行时转换为 webm 格式和流式传输 webm。这实际上确实在 html 播放器中显示了几秒钟的视频:
ffmpeg -i "hello.wmv" -codec:a libvorbis -codec:v libvpx -b:a 128k -b:v 1200k video.webm
不需要使用ffmpeg(也考虑过vlc),需要html5播放器。完全转换然后流式传输不是一个可行的选择,因为文件大小可能太大并且会定期更改。我可以使用什么命令/程序来流式传输文件以在 html 播放器中播放?
【问题讨论】:
-
是多人查看文件,还是只有一个人(如果您同时对多个文件进行转码,那么您将达到 CPU 限制)。我想理论上你可以从源创建一个 HLS 流并在浏览器中显示它
-
@Offbeatmammal 目前只有一个。将在不同时间处理多个用户。正如您所说,HLS 是一个好主意(在第一个示例中尝试使用 ffmpeg),但是在移动到下一个文件时,视频似乎一直试图从头开始。不知道是代码问题还是浏览器问题。 HLS 是迄今为止最接近我需要的东西。
标签: html ffmpeg html5-video video.js