我想使用ffmpeg工具转码视频流并仅更改视频流分辨率,即视频和音频参数应保持不变.
根据ffmpeg的手册页,以下命令行应该提供所需的结果:
ffmpeg -i input.mp4 -vcodec copy -acodec copy -s WxH output.avi
Run Code Online (Sandbox Code Playgroud)
输入流的视频编解码器与avi容器兼容.
实际结果是分辨率保持不变,似乎流只是在avi容器中重新打包.
输出流的分辨率在没有-vcodec copy选项的情况下成功更改,但视频编解码器已更改:h264(约束基线) - > mpeg4(简单配置文件).
当你copy是视频流时,你不能改变它的任何参数,因为......好吧,你正在复制它.ffmpeg不会以任何方式接触它,因此它不能改变尺寸,帧速率等.
此外,ffmpeg如果您未指定默认视频编解码器,则始终选择默认视频编解码器.对于AVI文件,那是mpeg4.
如果您想要H.264视频,请选择-c:v libx264(或者-vcodec libx264相同).如果您需要保留原始配置文件,请使用-profile:v baseline.
两件事情:
更改大小后,您将重新编码视频.这会降低质量并可能严重损害视频.为了弥补这一点,您可能需要设置更高的质量级别.您可以通过将恒定速率因子设置为低于默认值23的任何值来实现此目的,例如使用-crf 20.试验并观看视频的外观.如果你有时间,添加-preset slow(或slower,veryslow),这将给你更好的压缩.
在您的情况下并不重要,因为您的输入使用约束基线配置文件,但请注意,至少在使用B图片时,AVI中的H.264不受支持.基线不支持B图片,所以你应该没事.如果您使用Main配置文件或上述任何内容,可能会发生某些设备或播放器无法播放文件.我宁愿将它复制到MP4或MKV容器中,特别是如果你的输入文件是MP4的话.
| 归档时间: |
|
| 查看次数: |
14333 次 |
| 最近记录: |