ffmpeg开发中出现的问题(三)

不足请指正.... 请勿转载,因为结论还不成熟

1. provide packet is too small

原因:编码的时候, packet没有释放就使用

解决:

av_free_packet();

av_init_packet();

avcodec_encode_vidoe2();

这里如果把av_free_packet()写在后面都不行,真是怪了


2. sws_scale();提示错误

原因:

sws_scale中的frame都要分配空间和大小和格式,这样才可以成功,如果用指针,那么指针指向的地方是否有上述三点要求


3. avcode_decode_video234();或者avcodec_dencode_video2()错误

原因:

很大可能是packet和frame没有对应好,没有分配空间或者分配空间不对,或者格式


4 . 这个是看源代码发现的,不过一般是初学的

Unable to find a suitable output format for:

原因:

因为没有调用av_register_all();

如果有网络,就要调用另一个register

注意是否没有调用其它的初始化函数


5.

avcodec_encode_audio(audioStream->codec,audioBuffer,AUDIO_BUFFER_SIZE, frame.data.bytes);并没有输入参数来说明原始帧的长度,意味着ffmpeg在编码音频时默认音频原始帧长度是固定的,这个值由

audioStream->codec->frame_size来指定。

传入buffer区数据大小则由

audioStream->codec->frame_size * bytes per channel *channels来决定

ffmpeg音频编码时需要够一帧长度才会编码


6. 我这有个很简单原则:

ffmpeg如果出现警告,那一定要解决,否则到最后,就不知道错误来自何方.

警告累积多了,就会产生错误, 所以,警告一定要重视


7. ffmpeg 音频转码中,不能直接解码后马上编码,否则数据会出错。声音很杂,里面有主要声音

原因:两者的frame相关数据是不一样的,不能马上解码,只是data数据域相同,最重要的格式不一样

现象:1.打不开codec,原因是aac的需要s16.而不能乱设置。

            2. 声音无法写进去

            3. 噪声太大

解决: 重新分配一个frame ,把数据赋值过来


你可能感兴趣的:(感悟,代码,ffmpeg,ffmpeg开发中出现的问题)