Java 海康录像机通过sdk下载的视频无法在线预览问题

发布于:2025-05-23 ⋅ 阅读:(14) ⋅ 点赞:(0)

下载的视频格式不对,需将视频转码为H.264/AAC的MP4格式

 使用 ffmpeg 对视频进行转码

ffmpeg可以对视频进行转码、加水印等操作,还是挺强大的

 代码如下

public static void transcodeToMP4(String inputPath, String outputPath) throws IOException, InterruptedException {
        // FFmpeg命令:将视频转码为H.264/AAC的MP4格式
        String[] command = {
                ffmpegEXE,
                "-i", inputPath,
                "-c:v", "libx264",          // 视频编码器
                "-preset", "fast",         // 编码速度与压缩率平衡
                "-crf", "23",             // 质量参数(18-28,值越小质量越高)
                "-c:a", "aac",             // 音频编码器
                "-b:a", "128k",            // 音频比特率
                "-movflags", "+faststart", // 使视频支持流式播放
                "-y",                      // 覆盖输出文件
                outputPath
        };
        ProcessBuilder pb = new ProcessBuilder(command);
        pb.inheritIO(); // 继承当前进程的IO,方便查看输出
        Process process = pb.start();
        process.waitFor();
    }

ffmpegEXE:下载的ffmpeg的可执行文件exe的全路径

 

FFmpeg 是一个功能极其强大的开源多媒体处理工具,几乎可以处理所有与音视频相关的任务。以下是它能做的核心功能分类,附典型命令示例:


1. 视频处理

功能 命令示例(经典场景)
格式转换 ffmpeg -i input.avi output.mp4
视频压缩 ffmpeg -i input.mp4 -crf 23 compressed.mp4(CRF值越小质量越高)
提取所有帧 ffmpeg -i input.mp4 frame_%04d.png
调整分辨率 ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
裁剪视频区域 ffmpeg -i input.mp4 -vf "crop=w=800:h=600:x=100:y=50" output.mp4
加速/减速视频 ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" 2x_speed.mp4(0.5倍速)
去除水印 ffmpeg -i input.mp4 -vf "delogo=x=100:y=50:w=200:h=100" clean.mp4
视频反交错 ffmpeg -i interlaced.mp4 -vf yadif deinterlaced.mp4

2. 音频处理

功能 命令示例
提取音频 ffmpeg -i video.mp4 -vn -c:a libmp3lame audio.mp3
合并音视频 ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac output.mp4
音频降噪 ffmpeg -i noisy.mp3 -af "afftdn=nf=-20dB" clean.mp3
切割音频片段 ffmpeg -i song.mp3 -ss 00:01:30 -to 00:02:30 clip.mp3
转换采样率 ffmpeg -i input.wav -ar 44100 output.wav

3. 直播与流媒体

功能 命令示例
RTMP推流 ffmpeg -i input.mp4 -c:v libx264 -f flv rtmp://server/live/stream_key
HLS切片 ffmpeg -i input.mp4 -c:v h264 -hls_time 10 -hls_list_size 0 playlist.m3u8
拉取直播流保存 ffmpeg -i http://live.server/stream.m3u8 -c copy output.mp4
RTSP转RTMP ffmpeg -i rtsp://cam_ip/live -c:v copy -c:a aac -f flv rtmp://server/stream

4. 高级特效

功能 命令示例
画中画 ffmpeg -i main.mp4 -i pip.mp4 -filter_complex "[1]scale=320:-1[small];[0][small]overlay=x=10:y=10" output.mp4
绿幕抠像 ffmpeg -i green_screen.mp4 -vf "chromakey=0x00FF00:0.1" output.mp4
添加字幕 ffmpeg -i video.mp4 -vf "subtitles=sub.srt" output.mp4
生成动态缩略图 ffmpeg -i video.mp4 -vf "fps=1/10,scale=320:-1" thumb_%03d.jpg

5. 设备采集

功能 命令示例(不同系统)
录屏(Linux) ffmpeg -f x11grab -s 1920x1080 -i :0.0 screen.mp4
录屏(macOS) ffmpeg -f avfoundation -i "1:0" screen.mp4
录屏(Windows) ffmpeg -f gdigrab -i desktop screen.mp4
摄像头录制 ffmpeg -f v4l2 -i /dev/video0 camera.mp4

6. 元数据操作

功能 命令示例
查看媒体信息 ffmpeg -i input.mp4
修改元数据 ffmpeg -i input.mp4 -metadata title="New Title" output.mp4
删除元数据 ffmpeg -i input.mp4 -map_metadata -1 clean.mp4

网站公告

今日签到

点亮在社区的每一天
去签到