Программы на C++. Форум разработчиков
Anonymous
Avformat_write_header возвращает код ошибки при попытке записи видео с помощью аудиофайла avi G711U
Сообщение
Anonymous » 10 дек 2024, 03:02
Я пытаюсь создать 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
1733788964
Anonymous
Я пытаюсь создать avi-файл из видео/аудиопотока. Когда звук в формате AAC, он работает нормально. Но я не могу упаковать звук G711U. [code] 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; } [/code] Здесь avformat_write_header() возвращает -22. Что здесь не так? Какие данные я должен предоставить этой функции? Подробнее здесь: [url]https://stackoverflow.com/questions/79203602/avformat-write-header-return-error-code-when-trying-to-write-video-with-g711u-au[/url]
0 Ответы
26 Просмотры
Последнее сообщение Anonymous
19 окт 2024, 07:14
Как обрабатывать упакованный битовый поток AVI XVID в Mediacodec
Anonymous »
03 авг 2024, 15:31 » в форуме
Android
Я работаю над решением проблемы VLC Android
В VLC Android (включено аппаратное ускорение) и в собственном видеоплеере Android воспроизведение видео с битовым потоком, упакованным в xvid, происходит прерывисто. В VLC, когда ускорение выключено, видео...
0 Ответы
18 Просмотры
Последнее сообщение Anonymous
03 авг 2024, 15:31
Python, как превратить видеофайл (Mpeg/avi и т. д.) в exe?
Anonymous »
06 окт 2024, 18:31 » в форуме
Python
Во-первых, я действительно не знаю правильного направления, где искать и что искать.
Перехожу к сути проблем. >
Как мне преобразовать видеофайл в формат exe?
Мне очень нужна ваша помощь, ребята, это новинка мне.
У меня есть этот видеофайл,...
0 Ответы
9 Просмотры
Последнее сообщение Anonymous
06 окт 2024, 18:31
Python, как превратить видеофайл (Mpeg/avi и т. д.) в exe?
Anonymous »
06 окт 2024, 18:31 » в форуме
C++
Во-первых, я действительно не знаю правильного направления, где искать и что искать.
Перехожу к сути проблем. >
Как мне преобразовать видеофайл в формат exe?
Мне очень нужна ваша помощь, ребята, это новинка мне.
У меня есть этот видеофайл,...
0 Ответы
10 Просмотры
Последнее сообщение Anonymous
06 окт 2024, 18:31
0 Ответы
4 Просмотры
Последнее сообщение Anonymous
12 авг 2025, 10:06