Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FFMPEG将不正确的mp4转换为ts_Ffmpeg - Fatal编程技术网

FFMPEG将不正确的mp4转换为ts

FFMPEG将不正确的mp4转换为ts,ffmpeg,Ffmpeg,我在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-all也可以 ffmpeg -i vid

我在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-all也可以

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有什么问题呢?
最终目标是使用ts片段将mov文件分割为m3u8播放列表,这里也有相同的问题,因此我提供了更简单的示例。

视频是以纵向/垂直模式录制的,这与手机用户通常录制的一样

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

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

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