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. 内容。视频也被缓存下来了

猜你喜欢

转载自blog.csdn.net/CSDNno/article/details/88212760