質問編集履歴

3

調査内容追記

2015/11/10 14:48

投稿

eskey_mo
eskey_mo

スコア34

test CHANGED
File without changes
test CHANGED
@@ -33,6 +33,20 @@
33
33
  どなたか同様の症状を解決したことがあれば解決策をご教示ください。
34
34
 
35
35
  また、まったく別の方法でもいいので動画投稿時に作成したscreenshotを表示させる方法がありましたら教えてください!
36
+
37
+
38
+
39
+ ###2015/11/10追記###
40
+
41
+ heroku logs --tailで@m.movie.url(:screenshot)と二回打つとURLが読み出せることがわかりました。
42
+
43
+ しかし、その場合は拡張子が何もついていません。
44
+
45
+
46
+
47
+ versionで保存したファイルのURLが保存されるところに何かまずいところがあるのでしょうか?
48
+
49
+ また、@m.movie.current_pathと入力した場合、nilが返却されます。ローカル環境では問題ないのですがherokuの場合、何か設定が必要だったりするのでしょうか?
36
50
 
37
51
 
38
52
 

2

質問内容の改善

2015/11/10 14:47

投稿

eskey_mo
eskey_mo

スコア34

test CHANGED
@@ -1 +1 @@
1
- heroku上でffmpegとcarrierwaveを使用して動画投稿時にscreenshotを作成する方法について
1
+ heroku上でffmpegとcarrierwaveを使用して作成したscreenshotを表示する方法について
test CHANGED
@@ -1,30 +1,18 @@
1
1
  ###前提・実現したいこと
2
2
 
3
- 今、railsで動画投稿が行えるWEBサイト作したいと考えています
3
+ ffmpeg&carrierwaveを使用して動画投稿時にその動画のscreenshotを作したいと考えています
4
-
5
- その中で投稿した動画のスクリーンショットを撮るためにffmpegのbuildpacksを追加しました
6
-
7
- 追加したbuildpacksは以下です
8
-
9
- https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
10
4
 
11
5
 
12
6
 
13
- 追加方法はheroku buildpacks:addで追加しています。heroku run "ffmpeg --version"で読み出しも行えます。
14
-
15
- しかし、追加した後いざ動画投稿してみてもスクリーンショットが作成されません。
16
-
17
- heroku logs --tailみてもffmpegがいている痕跡なく原因がつかめない状況です
7
+ 現在、プラットフォームはheroku、ホスト先はcloudinary使用して動画投稿部分の作成まで完了しました
18
8
 
19
9
 
20
10
 
21
- 無事ffmpegが動作する方法やこうすれば動作していない原因がわか等のドバイスがありしたらただけないでしょうか?
11
+ しかし、作たscreenshotの読み出しを行っているページにクセしても「We're sorry, but something went wrong.If you are the application owner check the logs for more information.」とエラー画面表示されるのみとなってしまいます。
22
12
 
23
13
 
24
14
 
25
- ###2015/11/10 追記###
26
-
27
- heroic logs --tailで画像表示部分を実行してみたところ以下のエラーが出ました
15
+ どうやら、screenshotの表示に失敗しているようでheroku logs --tailで画像表示部分を実行してみたところ以下のエラーが出ました
28
16
 
29
17
 
30
18
 
@@ -38,7 +26,13 @@
38
26
 
39
27
 
40
28
 
29
+ また、動画の方は@m.movie.urlで投稿先のURLの読み出しが行えますし、その動画の拡張子をjpgにした場合、変換した画像が読み込めます。ただし、movie_uploader.rb内の処理では「screenshot.jpg」にしているつもりなんですが・・・
30
+
31
+
32
+
33
+ どなたか同様の症状を解決したことがあれば解決策をご教示ください。
34
+
41
- もう一度@m.movie.url(:screenshot)読み出すと問題なくurl読み出せ
35
+ 、まったく別の方法でもいいので動画投稿時に作成screenshotを表示させる方法ありしたら教えてください!
42
36
 
43
37
 
44
38
 
