ffmpeg-android-java icon indicating copy to clipboard operation
ffmpeg-android-java copied to clipboard

Extract frames from HTTP streamed video without downloading entire file.

Open monxarat opened this issue 6 years ago • 0 comments

Hi, everyone. I want to extract frames from a streaming video (such as from youtube link). When I ran the below error has occurred. How to fix these bugs?

I ran it on Android.

String[] cmd = { "-i","https://r2---sn-ouu2j-ioqz.googlevideo.com/videoplayback?id=efc44c0db851e384&itag=22&source=youtube&requiressl=yes&mm=31,29&mn=sn-ouu2j-ioqz,sn-oguesnzl&ms=au,rdu&mv=m&pl=19&ei=qLFrXI7PEpno4gLd5IIQ&susc=yt&initcwndbps=713750&mime=video/mp4&ratebypass=yes&dur=532.433&lmt=1537615999778923&mt=1550561540&fvip=2&c=MWEB&ip=202.171.132.229&ipbits=0&expire=1550583304&sparams=ip,ipbits,expire,id,itag,source,requiressl,mm,mn,ms,mv,pl,ei,susc,initcwndbps,mime,ratebypass,dur,lmt&signature=297CF9E2B2C8140767430681FD101783C26E2F99.D3E5D049F02994C848E0A143F0A232F2E66239C7&key=yt8", "-ss", "5",  "-frames:v", "1", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath() + "/frame_youtube.jpg"};
execute(cmd);
/**
     * execute cmd ffmpeg.
     * @param cmd string commandline.
     */
    private void execute(String[] cmd) {
        mFFmpeg = FFmpeg.getInstance(this);
        try {
            mFFmpeg.execute(cmd, new FFmpegExecuteResponseHandler() {
                @Override
                public void onStart() {
                    Log.d(">>>>onStart", "onStart");
                }

                @Override
                public void onProgress(String message) {
                    Log.d(">>>>onProgress", message);
                }

                @Override
                public void onFailure(String message) {
                    Log.d(">>>>onFailure", message);
                }

                @Override
                public void onSuccess(String message) {
                    Log.d(">>>>onSuccess", message);
                }

                @Override
                public void onFinish() {
                    Log.d(">>>>onFinish", "onFinish");
                }
            });
        } catch (FFmpegCommandAlreadyRunningException e) {
            // Handle if FFmpeg is already running
            Log.e(">>>FFMPEG", e.getMessage(), e);
        }
    }

    /**
     * load ffmpeg libs.
     */
    private void loadFFmpeg() {
        FFmpeg ffmpeg = FFmpeg.getInstance(this);
        try {
            ffmpeg.loadBinary(new LoadBinaryResponseHandler() {

                @Override
                public void onStart() {
                    Log.d(">>>>loadFFmpeg", "onStart");
                }

                @Override
                public void onFailure() {
                    Log.d(">>>>loadFFmpeg", "onFailure");
                }

                @Override
                public void onSuccess() {
                    Log.d(">>>>loadFFmpeg", "onSuccess");
                }

                @Override
                public void onFinish() {
                    Log.d(">>>>loadFFmpeg", "onFinish");
                }
            });
        } catch (FFmpegNotSupportedException e) {
            // Handle if FFmpeg is not supported by device
            Log.e(">>>loadFFMPEG", e.getMessage(), e);
        }
    }

Logs

2019-02-19 18:02:23.955 22039-22203/com.example.videoyoutube I/System.out: [/data/user/0/com.example.videoyoutube/files/ffmpeg, -i, https://r2---sn-ouu2j-ioqz.googlevideo.com/videoplayback?id=efc44c0db851e384&itag=22&source=youtube&requiressl=yes&mm=31,29&mn=sn-ouu2j-ioqz,sn-oguesnzl&ms=au,rdu&mv=m&pl=19&ei=qLFrXI7PEpno4gLd5IIQ&susc=yt&initcwndbps=713750&mime=video/mp4&ratebypass=yes&dur=532.433&lmt=1537615999778923&mt=1550561540&fvip=2&c=MWEB&ip=202.171.132.229&ipbits=0&expire=1550583304&sparams=ip,ipbits,expire,id,itag,source,requiressl,mm,mn,ms,mv,pl,ei,susc,initcwndbps,mime,ratebypass,dur,lmt&signature=297CF9E2B2C8140767430681FD101783C26E2F99.D3E5D049F02994C848E0A143F0A232F2E66239C7&key=yt8, -ss, 5, -frames:v, 1, /storage/emulated/0/DCIM/frame_youtube.jpg]
2019-02-19 18:02:23.955 22039-22203/com.example.videoyoutube I/System.out: null
2019-02-19 18:02:23.955 22039-22203/com.example.videoyoutube I/System.out: null
2019-02-19 18:02:23.956 22039-22203/com.example.videoyoutube I/System.out: Calling by::className:com.github.hiteshsondhi88.libffmpeg.ShellCommand  MethodName:run

monxarat avatar Feb 19 '19 09:02 monxarat