ffmpeg下载和实战获取音视频时长

目录

一、介绍和下载

(1)介绍

(2)下载

二、实战演示

(1)通过ffmpeg获取音视频的时长

[1. 命令行方式:](#1. 命令行方式:)

[2. java代码实现:](#2. java代码实现:)


一、介绍和下载

(1)介绍

FFmpeg 是一个​​跨平台的开源音视频处理解决方案​​,它包含了庞大的库集合和命令行工具,用于处理多媒体内容(音频、视频、字幕等)。

(2)下载

Download FFmpeghttps://ffmpeg.org/download.html

二、实战演示

(1)通过ffmpeg获取音视频的时长

1. 命令行方式:

复制代码
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 D:\\Desktop\\测试音频\\119.mp3
  • -v error:只显示错误信息,避免多余输出。
  • -show_entries format=duration:仅显示时长信息。
  • -of default=noprint_wrappers=1:nokey=1:简化输出格式,只返回数值(单位:秒)。

2. java代码实现:

复制代码
package com.grmdcxy;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class FFmpegDuration {
    public static void main(String[] args) {
        String mediaPath = "D:\\Desktop\\教程视频\\框架讲解\\旋转骰子效果.mp4";
        double duration = getMediaDuration(mediaPath);
        System.out.println("音视频时长(秒): " + duration);
        System.out.println("音视频时长(HH:MM:SS): " + secondsToTime(duration));
    }

    /**
     * 调用 ffprobe 获取音视频时长(秒)
     */
    public static double getMediaDuration(String filePath) {
        try {
            // 构建 ffprobe 命令
            String[] cmd = {
                "ffprobe",
                "-v", "error",
                "-show_entries", "format=duration",
                "-of", "default=noprint_wrappers=1:nokey=1",
                filePath
            };

            // 执行命令并读取输出
            Process process = Runtime.getRuntime().exec(cmd);
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = reader.readLine();

            if (line != null) {
                return Double.parseDouble(line);
            }
        } catch (IOException | NumberFormatException e) {
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 将秒数转换为 HH:MM:SS 格式
     */
    public static String secondsToTime(double seconds) {
        int hours = (int) (seconds / 3600);
        int minutes = (int) ((seconds % 3600) / 60);
        int secs = (int) (seconds % 60);
        return String.format("%02d:%02d:%02d", hours, minutes, secs);
    }
}
相关推荐
小鹿研究点东西21 小时前
直播带货长视频AI自动剪辑开播:一场直播如何反复利用?
ffmpeg·自动化·音视频·语音识别
luoyayun3611 天前
Qt + FFmpeg 实战:获取音视频文件基础属性、流信息和元数据
qt·ffmpeg·音视频·元数据·获取音视频文件属性
Rudon滨海渔村1 天前
ffmpeg裁剪视频黑屏、不准时等处理方式 - ffmpeg基本操作
ffmpeg·音视频
The Sheep 20232 天前
ffmpeg速成
ffmpeg
街灯L2 天前
【Ubuntu】使用ffmpeg解析m3u8网页视频
ubuntu·ffmpeg·音视频
烟雨江南7853 天前
特高压输电线路带电作业直升机吊篮与强电磁感应放电:基于“灵声智库”空间自适应滤波与声纹授权的离线语音控制指令方案
人工智能·ffmpeg·webrtc·语音识别·ai质检
AJi3 天前
H264码率控制
ffmpeg
换个昵称都难4 天前
webrtc voice engine 介绍(新版webrtc)
ffmpeg·音视频·webrtc
小鹿软件办公5 天前
巧用 Adobe Audition 中置声道提取,轻松分离人声与背景音乐
adobe·ffmpeg·简鹿人声分离
2023自学中7 天前
imx6ull开发板 移植 ffmpeg 4.2.11 + x264 视频编码库
linux·ffmpeg·音视频·嵌入式·开发板