如果主要质量失败,则显示可用视频质量

时间:2014-02-11 15:31:06

标签: ruby-on-rails ruby-on-rails-4 carrierwave

我有3个版本的视频。

问题:

如果主要质量不起作用或无法启动,我需要显示可用的视频质量。怎么可能这样做?

version :high_mp4 do
  process encode_video: [:mp4, encode_params("720x720", HIGH_PARAMS).merge(version: Video::HIGH_VERSION) ]
  def full_filename(for_file=file)
    super.chomp(File.extname(super)) + '.mp4'
  end
end

version :medium_mp4 do
  process encode_video: [:mp4, encode_params("480x480", MEDIUM_PARAMS).merge(version: Video::MEDIUM_VERSION)]
  def full_filename(for_file=file)
    super.chomp(File.extname(super)) + '.mp4'
  end
end

version :low_mp4 do
  process encode_video: [:mp4, encode_params("320x320", LOW_PARAMS).merge(version: Video::LOW_VERSION)]
  def full_filename(for_file=file)
    super.chomp(File.extname(super)) + '.mp4'
  end
end

的观点:

= video.file.medium_mp4.url

1 个答案:

答案 0 :(得分:0)

我不确定中等质量的视频,但我知道像SublimeVideo这样的视频包装器具有data-quality属性,可以允许在两个不同版本之间切换。

如果您有自己的包装器,可以使用类似的东西来测试带宽,然后触发相应的源。

http://docs.sublimevideo.net/hd-switching

<video class="sublime" width="640" height="360" title="Midnight Sun"  preload="none">
  <source src="https://cdn.sublimevideo.net/vpa/ms_360p.mp4" />
  <source src="https://cdn.sublimevideo.net/vpa/ms_720p.mp4" data-quality="hd" />
  <source src="https://cdn.sublimevideo.net/vpa/ms_360p.webm" />
  <source src="https://cdn.sublimevideo.net/vpa/ms_720p.webm" data-quality="hd" />
</video>

如果您担心视频不可用,那么当您包含这些视频时,您可以检查该文件是否存在。

<video class="sublime" width="640" height="360" title="Midnight Sun"  preload="none">
  <% if File.exist?(@video.file(:low_mp4)) %>
    <source src="https://cdn.sublimevideo.net/vpa/ms_360p.mp4" />
  <% end %>
  <% if File.exist?(@video.file(:high_mp4)) %>
    <source src="https://cdn.sublimevideo.net/vpa/ms_720p.mp4" data-quality="hd" />
  <% end %>
  <source src="https://cdn.sublimevideo.net/vpa/ms_360p.webm" />
  <source src="https://cdn.sublimevideo.net/vpa/ms_720p.webm" data-quality="hd" />
</video>