2

我有一个 .mp4 视频,它记录在 iphone4s 中。这个视频文件包含“旋转 - 180”元数据。

当我使用 ffmpeg 将 .mp4 文件转换为 .ts 时。我丢失了“旋转”元标记。

我使用的 ffmpeg 命令如下所示。

ffmpeg -i input_file.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output_file.ts

有谁知道如何将“旋转”元数据设置为 .ts 文件?

或者

将输入 .mp4 文件中的所有元数据复制到输出 .ts 文件的任何其他方式

谢谢

4

1 回答 1

3

使用 ffmpeg 将旋转元数据添加到 .ts 文件似乎没有任何作用。只有重新编码有效。

我的输入文件的旋转值为 90。
终端命令:

./ffmpeg -i 输入文件.mp4

元数据:

输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自“input_file.mp4”:
元数据:
major_brand:
isom minor_version:0
compatible_brands:isom3gp4
creation_time:2013-08-27 21:25:13
持续时间:00: 00:21.33,开始:0.000000,比特率:16820 kb/s
流 #0:0(eng):视频:h264(高)(avc1 / 0x31637661),yuv420p,1920x1080,17011 kb/s,30 fps,30 tbr, 90k tbn,180k tbc
元数据:
旋转:90
creation_time:2013-08-27 21:25:13
handler_name:VideoHandle
Stream #0:1(eng):音频:aac (mp4a / 0x6134706D),48000 Hz,立体声,fltp, 121 kb/s
元数据:
创建时间:2013-08-27 21:25:13
handler_name:SoundHandle

以下尝试未获得要复制的旋转值:

./ffmpeg -y -i input_file.mp4 -vcodec copy -acodec copy -bsf h264_mp4toannexb output_file.ts
./ffmpeg -y -i input_file.mp4 -vcodec copy -acodec copy -bsf h264_mp4toannexb -metadata rotate=90 output_file.ts
/ /-------- 即使手动将元数据指定为第一个视频流也不起作用:------//
./ffmpeg -y -i input_file.mp4 -vcodec copy -acodec copy -bsf h264_mp4toannexb -metadata :s:v:0 旋转=90 output_file.ts

即使您可以手动注入元数据,例如:

./ffmpeg -y -i input_file.mp4 -vcodec copy -acodec copy -bsf h264_mp4toannexb -metadata TITLE='Test Title' output_file.ts

这确实有效,但需要重新编码,与上面的视频和音频编解码器复制相比,这确实效率低下。
(1 == 90 度顺时针旋转)

./ffmpeg -y -i input_file.mp4 -vf "transpose=1" output_file.ts

于 2013-09-23T13:31:56.863 回答