ペーパークリップジェムとs3ストレージを使用して、ユーザーがアップロードしたビデオをRoRsサイトに追加しています。なんらかの理由で、ユーザーがmp4ファイルをアップロードするたびに、s3はそのファイルのcontent-typeを。application/mp4
の代わりに設定しますvideo/mp4
。
イニシャライザファイルにmp4mimeタイプを登録したことに注意してください。
Mime::Type.lookup_by_extension('mp4').to_s
=> "video/mp4"
これが私の投稿モデルの関連部分です:
has_attached_file :video,
:storage => :s3,
:s3_credentials => "#{Rails.root.to_s}/config/s3.yml",
:path => "/video/:id/:filename"
validates_attachment_content_type :video,
:content_type => ['video/mp4'],
:message => "Sorry, this site currently only supports MP4 video"
ペーパークリップやs3のセットアップに何が欠けていますか。
####アップデート#####
Railsの知識を超えている何らかの理由で、mp4に含まれるファイルのデフォルトのmimeタイプは次のとおりです。
MIME::Types.type_for("my_video.mp4").to_s
=> "[application/mp4, audio/mp4, video/mp4, video/vnd.objectvideo]"
したがって、ペーパークリップがmp4ファイルをs3に送信すると、ファイルのmimeタイプが最初のデフォルトの「application/mp4」として識別されるように見えます。そのため、s3はファイルを「application/mp4」のコンテンツタイプを持つものとして識別します。これらのmp4ファイルのストリーミングを有効にしたいので、ファイルが「video/mp4」のmimeタイプであることを識別するためにペーパークリップが必要です。
これを可能にするためにペーパークリップを変更する方法(おそらくbefore_post_processフィルターで)がありますか、またはmp4ファイルが「video/mp4」であることを識別するためにinitファイルを介してレールを変更する方法があります。私がどちらかを行うことができれば、どちらの方法が最善です。
ご協力いただきありがとうございます