转: Android上ffmpeg移植(4)-终结篇

今天终于在模拟器上面可以看到视频了,虽然随机性会有一些问题,但总体来说,效果还可以测试了avi和flv文件,播放的都比较好,因为是模拟器,我设置的输出格式是RGB565,这样看起来可能色彩不是很好。

上层的调用完全是标准的java接口应用程序是参考一本资料书上面的,代码如下:

package irdc.ex07_13;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;

public class EX07_13 extends Activity
{
  private TextView mTextView01;
  private VideoView mVideoView01;
  private String strVideoPath = "";
  private Button mButton01, mButton02;
  private String TAG = "HIPPO_VIDEOVIEW";

  /* 默认判别是否安装存储卡flag为false */
  private boolean bIfSDExist = false;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
   
    /* 全屏幕 */
    getWindow().setFormat(PixelFormat.TRANSLUCENT);
    setContentView(R.layout.main);
   
    /* 判断存储卡是否存在 */
    if(android.os.Environment.getExternalStorageState().equals
    (android.os.Environment.MEDIA_MOUNTED))
    {
      bIfSDExist = true;
    }
    else
    {
      bIfSDExist = false;
      mMakeTextToast
      (
        getResources().getText(R.string.str_err_nosd).toString(),
        true
      );
    }
   
    mTextView01 = (TextView)findViewById(R.id.myTextView1);
    mVideoView01 = (VideoView)findViewById(R.id.myVideoView1);
   
    mButton01 = (Button)findViewById(R.id.myButton1);
    mButton02 = (Button)findViewById(R.id.myButton2);
   
    mButton01.setOnClickListener(new Button.OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // TODO Auto-generated method stub
      
          /* 播放影片路径1 */
          strVideoPath = "file:///data/test.flv";
          playVideo(strVideoPath);
      
      }
    });
   
    mButton02.setOnClickListener(new Button.OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // TODO Auto-generated method stub
      
          /* 播放影片路径2 */
          strVideoPath = "file:///data/test.avi";
          playVideo(strVideoPath);
      
      }
    });
  }

  /* 自定义以VideoView播放影片 */
  private void playVideo(String strPath)
  {
    if(strPath!="")
    {
      /* 调用VideoURI方法,指定解析路径 */
      mVideoView01.setVideoURI(Uri.parse(strPath));
     
      /* 设置控制Bar显示于此Context中 */
      mVideoView01.setMediaController
      (new MediaController(EX07_13.this));
     
      mVideoView01.requestFocus();
     
      /* 调用VideoView.start()自动播放 */
      mVideoView01.start();
      if(mVideoView01.isPlaying())
      {
        /* 下程序不会被运行,因start()后尚需要preparing() */
        mTextView01.setText("Now Playing:"+strPath);
        Log.i(TAG, strPath);
      }
    }
  }

  public void mMakeTextToast(String str, boolean isLong)
  {
    if(isLong==true)
    {
      Toast.makeText(EX07_13.this, str, Toast.LENGTH_LONG).show();
    }
    else
    {
      Toast.makeText(EX07_13.this, str, Toast.LENGTH_SHORT).show();
    }
  }
}
因为我的sdk有点问题,没有识别出来SD card,所以这里把视频都是push到data目录下面的。

基本上移植的过程可以说告一段落,感觉androi的框架本身都不难,主要是看ffmpeg的接口api看了几天,

然后音视频同步的算法还需要改正,创建了大概4个线程,这个还要仔细斟酌一下。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C_see

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值