音频的内容不是他们所报道的内容 - Paperclip

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了音频的内容不是他们所报道的内容 - Paperclip相关的知识,希望对你有一定的参考价值。

这里是Ruby的初学者!我正在尝试在ruby上创建一个Soundcloud克隆。当我尝试上传音频文件时,我收到错误: 1错误禁止保存此歌曲: 音频的内容不是他们报道的内容

控制器:song.rb

class Song < ActiveRecord::Base
belongs_to :user
has_attached_file :audio,
                  :url => "/assets/:class/:id/:attachment/:basename.:extension",
                  :path => ":rails_root/public/assets/:class/:id/:attachment/:basename.:extension"
validates_attachment :audio,
                     :content_type => { :content_type => ["audio/mpeg", "audio/mp3"] },
                     :file_name => { :matches => [/mp3\Z/] }

_form.html.erb

<%= form_for(@song) do |f| %>
<% if @song.errors.any? %>
<div id="error_explanation">
  <h2><%= pluralize(@song.errors.count, "error") %> prohibited this song from being saved:</h2>
  <ul>
  <% @song.errors.full_messages.each do |message| %>
    <li><%= message %></li>
  <% end %>
  </ul>
</div>
<% end %>
<div class="field">
 <%= f.label :audio %><br>
 <%= f.file_field :audio%>
</div>  
<div class="field">
 <%= f.label :title %><br>
 <%= f.text_field :title %>
</div>
<div class="field">
 <%= f.label :description %><br>
 <%= f.text_field :description %>
</div>
<div class="actions">
 <%= f.submit %>
</div>
<% end %>

show.html.erb

<p id="notice"><%= notice %></p>
<p>
<strong>Audio:</strong>
<%= @song.audio.url %>
</p>
<p>
<strong>Title:</strong>
<%= @song.title %>
</p>
<%= link_to 'Edit', edit_song_path(@song) %> |
<%= link_to 'Back', songs_path %>
答案

根据我对这个问题的体验,mp3元数据中的图像数据(即 - 专辑封面)是关键因素。图像数据触发内容类型欺骗机制,记录将无法通过验证。为了删除图像元数据,我用Audacity打开了mp3,并将其导出到一个新文件,该文件不包含图像元数据,因为Audacity似乎不会自动包含这个元素。

以上是关于音频的内容不是他们所报道的内容 - Paperclip的主要内容,如果未能解决你的问题,请参考以下文章

通过 Python 选择音频设备进行播放

数字音频取证技术讲解

语音聊天

视音频数据处理入门:AAC音频码流解析

(译)LearnOpenGL实际案例Breakout:音频

这可以在 AS3 中完成吗?