All Projects → maimingliang → Wxrecodervideo

maimingliang / Wxrecodervideo

基于VCamera,仿微信录制短视频

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Wxrecodervideo

Videoplayerdemo
封装ijkplay播放器, 自实现边下边播和缓存功能
Stars: ✭ 484 (-19.47%)
Mutual labels:  ffmpeg
Bililive Go
一个直播录制工具
Stars: ✭ 529 (-11.98%)
Mutual labels:  ffmpeg
Jave2
The JAVE (Java Audio Video Encoder) library is Java wrapper on the ffmpeg project
Stars: ✭ 570 (-5.16%)
Mutual labels:  ffmpeg
Playerdemo
一个视频播放器,开源版 potplayer ,用于总结播放器开发技术。
Stars: ✭ 491 (-18.3%)
Mutual labels:  ffmpeg
Wlmedia
Android 音视频播放SDK,几句代码即可实现音视频播放功能(支持:手机、电视盒子等设备。支持:http、https、rtsp、rtp、rtmp、byte[]、加密视频和各种文件格式视频;包含视频截图、音轨选择、字幕选择、循环播放、设置软解或硬解、自定义视频滤镜、透明视频、变速变调、声道切换、无缝切换surface(surfaceview和textureview)、视频比例设置、多路音视频播放等。)~
Stars: ✭ 505 (-15.97%)
Mutual labels:  ffmpeg
Ffsubsync
Automagically synchronize subtitles with video.
Stars: ✭ 5,167 (+759.73%)
Mutual labels:  ffmpeg
Iptv
一键安装管理 FFmpeg / nginx / openresty / xray / v2ray / armbian / proxmox / cloudflare partner,workers / ibm cloud foundry 脚本
Stars: ✭ 481 (-19.97%)
Mutual labels:  ffmpeg
Green Recorder
A simple screen recorder for Linux desktop. Supports Wayland & Xorg
Stars: ✭ 594 (-1.16%)
Mutual labels:  ffmpeg
Ffmpegandroid
最新版ffmpeg3.3-android,并通过CMake方式移植到Android中,并实现编解码,转码,推拉流,滤镜等各种功能
Stars: ✭ 526 (-12.48%)
Mutual labels:  ffmpeg
Axiom
An FFmpeg GUI for Windows
Stars: ✭ 560 (-6.82%)
Mutual labels:  ffmpeg
Mediatoolkit
A .NET library to convert and process all your video & audio files.
Stars: ✭ 492 (-18.14%)
Mutual labels:  ffmpeg
Snickers
🍫 An open source alternative to the video cloud encoding services.
Stars: ✭ 498 (-17.14%)
Mutual labels:  ffmpeg
Jvedio
Windows desktop application to manage local video;Support baidu AI, youdao translation;Support FFMPEG video processing;Support multi-database management and statistics;Support skin switching
Stars: ✭ 545 (-9.32%)
Mutual labels:  ffmpeg
Playpicdio
安卓平台下,图片或视频转化为ascii,图片转化成低多边形风格图形,emoji表情填充图片,合并视频用到ffmpeg库。已实现带色彩的ascii码图片或视频.On the Android platform, the picture or video is converted to ascii, the picture is converted into a low-poly style graphic, the emoji expression is filled with the picture, and the merged video is used in the ffmpeg library. Adding color ascii code pictures or videos later. Androidプラットフォームでは、画像またはビデオはASCIIに変換され、画像は低ポリスタイルのグラフィックに変換され、絵文字表現は画像で埋められ、マージされたビデオはffmpegライブラリで使用されます。 カラーASCIIコードの写真やビデオを後で追加する
Stars: ✭ 486 (-19.13%)
Mutual labels:  ffmpeg
Janus Webrtc Gateway Docker
Perfect Docker Image for Media Streaming Expert User ( https://github.com/meetecho/janus-gateway )
Stars: ✭ 582 (-3.16%)
Mutual labels:  ffmpeg
Anichart.js
Easily create data visualization animation videos
Stars: ✭ 480 (-20.13%)
Mutual labels:  ffmpeg
Homebridge Raspbian Image
Official Homebridge Raspberry Pi Image based on Raspbian Lite.
Stars: ✭ 534 (-11.15%)
Mutual labels:  ffmpeg
Learn Ffmpeg
学习音视频知识,整理资料,编写技术手册。
Stars: ✭ 601 (+0%)
Mutual labels:  ffmpeg
Ffmpeg Android
FFMpeg/FFprobe compiled for Android
Stars: ✭ 592 (-1.5%)
Mutual labels:  ffmpeg
Javacv
Java interface to OpenCV, FFmpeg, and more
Stars: ✭ 5,543 (+822.3%)
Mutual labels:  ffmpeg

WxRecoderVideo

#更新

最近在学习FFmpeg,撸了一个短视频编辑器Cut,有兴趣可以看看

录制出来的视频的大小还是比较大,但可以通过ffmpeg 来对视频压缩,

怎么压缩?

在合成ts后对视频进行了压缩,10s压缩后大概在2M内。压缩代码如下:


protected Boolean compress(boolean mergeFlag) {

		if (!mergeFlag) {
			return mergeFlag;
		}

		String cmd = "ffmpeg -y -i " + mMediaObject.getOutputTempVideoPath() + " -strict -2 -vcodec libx264 -preset ultrafast " +
				"-crf 25 -acodec aac -ar 44100 -ac 2 -b:a 96k -s 360x640 -aspect 9:16 " + mMediaObject.getOutputVideoPath();

		boolean compressFlag = UtilityAdapter.FFmpegRun("", cmd) == 0;

		File file = new File(mMediaObject.getOutputTempVideoPath());
		if(compressFlag){ //压缩成功删除临时文件
			if (file.exists()) {
				file.delete();
			}

			file = new File(mMediaObject.getTsPath());
			if (file.exists()) {
				file.delete();
			}

		}
		return compressFlag;

	}



-crf:这是最重要的一个选项,用于指定输出视频的质量,取值范围是0-51,默认值为23, 数字越小输出视频的质量越高。这个选项会直接影响到输出视频的码率。一般来说, 压制480p我会用20左右,压制720p我会用16-18,1080p我没尝试过。个人觉得, 一般情况下没有必要低于16。最好的办法是大家可以多尝试几个值,每个都压几分钟,看 看最后的输出质量和文件大小,自己再按需选择。

简介

基于VCamera,仿微信录制短视频

这里写图片描述

使用

  1. 在build.gradle,添加wechatRecoderVideoLibrary module 。

配置manifest

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • 配置拍摄视频缓存路径
       // 设置拍摄视频缓存路径
        File dcim = Environment
                .getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
        if (DeviceUtils.isZte()) {
            if (dcim.exists()) {
                VCamera.setVideoCachePath(dcim + "/recoder/");
            } else {
                VCamera.setVideoCachePath(dcim.getPath().replace("/sdcard/",
                        "/sdcard-ext/")
                        + "/recoder/");
            }
        } else {
            VCamera.setVideoCachePath(dcim + "/WeChatJuns/");
        }

//		VCamera.setVideoCachePath(FileUtils.getRecorderPath());
        // 开启log输出,ffmpeg输出到logcat
        VCamera.setDebugMode(true);
        // 初始化拍摄SDK,必须
        VCamera.initialize(this);
  • 注册activity
<application
    ...
   <activity android:name="com.maiml.wechatrecodervideolibrary.recoder.WechatRecoderActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:hardwareAccelerated="true"
            android:launchMode="singleTop"
            android:screenOrientation="portrait"
            android:theme="@style/CameraTheme"
            />
</application
  • 调用 WechatRecoderActivity
   WechatRecoderActivity.launchActivity(MainActivity.this,REQ_CODE);

*在 onActivityResult Method 接收结果

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(RESULT_OK == resultCode){

            if(requestCode == REQ_CODE){
                String videoPath = data.getStringExtra(WechatRecoderActivity.VIDEO_PATH);

                play(videoPath);
            }

        }
    }

