首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何能够有效地处理视频在每个请求的基础上?

我如何能够有效地处理视频在每个请求的基础上?
EN

Stack Overflow用户
提问于 2015-12-17 23:46:36
回答 2查看 1.3K关注 0票数 4

我正在开发一个web应用程序,其中水印必须应用于视频,然后才能发送给用户。目前,该水印是静态的,并且在视频更新时使用ffmpeg创建。然而,应用程序正在发生变化,因此对于对视频提出的每一个请求,都将向视频添加唯一的水印。这样可以防止出现问题,因为视频文件可能相当大,添加水印可能很费时(例如,在某些情况下,添加水印可能需要超过一分钟的时间),但是不能在上传时添加水印。

我认为流媒体视频可能是一种解决方案,并使用nginx-rtmp模块实现了一种解决方案,但出现了一些问题:

  1. RTMP解决方案是不可接受的,因为它们似乎需要Flash。必须在根本不支持Flash的设备上支持此应用程序,或者不(或不会)安装该应用程序。
  2. 我考虑过使用MPEG-破折号,但这只得到了有限的支持。也就是说,应用程序针对的火狐版本不支持它,iOS或某些版本的Safari也不支持它。
  3. 我考虑过HLS,但这比MPEG-DASH得到的支持更有限。
  4. 无论如何,我实际上还没有能够让Dash.js (MPEG-破折号流的参考播放器)工作,尽管这可能是由于编码问题,我不确定。

我想知道这个问题是否有更好(也许更简单)的解决方案;也许流媒体视频根本就不适合?是否有一种高效的方法可以快速地将视频文件转码并开始发送到浏览器?

我并不反对使用像node.js或其他平台/框架这样的解决方案,如果有必要,解决方案可以使用HTML5 <video>

EN

回答 2

Stack Overflow用户

发布于 2015-12-18 09:31:25

  1. 你错了,他的支持有限。它在现代移动设备上得到了广泛的支持,iOS (因为苹果创建了协议)和Android (确实在早期的4.x版本中有一些but,但从4.4开始,它运行得很好)。请参阅encoding.com的2015年全球媒体交付报告。 只有在桌面上,除了MacOS上的Safari之外,您还需要一个fallback。无论是付费的和免费的HLS播放器与闪存后备支持在桌面上是可用的。
  2. Nginx RTMP模块还可以基于输入RTMP流输出HLS。您只需使用H.264向模块提供一个RTMP流,它就会在HLS中为您重新修改它。 使用ffmpeg (来自文档)的示例: ffmpeg -loglevel -re -i movie.avi -vcodec libx264 -vprofile基准-acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/hls/-vprofile Nginx配置: 应用程序hls { live;hls on;hls_path /tmp/hls;} 公开播放URL将是http://<server>/hls/movie/playlist.m3u8。您还可以使用exec根据请求启动ffmpeg命令(带有水印覆盖)。
票数 1
EN

Stack Overflow用户

发布于 2015-12-20 12:07:10

下面是我看到一些网站实现的解决方案:

  1. 画布添加到DOM中,否则将放置视频元素
  2. 创建一个视频元素并将其呈现到画布上
  3. 在画布中呈现的视频顶部呈现水印图像。

优点:

  • 相对容易实现。不需要服务器端配置或ffmpeg或nginx插件。
  • 所有的工作都是在客户机中完成的,因此您获得的服务器负载更少。
  • 你可以放任何你喜欢的水印。你甚至可以用3D动画或渲染它(使用webgl)

缺点:

  • HTML5特异性。像IE7,8这样的老浏览器都不能工作。无论如何,这些浏览器都需要闪存。
  • 需要客户端浏览器提供更多的处理能力。这对于桌面浏览器来说不是问题,但可能会导致较旧的、动力不足的手机的回放和/或更高的电池消耗。
  • 如果有人直接播放媒体流(不使用您的网页,例如,在VLC),那么将没有标志。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34346371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档