Ios iPhone慢动作视频转码
我正在开发上传视频(取自iPhone)到我的服务器 但是,我不知道如何实施 欢迎使用任何源代码Ios iPhone慢动作视频转码,ios,iphone,video,ffmpeg,transcode,Ios,Iphone,Video,Ffmpeg,Transcode,我正在开发上传视频(取自iPhone)到我的服务器 但是,我不知道如何实施 欢迎使用任何源代码objective-c或swift 我有120fps或240fps视频(这是一个slo-mo)。 当我在iPhone6上播放这些视频时。我可以看到slo-mo效应。 (我知道播放帧速率是30fps) 我想在上传到我的服务器之前将该视频从120/240 fps转换为30fps视频。(我的意思是不调整播放帧速率,这意味着视频转码到30fps) 另外,我想检查slo mo效果的起点和终点。 (可能iPhone
objective-c
或swift
我有120fps
或240fps
视频(这是一个slo-mo)。
当我在iPhone6上播放这些视频时。我可以看到slo-mo效应。
(我知道播放帧速率是30fps
)
我想在上传到我的服务器之前将该视频从120/240 fps
转换为30fps
视频。(我的意思是不调整播放帧速率,这意味着视频转码到30fps
)
另外,我想检查slo mo效果的起点和终点。
(可能iPhone会将此信息记录到视频二进制文件中(它可能位于文件头中。)
嗯,我想如果我使用ffmpeg库,应该很容易(?)
因此,欢迎提出任何建议。以下是我用于导入Adobe Premiere的ffmpeg命令行: 视频: 此时,视频和音频流在单独的文件中。您可能可以使用ffmpeg重新组合它们
但有一个问题:iPhone将以正常速度录制音频流,这意味着转换后的音轨将比转换后的视频音轨短4倍(在我的示例中)。如果使用Premiere,导入视频和音频文件,右键单击时间轴中的音轨,选择“速度/持续时间”,并将速度设置为25%(120fps至60fps为50%)对于音频采样率44100的120fps镜头:
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=4.0*PTS[v];[0:a]asetrate=11025,aresample=44100[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=8.0*PTS[v];[0:a]asetrate=5512.5,aresample=44100[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=8.0*PTS[v];[0:a]asetrate=6000,aresample=48000[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
对于240fps具有44100音频采样率的片段:
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=4.0*PTS[v];[0:a]asetrate=11025,aresample=44100[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=8.0*PTS[v];[0:a]asetrate=5512.5,aresample=44100[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=8.0*PTS[v];[0:a]asetrate=6000,aresample=48000[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
对于音频采样率48000的240fps镜头:
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=4.0*PTS[v];[0:a]asetrate=11025,aresample=44100[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=8.0*PTS[v];[0:a]asetrate=5512.5,aresample=44100[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
ffmpeg -i in.MOV -filter_complex "[0:v]setpts=8.0*PTS[v];[0:a]asetrate=6000,aresample=48000[a]" \
-map "[v]" -map "[a]" -r 30 out.mp4
结果视频的质量将很低。提高质量本身就是一门科学。目前,-crf
参数(在0–63
范围内的数字较低)似乎是提高质量的最简单方法(以文件大小和编码时间为代价)。例如,在输出之前使用-crf 18
。mp4
基于FFMPEG文档:
在音频减速的帮助下(链接atempo=2.0,atempo=2.0
会产生可怕的声音效果)