在 ffmpeg 中对 360 视频使用视频滤镜时保留等距矩形边数据

在 ffmpeg 中对 360 视频使用视频滤镜时保留等距矩形边数据

我有一个 360° 视频,想使用 ffmpeg 将其横向移动,以便在播放器中打开视频时默认视点会移动。我发现了这个问题 (如何在 ffmpeg 中水平偏移视频?) 帮助我完成了转换,但是当我使用此方法来转换视频时,视频的侧面数据(包含等距矩形格式的信息)就消失了。

ffprobe这是我的输入文件中使用的相关部分:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.83.100 Duration: 00:00:05.01, start: 0.000000, bitrate: 57592 kb/s Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuvj420p(pc), 3840x1920 [SAR 1:1 DAR 2:1], 57515 kb/s, 29.95 fps, 29.95 tbr, 29948 tbn, 59.90 tbc (default) Metadata: handler_name : VideoHandler Side data: spherical: equirectangular (0.000000/0.000000/0.000000)

然后我使用上面链接中描述的覆盖过滤器,如下所示:

ffmpeg -i test.mp4 -filter_complex "[0:v][0:v]overlay=960:0[bg]; [bg][0:v]overlay=960-W,format=yuvj420p[out]" -map "[out]" -map 0:a -c:v libx264 -crf 0 -c:a copy test_shifted.mp4

生成的文件中不包含等距矩形边数据:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_shifted.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.83.100 Duration: 00:00:05.01, start: 0.000000, bitrate: 245636 kb/s Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuvj420p(pc), 3840x1920 [SAR 1:1 DAR 2:1], 245758 kb/s, 29.95 fps, 29.95 tbr, 14974 tbn, 59.90 tbc (default) Metadata: handler_name : VideoHandler

我研究了这个问题(https://stackoverflow.com/questions/44760588/preserving-side-data-information-for-360-video-transcoding-using-ffmpeg) 并尝试了那里提到的方法(keepside标志,-strict unofficial),但问题本身涉及流复制,并且在视频流上使用过滤器时似乎都不起作用。

我正在使用ffmpeg version 3.4.4-0ubuntu0.18.04.1。如果有人能帮助我保留我的元数据,我将不胜感激!

相关内容