最简单的基于FFmpeg的移动端例子:Android 视频解码器

您所在的位置:网站首页 ffmpeg转码器安卓下载 最简单的基于FFmpeg的移动端例子:Android 视频解码器

最简单的基于FFmpeg的移动端例子:Android 视频解码器

#最简单的基于FFmpeg的移动端例子:Android 视频解码器| 来源: 网络整理| 查看: 265

=====================================================

最简单的基于FFmpeg的移动端例子系列文章列表:

最简单的基于FFmpeg的移动端例子:Android HelloWorld

最简单的基于FFmpeg的移动端例子:Android 视频解码器

最简单的基于FFmpeg的移动端例子:Android 视频解码器-单个库版

最简单的基于FFmpeg的移动端例子:Android 推流器

最简单的基于FFmpeg的移动端例子:Android 视频转码器

最简单的基于FFmpeg的移动端例子附件:Android 自带播放器

最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld

最简单的基于FFmpeg的移动端例子:IOS HelloWorld

最简单的基于FFmpeg的移动端例子:IOS 视频解码器

最简单的基于FFmpeg的移动端例子:IOS 推流器

最简单的基于FFmpeg的移动端例子:IOS 视频转码器

最简单的基于FFmpeg的移动端例子附件:IOS自带播放器

最简单的基于FFmpeg的移动端例子:Windows Phone HelloWorld

=====================================================

本文记录一个安卓平台下基于FFmpeg的视频解码器。该视频解码器C语言的源代码来自于《最简单的基于FFMPEG+SDL的视频播放器》。相关的概念就不再重复记录了。

源代码项目的目录结构如图所示。Java源代码位于src目录,而C代码位于jni目录。 Android程序Java端代码位于src\com\leixiaohua1020\sffmpegandroiddecoder\MainActivity.java,如下所示。 /** * 最简单的基于FFmpeg的视频解码器-安卓 * Simplest FFmpeg Android Decoder * * 雷霄骅 Lei Xiaohua * [email protected] * 中国传媒大学/数字电视技术 * Communication University of China / Digital TV Technology * http://blog.csdn.net/leixiaohua1020 * * 本程序是安卓平台下最简单的基于FFmpeg的视频解码器。它可以将输入的视频数据解码成YUV像素数据。 * * This software is the simplest decoder based on FFmpeg in Android. It can decode video stream * to raw YUV data. * */ package com.leixiaohua1020.sffmpegandroiddecoder; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.text.Editable; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button startButton = (Button) this.findViewById(R.id.button_start); final EditText urlEdittext_input= (EditText) this.findViewById(R.id.input_url); final EditText urlEdittext_output= (EditText) this.findViewById(R.id.output_url); startButton.setOnClickListener(new OnClickListener() { public void onClick(View arg0){ String folderurl=Environment.getExternalStorageDirectory().getPath(); String urltext_input=urlEdittext_input.getText().toString(); String inputurl=folderurl+"/"+urltext_input; String urltext_output=urlEdittext_output.getText().toString(); String outputurl=folderurl+"/"+urltext_output; Log.i("inputurl",inputurl); Log.i("outputurl",outputurl); decode(inputurl,outputurl); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } //JNI public native int decode(String inputurl, String outputurl); static{ System.loadLibrary("avutil-54"); System.loadLibrary("swresample-1"); System.loadLibrary("avcodec-56"); System.loadLibrary("avformat-56"); System.loadLibrary("swscale-3"); System.loadLibrary("postproc-53"); System.loadLibrary("avfilter-5"); System.loadLibrary("avdevice-56"); System.loadLibrary("sffdecoder"); } }

C语言端源代码位于jni/simplest_ffmpeg_decoder.c,如下所示。

/** * 最简单的基于FFmpeg的视频解码器-安卓 * Simplest FFmpeg Android Decoder * * 雷霄骅 Lei Xiaohua * [email protected] * 中国传媒大学/数字电视技术 * Communication University of China / Digital TV Technology * http://blog.csdn.net/leixiaohua1020 * * 本程序是安卓平台下最简单的基于FFmpeg的视频解码器。它可以将输入的视频数据解码成YUV像素数据。 * * This software is the simplest decoder based on FFmpeg in Android. It can decode video stream * to raw YUV data. * */ #include #include #include "libavcodec/avcodec.h" #include "libavformat/avformat.h" #include "libswscale/swscale.h" #include "libavutil/log.h" #ifdef ANDROID #include #include #define LOGE(format, ...) __android_log_print(ANDROID_LOG_ERROR, "(>__


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3