我正在开发上传视频(取自iPhone)到我的服务器。
但是,我不知道如何实现。
任何源代码objective-c或swift都将受到欢迎。
我有120fps或240fps视频(它是slo-mo)。当我在我的iPhone6上播放这些视频时。我可以看到slo-mo效应。(我知道播放帧率是30fps。)
我想在上传到我的服务器之前转换视频,从120/240 fps到30fps视频。(我的意思不是调整播放帧率,而是视频转码为30fps)另外,我想检查slo-mo效果的起点和终点。( iPhone可能会将此信息记录为视频二进制文件(它可能驻留在文件头中)。)
好吧,我想如果我使用ffmpeg库,它应该很容易(?)。
因此,任何建议都将受到欢迎。
发布于 2016-05-26 05:27:38
下面是我用来导入Adobe Premiere的ffmpeg命令行:
视频:
ffmpeg -i <input MOV> -filter "setpts=4.0*PTS" -r 30 -an videofilename.mp4-filter中的4.0表示iphone slomo视频是以120fps拍摄的,即4 × 30fps;相关的-r 30参数是30fps。例如,如果要导出为60fps,请使用setpts="2.0*PTS" -r 60
-an丢弃音频流
音频:
ffmpeg -i <input MOV> -filter "setpts=4.0*PTS" audiofilename.mp3此时,您的视频流和音频流分别位于不同的文件中。您可能可以使用ffmpeg重新组合它们。
但有一个问题: iPhone将以正常速度录制音频流,这意味着转换后的音轨(在我的示例中)将比转换后的视频音轨短4倍。如果你使用Premiere,导入视频和音频文件,右击时间线中的音轨,选择“速度/持续时间”,并设置speed=25% (或50%120fps至60fps)
发布于 2019-09-29 05:39:53
对于具有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对于采用44100音频采样率的240fps素材
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对于采用48000音频采样率的240fps素材
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范围内的小数字)似乎是提高质量的最简单方法(代价是文件大小和编码时间)。例如,在out.mp4之前使用-crf 18
基于FFMPEG文档:https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video
在https://superuser.com/questions/292833/how-to-change-audio-frequency的帮助下音频减速(链接atempo=2.0,atempo=2.0会得到一个听起来很糟糕的结果)。
https://stackoverflow.com/questions/28191027
复制相似问题