视频视图中的mp4



我的视频文件的原始格式使其不适用于任何设备,所以我通过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();
}
}

我会考虑使用WEBM格式而不是MP4。WebM在我遇到的每一台安卓设备中都能播放。

如果您还没有,请查看推荐的媒体格式。如果解决方案有问题,您可以在480*360中创建另一个文件。可以肯定的是,无法播放高清视频的设备可能屏幕较小。在VideoView中添加一个setOnErrorListener,如果第一次尝试失败,请尝试以较小的分辨率再次播放视频。在OnErrorListener中返回true,以摆脱Can't play this video对话框。

编辑

我建议也仔细检查一下URI。根据这个线程,使用android.resource://不是一个好主意。

最新更新