mac平台electron native(ffmpeg)模块编译

近段时间一直在忙着编译mac平台下ffmpeg库用于electron项目。搜索了很多资料才终于把整个编译过程整通过。

1.查看以下安装说明并安装ffmpeg依赖模块

http://blog.csdn.net/matrix_laboratory/article/details/53519165

http://blog.csdn.net/willib/article/details/52530328

2. 编译FFMPEG模块

#说明:
#FFMPEG版本:3.2.2

#配置命令:
./configure --enable-gpl --enable-version3 --enable-nonfree \
--enable-bzlib --enable-iconv --enable-zlib --enable-libopus \
--enable-libfdk-aac --enable-libx264 --enable-libvpx --enable-libfreetype \
--enable-fontconfig --enable-libass --enable-libssh \
--enable-static \
--disable-sdl2 \
--extra-ldflags=-L/usr/local/lib

#编译模块
make BITS=64

#安装模块至../../ffmpeg_dev64 目录
DESTDIR='../../ffmpeg_dev64' make install
#修正目录中模块
INSTALL_DIR=../../ffmpeg_dev64
cp -r $INSTALL_DIR/usr/local/  $INSTALL_DIR
rm -r $INSTALL_DIR/usr/

#清理垃圾
make clean

 

3.安装electron

#electron:
#安装1.4.4版本
npm install electron@1.4.4

4.配置node-gyp编译脚本

{
	"targets":[
		{
			"target_name":"xxx",
	        'include_dirs': [
	            '.',
	            '../3rd-mac/ffmpeg/include',
	            '../3rd-mac/iojs/deps/uv/include',
	            '../3rd-mac/iojs/deps/npm',
	            '../3rd-mac/iojs/deps/v8',
	            '../3rd-mac/iojs/deps/http_parse',
	            '../3rd-mac/iojs/deps/zlib',
	            '../3rd-mac/iojs/src',
	            '/usr/local/include'
	        ],
			"sources":[
				"RegisterModules.cpp",
				"xxx.cpp",
			],
			'libraries': [
				"-lstdc++",
				"-lpthread",
				"-lsdl2",  
				"-lavcodec",
				"-lavdevice",
				"-lavfilter",
				"-lavformat",
				"-lavutil",
				"-lpostproc",
				"-lswresample",
				"-lswscale",

				"-lopus",
				"-logg",
				"-lfdk-aac",
				"-lvpx",
				"-lass",
				"-lx264",
				"-liconv",
				"-lfontconfig",
				"-lfreetype",
				"-lssh",
				"-lssl",
				"-lbz2",
				"-lz",
				"-llzma",

				"-framework CoreGraphics",
				"-framework CoreVideo",
				"-framework Foundation",
				"-framework AVFoundation",
				"-framework CoreMedia",
				"-framework QuartzCore",
				"-framework AppKit",
				"-framework OpenGL",
				"-framework VideoDecodeAcceleration",
				"-framework CoreFoundation",
				"-framework CoreServices",
				"-framework Security"
	        ],
	        'xcode_settings': {
	            'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',
	        	'OTHER_CFLAGS':[
	        		'-std=c++11',
	        		'-stdlib=libc++'
	        	]
	        },
			'defines': [
	        ],
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Electron是一个开源的框架,用于构建跨平台的桌面应用程序。它使用了Node.js和Chromium,可以使用HTML,CSS和JavaScript来构建应用程序。而FFmpeg是一个开源的跨平台的音视频处理工具,可以用于录制、转码、剪辑等操作。在Electron中,可以使用FFmpeg来进行音视频处理,例如录制桌面、窗口或摄像头的视频,并进行推流或保存为文件。 通过在Electron中使用FFmpeg,可以实现以下功能: 1.录制桌面、窗口或摄像头的视频。 2.对视频进行转码、剪辑、添加水印等处理。 3.将处理后的视频进行推流或保存为文件。 举个例子,如果你想要录制桌面并添加音频,可以使用以下代码: ``` const ffmpegPath = require('ffmpeg-static').path; const ffmpeg = require('fluent-ffmpeg'); ffmpeg.setFfmpegPath(ffmpegPath); const desktopStream = ffmpeg() .input('desktop') .inputFormat('gdigrab') .inputOptions('-offset_x 0') .inputOptions('-offset_y 0') .inputOptions('-video_size 1920x1080') .input(`audio=${audio[0]}`) .inputFormat('dshow') .complexFilter([ { filter: 'overlay', options: { x: 'main_w-overlay_w', y: 'main_h-overlay_h' }, inputs: ['[0:v]', '[1:v]'], }, ]) .outputOptions('-pix_fmt yuv420p') .outputOptions('-preset ultrafast') .outputOptions('-tune zerolatency') .outputOptions('-crf 25') .outputOptions('-g 60') .outputOptions('-keyint_min 60') .outputOptions('-f flv') .output('rtmp://your-streaming-server-url') .on('start', () => { console.log('Recording started'); }) .on('error', (err) => { console.log(`Error: ${err.message}`); }) .on('end', () => { console.log('Recording ended'); }) .run(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值