当前位置: 首页 > article >正文

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

下载的视频格式不对,需将视频转码为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转RTMPffmpeg -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
http://www.lryc.cn/news/2385114.html

相关文章:

  • WPF性能优化之延迟加载(解决页面卡顿问题)
  • 移植 FART 到 Android 10 实现自动化脱壳
  • ES的Refresh、Flush、Merge操作对性能的影响? ES如何实现近实时(NRT)搜索? ES聚合查询的Terms和Cardinality区别?
  • WebXR 虚拟现实开发
  • COMPUTEX 2025 | 广和通创新解决方案共筑AI交互新纪元
  • 了解Android studio 初学者零基础推荐(3)
  • Spring 定时器和异步线程池 实践指南
  • 零基础设计模式——创建型模式 - 生成器模式
  • MD编辑器推荐【Obsidian】含下载安装和实用教程
  • LLama-Factory 遇到的问题
  • I-CON: A UNIFYING FRAMEWORK FOR REPRESENTATION LEARNING
  • Missashe线代题型总结
  • 蓝桥杯13届 卡牌
  • 安卓开发用到的设计模式(1)创建型模式
  • 【PalladiumZ2 使用专栏 3 -- 信号值的获取与设置 及 memory dump 与 memory load】
  • flutter dart 函数语法
  • 课外活动:大语言模型Claude的技术解析 与 自动化测试框架领域应用实践
  • 线程的一些基本知识
  • 【Python打卡Day30】模块与包的导入@浙大疏锦行
  • 26考研|高等代数:λ-矩阵
  • 我店模式系统开发打造本地生活生态商圈
  • 数据库练习(3)
  • OpenGL ES 基本基本使用、绘制基本2D图形
  • spark调度系统核心组件SparkContext、DAGSchedul、TaskScheduler、Taskset介绍
  • BU9792驱动段式LCD
  • Springboot通过SSE实现实时消息返回
  • SD-WAN技术详解:如何优化网络性能与QoS实现?(附QoS策略、链路聚合、网络架构对比)
  • 力扣-将x减到0的最小操作数
  • Web前端开发: 什么是JavaScript?
  • 三、【数据建模篇】:用 Django Models 构建测试平台核心数据