3

我还检查了一些或更多类似的已发布问题,但没有一个得到任何令人满意的答复。

我的要求是大约压缩视频。1-2分钟。我的应用程序中的视频大小限制为 500 MB,持续时间限制为 4 分钟。

我尝试过的命令-

-i /storage/sdcard0/Videos/Lat_test.mp4 -r 20 -vcodec mpeg4 -preset ultrafast -c:a copy -tune fastdecode -strict -2 -b:v 150k /storage/sdcard0/Videos/output.mp4

-y -i /storage/sdcard0/Videos/test3.mp4 -crf 24 -vcodec mpeg4 -preset ultrafast -c:a copy -me_method zero -tune fastdecode -tune zerolatency -strict -2 -b:v 1000k -pix_fmt yuv420p /存储/sdcard0/视频/输出.mp4

还有一些在这里提到

1)https://github.com/Tourenathan-G5organisation/SiliCompressor(使用MediaCodec,而不是FFMPEG)。

2) https://github.com/lalongooo/VideoCompressor

尝试使用 Samsung Galaxy Grand GT-i9082,版本 5.0.1(已植根)时,失败并出现以下错误 -

> java.lang.IllegalStateException
> at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
> at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:1033)
> at com.iceteck.silicompressorr.videocompression.MediaController.convertVideo(MediaController.java:491)
> at com.iceteck.silicompressorr.SiliCompressor.compressVideo(SiliCompressor.java:300)
> at com.iceteck.silicompressor.SelectPictureActivity$VideoCompressAsyncTask.doInBackground(SelectPictureActivity.java:379)
> at com.iceteck.silicompressor.SelectPictureActivity$VideoCompressAsyncTask.doInBackground(SelectPictureActivity.java:358)
> at android.os.AsyncTask$2.call(AsyncTask.java:288)
> at java.util.concurrent.FutureTask.run(FutureTask.java:237)
> at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
> at java.lang.Thread.run(Thread.java:818)

请建议如何解决此问题。

或者please suggest any other better video compressing approach / sample / reference,如果可能的话

我尝试过使用 FFMPEG 和 MediaCodec 进行各种视频压缩示例,但没有一个效果很好。有几个非常非常慢。休息在一些设备上失败了。

4

0 回答 0