java - 在android中使用ffmpeg播放视频

标签 java android ffmpeg

我正在尝试在 android 中使用 ffmpeg。这是到目前为止的代码。我引用了this项目。它只是让我转换视频文件。但我想使用 ffmpeg 播放视频文件。是否可以?如果是的话我们该怎么做?

    package com.ffmpeg;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import com.github.hiteshsondhi88.libffmpeg.ExecuteBinaryResponseHandler;
import com.github.hiteshsondhi88.libffmpeg.FFmpeg;
import com.github.hiteshsondhi88.libffmpeg.LoadBinaryResponseHandler;
import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegCommandAlreadyRunningException;
import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegNotSupportedException;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {


    Boolean loadedFlag = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (!loadedFlag) {
            FFmpegInitLoader();
        }
        decodeVideo();
    }

    public void FFmpegInitLoader() {
        FFmpeg ffmpeg = FFmpeg.getInstance(this);
        try {
            ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
                @Override
                public void onStart() {
                }

                @Override
                public void onFailure() {
                }

                @Override
                public void onSuccess() {
                    System.out.println("Successfully loaded FFmpeg!!!");
                    loadedFlag = true;
                }

                @Override
                public void onFinish() {
                }
            });
        } catch (FFmpegNotSupportedException e) {
            System.out.println("Whatever....this thing is not supported :::::::::::::::::::: ");
        }
    }

    public void decodeVideo() {
        FFmpeg ffmpeg = FFmpeg.getInstance(this);
        try {
            ffmpeg.execute(new String[]{"-y", "-i", "/storage/sdcard0/AVSEQ02.mp4", "-c:v", "libx264", "/storage/sdcard0/conv.mp4"}, new ExecuteBinaryResponseHandler() {
                @Override
                public void onStart() {
                    System.out.println("FFmpeg started for decoding");
                }

                @Override
                public void onProgress(String message) {
                    System.out.println("progress message:::: " + message);
                }

                @Override
                public void onFailure(String message) {
                    System.out.println("failure message:::: " + message);
                }

                @Override
                public void onSuccess(String message) {
                    System.out.println("success message:::: " + message);
                }

                @Override
                public void onFinish() {
                }
            });
        } catch (FFmpegCommandAlreadyRunningException e) {
            System.out.println("already running::::::");
        }
    }
}

最佳答案

是的,这是可能的。请参阅下面的链接。

AndroidFFmpeg

FFmpegMediaPlayer

关于java - 在android中使用ffmpeg播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226484/

相关文章:

java - 将 long 数组转换为 ArrayList<Long>

android - ItemTouchHelper,滑动以删除 Canvas 中的文本

css - 模糊网站背景的 mp4 视频

iphone - 来自一组图像的视频有 RGB 问题

java - 使用封闭的通用类的方法返回类型?

java - Android Studio - Android 上的类加载器引用未知路径 : [. ..]/com.google.android.gms/[...]/armeabi

android - 我是否正确使用 flatMap 来合并来自多个 API 调用的结果?

android - 如何更快地压缩android中的视频?

java - android 4.2.2 是否支持 jre 1.7?

java - 用于序列化 List<String> 中的 List<User> 的自定义序列化程序