Code Monkey home page Code Monkey logo

ffch4j's People

Contributors

eguid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ffch4j's Issues

运行后,manager.start(map)返回的id一直是null

F:\utils\jdk\jdk8\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:54836,suspend=y,server=n -javaagent:F:\utils\IDEA\lib\rt\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath E:\gitSrc\java_rtsp\FFmpegCommandHandler4java\bin;F:\utils\jdk\jdk8\jre\lib\charsets.jar;F:\utils\jdk\jdk8\jre\lib\deploy.jar;F:\utils\jdk\jdk8\jre\lib\ext\access-bridge-64.jar;F:\utils\jdk\jdk8\jre\lib\ext\cldrdata.jar;F:\utils\jdk\jdk8\jre\lib\ext\dnsns.jar;F:\utils\jdk\jdk8\jre\lib\ext\jaccess.jar;F:\utils\jdk\jdk8\jre\lib\ext\jfxrt.jar;F:\utils\jdk\jdk8\jre\lib\ext\localedata.jar;F:\utils\jdk\jdk8\jre\lib\ext\nashorn.jar;F:\utils\jdk\jdk8\jre\lib\ext\sunec.jar;F:\utils\jdk\jdk8\jre\lib\ext\sunjce_provider.jar;F:\utils\jdk\jdk8\jre\lib\ext\sunmscapi.jar;F:\utils\jdk\jdk8\jre\lib\ext\sunpkcs11.jar;F:\utils\jdk\jdk8\jre\lib\ext\zipfs.jar;F:\utils\jdk\jdk8\jre\lib\javaws.jar;F:\utils\jdk\jdk8\jre\lib\jce.jar;F:\utils\jdk\jdk8\jre\lib\jfr.jar;F:\utils\jdk\jdk8\jre\lib\jfxswt.jar;F:\utils\jdk\jdk8\jre\lib\jsse.jar;F:\utils\jdk\jdk8\jre\lib\management-agent.jar;F:\utils\jdk\jdk8\jre\lib\plugin.jar;F:\utils\jdk\jdk8\jre\lib\resources.jar;F:\utils\jdk\jdk8\jre\lib\rt.jar;F:\utils\IDEA\lib\idea_rt.jar pw.wangtao.core.RtspToRtmp
Connected to the target VM, address: '127.0.0.1:54836', transport: 'socket'
加载配置文件...
加载配置文件完毕
读取的配置项:{path=F:/gitRepostory/FFmpegCommandHandler4java/src/cc/eguid/FFmpegCommandManager/ffmpeg/, debug=true, size=10}
转换后的对象:FFmpegConfig [path=F:/gitRepostory/FFmpegCommandHandler4java/src/cc/eguid/FFmpegCommandManager/ffmpeg/, debug=true, size=10]
执行命令:F:/gitRepostory/FFmpegCommandHandler4java/src/cc/eguid/FFmpegCommandManager/ffmpeg/ffmpeg -i rtsp://admin:[email protected]:554/Streaming/Channels/1 -vcodec h264 -f flv -an rtmp://192.168.1.170/live/test123
执行命令失败!正在停止进程和输出线程...
null
Disconnected from the target VM, address: '127.0.0.1:54836', transport: 'socket'

Process finished with exit code 0

运行后提示超时

