【问题标题】:ffmpeg select highest quality video track and audio track in specific language from m3u8ffmpeg 从 m3u8 中选择特定语言的最高质量视频轨道和音频轨道
【发布时间】:2019-07-31 23:18:40
【问题描述】:

我有一堆 .m3u8 文件,其中包含不同分辨率和比特率的视频轨道,以及不同语言的音轨。 我想选择最高质量的视频流以及指定语言的音轨(如果可用)。

我知道如何选择音轨,目前我正在使用

-map 0:m:language:en? 

喜欢这个

ffmpeg -re -protocol_whitelist file,http,https,tcp,tls -i .\some_file.m3u8 -codec:a aac -c:v copy -f flv -map 0:m:language:en? rtmp://foo.com:1935/live/xyz

这样,我只在指定的音频语言可用时才流式传输音频,如果不可用,则在默认配置中流式传输音频和视频。

我想在这两种情况下流式传输最好的视频轨道(ffmpeg 默认选择一个)。

【问题讨论】:

    标签: video ffmpeg video-streaming streaming http-live-streaming


    【解决方案1】:

    通常,这需要链式 ffmpeg 命令,

    ffmpeg -protocol_whitelist file,http,https,tcp,tls -i .\some_file.m3u8 -c copy -map 0:v -map 0:m:language:en? -f mpegts - | ffmpeg -re -f mpegts -i - -c:v copy -c:a aac -f flv rtmp://foo.com:1935/live/xyz

    【讨论】:

    • 第一部分有效,它复制所有视频轨道和正确的音轨,但第二部分遇到问题。我收到错误Unable to find a suitable output format for 'rtmp://foo.com:1935/live/xyz' rtmp://foo.com:1935/live/xyz: Invalid argument
    • 我想通了,我需要在第二部分使用-f flv 而不是-f mpegts。出于某种原因,我还需要使用-strict -2 为 aac 打开实验性编解码器。生成的流有点口吃,所以我仍然需要弄清楚。
    • 自 2016 年以来,AAC 不再需要 -strict -2。您的构建版本非常旧。
    猜你喜欢
    • 2014-10-16
    • 2012-10-02
    • 2011-10-07
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多