前提・実現したいこと
画像投稿アプリに動画投稿機能を追加したいと思いました。
その際、以下の記事を参考に実装しました。なお記事では1からアップローダーを作りますが、
すでに画像のアップローダーがあるのでそのアップローダーに機能を追加するような感じです。
→で、動画は投稿できたのですが音が出ませんで、恐縮ですがお力添えいただけたら幸いです。
https://dev.classmethod.jp/articles/ruby-on-rails-carrierwave-ffmpeg/
※webでそのまま再生したかったのでmp4だけdef extension_whitelistに追加しました。
#発生している問題・エラーメッセージ
動画を投稿し、再生することもできたのですが、音が出ません。添付の画像のような感じで、
デスクトップで再生すると音も出ますが、アップするとスピーカーが灰色になり、出ません。
ビューかアップローダーのコードのせいという印象ですが、お力添えいただけたら幸甚です。
Rails
1require 'streamio-ffmpeg' 2 3class ImageUploader < CarrierWave::Uploader::Base 4 include CarrierWave::MiniMagick 5 process resize_to_fit: [230, 183] 6 7 storage :file 8 9 def store_dir 10 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 11 end 12 13 version :thumb do 14 process resize_to_fit: [230, 183] 15 end 16 version :screenshot do 17 process :screenshot 18 def full_filename (for_file = model.logo.file) 19 "screenshot.jpg" 20 end 21 end 22 23 def screenshot 24 tmpfile = File.join(File.dirname(current_path), "tmpfile") 25 26 File.rename(current_path, tmpfile) 27 28 movie = FFMPEG::Movie.new(tmpfile) 29 movie.screenshot(current_path + ".jpg", {resolution: '230x183' }, preserve_aspect_ratio: :width) 30 File.rename(current_path + ".jpg", current_path) 31 32 File.delete(tmpfile) 33 end 34 35 def extension_whitelist 36 %w(jpg jpeg gif png mp4) 37 end 38end 39
Rails
1<h1>記事を読む</h1> 2<p><%= notice %></p> 3<p id="error_explanation"></p> 4<% if @stroll[:image] == nil %> 5 <%= image_tag"03summer_ver8-l.jpg", width:"230", height:"183" %> 6<% elsif @stroll.image.file.content_type.include?('video/') %> 7 <%= link_to @stroll.image_url.to_s do %> 8 <%= image_tag(@stroll.image_url(:screenshot).to_s, id: "image", :alt => "screenshot") %> 9 <% end %> 10<% else %> 11 <%= image_tag(@stroll.image.url) if @stroll.image && @stroll.image.url %> 12<% end %> 13<p>投稿者 <%= @stroll.user.name %>さん</p> 14<p>『<%= @stroll.title %>』</p> 15<p>記事: <%= @stroll.content %></p> 16<p>タグ: <%= @stroll.tag %></p> 17<p>コメント: </p> 18<div id="comments_area"> 19 <%= render partial: 'comments/index', locals: { comments: @comments, stroll: @stroll } %> 20</div> 21<% if user_signed_in? && @stroll.user_id != current_user.id %> 22 <%= render partial: 'comments/form', locals: { comment: @comment, stroll: @stroll } %> 23<% end %> 24<% if current_user %> 25 <% unless @stroll.user_id == current_user.id %> 26 <% if @favorite.present? %> 27 <%= link_to 'いいね!を取り消す', favorite_path(id: @favorite.id), method: :delete, class: 'btn btn-info' %> 28 <% else %> 29 <%= link_to 'いいね!', favorites_path(stroll_id: @stroll.id), method: :post, class: 'btn btn-warning' %> 30 <% end %> 31 <% end %> 32<% end %> 33  34<%= link_to "一覧へ戻る", strolls_path %>
あなたの回答
tips
プレビュー