teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

調査内容追記

2015/11/10 14:48

投稿

eskey_mo
eskey_mo

スコア34

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,14 @@
17
17
  どなたか同様の症状を解決したことがあれば解決策をご教示ください。
18
18
  また、まったく別の方法でもいいので動画投稿時に作成したscreenshotを表示させる方法がありましたら教えてください!
19
19
 
20
+ ###2015/11/10追記###
21
+ heroku logs --tailで@m.movie.url(:screenshot)と二回打つとURLが読み出せることがわかりました。
22
+ しかし、その場合は拡張子が何もついていません。
20
23
 
24
+ versionで保存したファイルのURLが保存されるところに何かまずいところがあるのでしょうか?
25
+ また、@m.movie.current_pathと入力した場合、nilが返却されます。ローカル環境では問題ないのですがherokuの場合、何か設定が必要だったりするのでしょうか?
26
+
27
+
21
28
  ###ソースコード
22
29
  動画投稿部分
23
30
  ```ruby

2

質問内容の改善

2015/11/10 14:47

投稿

eskey_mo
eskey_mo

スコア34

title CHANGED
@@ -1,1 +1,1 @@
1
- heroku上でffmpegとcarrierwaveを使用して動画投稿時にscreenshotを作成する方法について
1
+ heroku上でffmpegとcarrierwaveを使用して作成したscreenshotを表示する方法について
body CHANGED
@@ -1,26 +1,23 @@
1
1
  ###前提・実現したいこと
2
- 今、railsで動画投稿が行えるWEBサイト作したいと考えています
2
+ ffmpeg&carrierwaveを使用して動画投稿時にその動画のscreenshotを作したいと考えています
3
- その中で投稿した動画のスクリーンショットを撮るためにffmpegのbuildpacksを追加しました
4
- 追加したbuildpacksは以下です
5
- https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
6
3
 
7
- 追加方法はheroku buildpacks:addで追加しています。heroku run "ffmpeg --version"で読み出しも行えます。
8
- しかし、追加した後いざ動画投稿してみてもスクリーンショットが作成されません。
9
- heroku logs --tailみてもffmpegがいている痕跡はなく原因がつかめない状況
4
+ 現在、プラットフォームはheroku、ホスト先はcloudinary使用して動画投稿部分の作成まは完了しました
10
5
 
11
- 無事ffmpegが動作する方法やこうすれば動作していない原因がわか等のドバイがありまたらいただけいでょうか?
6
+ しかし、作たscreenshotの読み出しを行っているページにクセスしても「We're sorry, but something went wrong.If you are the application owner check the logs for more information.」とエラー画面が表示されるのみとってまいます。
12
7
 
13
- ###2015/11/10 追記###
14
- heroic logs --tailで画像表示部分を実行してみたところ以下のエラーが出ました
8
+ どうやら、screenshotの表示に失敗しているようでheroku logs --tailで画像表示部分を実行してみたところ以下のエラーが出ました
15
9
 
16
10
  irb(main):003:0> @m.movie.url(:screenshot)
17
11
  ArgumentError: wrong number of arguments (0 for 1)
18
12
  from /app/app/uploaders/movie_uploader.rb:32:in `dirname'
19
13
  from /app/app/uploaders/movie_uploader.rb:32:in `screenshot'
20
14
 
21
- だしもう一度@m.movie.url(:screenshot)を読み出すと問題なくurlが読み出せます
15
+ 、動画の方は@m.movie.urlで投稿先のURLの読み出しが行えまし、その動画の拡張子をjpgにした場合、変換した画像が読み込めます。ただし、movie_uploader.rb内の処理では「screenshot.jpg」にしているつもりなんですが・・・
22
16
 
17
+ どなたか同様の症状を解決したことがあれば解決策をご教示ください。
18
+ また、まったく別の方法でもいいので動画投稿時に作成したscreenshotを表示させる方法がありましたら教えてください!
23
19
 
20
+
24
21
  ###ソースコード
25
22
  動画投稿部分
26
23
  ```ruby
@@ -56,7 +53,6 @@
56
53
  end
57
54
 
58
55
  def screenshot
59
- directory = File.dirname
60
56
  tmpfile = File.join(File.dirname(current_path), "tmpfile")
61
57
  File.rename(current_path, tmpfile)
62
58
  movie = FFMPEG::Movie.new(tmpfile)

1

タイトル変更と問題点、ソースコードの記載変更

2015/11/10 03:47

投稿

eskey_mo
eskey_mo

スコア34

title CHANGED
@@ -1,1 +1,1 @@
1
- heroku上でffmpegとrailsを使用する方法について
1
+ heroku上でffmpegとcarrierwaveを使用して動画投稿時にscreenshotを作成する方法について
body CHANGED
@@ -10,29 +10,65 @@
10
10
 
11
11
  無事ffmpegが動作する方法や、こうすれば動作していない原因がわかる等のアドバイスがありましたらいただけないでしょうか?
12
12
 
13
+ ###2015/11/10 追記###
14
+ heroic logs --tailで画像表示部分を実行してみたところ以下のエラーが出ました
15
+
16
+ irb(main):003:0> @m.movie.url(:screenshot)
17
+ ArgumentError: wrong number of arguments (0 for 1)
18
+ from /app/app/uploaders/movie_uploader.rb:32:in `dirname'
19
+ from /app/app/uploaders/movie_uploader.rb:32:in `screenshot'
20
+
21
+ ただしもう一度@m.movie.url(:screenshot)を読み出すと問題なくurlが読み出せます
22
+
23
+
13
24
  ###ソースコード
14
- 関係ありそうなところ抜粋
25
+ 動画投稿部分
15
26
  ```ruby
27
+ # movie_uploader.rb
16
- # 読み込み部分
28
+ # encoding: utf-8
17
29
  require 'streamio-ffmpeg'
30
+ require 'carrierwave'
31
+ class MovieUploader < CarrierWave::Uploader::Base
18
32
 
33
+ if Rails.env.production?
34
+ include Cloudinary::CarrierWave
19
- # 処理部分
35
+ else
36
+ storage :file
37
+ end
38
+ # Include RMagick or MiniMagick support:
39
+ include CarrierWave::RMagick
40
+ # include CarrierWave::MiniMagick
41
+
42
+ def store_dir
43
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
44
+ end
45
+
46
+ def extension_white_list
47
+ %w(jpg jpeg gif png mov wmv mp4 flv avi)
48
+ end
49
+
20
50
  version :screenshot do
21
51
  process :screenshot
52
+ process :convert => "jpg"
22
53
  def full_filename (for_file = model.logo.file)
23
54
  "screenshot.jpg"
24
55
  end
25
56
  end
26
57
 
27
58
  def screenshot
59
+ directory = File.dirname
28
60
  tmpfile = File.join(File.dirname(current_path), "tmpfile")
29
-
30
61
  File.rename(current_path, tmpfile)
31
-
32
62
  movie = FFMPEG::Movie.new(tmpfile)
33
- movie.screenshot(current_path + ".jpg", {resolution: '512x312' }, preserve_aspect_ratio: :width)
63
+ movie.screenshot(current_path + ".jpg", preserve_aspect_ratio: :width)
34
64
  File.rename(current_path + ".jpg", current_path)
35
-
36
65
  File.delete(tmpfile)
37
66
  end
67
+ end
68
+
69
+ ```
70
+
71
+ 表示部分
72
+ ```html
73
+ <%= image_tag @movie.movie.url(:screenshot) %>
38
74
  ```