【问题标题】:FFMPEG converts incorrect mp4 to tsFFMPEG 将不正确的 mp4 转换为 ts
【发布时间】:2020-10-03 19:25:59
【问题描述】:

我在 h264 中有一个 video.MOV

当我使用 -c:v copy 将此视频转换为 .mp4 时,一切正常。

ffmpeg -i video.mp4 -c:v copy -c:a copy output.mp4

但如果我转换为具有相同 -c:v 副本的 .ts - 我会收到旋转视频。

ffmpeg -i video.mp4 -c:v copy -c:a copy output.ts // output is rotaed...WTF?

如果我指定 -c:v libx264 - 一切正常。

ffmpeg -i video.mp4 -c:libx264 -c:a copy output.ts

此命令的输出包含预期信息:

ffmpeg ffmpeg -i video.MOV -c:v copy -c:a copy output.ts

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.MOV':
....
   Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 15633 kb/s, 29.97 fps, 29.97 tbr, 600 tbn, 1200 tbc (default)
   Metadata:
       rotate          : 90
       ...
       encoder         : H.264
   Side data:
       displaymatrix: rotation of -90.00 degrees
   ...

Output #0, segment, to 'output.ts':
   ...
   Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, q=2-31, 15633 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 600 tbc (default)
   Metadata
       rotate          : 90
       ...
       encoder         : H.264
   Side data:
       displaymatrix: rotation of -90.00 degrees

我在转换为 mp4 时收到几乎相同的信息,但这里一切正常,在播放器中播放时旋转没有差异。

那么转换成ts有什么问题呢? 最终目标是将 mov 文件分段到 m3u8 播放列表与 ts 段,这里有同样的问题,所以我提供了更简单的例子。

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    视频是以手机用户通常录制的纵向/垂直模式录制的。

    手机传感器仍然记录 1920x1080,但添加了元数据,指示播放器在播放时将视频旋转 90 度,因此它以预期的方向播放 1080x1920。

    TS muxer 可能不支持旋转元数据(我没有验证)。

    您可能需要重新编码。 ffmpeg 将在重新编码时自动旋转,这就是命令 #3 起作用的原因。重新编码对 M3U8 来说不是一个坏主意,因为手机上的编码器可能效率低下,并且可能会显着节省文件大小,而使用 libx264 的损失并不那么明显。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 2018-05-10
      • 2015-09-03
      相关资源
      最近更新 更多