Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios iPhone慢动作视频转码_Ios_Iphone_Video_Ffmpeg_Transcode - Fatal编程技术网

Ios 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

我正在开发上传视频(取自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
会产生可怕的声音效果)