2015-12-21 21 views
0

我正在使用Streamio-ffmpeg来处理文件。该宝石显示控制台中转码的进度。我想向用户显示此进度。有没有这样做?如何在用户端的FFMPEG转码在rails中显示进度?

这是我的lib目录下:(凡转码完成)

file = ::FFMPEG::Movie.new(tmpfile) 

encoded_file = File.join(directory, new_name) 

file.transcode(encoded_file) { |progress| progressing = (progress * 100).round(2); puts "#{progressing} %"; } 

的{|进展| progressing =(progress * 100).round(2);放置“#{progressing}%”; }负责将进度打印到控制台。我可以在我的视图中显示这个吗?

输出上的控制台: -

I, [2015-12-21T12:48:55.322814 #19642] INFO -- : Running transcoding... 
ffmpeg -y -i /home/tps/sites/demo_projects/blog/public/uploads/tmp/1450682335-19642-6992/tmpfile /home/tps/sites/demo_projects/blog/public/uploads/tmp/1450682335-19642-6992/mp4_SampleVideo_1080x720_5mb.mp4 

0.0 % 

6.63 % 

9.57 % 

11.4 % 

13.46 % 

15.86 % 

18.3 % 

21.64 % 

25.03 % 

28.61 % 

32.09 % 

36.62 % 

43.29 % 

48.6 % 

53.23 % 

57.69 % 

61.68 % 

66.49 % 

70.1 % 

72.91 % 

75.75 % 

79.07 % 

83.73 % 

88.81 % 

93.07 % 

96.72 % 

99.05 % 

99.97 % 

100.0 % 

I, [2015-12-21T12:49:10.058592 #19642] INFO -- : Transcoding of /home/tps/sites/demo_projects/blog/public/uploads/tmp/1450682335-19642-6992/tmpfile to /home/tps/sites/demo_projects/blog/public/uploads/tmp/1450682335-19642-6992/mp4_SampleVideo_1080x720_5mb.mp4 succeeded 

我尝试了“使用包括的Act​​ionController ::直播”,但我没有得到任何正确的结果。我不知道在这种情况下如何使用“包含ActionController :: Live”。

在你的lib
+0

可以显示进度通过分配'“#{progressing}%”到一个实例变量,然后显示在视图上' –

+0

@RajarshiDas我如何分配它的实例变量?因为这段代码在库文件中,所以如何将lib文件变量传递给我的控制器作为响应,并在每次进度增加时在视图上显示? – Jiggs

+0

您可以使用autoload_path访问库的类并通过类方法获得'“#{progressing}%”'返回的数组,然后将其存储在一个实例变量中,然后将其显示在数组中。每一个 –

回答

1

/file_process.rb

module FileProcess 

    def progress(tmpfile) 
    arr = [] 
    file = ::FFMPEG::Movie.new(tmpfile) 
    encoded_file = File.join(directory, new_name) 
    file.transcode(encoded_file) { |progress| progressing = (progress * 100).round(2); arr << "#{progressing} %"; } 
    arr 
    end 

    def self.included(base) 
    base.send :helper_method, :progress 
    end 
end 
现在

在控制器

class FileProcessingsController < ApplicationController 
    include 'file_process' 
end 

现在在视图中可以使用progress辅助方法来显示每个进程

+0

控制器如何知道哪个文件正在转码? –

+0

是的,但如果您通过回形针上传,文件处理过程如何工作? –

+0

是的,它会然后不同的方式....但用户告诉lib他他mya使用satic文件..但我会张贴回形针 –