ffmpeg 拷贝流保存视频文件无法打开疑问

最近在做直播相关应用时,在Android上调用FFmpeg 二进制程序缓存视频无法打开播放。但在电脑终端是可以的。

ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -c copy BigBuckBunny.mp4

仔细观察正在拉流中的文件也是无法打开的
正在拉流中
正在缓存的视频
在这里插入图片描述
Ctrl+C 终止程序
在这里插入图片描述
在这里插入图片描述
原来需要终止程序。那调用 process.destroy() 是不就是正常退出了呢?结果发现缓存的视频还是不能打开。后面我已经注意到signal 2 ,这关系到 Linux 信號signal處理機制 02 SIGINT中斷,當使用者從鍵盤按ctrl+c鍵
所以安卓上需要发送SIGINT中斷的信号给process.

1.尝试往process 发送Q

OutputStream ostream = process.getOutputStream(); 
ostream.write("q\n".getBytes());    
ostream.flush();  

结果视频可以打开了,但是退出process比较慢
2.通过 执行kill pid命令 , 那Android如何获取process pid 呢。debug时我发现process.toString() 有个数字,是不就是进程ID呢?

public void safeExitProcess(final Process process) {
    if (process != null) {
        String pid = process.toString().replace("Process[pid=", "").replace("]", "");
        FfmpegController.killProcessor(pid, false, false);
    }
}
kill -2 pid //SIGINT 中斷,相當使用者從鍵盤按ctrl+c鍵

process的输入流打印的log也有Exiting normally, received signal 2. 内容。视频也被缓存下来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值