On 09/03/2016 08:34 PM, Gonzalo Garramuño wrote:
El 03/09/2016 a las 17:55, M J escribió:Hi while(av_read_frame(input_ctx, pkts) == 0) { //decoding int ret1 = avcodec_send_packet(input_codecCtx, pkts); int ret2 = avcodec_receive_frame(input_codecCtx, rawFrame); //encoding avcodec_send_frame(output_codecCtx, rawFrame); avcodec_receive_packet(output_codecCtx, pktr); int ret = av_interleaved_write_frame(output_ctx, pktr); } *************************************************Hi, MJ. AFAIK, the new API does not work yet. Use the deprecated functions for the time being.
It appears to work I have been decoding and encoding using the send / receive, video only. You probably need to deal with multiple conditional returns from both decode and encode. i.e avcodec_send_packet can produce multiple frames, you need to receive output in a loop not just the input file. See https://ffmpeg.org/doxygen/3.1/group__lavc__encdec.html Another possible issue may be with the setup and connecting everything. I had issue until the usage was correct for codecpar. Decode: avformat_alloc_context / avformat_open_input / avformat_find_stream_info / avcodec_find_decoder / avcodec_alloc_context3 Then avcodec_parameters_to_context avcodec_open2 Encode: avcodec_find_encoder / avformat_alloc_output_context2 / avcodec_alloc_context3 / avformat_new_stream / av_codec_get_tag2 Then // I had to manually set the output stream codec_tag / time_base / av_stream_set_r_frame_rate avcodec_parameters_from_context avcodec_open2 The parameters TO/FROM context connects most of it together. Thanks cco _______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
