我正在使用Paperclip Gem处理我的Rails应用上的视频上传。我已按照一些other stackoverflow questions和外部教程中的说明操作,以使视频上传工作正常。但是,目前系统存在一个我不明白的奇怪故障。
上传两个不同的视频时,该应用可以显示一个缩略图,一个上传没有视频,也没有缩略图,只有另一个视频。
两个视频都使用相同的编解码器,长度大致相同,但尺寸和尺寸略有不同。文件大小。
当我上传它们时,test1
有缩略图,但我的浏览器不会加载视频文件。它存在于我的文件系统中,但Chrome无法播放。
test2
发生了相反的情况。它在我的文件系统中的缩略图是零字节,但视频在我的浏览器中正常加载。
以下是我的对象的回形针上传参数:
has_attached_file :video, :styles => {
:medium => { :format => 'mp4' },
:thumb => { :geometry => "500x500#", :format => 'jpg', :time => 10 }
}, :processors => [:transcoder]
validates_attachment_presence :video
validates_attachment :video, content_type: { content_type: ["video/mp4", "video/mov", "video/wav", "video/wmv"] }
答案 0 :(得分:1)
我可以毫无问题地在多个浏览器中播放这两个文件。
但是, test1.mp4 可能无法(似乎)工作的原因是:
test1.mp4
在文件末尾有moov
个原子:
AtomicParsley test1.mp4 -T
Atom ftyp @ 0 of size: 32, ends @ 32
Atom free @ 32 of size: 8, ends @ 40
Atom mdat @ 40 of size: 1310866, ends @ 1310906
Atom moov @ 1310906 of size: 9926, ends @ 1320832
这意味着浏览器必须先完全下载文件才能播放。如果您的连接速度很慢,可能需要一段时间才会显示它无效。
test2.mp4
在文件开头有moov
个原子,这意味着它可以在下载完成之前播放:
AtomicParsley test2.mp4 -T
Atom ftyp @ 0 of size: 32, ends @ 32
Atom moov @ 32 of size: 7464, ends @ 7496
您可以使用moov
ffmpeg
选项或movflags faststart
工具将qt-faststart
原子移动到文件的开头。
如果您使用的是本地文件系统,则不应该成为问题,请参阅下文。
test1.mp4
使用Main
H.264
个人资料,test2.mp4
使用Constrained Baseline
个人资料。这可能是某些移动设备上的问题,因为Baseline
个人资料支持最多。但是,对于较新的设备,这不应该是一个问题。
您可以尝试使用Baseline
个人资料对其进行重新编码,看看是否存在问题。
答案 1 :(得分:0)
请按照此链接https://github.com/thoughtbot/paperclip/wiki/Thumbnail-Generation
我认为视频验证可以通过这种方式完成:
validates_attachment :video, :presence => true
而不是在没有它的情况下再做一次。
对于我跟随的图片:
validates_attachment :attachment, content_type: { content_type: ["image/jpeg", "image/gif", "image/png"] }
希望这对你有用: - )