javacv ffmpeg tcp如何判断断网

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javacv ffmpeg tcp如何判断断网相关的知识,希望对你有一定的参考价值。

参考技术A 拔掉路由器电源。
路由器散热不良或故障都会出现这样的问题,我之前就有一个,断网或网速慢时,拔掉路由器电源再接上就好了,网络时通时断的故障必须经过测试才能准确判断故障点,然后根据故障点的范围来进行排障,测试方法。

使用 JavaCV 和 FFmpeg 播放视频

【中文标题】使用 JavaCV 和 FFmpeg 播放视频【英文标题】:Playing a video with JavaCV and FFmpeg 【发布时间】:2012-12-07 20:18:26 【问题描述】:

所以,我正在为 Android 开发一个自定义视频播放器,但我需要播放的不仅仅是 android 支持的视频文件(mp4, 3gp...), like wmv, avi, flv.

此时我已经将任何视频类型转换为 .mp4 并且我能够在重新编码后播放它们,但我不知道如何播放这些 wmvavi 文件而不将它们重新编码为 @ 987654324@视频格式。

有什么方法可以在 Android 上播放任何视频而无需重新编码? JavaCV + FFmpeg 库已经在工作,只是不知道该怎么做。

顺便说一下,这是我用来重新编码视频的代码:

public static void convert(File file) 

    FFmpegFrameGrabber frameGrabber =
            new FFmpegFrameGrabber(file.getAbsolutePath());

    IplImage captured_frame = null;

    FrameRecorder recorder = null;
    recorder = new FFmpegFrameRecorder("/mnt/sdcard/external_sd/videosteste/primeiroteste.mp4", 300, 300);
    recorder.setVideoCodec(13);
    recorder.setFrameRate(30);
    recorder.setFormat("mp4");
    try 
        recorder.start();
        frameGrabber.start();
        while (true) 
            try 
                captured_frame = frameGrabber.grab();

                if (captured_frame == null) 
                    System.out.println("!!! Failed cvQueryFrame");
                    break;
                
                recorder.record(captured_frame);
             catch (Exception e) 
            
        
        recorder.stop();
        recorder.release();
     catch (Exception e) 
        e.printStackTrace();
    

【问题讨论】:

我已经搜索了很长时间,但仍然没有答案。有人吗? 【参考方案1】:

首先创建 CanvasFrame,然后使用“canvas.showImage(captured_frame);”而不是“recorder.record(captured_frame);”

代码如下:

public class GrabberShow implements Runnable 

    final static int INTERVAL=40;///you may use interval
    IplImage image;
    static CanvasFrame canvas = new CanvasFrame("JavaCV player");


    public GrabberShow() 
   
        canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
   


    public static void convert(File file) 
    

    FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(file.getAbsolutePath());

    IplImage captured_frame = null;

    FrameRecorder recorder = null;
    //recorder = new FFmpegFrameRecorder("/mnt/sdcard/external_sd/videosteste/primeiroteste.mp4", 300, 300);
    recorder = new FFmpegFrameRecorder("D://temp.mp4", 300, 300);
    recorder.setVideoCodec(13);
    recorder.setFrameRate(30);
    recorder.setFormat("mp4");
    try 
        recorder.start();
        frameGrabber.start();
        while (true) 
            try 
                captured_frame = frameGrabber.grab();

                if (captured_frame == null) 
                    System.out.println("!!! Failed cvQueryFrame");
                    break;
                
                //recorder.record(captured_frame);
                canvas.showImage(captured_frame);
                Thread.sleep(INTERVAL);
             catch (Exception e) 
            
        
        recorder.stop();
        recorder.release();
     catch (Exception e) 
        e.printStackTrace();
    

@Override
public void run() 

    convert(new File("D://aes.mp4")); 


public static void main(String[] args) 
    GrabberShow gs = new GrabberShow();
    Thread th = new Thread(gs);
    th.start();


【讨论】:

他问了android,我想你回答了abput desktop app【参考方案2】:

有什么方法可以在 Android 上播放任何视频而无需重新编码?

你为什么要录制视频?无需录制视频。 JavaCv。

这是为您提供想法的示例代码,您可以如何实现它。

FrameGrabber grabber = new FrameGrabber(videoFile);
grabber.start();
BufferedImage image= null;
while((image=grabber.grab())!=null)
   // TODO set the image on the canvas or panel where ever you want. 

grabber.stop();

【讨论】:

以上是关于javacv ffmpeg tcp如何判断断网的主要内容,如果未能解决你的问题,请参考以下文章

安卓手机总是自动断网!

adbyby在OPENWRT下,一会就断网了,有没有好的解决方案

提升asio断网处理

js 检测是不是断网

如何给mac电脑安全快速的断网

电脑经常断网怎么办