encoding - 编辑后的视频会产生比原始图像更小的图像,即使分辨率更高
问题描述
我从我的 Humax 录制了 .ts 格式的录音,当使用 VLC 播放时,它完全水平地填满了窗口。在全屏模式下,它以信箱样式水平填充屏幕,通过我的 PS/3 播放时在电视上也是如此。到目前为止一切都很好。
这是 ffprobe 输出:
Duration: 02:16:37.72, start: 74238.902878, bitrate: 2554 kb/s
Stream #0:0[0x931]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv), 704x576 [SAR 16:11 DAR 16:9], max. 15000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
我使用 ffmpeg 更改音轨:
ffmpeg -i movie.ts -c:v libx264 -c:a ac3 -crf 20 -map 0:v:0 -map 0:a:1 movie.mp4
并制作了一个也可以正确播放的 .mp4。
ff探针:
Duration: 02:16:37.68, start: 0.005333, bitrate: 1129 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 704x576 [SAR 16:11 DAR 16:9], 932 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
但是,如果我使用 OpenShot 对其进行编辑,无论我使用什么分辨率或纵横比,我都找不到任何能够以相同方式生成水平填充窗口的图像的导出格式。
示例:导出格式“DV/DVD Widescreen PAL (720x576)”生成此(示例)文件:
Duration: 00:00:39.12, start: 0.040000, bitrate: 563 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x576, 477 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
OpenShot 似乎没有设置 AR,因此它最初以 5:4 的比例在 VLC 中显示,但即使将 VLC AR 更改为最大 2.39:1 也不会完全从一侧拉伸到另一侧。
我使用 ffmpeg 尝试更改纵横比、更改分辨率以及设置 SAR 和 DAR,但均未成功。
这不可能是分辨率问题,因为我导出了 720p 和 1080i,像素很多,但都产生大致相同的结果 - 一个不会填满窗口的小图像,在电视上也是如此。原始记录只有 704x576,但填满了窗口。此外,原始录制的纵横比为 16:9(VLC 同意),但屏幕图像的实际测量 AR 更接近 2.04:1。
我希望虽然这可能是 OpenShot 问题,但问题的原因应该对 ffprobe 可见,并且可能可以使用 ffmpeg 修复。帮助将不胜感激。
解决方案
推荐阅读
- apache-spark - 优化 Spark DataFrame 分区
- c++ - 文件大于块大小的 libbzip2 问题
- hibernate - 为什么 hashcode() 会强制我的 JPA 映射在延迟加载时获取子实体,正确的实现是什么?
- php - 邮件刀片模板中的laravel正确的url
- vue.js - 如果错误,bootstrap-vue 可编辑表恢复值
- visual-studio - CMakeLists.txt 的 Visual Studio Code 语法高亮显示
- apache-camel - 无法访问文件夹时的骆驼文件消费者
- mysql - 从选择返回是/否,没有流控制或将表添加到数据库
- scala - 检查Scala枚举中的值是否存在于字符串数组中
- multithreading - 使用多线程在 VCL 上放置动画 GIF 图像