【Carrierwave + ffmpeg】 не может загрузить видео со звуком - PullRequest
0 голосов
/ 10 апреля 2020

Хочу сделать приложение "Fake Instagram" Rails. Затем я сделал загрузчик, и я могу загрузить видео (MP4), но нет звука. Я могу слушать звук на своем рабочем столе, но не могу в моем приложении, как это изображение, динамики не работают. введите описание изображения здесь

Код здесь. Я думаю, что-то не так с image_uploader.rb или show. html .erb. Обратите внимание, что сначала я сделал ImageUploader для загрузки изображения, затем я хочу добавить систему публикации видео для загрузки видео. Обе загрузки сделаны, но видео без звука. Спасибо большое за совет!

*image_uploader.rb
require 'streamio-ffmpeg'

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick
  process resize_to_fit: [230, 183]

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  version :thumb do
    process resize_to_fit: [230, 183]
  end
  version :screenshot do
    process :screenshot
    def full_filename (for_file = model.logo.file)
      "screenshot.jpg"
    end
  end

  def screenshot
    tmpfile = File.join(File.dirname(current_path), "tmpfile")

    File.rename(current_path, tmpfile)

    movie = FFMPEG::Movie.new(tmpfile)
    movie.screenshot(current_path + ".jpg", {resolution: '230x183' }, preserve_aspect_ratio: :width)
    File.rename(current_path + ".jpg", current_path)

    File.delete(tmpfile)
  end

  def extension_whitelist
    %w(jpg jpeg gif png mp4)
  end
end
*show.html.erb
<h1>Stroll</h1>
<p><%= notice %></p>
<p id="error_explanation"></p>
<% if @stroll[:image] == nil %>
  <%= image_tag"03summer_ver8-l.jpg", width:"230", height:"183" %>
<% elsif @stroll.image.file.content_type.include?('video/') %>
  <%= link_to @stroll.image_url.to_s do %>
  <%= image_tag(@stroll.image_url(:screenshot).to_s, id: "image", :alt => "screenshot") %>
  <% end %>
<% else %>
  <%= image_tag(@stroll.image.url) if @stroll.image && @stroll.image.url %>
<% end %>
<p>user <%= @stroll.user.name %></p>
<p>『<%= @stroll.title %>』</p>
<p>content: <%= @stroll.content %></p>
<p>tag: <%= @stroll.tag %></p>
<p>comment: </p>
<div id="comments_area">
  <%= render partial: 'comments/index', locals: { comments: @comments, stroll: @stroll } %>
</div>
<% if user_signed_in? && @stroll.user_id != current_user.id %>
  <%= render partial: 'comments/form', locals: { comment: @comment, stroll: @stroll } %>
<% end %>
<% if current_user %>
  <% unless @stroll.user_id == current_user.id %>
    <% if @favorite.present? %>
      <%= link_to 'cancel', favorite_path(id: @favorite.id), method: :delete, class: 'btn btn-info' %>
      <% else %>
      <%= link_to 'Like!', favorites_path(stroll_id: @stroll.id), method: :post, class: 'btn btn-warning' %>
    <% end %>
  <% end %>
<% end %>
&emsp;
<%= link_to "Index", strolls_path %>
...