微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

两个文件的 ffmpeg 连接导致视频格式错误

如何解决两个文件的 ffmpeg 连接导致视频格式错误

我处理两个视频如下:

ffmpeg -i video-raw/455848793538790988_duration18.051.mp4 -b:v 993k -b:a 128k -vf "scale=720x1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2,setsar=1:1" video-proc/455848793538790988_duration18.051.mp4

ffmpeg -i video-raw/14425661295137552_duration11.666.mp4  -b:v 993k -b:a 128k -vf "scale=720x1280:force_original_aspect_ratio=decrease,setsar=1:1" video-proc/14425661295137552_duration11.666.mp4

然后运行以下命令进行连接:

ffmpeg -f concat -safe 0 -i video-concat/dogs-2021-04-17-06-46-id-1.txt -c:v copy -c:a copy ./output.mp4>

生成的视频可以正常启动,但是在播放第二个视频时,图像卡住并且声音变慢。

ffprobe 结果如下:

处理前:

ffprobe video-raw/14425661295137552_duration11.666.mp4 

Input #0,mov,mp4,m4a,3gp,3g2,mj2,from 'video-raw/14425661295137552_duration11.666.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:11.68,start: 0.000000,bitrate: 565 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661),yuv420p(tv,bt709),640x800 [SAR 1:1 DAR 4:5],462 kb/s,30 fps,30 tbr,90k tbn,60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D),44100 Hz,stereo,fltp,93 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

第二个:

ffprobe video-raw/455848793538790988_duration18.051.mp4

Input #0,from 'video-raw/455848793538790988_duration18.051.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:18.07,bitrate: 655 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661),smpte170m/bt709/bt709),576x1024 [SAR 1:1 DAR 9:16],585 kb/s,29.97 fps,29.97 tbr,59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (HE-AACv2) (mp4a / 0x6134706D),62 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

处理后:

ffprobe video-proc/14425661295137552_duration11.666.mp4
Input #0,from 'video-proc/14425661295137552_duration11.666.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:11.70,bitrate: 1133 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661),yuv420p,720x1280 [SAR 1:1 DAR 9:16],993 kb/s,15360 tbn,130 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

第二个

ffprobe video-proc/455848793538790988_duration18.051.mp4
Input #0,from 'video-proc/455848793538790988_duration18.051.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:18.19,bitrate: 1044 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661),923 kb/s,30k tbn,59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D),112 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

有什么想法有什么问题吗?两个视频在处理后单独播放完美,但在连接后不播放

解决方法

最终 Reddit 上的社区回答了这个问题 here

问题是,即使在处理命令之后,我的两个输入的 FPS 也不相同 - 所以我为两个处理命令添加了“-r 30”以强制 FPS 为 30,并且 concat 像魔术一样工作

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。