@@ -114,8 +108,6 @@
114
108
 
115
109
  def screenshot
116
110
 
117
- directory = File.dirname
118
-
119
111
  tmpfile = File.join(File.dirname(current_path), "tmpfile")
120
112
 
121
113
  File.rename(current_path, tmpfile)

1

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

2015/11/10 03:47

投稿

eskey_mo
eskey_mo

スコア34

test CHANGED
@@ -1 +1 @@
1
- heroku上でffmpegとrailsを使用する方法について
1
+ heroku上でffmpegとcarrierwaveを使用して動画投稿時にscreenshotを作成する方法について
test CHANGED
@@ -22,23 +22,85 @@
22
22
 
23
23
 
24
24
 
25
+ ###2015/11/10 追記###
26
+
27
+ heroic logs --tailで画像表示部分を実行してみたところ以下のエラーが出ました
28
+
29
+
30
+
31
+ irb(main):003:0> @m.movie.url(:screenshot)
32
+
33
+ ArgumentError: wrong number of arguments (0 for 1)
34
+
35
+ from /app/app/uploaders/movie_uploader.rb:32:in `dirname'
36
+
37
+ from /app/app/uploaders/movie_uploader.rb:32:in `screenshot'
38
+
39
+
40
+
41
+ ただしもう一度@m.movie.url(:screenshot)を読み出すと問題なくurlが読み出せます
42
+
43
+
44
+
45
+
46
+
25
47
  ###ソースコード
26
48
 
27
- 関係ありそうなところ抜粋
49
+ 動画投稿部分
28
50
 
29
51
  ```ruby
30
52
 
53
+ # movie_uploader.rb
54
+
31
- # 読み込み部分
55
+ # encoding: utf-8
32
56
 
33
57
  require 'streamio-ffmpeg'
34
58
 
59
+ require 'carrierwave'
60
+
61
+ class MovieUploader < CarrierWave::Uploader::Base
35
62
 
36
63
 
64
+
65
+ if Rails.env.production?
66
+
67
+ include Cloudinary::CarrierWave
68
+
37
- # 処理部分
69
+ else
70
+
71
+ storage :file
72
+
73
+ end
74
+
75
+ # Include RMagick or MiniMagick support:
76
+
77
+ include CarrierWave::RMagick
78
+
79
+ # include CarrierWave::MiniMagick
80
+
81
+
82
+
83
+ def store_dir
84
+
85
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
86
+
87
+ end
88
+
89
+
90
+
91
+ def extension_white_list
92
+
93
+ %w(jpg jpeg gif png mov wmv mp4 flv avi)
94
+
95
+ end
96
+
97
+
38
98
 
39
99
  version :screenshot do
40
100
 
41
101
  process :screenshot
102
+
103
+ process :convert => "jpg"
42
104
 
43
105
  def full_filename (for_file = model.logo.file)
44
106
 
@@ -52,24 +114,34 @@
52
114
 
53
115
  def screenshot
54
116
 
117
+ directory = File.dirname
118
+
55
119
  tmpfile = File.join(File.dirname(current_path), "tmpfile")
56
-
57
-
58
120
 
59
121
  File.rename(current_path, tmpfile)
60
122
 
61
-
62
-
63
123
  movie = FFMPEG::Movie.new(tmpfile)
64
124
 
65
- movie.screenshot(current_path + ".jpg", {resolution: '512x312' }, preserve_aspect_ratio: :width)
125
+ movie.screenshot(current_path + ".jpg", preserve_aspect_ratio: :width)
66
126
 
67
127
  File.rename(current_path + ".jpg", current_path)
68
-
69
-
70
128
 
71
129
  File.delete(tmpfile)
72
130
 
73
131
  end
74
132
 
133
+ end
134
+
135
+
136
+
75
137
  ```
138
+
139
+
140
+
141
+ 表示部分
142
+
143
+ ```html
144
+
145
+ <%= image_tag @movie.movie.url(:screenshot) %>
146
+
147
+ ```