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

使用 ffmpeg 修剪视频;在 Mac 上看起来不错,但音频/视频与 Windows 默认播放器不同步 3 秒嗯?

如何解决使用 ffmpeg 修剪视频;在 Mac 上看起来不错,但音频/视频与 Windows 默认播放器不同步 3 秒嗯?

我有一个视频,当我在 Windows 或 Mac 上播放时,它看起来和听起来都不错。
我用 ffmpeg 修剪了它。
结果文件

  • 在带有 QuickTime 的 Mac 上运行良好
  • 在 Windows QuickTime 上引发错误错误 -2041:在电影 (myfile.trimmed.mp4) 中发现无效的示例描述)
  • 使用 Win10 的认播放器(电影和电视?)播放,但音频比视频晚了近 3 秒(根据我计算密西西比的情况确定,没有比这更精确的了。)

我的原始文件

ffprobe -hide_banner myfile.mpg
[h264 @ 00000253d2d762c0] Increasing reorder buffer to 2
[mpegts @ 00000253d2d6fe00] PES packet size mismatch
[mpegts @ 00000253d2d6fe00] Packet corrupt (stream = 1,dts = 8467425232).
[mpegts @ 00000253d2d6fe00] Could not find codec parameters for stream 2 (UnkNown: none ([151][0][0][0] / 0x0097)): unkNown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0,mpegts,from 'myfile.mpg':
  Duration: 00:30:00.63,start: 92282.982578,bitrate: 6249 kb/s
  Program 1
    Stream #0:0[0x1aab]: Video: h264 (High) ([27][0][0][0] / 0x001B),yuv420p(tv,progressive),1280x720 [SAR 1:1 DAR 16:9],Closed Captions,59.94 fps,59.94 tbr,90k tbn,119.88 tbc
    Stream #0:1[0x1abf]: Audio: ac3 ([129][0][0][0] / 0x0081),48000 Hz,5.1(side),fltp,384 kb/s
    Stream #0:2[0x1ac1]: UnkNown: none ([151][0][0][0] / 0x0097)
Unsupported codec with id 0 for input stream 2

我注意到的东西:

  • mpg 容器不应包含 h264 视频。这让我很困惑,但在修剪步骤中重新混合到 mp4 容器似乎可以解决问题。
  • 开始时间并非接近于零......但我认为这没有任何问题。
  • 当我在播放器中观看时,音频和视频是同步的,但文件包含在视频播放前近 1 秒开始的音频。第一个音频包有 pkt_pts_time=92282.982578(与上面 ffprobe 报告的开始匹配),而第一个视频包有 pkt_pts_time=92283.926411

所以我修剪它,就像这样......

ffmpeg -hide_banner -ss 00:17:24 -i myfile.mpg -t 00:02:40 -c copy myfile.trimmed.mp4
[h264 @ 000002d5d73f4040] Increasing reorder buffer to 2
[mpegts @ 000002d5d73edbc0] PES packet size mismatch
[mpegts @ 000002d5d73edbc0] Packet corrupt (stream = 1,dts = 8467425232).
[mpegts @ 000002d5d73edbc0] Could not find codec parameters for stream 2 (UnkNown: none ([151][0][0][0] / 0x0097)): unkNown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 000002d5d73edbc0] PES packet size mismatch
[mpegts @ 000002d5d73edbc0] Packet corrupt (stream = 1,dts = 8467425232).
Input #0,384 kb/s
    Stream #0:2[0x1ac1]: UnkNown: none ([151][0][0][0] / 0x0097)
[mp4 @ 000002d5d7e90540] track 1: codec frame size is not set
Output #0,mp4,to 'myfile.trimmed.mp4':
  Metadata:
    encoder         : Lavf58.45.100
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661),q=2-31,90k tbc
    Stream #0:1: Audio: ac3 (ac-3 / 0x332D6361),384 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop,[?] for help
frame= 9570 fps=0.0 q=-1.0 Lsize=  122587kB time=00:02:39.99 bitrate=6276.6kbits/s speed= 462x
video:114772kB audio:7545kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.220873%
ffprobe -hide_banner myfile.trimmed.mp4
Input #0,mov,m4a,3gp,3g2,mj2,from 'myfile.trimmed.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:02:40.96,start: 0.000000,bitrate: 6239 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661),yuv420p(tv),5890 kb/s,119.88 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361),384 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Side data:
      audio service type: main

...我得到的文件可以在 Mac 上正常播放,但不能在 Windows 的认播放器上播放。 ffprobe 报告的开始时间为 0(以上),因此必须通过修剪或重新混合来清理。当我查看帧时,第一个音频包的 pkt_pts_time=0.000000,第一个视频包的 pkt_pts_time=0.452000。

我接下来要去哪里?

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