microshow / RxFFmpeg

🔥💥RxFFmpeg 是基于 ( FFmpeg 4.0 + X264 + mp3lame + fdk-aac + opencore-amr + openssl ) 编译的适用于 Android 平台的音视频编辑、视频剪辑的快速处理框架,包含以下功能:视频拼接,转码,压缩,裁剪,片头片尾,分离音视频,变速,添加静态贴纸和gif动态贴纸,添加字幕,添加滤镜,添加背景音乐,加速减速视频,倒放音视频,音频裁剪,变声,混音,图片合成视频,视频解码图片,抖音首页,视频播放器及支持 OpenSSL https 等主流特色功能
4.46k stars 748 forks source link

快速切换页面,视频在处理中,页面时而会崩溃 #100

Open chenxihoulang opened 4 years ago

chenxihoulang commented 4 years ago

我再VideoCutActivity进行视频裁剪,onFinish中调用 RxFFmpegInvoke.getInstance().exit(); VideoMusicActivity.showActivity(VideoCutActivity.this, mLocalMedia, true); 跳转到视频添加音乐页面中

在VideoMusicActivity页面中,我提取音频和视频,提取视频的onFinish方法中调用提取音频的方法,结果在页面来回快速切换的时候,提取音频的onFinish方法没有回调,页面直接崩溃掉,日志如下: 11-22 13:42:23.762 com.chw.principal E/VideoCutActivity: cutVideo ffmpeg onProgress...:0 11-22 13:42:23.778 com.chw.principal E/VideoCutActivity: cutVideo ffmpeg onProgress...:95 11-22 13:42:23.778 com.chw.principal E/VideoCutActivity: cutVideo ffmpeg end... 11-22 13:42:23.911 com.chw.principal E/VideoMusicActivity: extractVideo ffmpeg start... 11-22 13:42:23.938 com.chw.principal E/VideoMusicActivity: extractVideo ffmpeg onProgress...:98 11-22 13:42:23.938 com.chw.principal E/VideoMusicActivity: extractVideo ffmpeg end... 11-22 13:42:23.940 com.chw.principal E/VideoMusicActivity: extractAudio ffmpeg start... 11-22 13:42:38.330 ? E/InputDispatcher: channel '3f38c949 com.chw.principal/com.chw.principal.publish.activity.PublishVideoActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

正常情况的日志如下: 11-22 13:52:02.776 com.chw.principal E/VideoCutActivity: cutVideo ffmpeg onProgress...:0 11-22 13:52:02.777 com.chw.principal E/VideoCutActivity: cutVideo ffmpeg onProgress...:87 11-22 13:52:02.777 com.chw.principal E/VideoCutActivity: cutVideo ffmpeg end... 11-22 13:52:02.912 com.chw.principal E/VideoMusicActivity: extractVideo ffmpeg start... 11-22 13:52:02.937 com.chw.principal E/VideoMusicActivity: extractVideo ffmpeg onProgress...:99 11-22 13:52:02.937 com.chw.principal E/VideoMusicActivity: extractVideo ffmpeg end... 11-22 13:52:02.938 com.chw.principal E/VideoMusicActivity: extractAudio ffmpeg start... 11-22 13:52:03.020 com.chw.principal E/VideoMusicActivity: extractAudio ffmpeg onProgress...:99 11-22 13:52:03.020 com.chw.principal E/VideoMusicActivity: extractAudio ffmpeg end...

提取音频命令: String[] commands = new String[7]; commands[0] = "ffmpeg -y"; commands[1] = "-i"; commands[2] = videoUrl; commands[3] = "-acodec"; commands[4] = "copy"; commands[5] = "-vn"; commands[6] = outUrl;

提取视频命令: String[] commands = new String[7]; commands[0] = "ffmpeg -y"; commands[1] = "-i"; commands[2] = videoUrl; commands[3] = "-vcodec"; commands[4] = "copy"; commands[5] = "-an"; commands[6] = outUrl;

如果在点击裁剪视频后,跳转到添加音乐页面等待一会,比如2秒钟,然后再返回到裁剪视频页面,然后再次进入添加音乐页面,这样就会没有问题,只要在这两个页面快速来回切换,就会崩溃掉

麻烦给解答下,该怎么做?谢谢

microshow commented 4 years ago

执行完一条命令,延迟一两秒在执行下一条命令,即可避免这种问题产生