在 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>
,你可能在写入之前在某处搞砸了也是一步:)
我想弄清楚如何获取作为 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>
,你可能在写入之前在某处搞砸了也是一步:)