VideoView中的mp4

时间:2018-11-29 18:52:29

标签: android mp4 android-videoview video-encoding

我对视频文件使用的原始格式使其不适用于任何设备,因此我通过ffmpeg对其进行了运行,以将其转换为更兼容的类型。现在,它可以在大多数设备上运行,但是仍然有一些错误提示“无法播放此文件”

我用来转换它的命令是:

ffmpeg -i <INPUT_VIDEO> -c:v libx264 -profile:v baseline -c:a aac -ar 44100 -ac 2 -b:a 128k -movflags faststart output.mp4

我可以使用更好的转换参数使它在所有设备上通用吗? (我知道480x360 h264适用于所有设备,但我不想放弃视频质量)

在某些设备上可以使用的代码:

public class SplashActivity extends AppCompatActivity {

    VideoView videoView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);
        videoView = (VideoView) findViewById(R.id.video_view);

        Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.splashv4);
        videoView.setVideoURI(video);

        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                startNextActivity();
            }
        });

        videoView.start();
    }

    private void startNextActivity() {
        if (isFinishing())
            return;
        startActivity(new Intent(this, LoginActivity.class));
        finish();
    }
}

2 个答案:

答案 0 :(得分:0)

我会考虑使用WEBM格式而不是MP4。 WebM可以在我遇到的每台Android设备中播放。

答案 1 :(得分:0)

如果还没有,请查看recommended media formats。如果解决该问题,则可以在480 * 360中创建另一个文件。可以肯定地说,无法播放高清视频的设备的屏幕可能较小。将setOnErrorListener添加到VideoView中,如果第一次尝试失败,请尝试以较小的分辨率再次播放视频。在true中返回OnErrorListener,以摆脱Can't play this video对话框。

编辑

我也建议再次检查URI。根据{{​​3}},使用android.resource://不是一个好主意。