社区
Android
帖子详情
使用VideoView 播放视频 出现的 error(1,-1004)问题
_shikh
2012-12-25 11:30:42
我使用的是vitamio 框架做的一个视频播放器,现在出现这样一个问题,在播放视频时,正常播放一部分后会出现 ERROR/MediaPlayer(2305): error (1, -1004) 异常,希望大牛们能给小弟指点迷津...
...全文
1107
回复
打赏
收藏
使用VideoView 播放视频 出现的 error(1,-1004)问题
我使用的是vitamio 框架做的一个视频播放器,现在出现这样一个问题,在播放视频时,正常播放一部分后会出现 ERROR/MediaPlayer(2305): error (1, -1004) 异常,希望大牛们能给小弟指点迷津...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Android Studio 视频播放失败 start called in state1 异常怎么解决
很多朋友问小编在
使用
MediaPlayer播放音频时报出 E/MediaPlayerNative: start called in state 1, mPlayer(0x0)
问题
,该如何处理呢,今天小编给大家带来了Android Studio 视频播放失败 start called in state1 异常
问题
,需要的朋友可以参考下
Android2.0源代码
用来
播放视频
文件。该
VideoView
类可以加载各种来源的图像(如资源或内容提供商),需要计算它从视频测量,以便它可以在任何布局管理器
使用
,并提供诸如缩放和着色的各种显示选项。在其他的平台上面可能VideoPlayer开发是一个比较有挑战性的工作,但是在Android上面VideoPlayer的开发,基本上可以做到傻瓜式啦。本文简单对VideoPlayer的开发进行简单的介绍。 实例 1.布局文件
<
VideoView
android:id="@+id/
videoview
" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" />
2.Java代码 package com.wjq; import android.app.Activity; import android.content.pm.ActivityInfo; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.widget.MediaController; import android.widget.
VideoView
; public class
VideoView
Demo extends Activity implements MediaPlayer.On
Error
Listener,MediaPlayer.OnCompletionListener{ public static final String TAG = "VideoPlayer"; private
VideoView
m
VideoView
; private Uri mUri; private int mPositionWhenPaused = -1; private MediaController mMediaController; /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.
videoview
); this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); m
VideoView
= (
VideoView
)findViewById(R.id.
videoview
); //文件路径 mUri = Uri.parse(Environment.getExternalStorageDirectory() + "/ziranyouli.3gp"); //Create media controller mMediaController = new MediaController(this); //设置MediaController m
VideoView
.setMediaController(mMediaController); } //监听MediaPlayer上报的错误信息 @Override public boolean on
Error
(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub return false; } //Video播完的时候得到通知 @Override public void onCompletion(MediaPlayer mp) { this.finish(); } //开始 public void onStart() { // Play Video m
VideoView
.setVideoURI(mUri); m
VideoView
.start(); super.onStart(); } //暂停 public void onPause() { // Stop video when the activity is pause. mPositionWhenPaused = m
VideoView
.getCurrentPosition(); m
VideoView
.stopPlayback(); Log.d(TAG, "OnStop: mPositionWhenPaused = " + mPositionWhenPaused); Log.d(TAG, "OnStop: getDuration = " + m
VideoView
.getDuration()); super.onPause(); } public void onResume() { // Resume video player if(mPositionWhenPaused >= 0) { m
VideoView
.seekTo(mPositionWhenPaused); mPositionWhenPaused = -1; } super.onResume(); } }
Android打点播放器
我将带领大家
使用
Android亲手打造... 3、亲手定制
VideoView
和MediaController:自定义视频界面类和视频控制类,完全控制播放器。 总结: 汇总出一个API函数,任由第三方来调用,还可以继续二次开发。
WelcomeVideoPager-仿蚂蜂窝自由行和慕课网视频欢迎页.zip
仿蚂蜂窝自由行和慕课网视频欢迎页一.资源准备三个比较短小的视频:视频下载二.开始编写代码1.在项目的res下新建一个raw文件夹,放入准备好的这三个视频2.自定义
播放视频
的Custom
VideoView
在这个自定义View里面提供一个
播放视频
的方法。用户只需要传入播放路径就可以了,并且可一循环播放。package cn.bluemobi.dylan.welcomevideopager; import android.content.Context; import android.media.MediaPlayer; import android.net.Uri; import android.util.AttributeSet; import android.view.View; import android.widget.
VideoView
; /** * 可以
播放视频
的View * Created by yuandl on 2016-11-10. */ public class Custom
VideoView
extends
VideoView
{ public Custom
VideoView
(Context context) { super(context); } public Custom
VideoView
(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public Custom
VideoView
(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(heightMeasureSpec)); } /** *
播放视频
* * @param uri 播放地址 */ public void playVideo(Uri uri) { if (uri == null) { throw new IllegalArgumentException("Uri can not be null"); } /**设置播放路径**/ setVideoURI(uri); /**开始播放**/ start(); setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { /**设置循环播放**/ mp.setLooping(true); } }); setOn
Error
Listener(new MediaPlayer.On
Error
Listener() { @Override public boolean on
Error
(MediaPlayer mp, int what, int extra) { return true; } }); } }3.建立没个欢迎页面的Fragment去加载自定义视频View的视图package cn.bluemobi.dylan.welcomevideopager; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * Created by yuandl on 2016-11-10. */ public class GuildFragment extends Fragment { private Custom
VideoView
custom
VideoView
; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { custom
VideoView
= new Custom
VideoView
(getContext()); /**获取参数,根据不同的参数播放不同的视频**/ int index = getArguments().getInt("index"); Uri uri; if (index == 1) { uri = Uri.parse("android.resource://" getActivity().getPackageName() "/" R.raw.guide_1); } else if (index == 2) { uri = Uri.parse("android.resource://" getActivity().getPackageName() "/" R.raw.guide_2); } else { uri = Uri.parse("android.resource://" getActivity().getPackageName() "/" R.raw.guide_3); } /**
播放视频
**/ custom
VideoView
.playVideo(uri); return custom
VideoView
; } /** * 记得在销毁的时候让播放的视频终止 */ @Override public void onDestroy() { super.onDestroy(); if (custom
VideoView
!= null) { custom
VideoView
.stopPlayback(); } } }4.界面布局
5.给界面添加Fragmentpackage cn.bluemobi.dylan.welcomevideopager; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ViewPager vp; private ImageView iv1; private ImageView iv2; private ImageView iv3; private Button bt_start; private List
fragments; private void assignViews() { vp = (ViewPager) findViewById(R.id.vp); iv1 = (ImageView) findViewById(R.id.iv1); iv2 = (ImageView) findViewById(R.id.iv2); iv3 = (ImageView) findViewById(R.id.iv3); bt_start = (Button) findViewById(R.id.bt_start); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assignViews(); initData(); initView(); } /** * 初始化数据,添加三个Fragment */ private void initData() { fragments = new ArrayList<>(); Fragment fragment1 = new GuildFragment(); Bundle bundle1 = new Bundle(); bundle1.putInt("index", 1); fragment1.setArguments(bundle1); fragments.add(fragment1); Fragment fragment2 = new GuildFragment(); Bundle bundle2 = new Bundle(); bundle2.putInt("index", 2); fragment2.setArguments(bundle2); fragments.add(fragment2); Fragment fragment3 = new GuildFragment(); Bundle bundle3 = new Bundle(); bundle3.putInt("index", 3); fragment3.setArguments(bundle3); fragments.add(fragment3); } /** * 设置ViewPager的适配器和滑动监听 */ private void initView() { vp.setOffscreenPageLimit(3); vp.setAdapter(new MyPageAdapter(getSupportFragmentManager())); vp.addOnPageChangeListener(new MyPageChangeListener()); } /** * ViewPager适配器 */ private class MyPageAdapter extends FragmentPagerAdapter { public MyPageAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragments.get(position); } @Override public int getCount() { return fragments.size(); } } /** * ViewPager滑动页面监听器 */ private class MyPageChangeListener implements ViewPager.OnPageChangeListener { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } /** * 根据页面不同动态改变红点和在最后一页显示立即体验按钮 * * @param position */ @Override public void onPageSelected(int position) { bt_start.setVisibility(View.GONE); iv1.setImageResource(R.mipmap.dot_normal); iv2.setImageResource(R.mipmap.dot_normal); iv3.setImageResource(R.mipmap.dot_normal); if (position == 0) { iv1.setImageResource(R.mipmap.dot_focus); } else if (position == 1) { iv2.setImageResource(R.mipmap.dot_focus); } else { iv3.setImageResource(R.mipmap.dot_focus); bt_start.setVisibility(View.VISIBLE); } } @Override public void onPageScrollStateChanged(int state) { } } }
MediaPlayer:
Error
(1,-
1004
)
视频播放,
使用
MediaPlayer内核报错:MediaPlayer:
Error
(1,-
1004
) 切换到 ijkPlayer或ExoPlayer内核可以正常播放。
Android
80,349
社区成员
91,287
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章