ffmepg corrupt input packet in stream 0 [mpegts @ 0x555c70e7ddc0] AAC packet too short av_interleaved_write_frame(): Invalid data found when processing input
时间: 2024-04-01 08:38:00 浏览: 21
这个错误消息通常表示您正在使用的FFmpeg版本不能处理输入文件中的数据。这可能是由于输入文件本身有问题,比如文件格式不正确,或者是由于您使用的FFmpeg版本太旧。您可以尝试更新FFmpeg版本,或使用其他工具来打开文件。如果问题仍然存在,您可能需要检查文件本身是否有问题,并尝试重新编码它。如果您有更具体的问题,请告诉我,我会尽力帮助您解决它。
相关问题
av_interleaved_write_frame mpegts
av_interleaved_write_frame mpegts通常是由于FFmpeg在尝试写入MPEG-TS(传输流)封装格式的视频帧时出现了问题。这可能是由于输入视频文件格式不正确、视频帧数据损坏或编码器设置不正确等原因引起的。为了解决这个问题,你可以尝试使用不同的输入文件、检查视频帧数据是否损坏或调整编码器设置。此外,你还可以尝试调整输出文件的MPEG-TS参数,例如设置传输速率、分片大小等。如果问题仍然存在,你可能需要寻求更高级的解决方案,例如使用其他库或调试代码。
av_interleaved_write_frame aac如何流转AVPacket?
在使用FFmpeg库中的av_interleaved_write_frame函数进行aac音频编码时,需要先将编码得到的音频数据存储到AVPacket结构体中,然后再通过av_interleaved_write_frame函数将其写入到输出文件中。
具体的流程为:
1. 调用av_packet_alloc函数创建AVPacket结构体对象,用于存储编码后的音频数据。
2. 设置AVPacket结构体中的各项参数,如data、size、stream_index等。
3. 调用av_interleaved_write_frame函数将AVPacket结构体中的数据写入到输出文件中。
具体的代码示例如下:
```
// 创建AVPacket对象
AVPacket *pkt = av_packet_alloc();
if (!pkt) {
// 分配AVPacket对象失败
return -1;
}
// 将编码后的音频数据存储到AVPacket对象中
pkt->data = encoded_data;
pkt->size = encoded_size;
pkt->stream_index = audio_stream_index;
// 将AVPacket对象写入到输出文件中
int ret = av_interleaved_write_frame(output_format_context, pkt);
if (ret < 0) {
// 写入失败
return -1;
}
// 释放AVPacket对象
av_packet_unref(pkt);
```
其中,encoded_data和encoded_size为编码后的音频数据和数据大小,audio_stream_index为音频流的索引,output_format_context为输出文件的AVFormatContext结构体对象。