Tôi mới sử dụng FFmpeg để giải mã các gói H264 có thể lấy được dưới dạng mảng uint8_t.sử dụng FFmpeg, cách giải mã gói H264
Sau nhiều cuộc điều tra, tôi nghĩ rằng nó sẽ có thể chỉ cần đặt mảng thành một AVPacket như dưới đây
AVPacket *avpkt = (AVPacket *)malloc(sizeof(AVPacket) * 1);
av_init_packet(avpkt);
avpkt->data = ct; // ct is the array
avpkt->length =....
và giải mã bởi avcodec_decode_video2(). Một phần của mã này là như
...
codec = avcodec_find_decoder(CODEC_ID_H264);
gVideoCodecCtx = avcodec_alloc_context();
gFrame = avcodec_alloc_frame();
avcodec_decode_video2(gVideoCodecCtx, gFrame, &frameFinished, packet);
...
Tôi đoán tôi đặt tất cả các thuộc tính cần thiết đúng nhưng chức năng này chỉ có -1 :(
Tôi chỉ tìm thấy -1 đang trở lại đến từ
ret = avctx-> codec-> decode (avctx, hình ảnh, got_picture_ptr, avpkt);
trong avcodec_decode_video2();
trên thực tế, những gì tôi đang tự hỏi là nếu tôi có thể giải mã H 264 gói (không có tiêu đề RTP) bởi avcodec_decode_video2().
Cảm ơn bạn đã trợ giúp trước.
/////////// thêm
OK, tôi vẫn đang cố gắng để tìm một giải pháp. Những gì tôi đang làm bây giờ là dưới
** dòng H264 trong dòng RTP này được mã hóa bởi FU-A
nhận được một gói tin RTP
nhìn nếu byte thứ hai của tiêu đề RTP là> 0 có nghĩa là đó là gói đầu tiên (và có thể sẽ được theo sau)
xem gói RTP tiếp theo có> 0 tại byte thứ hai của nó hay không, sau đó có nghĩa là khung trước đó là NAL hoàn chỉnh hoặc nếu đây là < 0, gói nên được nối vào gói trước đó.
xóa tất cả tiêu đề RTP của các gói để nó chỉ giống như chỉ báo FU | Tiêu đề FU | NAL
thử chơi nó với avcodec_decode_video2()
nhưng nó chỉ trở về -1 ..... Tôi phải loại bỏ chỉ số FU và tiêu đề quá ??
mọi đề xuất sẽ được đánh giá rất cao
cảm ơn trước.
Cảm ơn Vibgyor, trên thực tế người gửi là mã nguồn mở spydroid và tiêu đề RTP của nó không giống chứa nhiều điều .. nó được làm từ loại tải trọng, số thứ tự, dấu thời gian, Mã định danh nguồn đồng bộ .. bất kỳ định nghĩa nào trong số đó có nghĩa là thông tin luồng video? Tôi không nghĩ vậy .. Tôi vẫn đang nghiên cứu và sẽ cập nhật tiến trình của mình. – Jun