视频压缩后画质变差 Android

After compressing the video, it's quality getting dull in Android

我在 Android 中使用 ffmpeg 完成了视频压缩,但我遇到了一些问题。

我拍摄了一个整整一分钟的视频,它在我的 Nexus 5 上有 123 MB 的大小。我对同一视频进行了视频压缩,从 123 MB 压缩到大约 1.30 MB,大约需要 2 分钟已成功完成。

但问题是我的 SD 卡中有压缩视频,当我播放它时,视频的质量完全沉闷,下面是我使用 ffmpeg 的代码。

String[] complexCommand = {"ffmpeg", "-i", videoPath, "-strict","experimental","-s", "160x120","-r","25", "-vcodec", "mpeg4", "-b", "150k", "-ab","48000", "-ac", "2", "-ar", "22050", demoVideoFolder + "Compressed_Video.mp4"};

LoadJNI vk = new LoadJNI();
            try {
                 vk.run(complexCommand, workFolder, getApplicationContext(),
                 false);
                GeneralUtils.copyFileToFolder(vkLogPath, demoVideoFolder);
            } catch (Throwable e) {
                Log.e(Prefs.TAG, "vk run exeption.", e);
            } finally {
                if (wakeLock.isHeld())
                    wakeLock.release();
                else {
                    Log.i(Prefs.TAG,
                            "Wake lock is already released, doing nothing");
                }
            }
            Log.i(Prefs.TAG, "doInBackground finished");

这里 videopath 是我的文件路径,demofolder 是我的输出文件夹。我附上了快照,你看看吧。

请告诉我我应该做什么,所以提前你的努力将受到高度赞赏和感谢。

"Dull" 非常主观,我真的不知道该怎么做。如果您有想要讨论的特定工件,请 post 截图。我可以对您的命令行发表一些可能有帮助也可能没有帮助的一般性评论:

  • -s 160x120 - 我们回到了 1995 年吗?这就是我们在 90 年代中期说 "stamp-sized video" 时所指的。如果您不知道,这会将视频的大小调整为 160x120 的分辨率,这会破坏质量。
  • -r 25 你在这里随机删除和添加帧。您很可能想使用 fps 过滤器,或者完全删除此选项。
  • -vcodec mpeg4 - 现在人们使用 H.264 (-vcodec libx264),如果不是 HEVC/VP9 (-vcodec libx265/libvpx-vp9).
  • -b 150k - 这是一个非常低的比特率。如果您不喜欢视频质量,请提高比特率。
  • -严格的实验性 - 除非您知道自己在做什么,否则不要使用它。