Ver código fonte

发布的视频宽高要与方向对应;
添加视频logo时,方向要与视频对应

zengjiebin 7 anos atrás
pai
commit
d60e2e4da6

+ 4 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/ActPublishArticle.java

@@ -200,7 +200,10 @@ public class ActPublishArticle extends BaseActivity {
                         e.printStackTrace();
                     }
                     jsonObject.put("resource", url);
-                    jsonObject.put("cover", String.format(Locale.CHINA, "%s?vframe/jpg/offset/0&w=%d&h=%d", url, video.getWidth(), video.getHeight()));
+                    if(video.getOrientation() / 90 % 2 == 0 )//0 180
+                        jsonObject.put("cover", String.format(Locale.CHINA, "%s?vframe/jpg/offset/0&w=%d&h=%d", url, video.getWidth(), video.getHeight()));
+                    else//90 270
+                        jsonObject.put("cover", String.format(Locale.CHINA, "%s?vframe/jpg/offset/0&w=%d&h=%d", url, video.getHeight(), video.getWidth()));
                     publishArticle(dialogProgress);
                 } else {
                     ViewUtil.setText(dialogProgress.getTextView(), "上传失败");

+ 1 - 1
media/app/build.gradle

@@ -15,8 +15,8 @@ android {
 
         ndk {
 //            abiFilters "armeabi-v7a"
+            abiFilters 'x86'
 //            abiFilters "armeabi-v7a"//, 'x86'//, 'armeabi-v7a', 'x86_64', 'arm64-v8a'
-            abiFilters 'x86'//, 'armeabi-v7a', 'x86_64', 'arm64-v8a'
         }
     }
 

+ 10 - 2
media/app/src/main/java/com/kfzs/cfyl/media/activity/ActEditVideo.java

@@ -33,6 +33,8 @@ import org.wysaid.view.VideoPlayerGLSurfaceView;
 
 import java.util.Locale;
 
+import cn.finalteam.rxgalleryfinal.utils.MediaUtils;
+
 /**
  * Created by realicing on 2018/11/9.
  * realicing@sina.com
@@ -147,10 +149,16 @@ public class ActEditVideo extends BaseContainerActivity implements Filterble, Le
         String outputFilename = String.format(Locale.CHINA, "%s_%d_%f.mp4", srcFilPath.substring(0, srcFilPath.lastIndexOf(".")), mCurrentConfig.hashCode(), mIntensity);
         Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.media_sheep_logo_3);
         //left 30px top 60px width 750
-        Bitmap logo = BitmapUtil.createBigLogo(bmp, new Size().setWidth(data.getWidth()).setHeight(data.getHeight()).setX(data.getWidth() * 30 / 750).setY(data.getWidth() * 60 / 750));
+        Bitmap logo = data.getOrientation() / 90 % 2 == 0 ?
+            BitmapUtil.createBigLogo(bmp, new Size().setWidth(data.getWidth()).setHeight(data.getHeight()).setX(data.getWidth() * 30 / 750).setY(data.getWidth() * 60 / 750)) :
+            BitmapUtil.createBigLogo(bmp, new Size().setWidth(data.getHeight()).setHeight(data.getWidth()).setX(data.getHeight() * 30 / 750).setY(data.getHeight() * 60 / 750));
+        Bitmap rotateBmp = data.getOrientation() != 0 ? MediaUtils.rotateBimap(360 - data.getOrientation(), logo) : logo;
+        if(logo != rotateBmp)
+            logo.recycle();
         bmp.recycle();
-        CGEFFmpegNativeLibrary.generateVideoWithFilter(outputFilename, srcFilPath, mCurrentConfig, mIntensity, logo, CGENativeLibrary.TextureBlendMode.CGE_BLEND_ADDREV, 1.0f, false);
 
+        CGEFFmpegNativeLibrary.generateVideoWithFilter(outputFilename, srcFilPath, mCurrentConfig, mIntensity, rotateBmp, CGENativeLibrary.TextureBlendMode.CGE_BLEND_ADDREV, 1.0f, false);
+        rotateBmp.recycle();
         LogUtil.println(ActEditVideo.class.getSimpleName(), "Done! The file is generated at: " + outputFilename);
         return outputFilename;
     }

+ 10 - 0
media/app/src/main/java/com/kfzs/cfyl/media/util/BitmapUtil.java

@@ -22,4 +22,14 @@ public class BitmapUtil {
         canvas.drawBitmap(bmp, matrix, paint);
         return result;
     }
+    public static Bitmap createBigLogo(Bitmap bmp, Size size, int orientation) {
+        Bitmap result = Bitmap.createBitmap(size.getWidth(), size.getHeight(), Bitmap.Config.ARGB_4444);
+        Canvas canvas = new Canvas(result);
+        Paint paint = new Paint();
+        Matrix matrix = new Matrix();
+        matrix.setRotate(orientation);
+        matrix.setTranslate(size.getX(), size.getY());
+        canvas.drawBitmap(bmp, matrix, paint);
+        return result;
+    }
 }