主要问题发生在处理召回
从Apple iOS上传的所有视频都可以正常处理。 但是,所有从Android设备上传的视频都出现了偏差。
在我的rails应用程序中,我正在使用Carrierwave:Video和FFMPEG在延迟的工作帮助下处理视频。
class VideoUploader < CarrierWave::Uploader::Base
include CarrierWave::Video
include CarrierWave::Video::Thumbnailer
# For carrierwave_backgrounder
include ::CarrierWave::Backgrounder::Delay
version :rescaled do
process encode_video: [
:mp4,
resolution: "640x480", # Aspect ratio is preserved automatically
audio_codec: "aac",
custom: "-strict experimental -q:v 0 -preset slow -g 30",
callbacks: { after_transcode: :set_success }
]
end
version :thumb do
process thumbnail: [{format: 'png', quality: 10, size: 400, strip: true, logger: Rails.logger}]
def full_filename for_file
png_name for_file, version_name
end
end
这是正确的视频屏幕截图
https://drive.google.com/open?id=1D0aNWcVxtL6DbTwBmWWIGzUUuyEyWNOG
这是使用FFMPEG进行视频处理后的视频屏幕截图
https://drive.google.com/open?id=1vilExHoan2UuRPH9RbiZig58H1TwyewA
(就像垂直按下一样)
如果您知道解决方法,请帮助我
答案 0 :(得分:0)
最后,我找到了解决方案,这就是...
我在课堂上单独需要FFMPEG库。
require 'streamio-ffmpeg'
然后调用自定义函数来完成编码工作。
version :rescaled do
process :encode
end
然后ENCODE方法将创建ffmpeg视频对象并进行转码。
def encode
movie = ::FFMPEG::Movie.new(current_path)
tmp_path = File.join( File.dirname(current_path), "tmpfile.mp4" )
options = "[define the options you want]"
movie.transcode(tmp_path, options)
File.rename tmp_path, current_path
end
这将覆盖载波的过程,并使用ffmpeg进行编码
就这些了……
请找到其他解决方案。
谢谢...
请参阅我的文章以获取更多信息: