gpt4 book ai didi

java - 如何轻松读取 Java 中的视频持续时间和比特率?

转载 作者:行者123 更新时间:2023-11-30 07:29:53 25 4
gpt4 key购买 nike

这是我在 Java 中的第一个项目。我正在用 Java 创建批量 FTP 视频 uploader 小程序。

在开始上传视频之前,我需要从视频文件中读取视频时长和视频比特率。

我在 Google 上做了一些研究,但我只找到了一些第三方库(jffmpeg、xugler 等)

有没有更简单的方法可以使用 Java 获取这些信息?

最佳答案

您需要使用第 3 方工具,例如 Xuggle或直接打给FFmpeg . Java 中没有“ native ”方式来执行此操作。 (Java 对“媒体内容”的尝试,如 JMF,从未真正取得成功。)编写您自己的媒体文件解析器将既困难又耗时——这是轻描淡写的说法。

将 FFmpeg 输出到 FFmpeg 并解析输出并不需要太多的努力。我的应用程序做到了,尽管它只对持续时间感兴趣。这是一个简单的 CLI 示例:

manoa:~ stu$ ffmpeg -i test.flv 
ffmpeg version 0.8.6, Copyright (c) 2000-2011 the FFmpeg developers
built on Nov 21 2011 15:43:35 with gcc 4.2.1 (Apple Inc. build 5664)
configuration: --prefix=/opt/xtendx/local --enable-gpl --enable-pthreads --enable-version3 --enable-nonfree --disable-decoder=prores_lgpl --enable-libvpx --enable-libvorbis --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-libxvid --disable-decoder=libvpx --enable-avfilter --enable-filters --arch=x86_64 --enable-runtime-cpudetect --extra-cflags=-I/opt/xtendx/local/include --extra-ldflags=-L/opt/xtendx/local/lib --enable-hwaccel=mpeg2_vaapi --enable-hwaccel=mpeg4_vaapi --enable-hwaccel=h263_vaapi --enable-hwaccel=wmv3_vaapi
libavutil 51. 9. 1 / 51. 9. 1
libavcodec 53. 7. 0 / 53. 7. 0
libavformat 53. 4. 0 / 53. 4. 0
libavdevice 53. 1. 1 / 53. 1. 1
libavfilter 2. 23. 0 / 2. 23. 0
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 51. 2. 0 / 51. 2. 0
[flv @ 0x101807c00] Estimating duration from bitrate, this may be inaccurate

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 23.98 (24000/1001)
Input #0, flv, from 'trailer_flash.flv':
Metadata:
duration : 125
width : 640
height : 340
videodatarate : 500
framerate : 24
videocodecid : 4
audiodatarate : 128
audiodelay : 0
audiocodecid : 2
canSeekToEnd : true
Duration: 00:02:04.88, start: 0.000000, bitrate: 640 kb/s
Stream #0.0: Video: vp6f, yuv420p, 640x340, 512 kb/s, 23.98 tbr, 1k tbn, 1k tbc
Stream #0.1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s
At least one output file must be specified

因此,您只需要逐行解析并找到这一行:

Duration: 00:02:04.88, start: 0.000000, bitrate: 640 kb/s

然后把它切碎,你就可以开始了!

关于java - 如何轻松读取 Java 中的视频持续时间和比特率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com