首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多路复用到MPEG-TS:音频流的参数错误

多路复用到MPEG-TS:音频流的参数错误
EN

Stack Overflow用户
提问于 2012-04-07 10:32:33
回答 3查看 5.1K关注 0票数 4

我正在尝试使用FMPEG.mpeg将视频(H.264)和音频(PCM_S16LE,无压缩)多路复用成MPEG传输流。视频显示正常。但是,音频流不会播放。ffprobe显示的音频流是AAC,这显然不是我的本意。所以我一定是在添加音频流的时候做错了什么。你知道我该怎么纠正这个问题吗?

这是我添加音频流的代码:

代码语言:javascript
复制
void add_audio_stream()
{

    CodecID codec_id = CODEC_ID_PCM_S16LE;

    AVStream *p_ast = av_new_stream(fc, 1);

    if (!p_ast) {
        fprintf(stderr, "Could not alloc audio stream\n");
        exit(1);
    }

    ai = p_ast->index;

    AVCodecContext *pcc = p_ast->codec;
    avcodec_get_context_defaults2( pcc, AVMEDIA_TYPE_AUDIO );

    pcc->codec_type = AVMEDIA_TYPE_AUDIO;
    pcc->codec_id = codec_id;
    pcc->sample_fmt = AV_SAMPLE_FMT_S16;
    //pcc->bit_rate = 44100*16*2;
    pcc->bit_rate = 0;
    pcc->sample_rate = 44100;
    pcc->channels = 2;
    pcc->time_base = (AVRational){1, 44100};


    // some formats want stream headers to be separate
    if (fc->oformat->flags & AVFMT_GLOBALHEADER)
    {
        printf(" **** 1 ****\n");
        pcc->flags |= CODEC_FLAG_GLOBAL_HEADER;
    }
    else
        printf(" **** 2 ****\n");


    AVCodec *codec;

    /* find the audio encoder */
    codec = avcodec_find_encoder(pcc->codec_id);
    if (!codec) {
        fprintf(stderr, "codec not found\n");
        exit(1);
    }


    /* open it */
    if (avcodec_open(pcc, codec) < 0) 
    {
        fprintf(stderr, "could not open codec\n");
        exit(1);
    }
}

下面是ffprobe的输出:

代码语言:javascript
复制
ffprobe version N-32405-g6337de9, Copyright (c) 2007-2011 the FFmpeg developers
  built on Sep  8 2011 11:20:12 with gcc 4.4.3
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab --enable-libmp3lame
  libavutil    51. 16. 0 / 51. 16. 0
  libavcodec   53. 13. 0 / 53. 13. 0
  libavformat  53. 12. 0 / 53. 12. 0
  libavdevice  53.  3. 0 / 53.  3. 0
  libavfilter   2. 39. 0 /  2. 39. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  51.  2. 0 / 51.  2. 0
[mpegts @ 0xa96daa0] Continuity Check Failed
[mpegts @ 0xa96daa0] Continuity Check Failed
[aac @ 0xa974da0] channel element 0.1 is not allocated
[aac @ 0xa974da0] More than one AAC RDB per ADTS frame is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.

.
.
lot of gobbly-gook about missing AAC parameters . . . 
.
.

[aac @ 0xa974da0] More than one AAC RDB per ADTS frame is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[aac @ 0xa974da0] Error decoding AAC frame header.
[mpegts @ 0xa96daa0] max_analyze_duration 5000000 reached at 5429789
[mpegts @ 0xa96daa0] Continuity Check Failed
[mpegts @ 0xa96daa0] Continuity Check Failed

Input #0, mpegts, from 'test_audio_video.mts':
  Duration: 00:00:40.35, start: 0.010000, bitrate: 1907 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
Stream #0.0[0x100]: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p, 640x480, 30 fps, 30 tbr, 90k tbn, 60 tbc

Stream #0.1[0x101]: Audio: aac ([6][0][0][0] / 0x0006), 96000 Hz, 4.0, s16, 9 kb/s
EN

回答 3

Stack Overflow用户

发布于 2012-04-09 17:17:13

我想我怀疑MEPG2 TS是否会允许PCM音频。它可以占用MPI、MP2或AAC。AAC更多地被视为一种默认选择,而不是身份识别。

此外,与视频不同的是,音频标头不是很有区分性。也就是说,没有起始码和东西,所以除了PES头,通常没有办法找出它是什么类型的音频。

如果可能,对音频进行编码。

尝试使用Gspot应用程序进行交叉检查。

票数 1
EN

Stack Overflow用户

发布于 2017-12-12 12:08:58

看起来像是MPEG-TS支持SMPTE 302M指定的私有数据格式的PCM音频。

目前在ffmpeg中有一个s302m编码器/解码器,可以让你轻松实现你的目标。

票数 1
EN

Stack Overflow用户

发布于 2017-01-18 21:28:44

前段时间我也玩过它。我发现:-蓝光只支持48000采样率-我总是使用大端而不是小端。

我认为ffmpeg将在mpeg2_ts上使用蓝光设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10051250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档