1
wysnylc 2020-08-05 10:22:35 +08:00
最近我也在搞媒体处理格式转换,但是用阿里的 api
自己做性价比低而且扩展麻烦,阿里的还挺便宜的 |
2
yuhangch 2020-08-05 11:12:15 +08:00
之前也碰到了类似的问题,第一次运行正常,第二次卡住,后来,我是手动把缓冲区读出来解决的,也想听大佬聊聊究竟什么原因
|
4
d460686680 2020-08-05 16:30:06 +08:00
用 ProcessBuilder 组装 command,每次任务重新开个线程。
|
5
fivesmallq 2020-08-05 18:45:38 +08:00
|
6
aguesuka 2020-08-06 08:11:33 +08:00 via Android
做过 java 调 ffmpeg 项目,把输出流和错误流重定向一个流,然后不停读就可以了。
|
7
evilrat OP @d460686680 开一个新的线程为什么可以呢?每次请求接口,不都是一个新的线程么,去调用 ffmpeg 不都会新建一个系统级的进程么。两个请求,就是两个线程,两个线程分别调用 ffmpeg 新建系统进程,怎么就会互相影响呢?
|
8
evilrat OP @aguesuka 我启动应用后,第一次调用是可以正常返回的,而且代码里调用了 process.waitFor(),也就是线程会等待 ffmpeg 进程结束才会继续往下走,接口正常返回,说明没有发生输出流错误流阻塞的问题。第二个请求怎么就不行了呢。。。还请指点
|
9
evilrat OP @fivesmallq 我是不懂为什么新建线程去调用 ffmpeg 就可以。。。我理解的每次调用接口都是一个新的线程,独立的线程分别去调 ffmpeg,会建立各自的系统级进程吧,为啥会互相影响呢?
|
10
aguesuka 2020-08-07 13:06:11 +08:00 via Android
@evilrat 第一个请求 inputstream 的 buffer 没满,满了以后 ffempg 的打印就阻塞了。
|