在 Ruby 中写入 mp4 文件

Writing an mp4 file in Ruby

我想弄清楚如何获取作为 mp4 文件的文件内容的字符串并编写格式正确的 mp4 文件。目前我只是将字符串放入一个文件中并在其上添加一个 .mp4 扩展名,但是这个生成的文件不能被任何视频播放器播放(我假设是因为所有丢失的元数据)。

def write_mp4(mp4_string)
  file = File.new('movie.mp4', 'w')
  file.puts(mp4_string)
  file.close
end

对于上下文,我在 Rails 应用程序的 Ruby 中执行此操作,不确定这是否会改变任何内容。请帮忙谢谢。

  • 使用 "wb" 模式,这将抑制 EOL 转换并正确设置编码
  • 使用 write,而不是 puts,因为后者会插入一个额外的 EOL
  • 您可以使用快捷方式:File.write('movie.mp4', mp4_string, mode: 'wb') - 甚至 File.binwrite('movie.mp4', mp4_string)

当然,确保字符串之前确实包含一个正确的文件 - 例如,如果 mp4_string.encoding 没有 return #<Encoding:ASCII-8BIT>,你可能在写入之前在某处搞砸了也是一步:)