Avformat_write_header возвращает код ошибки при попытке записи видео с помощью аудиофайла avi G711UC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Avformat_write_header возвращает код ошибки при попытке записи видео с помощью аудиофайла avi G711U

Сообщение Anonymous »

Я пытаюсь создать avi-файл из видео/аудиопотока. Когда звук в формате AAC, он работает нормально. Но я не могу упаковать звук G711U.

Код: Выделить всё

  av_register_all();
avcodec_register_all();
av_log_set_callback(nullptr);

av_format_context_ = avformat_alloc_context();
if (!av_format_context_)
{
std::string error_msg = "Failed to allocate avformat context";
log_->Error(error_msg);
throw std::runtime_error(error_msg.c_str());
}

av_format_context_->oformat = av_guess_format("mp4", filename.c_str(), NULL);
strcpy(av_format_context_->filename, filename.c_str());

AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_PCM_MULAW);
av_format_context_->oformat->audio_codec = codec->id;

audio_stream_ = avformat_new_stream(av_format_context_, codec);
if (audio_stream_ == nullptr)
{
log_->Error("Can not create audiostream.");
return false;
}

AVCodecContext& codec_context = *audio_stream_->codec;
if (avcodec_copy_context(audio_stream_->codec, av_format_context_->streams[1]->codec) != 0)
{
log_->Error("Failed to Copy Context");
return false;
}

audio_stream_->time_base = { 1, codec_context.sample_rate };

if (av_format_context_->oformat->flags & AVFMT_GLOBALHEADER)
codec_context.flags |= AV_CODEC_FLAG_GLOBAL_HEADER;

log_->Info("Init output {}", filename);
av_dump_format(av_format_context_, 0, filename.c_str(), 1);

int ret = avio_open(&av_format_context_->pb, filename.c_str(), AVIO_FLAG_WRITE);
if (ret < 0)
{
log_->Error("Can not open file for writing.");
return false;
}

ret = avformat_write_header(av_format_context_, NULL);
if (ret < 0)
{
log_->Error("Can not write header.");
return false;
}

Здесь avformat_write_header() возвращает -22. Что здесь не так? Какие данные я должен предоставить этой функции?

Подробнее здесь: https://stackoverflow.com/questions/792 ... h-g711u-au
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как добавить переменную в контроллер header.php и использовать ее в header.tpl
    Anonymous » » в форуме Php
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как обрабатывать упакованный битовый поток AVI XVID в Mediacodec
    Anonymous » » в форуме Android
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Python, как превратить видеофайл (Mpeg/avi и т. д.) в exe?
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Python, как превратить видеофайл (Mpeg/avi и т. д.) в exe?
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как игнорировать «сломанный или отсутствующий индекс AVI» в VLC через параметр?
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»