上传到我的应用程序的视频转码设置有哪些?
What are good settings for transcoding videos uploaded to my app?
我正在开发一款允许用户分享视频的应用程序。问题是很多视频的比特率都很高。例如,来自旧 iPhone 的 4 分钟 H264 视频以 1080p 编码并运行约 17,000 kb/s(约 500 兆字节)。在此 bitrate/resolution 接受和分发此类视频对于社交应用程序来说不切实际。
我一直在使用 ffmpeg 将视频转码为更小的尺寸和更高的压缩率,但没有取得可接受的结果。例如:
ffmpeg \
-i in.mov \
-vf scale=w='if(gt(iw\,ih)\,780\,-2)':h='if(gt(iw\,ih)\,-2\,780)' \
-c:v libx264 \
-crf 28 \
-preset medium \
-pix_fmt yuv420p \
-movflags +faststart \
out.mp4
此命令将上述 500MB 文件转码为 70MB。它将视频的较大尺寸缩放到 780 像素并压缩了视频。结果没问题,但是文件还是很大。
将较长的尺寸缩小到 480 像素,文件减小到 40MB。仍然很大,现在明显退化了。此外,转码仍然需要相当长的时间:在我 4 岁的 i7 Macbook Pro 和 16GB RAM 上大约是 1-1.5 倍。
我不确定如何对此进行改进。浏览器不支持 H265。我在想:
- 如何进一步缩小尺寸?
- 如何在不显着降低质量的情况下以比 1 倍更快的速度转码?即使是 2-3 倍似乎也不太好?
这是最好的了吗?
Is this as good as it gets?
是的。视频编码没有免费的午餐
如果机器有硬件编码器,例如某些英特尔 CPU 上的 QuickSync,或 Nvidia Gpus 上的 nvenc(或某些 Macs/iOS 上的 videotoolbox),您可以加快编码速度。但是文件大小会一样,甚至会大一点。
我正在开发一款允许用户分享视频的应用程序。问题是很多视频的比特率都很高。例如,来自旧 iPhone 的 4 分钟 H264 视频以 1080p 编码并运行约 17,000 kb/s(约 500 兆字节)。在此 bitrate/resolution 接受和分发此类视频对于社交应用程序来说不切实际。
我一直在使用 ffmpeg 将视频转码为更小的尺寸和更高的压缩率,但没有取得可接受的结果。例如:
ffmpeg \
-i in.mov \
-vf scale=w='if(gt(iw\,ih)\,780\,-2)':h='if(gt(iw\,ih)\,-2\,780)' \
-c:v libx264 \
-crf 28 \
-preset medium \
-pix_fmt yuv420p \
-movflags +faststart \
out.mp4
此命令将上述 500MB 文件转码为 70MB。它将视频的较大尺寸缩放到 780 像素并压缩了视频。结果没问题,但是文件还是很大。
将较长的尺寸缩小到 480 像素,文件减小到 40MB。仍然很大,现在明显退化了。此外,转码仍然需要相当长的时间:在我 4 岁的 i7 Macbook Pro 和 16GB RAM 上大约是 1-1.5 倍。
我不确定如何对此进行改进。浏览器不支持 H265。我在想:
- 如何进一步缩小尺寸?
- 如何在不显着降低质量的情况下以比 1 倍更快的速度转码?即使是 2-3 倍似乎也不太好?
这是最好的了吗?
Is this as good as it gets?
是的。视频编码没有免费的午餐
如果机器有硬件编码器,例如某些英特尔 CPU 上的 QuickSync,或 Nvidia Gpus 上的 nvenc(或某些 Macs/iOS 上的 videotoolbox),您可以加快编码速度。但是文件大小会一样,甚至会大一点。