diff --git a/app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.java b/app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.java index fe2008c..1ec269f 100644 --- a/app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.java +++ b/app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.java @@ -132,7 +132,8 @@ public class VideoHandleActivity extends BaseActivity { R.id.btn_pip, R.id.btn_moov, R.id.btn_speed, - R.id.btn_flv + R.id.btn_flv, + R.id.btn_thumbnail ); } @@ -321,6 +322,15 @@ public class VideoHandleActivity extends BaseActivity { String outputPath = PATH + File.separator + "frame_index.flv"; commandLine = FFmpegUtil.buildFlvIndex(srcFile, outputPath); break; + case R.id.btn_thumbnail:// insert thumbnail into video + String thumbSuffix = FileUtil.getFileSuffix(srcFile); + if (thumbSuffix == null || thumbSuffix.isEmpty()) { + return; + } + String thumbnailPath = PATH + File.separator + "thumb.jpg"; + String thumbVideoPath = PATH + File.separator + "thumbnailVideo" + thumbSuffix; + commandLine = FFmpegUtil.insertPicIntoVideo(srcFile, thumbnailPath, thumbVideoPath); + break; default: break; } diff --git a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java index ea84df0..5f18f58 100644 --- a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java +++ b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java @@ -535,7 +535,7 @@ public class FFmpegUtil { * Rebuild the keyframe index of FLV, make it seekable * @param inputPath inputFile * @param outputPath targetFile - * @return command of build flv index + * @return command of building flv index */ public static String[] buildFlvIndex(String inputPath, String outputPath) { String buildIndex = "ffmpeg -i %s -flvflags add_keyframe_index %s"; @@ -543,6 +543,19 @@ public class FFmpegUtil { return buildIndex.split(" "); } + /** + * Insert the picture into the header of video, which as a thumbnail + * @param inputPath inputFile + * @param picturePath the path of thumbnail + * @param outputPath targetFile + * @return command of inserting picture + */ + public static String[] insertPicIntoVideo(String inputPath, String picturePath, String outputPath) { + String buildIndex = "ffmpeg -i %s -i %s -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic %s"; + buildIndex = String.format(buildIndex, inputPath, picturePath, outputPath); + return buildIndex.split(" "); + } + /** * Using one input file to push multi streams. * After publish the streams, you could use VLC to play it diff --git a/app/src/main/res/layout/activity_video_handle.xml b/app/src/main/res/layout/activity_video_handle.xml index 6e4ebe3..a142fc0 100644 --- a/app/src/main/res/layout/activity_video_handle.xml +++ b/app/src/main/res/layout/activity_video_handle.xml @@ -135,6 +135,13 @@ android:layout_marginTop="4dp" android:text="@string/video_flv"/> +