gpt4 book ai didi

linux - ffprobe如何确定持续时间?

转载 作者:IT王子 更新时间:2023-10-29 00:00:57 26 4
gpt4 key购买 nike

我正在使用 ffprobe 来分析存储在远程服务器上的媒体文件。这似乎运作良好,但对于某些文件,持续时间丢失或不正确(通常比应有的时间长)。其他时候它会准确地返回此信息,而且似乎与媒体类型(编解码器等)无关。

这是一个有效的命令示例:

ffprobe -v quiet -print_format json -show_streams -show_format http://host.com/file.aiff

{
"streams": [
{
"index": 0,
"codec_name": "pcm_s16be",
"codec_long_name": "PCM signed 16-bit big-endian",
"codec_type": "audio",
"codec_time_base": "1/44100",
"codec_tag_string": "[0][0][0][0]",
"codec_tag": "0x0000",
"sample_fmt": "s16",
"sample_rate": "44100",
"channels": 2,
"bits_per_sample": 16,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/44100",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 8494248,
"duration": "192.613333",
"bit_rate": "1411200",
"nb_frames": "8494248",
"disposition": {
"default": 0,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0
}
}
],
"format": {
"filename": "http://host.com/file.aiff",
"nb_streams": 1,
"nb_programs": 0,
"format_name": "aiff",
"format_long_name": "Audio IFF",
"start_time": "0.000000",
"duration": "192.613333",
"probe_score": 100
}
}

这是一个没有的例子:

ffprobe -v quiet -print_format json -show_streams -show_format "http://host.com/file.wav"

生成此结果:

{
"streams": [
{
"index": 0,
"codec_name": "pcm_s16le",
"codec_long_name": "PCM signed 16-bit little-endian",
"codec_type": "audio",
"codec_time_base": "1/44100",
"codec_tag_string": "[1][0][0][0]",
"codec_tag": "0x0001",
"sample_fmt": "s16",
"sample_rate": "44100",
"channels": 2,
"bits_per_sample": 16,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/44100",
"bit_rate": "1411200",
"disposition": {
"default": 0,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0
}
}
],
"format": {
"filename": "http://host.com/file.wav",
"nb_streams": 1,
"nb_programs": 0,
"format_name": "wav",
"format_long_name": "WAV / WAVE (Waveform Audio)",
"bit_rate": "1411200",
"probe_score": 99
}
}

这两个示例是不同的格式,但我已经看到当格式相同时它可以工作,也可以不工作,我只是手边没有示例。

我想知道的是,我是否可以更改与 ffprobe 一起使用的参数,以便始终如一且准确地确定持续时间,或者我可以更改的任何信息了解 ffprobe 的工作原理,以便弄清楚如何更改输入文件等,以便它们正常工作。

或者,如果有更可靠的不同工具(需要是开源 Linux 工具),欢迎提出任何建议。

最佳答案

一个简单的解决方案是使用 -show_packets 选项

ffprobe -i input.mp4 -show_packets > a.txt

现在打开 a.txt 并转到最后一个数据包并查看 dts_time 值,这将是文件的准确持续时间。如果未定义 dts_time,请检查 pts_time 值。

关于linux - ffprobe如何确定持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30582452/

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