##参数配置

###自定义dialog

拍摄完成需要对视频进行转码,转码过程中弹出的dialog。

让你的Activity implements OnDialogListener 例如:


 public class MainActivity extends AppCompatActivity implements OnDialogListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		WechatRecoderActivity.launchActivity(MainActivity.this,REQ_CODE);
     }

    /**
     * 处理自定义Dialog 的显示
     * @param context 自定义dialog 依赖的Context,注意:自定义dialog的Context 需要使用这个
     *
     */
    @Override
    public void onShowDialog(Context context) {

    }
    /**
     * 处理自定义Dialog 的隐藏
     * @param context 自定义dialog 依赖的Context,注意:自定义dialog的Context 需要使用这个
     *
     */
    @Override
    public void onHideDialog(Context context) {

    }
}

###配置参数

name format description
recoderTimeMax integer 录制的最长时间
recoderTimeMin integer 录制的最短时间
titleBarCancelTextColor integer titleBar取消字体的颜色
pressBtnColor integer 按住拍字体的颜色
pressBtnBg integer 圆环的颜色
lowMinTimeProgressColor integer Progress小于录制最短时间的颜色
progressColor integer Progress大于录制最短时间的颜色

注意:颜色值均为 十六进制值,例如:0xFFFC2828

这里写图片描述

这里写图片描述

##自定义参数


	 RecoderAttrs attrs = new RecoderAttrs.Builder()
                            .pressBtnColorBg(0xff00ff00)
                            .titleBarCancelTextColor(0xff00ff00)
                            .pressBtnTextColor(0xff00ff00)
                            .build();
        WechatRecoderActivity.launchActivity(MainActivity.this,attrs,REQ_CODE);

##Thanks

VCamera

#关于我

简书maimingliang

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].