F:\utils\jdk\jdk8\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:58979,suspend=y,server=n -javaagent:F:\utils\IDEA\lib\rt\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath F:\utils\jdk\jdk8\jre\lib\charsets.jar;F:\utils\jdk\jdk8\jre\lib\deploy.jar;F:\utils\jdk\jdk8\jre\lib\ext\access-bridge-64.jar;F:\utils\jdk\jdk8\jre\lib\ext\cldrdata.jar;F:\utils\jdk\jdk8\jre\lib\ext\dnsns.jar;F:\utils\jdk\jdk8\jre\lib\ext\jaccess.jar;F:\utils\jdk\jdk8\jre\lib\ext\jfxrt.jar;F:\utils\jdk\jdk8\jre\lib\ext\localedata.jar;F:\utils\jdk\jdk8\jre\lib\ext\nashorn.jar;F:\utils\jdk\jdk8\jre\lib\ext\sunec.jar;F:\utils\jdk\jdk8\jre\lib\ext\sunjce_provider.jar;F:\utils\jdk\jdk8\jre\lib\ext\sunmscapi.jar;F:\utils\jdk\jdk8\jre\lib\ext\sunpkcs11.jar;F:\utils\jdk\jdk8\jre\lib\ext\zipfs.jar;F:\utils\jdk\jdk8\jre\lib\javaws.jar;F:\utils\jdk\jdk8\jre\lib\jce.jar;F:\utils\jdk\jdk8\jre\lib\jfr.jar;F:\utils\jdk\jdk8\jre\lib\jfxswt.jar;F:\utils\jdk\jdk8\jre\lib\jsse.jar;F:\utils\jdk\jdk8\jre\lib\management-agent.jar;F:\utils\jdk\jdk8\jre\lib\plugin.jar;F:\utils\jdk\jdk8\jre\lib\resources.jar;F:\utils\jdk\jdk8\jre\lib\rt.jar;F:\workspace\pw-wangtao\target\classes;E:\m2localRepository\net\sf\json-lib\json-lib\2.4\json-lib-2.4-jdk15.jar;E:\m2localRepository\commons-beanutils\commons-beanutils\1.8.0\commons-beanutils-1.8.0.jar;E:\m2localRepository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;E:\m2localRepository\commons-lang\commons-lang\2.5\commons-lang-2.5.jar;E:\m2localRepository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;E:\m2localRepository\net\sf\ezmorph\ezmorph\1.0.6\ezmorph-1.0.6.jar;E:\m2localRepository\org\springframework\boot\spring-boot-starter-web\2.0.3.RELEASE\spring-boot-starter-web-2.0.3.RELEASE.jar;E:\m2localRepository\org\springframework\boot\spring-boot-starter\2.0.3.RELEASE\spring-boot-starter-2.0.3.RELEASE.jar;E:\m2localRepository\org\springframework\boot\spring-boot\2.0.3.RELEASE\spring-boot-2.0.3.RELEASE.jar;E:\m2localRepository\org\springframework\boot\spring-boot-autoconfigure\2.0.3.RELEASE\spring-boot-autoconfigure-2.0.3.RELEASE.jar;E:\m2localRepository\org\springframework\boot\spring-boot-starter-logging\2.0.3.RELEASE\spring-boot-starter-logging-2.0.3.RELEASE.jar;E:\m2localRepository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\m2localRepository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\m2localRepository\org\apache\logging\log4j\log4j-to-slf4j\2.10.0\log4j-to-slf4j-2.10.0.jar;E:\m2localRepository\org\apache\logging\log4j\log4j-api\2.10.0\log4j-api-2.10.0.jar;E:\m2localRepository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;E:\m2localRepository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;E:\m2localRepository\org\yaml\snakeyaml\1.19\snakeyaml-1.19.jar;E:\m2localRepository\org\springframework\boot\spring-boot-starter-json\2.0.3.RELEASE\spring-boot-starter-json-2.0.3.RELEASE.jar;E:\m2localRepository\com\fasterxml\jackson\core\jackson-databind\2.9.6\jackson-databind-2.9.6.jar;E:\m2localRepository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;E:\m2localRepository\com\fasterxml\jackson\core\jackson-core\2.9.6\jackson-core-2.9.6.jar;E:\m2localRepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.6\jackson-datatype-jdk8-2.9.6.jar;E:\m2localRepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.6\jackson-datatype-jsr310-2.9.6.jar;E:\m2localRepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.6\jackson-module-parameter-names-2.9.6.jar;E:\m2localRepository\org\springframework\boot\spring-boot-starter-tomcat\2.0.3.RELEASE\spring-boot-starter-tomcat-2.0.3.RELEASE.jar;E:\m2localRepository\org\apache\tomcat\embed\tomcat-embed-core\8.5.31\tomcat-embed-core-8.5.31.jar;E:\m2localRepository\org\apache\tomcat\embed\tomcat-embed-el\8.5.31\tomcat-embed-el-8.5.31.jar;E:\m2localRepository\org\apache\tomcat\embed\tomcat-embed-websocket\8.5.31\tomcat-embed-websocket-8.5.31.jar;E:\m2localRepository\org\hibernate\validator\hibernate-validator\6.0.10.Final\hibernate-validator-6.0.10.Final.jar;E:\m2localRepository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;E:\m2localRepository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;E:\m2localRepository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;E:\m2localRepository\org\springframework\spring-web\5.0.7.RELEASE\spring-web-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\spring-beans\5.0.7.RELEASE\spring-beans-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\spring-webmvc\5.0.7.RELEASE\spring-webmvc-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\spring-aop\5.0.7.RELEASE\spring-aop-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\spring-context\5.0.7.RELEASE\spring-context-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\spring-expression\5.0.7.RELEASE\spring-expression-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\boot\spring-boot-starter-data-redis\2.0.3.RELEASE\spring-boot-starter-data-redis-2.0.3.RELEASE.jar;E:\m2localRepository\org\springframework\data\spring-data-redis\2.0.8.RELEASE\spring-data-redis-2.0.8.RELEASE.jar;E:\m2localRepository\org\springframework\data\spring-data-keyvalue\2.0.8.RELEASE\spring-data-keyvalue-2.0.8.RELEASE.jar;E:\m2localRepository\org\springframework\data\spring-data-commons\2.0.8.RELEASE\spring-data-commons-2.0.8.RELEASE.jar;E:\m2localRepository\org\springframework\spring-tx\5.0.7.RELEASE\spring-tx-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\spring-oxm\5.0.7.RELEASE\spring-oxm-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\spring-context-support\5.0.7.RELEASE\spring-context-support-5.0.7.RELEASE.jar;E:\m2localRepository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;E:\m2localRepository\io\lettuce\lettuce-core\5.0.4.RELEASE\lettuce-core-5.0.4.RELEASE.jar;E:\m2localRepository\io\projectreactor\reactor-core\3.1.8.RELEASE\reactor-core-3.1.8.RELEASE.jar;E:\m2localRepository\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar;E:\m2localRepository\io\netty\netty-common\4.1.25.Final\netty-common-4.1.25.Final.jar;E:\m2localRepository\io\netty\netty-transport\4.1.25.Final\netty-transport-4.1.25.Final.jar;E:\m2localRepository\io\netty\netty-buffer\4.1.25.Final\netty-buffer-4.1.25.Final.jar;E:\m2localRepository\io\netty\netty-resolver\4.1.25.Final\netty-resolver-4.1.25.Final.jar;E:\m2localRepository\io\netty\netty-handler\4.1.25.Final\netty-handler-4.1.25.Final.jar;E:\m2localRepository\io\netty\netty-codec\4.1.25.Final\netty-codec-4.1.25.Final.jar;E:\m2localRepository\org\springframework\spring-core\5.0.7.RELEASE\spring-core-5.0.7.RELEASE.jar;E:\m2localRepository\org\springframework\spring-jcl\5.0.7.RELEASE\spring-jcl-5.0.7.RELEASE.jar;F:\workspace\pw-wangtao\src\main\webapp\WEB-INF\lib\FFmpegCommandHandler.jar;E:\m2localRepository\net\sourceforge\javacsv\javacsv\2.0\javacsv-2.0.jar;F:\utils\IDEA\lib\idea_rt.jar pw.wangtao.core.rtspTortmp.RtspToRtmp
Connected to the target VM, address: '127.0.0.1:58979', transport: 'socket'
尝试从web目录读取配置文件:/F:/workspace/pw-wangtao/target/classes/loadFFmpeg.properties
没找到配置文件,读取默认配置文件
读取默认配置文件:defaultFFmpegConfig.properties
加载配置文件...
加载配置文件完毕
读取的配置项:{path=E:/gitSrc/ffmpeg/ffmpeg-20181130-ba71ebb-win64-static/bin/, defaultpathEnable=true, debug=true, size=100, #ffmpegæ�§è¡�è·¯å¾�ï¼�ä¸�è�¬ä¸ºffmpegç��å®�è£�ç�®å½�ï¼�该路å¾�å�ªè�½æ�¯ç�®å½�ï¼�ä¸�è�½ä¸ºå�·ä½�æ��件路å¾�ï¼�å�¦å��ä¼�æ�¥é��=}
转换后的对象:FFmpegConfig [path=E:/gitSrc/ffmpeg/ffmpeg-20181130-ba71ebb-win64-static/bin/, debug=true, size=100]
执行命令:E:/gitSrc/ffmpeg/ffmpeg-20181130-ba71ebb-win64-static/bin/ffmpeg -i rtsp://admin:[email protected]:554/Streaming/Channels/1 -vcodec h264 -f flv -an rtmp://192.168.1.170/live/test1231
test1231
test1231开始推流!
test1231发生网络异常丢包,消息体:[rtsp @ 00000270b3f0a180] UDP timeout, retrying with TCP
test1231发生网络异常丢包,消息体:[rtsp @ 00000270b3f0a180] method PAUSE failed: 551 Option not supported
test1231发生网络异常丢包,消息体:[rtsp @ 00000270b3f0a180] UDP timeout, retrying with TCP
test1231发生网络异常丢包,消息体:[rtsp @ 00000270b3f0a180] method PAUSE failed: 551 Option not supported
test1231:frame= 0 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
test1231:frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
Disconnected from the target VM, address: '127.0.0.1:58979', transport: 'socket'

Process finished with exit code 0

打包成jar找不到配置文件

尝试从web目录读取配置文件:file:/D:/Tools/IntelliJIDEA201901/workspace/mpeg/target/mpeg-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/loadFFmpeg.properties
没找到配置文件,读取默认配置文件
读取默认配置文件:defaultFFmpegConfig.properties
配置文件加载失败!配置文件不存在或配置错误

版本更新加油啊

之前没找到方案,自己写了一个,和你这方法类似,但是坑太多了,太难踩了就放弃了

昨天开始自己开发一点web 控制台的功能
360截图17700517114150100
360截图18720123109137137

贵兄是业余开发这个的吗,目前进度怎么样了?

关于切换视频流的问题

大佬您好,我是用您的代码改了改,从配置文件读取rtsp输入流然后转rtmp推到nginx上,有个疑问是这样的,我如何获取正在执行的任务或者流呢,我用stop,stopAll,还有destory都停止不了任务,如果我想在命令执行的过程中切换输入流,是否应该先停止正在执行的任务,然后再开启下一个推流,请问应该如何停止之前的任务呢?taskDao.getAll()里面也是null,还请您多指教

您好,感觉有的流断的不彻底

您好,非常感谢您的这个开源项目,给我带来了很大的便利,我用您的项目做了一个摄像头推流rstp转换到rtmp的项目,发现了在结束推流命令后,偶尔会存在rtmp流已经停止了输出,但是ffmpeg的拉rtsp流还在继续运行,不知道这个具体该如何检查流的这个状态,或者怎么可以结束这个拉流行为,日志追踪看到所有的stop都是正常的,期待您的解惑,非常感谢您的付出!

代码问题

在使用中碰到一些问题,有些查了下源码,有些大致看了下,有几个问题想请教下;

  1. 创建任务的时候,有时候我会希望创建成功会做一些事情,源码如下
String start = commandManager.start(startId.toString(), CommandBuidlerFactory.createBuidler().add(zhiboConfig.getCmd()));
log.info("执行任务返回结果{}: {}", null == start ? "失败" : "成功", start);
if (null != start) {
    ZhiBoRunningStore.setZhiBo(zhiboConfig, ZhiBoState.State.running);
}

// 但对应的tart源码却如下
public String start(String id, String command, boolean hasPath) {
		if (isInit(true)) {
			System.err.println("执行失败,未进行初始化或初始化失败!");
			return null;
		}
		if (id != null && command != null) {
			CommandTasker tasker = taskHandler.process(id, hasPath ? command : config.getPath() + command);
			if (tasker != null) {
				int ret = taskDao.add(tasker);
				if (ret > 0) {
					return tasker.getId();
				} else {
					// 持久化信息失败,停止处理
					taskHandler.stop(tasker.getProcess(), tasker.getThread());
					if (config.isDebug())
						System.err.println("持久化失败,停止任务!");
				}
			}
		}
		return null;
	}

由于taskDao的存在,第一次成功会把数据放进去,假如之后任务出现了问题,非应用挂掉,我想重启这个任务,在这条数据没有清除的情况下,我可能更希望任务存在直接返回任务id就好?
因为目前有没有启动成功我也只能通过返回的这个字符串来判断了,而这个字符串本身却并不具备这个含义;

  1. 关于保活线程如下的代码疑问
	@Override
	public void run() {
		for(;stop_index==0;) {
			while(queue==null) {
				try {
					condition.await();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			String id=null;
			CommandTasker task=null;
			
			try {
				while(queue.peek() != null) {
					System.err.println("准备重启任务:"+queue);
					id=queue.poll();
					task=taskDao.get(id);
					//重启任务
					ExecUtil.restart(task);
				}
			}catch(IOException e) {
				System.err.println(id+" 任务重启失败,详情:"+task);
				//重启任务失败
				err_index++;
			}catch(Exception e) {
				
			}
		}
	}

开启保活线程的情况下,CommandManagerImpl每次没创建都会创建一个保活线程,而保活线程是采用无线循环的方式来循环,在实际使用过程中每个创建的CommandManagerImpl都会让一个cpu的使用率达到100%,看起来CommandManagerImpl应该是当个全局管理类来使用,但依然会存在让一个cpu的使用率过高的问题,我觉得是否可以再OutHandler将重启任务交给保活线程的时候再唤醒,当保活线程队列中没任务的时候继续等待;

  1. 关于OutHandler能否抽象出来?目前的实现固定了也无法自己实现,而原来的实现在进程没有输出之后默默的关闭了自己的线程,却没有告知其它任何组件当前进程无消息输出了,这个状态对于有些情况来说很重要,因为目前只有异常或丢包,但还有一种就是本身没有故障,只是源没有消息了
/**
	 * 执行输出线程
	 */
	@Override
	public void run() {
		String msg = null;
		try {
			if (CommandManager.config.isDebug()) {
				System.out.println(id + "开始推流!");
			}
			while (desstatus && (msg = br.readLine()) != null) {
				ohm.parse(id, msg);
				if (ohm.isbroken()) {
					System.err.println("检测到中断,提交重启任务给保活处理器");
					//如果发生异常中断,立即进行保活
					//把中断的任务交给保活处理器进行进一步处理
					KeepAliveHandler.add(id);
					condition.signal();
				}
			}
		} catch (IOException e) {
			System.out.println("发生内部异常错误,自动关闭[" + this.getId() + "]线程");
			destroy();
		} finally {
			if (this.isAlive()) {
				destroy();
			}
		}
	}

以上问题可能有自己没看明白的地方,还请不吝赐教;

使用视频推流,如何感知进程结束

从网络上只有几分钟的的视频源 : rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov 作为输入源,然后推流到服务器,视频结束时,CommandTasker 中当前的任务进程状态为true , 如何能在推流结束时,自动关闭进程或者能感知到推流完成呢

linux支持

请问这个项目支持linux下使用吗?
另外在安装ffmpeg时候有什么注意事项吗?
谢谢!

输出rtmp错误提示未知错误

`Connected to the target VM, address: '127.0.0.1:55793', transport: 'socket'
尝试从web目录读取配置文件:/E:/FFmpegCommandHandler4java-master/bin/loadFFmpeg.properties
web目录读取到配置文件:/E:/FFmpegCommandHandler4java-master/bin/loadFFmpeg.properties
加载配置文件...
加载配置文件完毕
读取的配置项:{path=D:/ffmpeg/bin/, debug=true, size=10}
转换后的对象:FFmpegConfig [path=D:/ffmpeg/bin/, debug=true, size=10]
执行命令:D:/ffmpeg/bin/ffmpeg -i rtsp://admin:a1234567@【些处为IP】:554/Streaming/Channels/1401 -f flv -r 25 -g 25 -s 640x360 -an rtmp://127.0.0.1/live/test123 -vcodec copy -f flv -an rtmp://127.0.0.1/live/test123HD
test123
TaskEntity [id=test123, process=java.lang.ProcessImpl@3dee2310, thread=Thread[Thread-0,5,main]]
[TaskEntity [id=test123, process=java.lang.ProcessImpl@3dee2310, thread=Thread[Thread-0,5,main]]]
test123开始推流!
test123:完整消息:ffmpeg version N-92226-g2797bd5c81 Copyright (c) 2000-2018 the FFmpeg developers
test123:完整消息: built with gcc 8.2.1 (GCC) 20181017
test123:完整消息: configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
test123:完整消息: libavutil 56. 19.101 / 56. 19.101
test123:完整消息: libavcodec 58. 33.102 / 58. 33.102
test123:完整消息: libavformat 58. 19.101 / 58. 19.101
test123:完整消息: libavdevice 58. 4.105 / 58. 4.105
test123:完整消息: libavfilter 7. 36.100 / 7. 36.100
test123:完整消息: libswscale 5. 2.100 / 5. 2.100
test123:完整消息: libswresample 3. 2.100 / 3. 2.100
test123:完整消息: libpostproc 55. 2.100 / 55. 2.100
test123:完整消息:[udp @ 000001f025d3e0c0] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
test123:完整消息:[udp @ 000001f025d50c80] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
test123发生网络异常丢包,消息体:[rtsp @ 000001f025d3ba40] max delay reached. need to consume packet
test123发生网络异常丢包,消息体:[rtsp @ 000001f025d3ba40] RTP: missed 170 packets
test123:完整消息:[rtsp @ 000001f025d3ba40] max delay reached. need to consume packet
test123:完整消息:[rtsp @ 000001f025d3ba40] RTP: missed 170 packets
test123:完整消息:[h264 @ 000001f025d3f2c0] error while decoding MB 18 24, bytestream -35
test123:完整消息:[h264 @ 000001f025d3f2c0] concealing 5311 DC, 5311 AC, 5311 MV errors in I frame
test123:完整消息:Input #0, rtsp, from 'rtsp://admin:a1234567@【些处为IP】:554/Streaming/Channels/1401':
test123:完整消息: Metadata:
test123:完整消息: title : HIK Media Server V3.4.98
test123:完整消息: comment : HIK Media Server Session Description : standard
test123:完整消息: Duration: N/A, start: 2.120000, bitrate: N/A
test123:完整消息: Stream #0:0: Video: h264 (Main), yuv420p(progressive), 1920x1080, 25 fps, 25.08 tbr, 90k tbn, 50 tbc
test123:完整消息:[tcp @ 000001f025d7f500] Connection to tcp://127.0.0.1:1935 failed: Error number -138 occurred
test123:完整消息:[rtmp @ 000001f0282cef40] Cannot open connection tcp://127.0.0.1:1935
test123:完整消息:rtmp://127.0.0.1/live/test123: Unknown error
正在停止任务:test123
Disconnected from the target VM, address: '127.0.0.1:55793', transport: 'socket'

Process finished with exit code 0`
能帮忙看看什么原因吗

发生网络异常丢包,消息体:频繁出现丢包情况

tests发生网络异常丢包,消息体:[rtsp @ 0000000000eea340] max delay reached. need to consume packet
tests发生网络异常丢包,消息体:[rtsp @ 0000000000eea340] RTP: missed 5 packets
tests发生网络异常丢包,消息体:[rtsp @ 0000000000eea340] max delay reached. need to consume packet
tests发生网络异常丢包,消息体:[rtsp @ 0000000000eea340] RTP: missed 4 packets
tests:frame=13302 fps= 25 q=28.0 size= 155248kB time=00:08:53.56 bitrate=2383.6kbits/s dup=0 drop=5 speed=0.998x

我用的是java写的test程序,实现rtsp转为rtmp并推流出去通过Nginx后在WEB页面通过

具体代码很简单如下: 用户名和密码暂时用了密码代替...
String ip = "192.168.1.11";
String id = "tests";
FFmpegManagerImpl manager = null;
if (manager == null) {
manager = new FFmpegManagerImpl();
}
Map<String,String> map = new HashMap<>();
map.put("appName", id);
map.put("input", "rtsp://username:password@" + ip + ":554");
map.put("output", "rtmp://localhost/live/");
map.put("codec", "h264");
map.put("fmt", "flv");
map.put("fps", "25");
map.put("rs", "640x360");
map.put("twoPart", "0");
// 执行任务,id就是ap"pName,如果执行失败返回为null
return manager.start(map);

help

tests:frame= 8815 fps= 20 q=28.0 size= 145049kB time=00:07:13.68 bitrate=2739.9kbits/s dup=0 drop=5 speed=0.992x
tests发生网络异常丢包,消息体:[rtsp @ 00000211e1eaa4c0] max delay reached. need to consume packet
tests发生网络异常丢包,消息体:[rtsp @ 00000211e1eaa4c0] RTP: missed 12 packets

可以推流,但是总是丢包,请问如何解决?

新版本

老哥 什么时候出新版本,支持管理界面

摄像头断网问题

您好,我搭建了一个推流服务器,并部署了您的代码,能够成功运行。但当摄像头断电断网时,ErrorStream 没有任何输出,代码会阻塞在readLine 处,无法将任务提交到保活处理器。我使用的ffmpeg版本是2.8.15,请问您遇到过这个问题吗?有什么解决方案吗?

发布到maven仓库

感谢你写的这么好的封装,请问是否可发布到maven仓库,方便项目引用

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.