【问题标题】:ffmpeg/ffprobe get HLS 'codecs' string for a video/audio streamffmpeg/ffprobe 获取视频/音频流的 HLS 'codecs' 字符串
【发布时间】:2021-03-29 12:57:03
【问题描述】:

我正在使用 ffmpeg 创建 HLS 子播放列表。我使用 ffmpeg 为演绎版创建它们。现在我需要创建 ma​​ster 播放列表 .m3u8。

出于几个原因,我需要手动执行此操作。除了“CODECS”值之外,我拥有所需的一切。

如何获取文件中视频和音频流的 CODECS 值?

当我使用 ffprobe 获取有关流的所有元数据时,我看不到相关数据。

带有 CODECS 的示例主清单:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=540863,RESOLUTION=640x360,CODECS="avc1.64001e,mp4a.40.2"
v0/prog_index.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=2339363,RESOLUTION=960x540,CODECS="avc1.64001f,mp4a.40.2"
v1/prog_index.m3u8

我可以使用 ffprobe 获得的元数据示例:

{'avg_frame_rate': '24000/1001',
 'bit_rate': '35956',
 'bits_per_raw_sample': '8',
 'chroma_location': 'left',
 'closed_captions': 0,
 'codec_long_name': 'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10',
 'codec_name': 'h264',
 'codec_tag': '0x31637661',
 'codec_tag_string': 'avc1',
 'codec_time_base': '1001/48000',
 'codec_type': 'video',
 'coded_height': 368,
 'coded_width': 640,
 'display_aspect_ratio': '16:9',
 'disposition': {'attached_pic': 0,
                 'clean_effects': 0,
                 'comment': 0,
                 'default': 1,
                 'dub': 0,
                 'forced': 0,
                 'hearing_impaired': 0,
                 'karaoke': 0,
                 'lyrics': 0,
                 'original': 0,
                 'timed_thumbnails': 0,
                 'visual_impaired': 0},
 'duration': '5.005000',
 'duration_ts': 120120,
 'has_b_frames': 2,
 'height': 360,
 'index': 0,
 'is_avc': 'true',
 'level': 30,
 'nal_length_size': '4',
 'nb_frames': '120',
 'pix_fmt': 'yuv420p',
 'profile': 'High',
 'r_frame_rate': '24000/1001',
 'refs': 1,
 'sample_aspect_ratio': '1:1',
 'start_pts': 0,
 'start_time': '0.000000',
 'tags': {'handler_name': 'VideoHandler',
          'language': 'eng',
          'timecode': '01:00:00:00'},
 'time_base': '1/24000',
 'width': 640}
{'avg_frame_rate': '0/0',
 'bit_rate': '138375',
 'bits_per_sample': 0,
 'channel_layout': 'stereo',
 'channels': 2,
 'codec_long_name': 'AAC (Advanced Audio Coding)',
 'codec_name': 'aac',
 'codec_tag': '0x6134706d',
 'codec_tag_string': 'mp4a',
 'codec_time_base': '1/48000',
 'codec_type': 'audio',
 'disposition': {'attached_pic': 0,
                 'clean_effects': 0,
                 'comment': 0,
                 'default': 1,
                 'dub': 0,
                 'forced': 0,
                 'hearing_impaired': 0,
                 'karaoke': 0,
                 'lyrics': 0,
                 'original': 0,
                 'timed_thumbnails': 0,
                 'visual_impaired': 0},
 'duration': '5.005000',
 'duration_ts': 240240,
 'index': 1,
 'max_bit_rate': '138375',
 'nb_frames': '236',
 'profile': 'LC',
 'r_frame_rate': '0/0',
 'sample_fmt': 'fltp',
 'sample_rate': '48000',
 'start_pts': 0,
 'start_time': '0.000000',
 'tags': {'handler_name': 'SoundHandler', 'language': 'eng'},
 'time_base': '1/48000'}

【问题讨论】:

    标签: ffmpeg ffprobe


    【解决方案1】:

    ffprobe 不会提供 HLS CODECS 信息。

    虽然您正在手动制作自己的主播放列表,但将-master_pl_name playlist.m3u8 添加到您的命令并从结果文件 (playlist.m3u8) 中获取 CODECS 值。

    【讨论】:

    • 我手动创建主播放列表,没有 ffmpeg,所以这是不可能的。
    • @Richard 令人困惑,因为在您的问题中您说:“我正在使用 ffmpeg 创建 HLS 播放列表”。那么您实际上是如何使用 ffmpeg 的呢?您仍然可以使用 ffmpeg 并手动创建自己的主播放列表。
    • 我正在使用 ffmpeg 创建子播放列表。并且没有ffmpeg手动主播放列表。
    • @Richard 并没有真正澄清任何事情。我不明白为什么你不能只将-master_pl_name 添加到你的 ffmpeg HLS 命令来获取临时播放列表,其唯一目的是为你获取 CODECS 来帮助你手动创建实际的主播放列表。
    • 因为就像我说的。我正在生成没有 ffmpeg 的主播放列表。所以我没有运行 ffmpeg,因此无法添加 master_pl_name 参数。
    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2019-03-06
    • 2020-01-21
    • 2012-11-13
    相关资源
    最近更新 更多