0.解碼流程圖

1.命令行解碼
songlin@feng-sl ~/audio/h264_decode master ±? ffmpeg -c:v h264 -i 352x288-yuv420p.h264 352x288-yuv420pCommand.yuv
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.29)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.2_4 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, h264, from '352x288-yuv420p.h264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(progressive), 352x288, 25 fps, 25 tbr, 1200k tbn, 50 tbc
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
Press [q] to stop, [?] for help
Output #0, rawvideo, to '352x288-yuv420pCommand.yuv':
Metadata:
encoder : Lavf58.45.100
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 352x288, q=2-31, 30412 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.91.100 rawvideo
frame= 300 fps=0.0 q=-0.0 Lsize= 44550kB time=00:00:12.00 bitrate=30412.8kbits/s speed=12.3x
video:44550kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
songlin@feng-sl ~/audio/h264_decode master ±? ls -l
# -c:v h264是指定使用h264作為解碼器
-rw-r--r--@ 1 songlin staff 147325 Jun 12 11:16 352x288-yuv420p.h264
-rw-r--r-- 1 songlin staff 45619200 Jun 12 15:57 352x288-yuv420pCommand.yuv
可以看到命令行成功還算了h264 為yuv原始數(shù)據(jù),接下來看看代碼實現(xiàn)
2.程序?qū)嵺`
- ffmpeg.h
#ifndef FFMPEGS_H
#define FFMPEGS_H
extern "C"{
#include <libavutil/avutil.h>
}
typedef struct {
const char *filename;
int width;
int height;
AVPixelFormat pixFmt;
int fps;
} VideoDecodeSpec;
class FFmpegs
{
public:
FFmpegs();
static void h264Decode(const char *inFilename,
VideoDecodeSpec &out);
};
#endif // FFMPEGS_H
- ffmpegs.cpp
#include "ffmpegs.h"
#include <QDebug>
#include <QFile>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavutil/avutil.h>
#include <libavutil/imgutils.h>
}
#define ERROR_BUF(ret) \
char errbuf[1024]; \
av_strerror(ret, errbuf, sizeof (errbuf));
// 輸入緩沖區(qū)的大小
#define IN_DATA_SIZE 4096
FFmpegs::FFmpegs() {
}
static int frameIdx = 0;
static int decode(AVCodecContext *ctx,
AVPacket *pkt,
AVFrame *frame,
QFile &outFile) {
// 發(fā)送壓縮數(shù)據(jù)到解碼器
int ret = avcodec_send_packet(ctx, pkt);
if (ret < 0) {
ERROR_BUF(ret);
qDebug() << "avcodec_send_packet error" << errbuf;
return ret;
}
while (true) {
// 獲取解碼后的數(shù)據(jù)
ret = avcodec_receive_frame(ctx, frame);
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
return 0;
} else if (ret < 0) {
ERROR_BUF(ret);
qDebug() << "avcodec_receive_frame error" << errbuf;
return ret;
}
qDebug() << "解碼出第" << ++frameIdx << "幀";
// 將解碼后的數(shù)據(jù)寫入文件
// 寫入Y平面
// outFile.write((char *) frame->data[0],
// frame->linesize[0] * ctx->height);
// // 寫入U平面
// outFile.write((char *) frame->data[1],
// frame->linesize[1] * ctx->height >> 1);
// // 寫入V平面
// outFile.write((char *) frame->data[2],
// frame->linesize[2] * ctx->height >> 1);
/* outFile.write((char *) frame->data[0],
921600);
// 寫入U平面
outFile.write((char *) frame->data[1],
230400);
// 寫入V平面
outFile.write((char *) frame->data[2],
230400);
// qDebug() << frame->linesize[0] * ctx->height << (frame->linesize[1] * ctx->height >> 1) << (frame->linesize[2] * ctx->height >> 1);
// return 0;
// av_image_alloc(frame->data,frame->linesize,1280,720,AV_PIX_FMT_YUV420P,1); 連續(xù)內(nèi)存地址
// return;
/*
* frame->data[0] 0x7ffea128c000
* frame->data[1] 0x7ffea1d33000
* frame->data[2] 0x7ffea1d6d000
*
* frame->data[1] - frame->data[0] = 11169792 = y平面的大小
* frame->data[2] - frame->data[1] = 237568 = u平面的大小
*
* y平面的大小 1280*720*1 = 921600
* u平面的大小 1280*720*0.25 = 230400
* v平面的大小 1280*720*0.25 = 230400
*/
qDebug() << frame->data[0] << frame->data[1] << frame->data[2];
// // 將解碼后的數(shù)據(jù)寫入文件(1382400)
int imgSize = av_image_get_buffer_size(ctx->pix_fmt, ctx->width, ctx->height, 1);
qDebug() << "輸出一幁的大小" << imgSize;
// // outFile.write((char *) frame->data[0], frame->linesize[0]);
outFile.write((char *) frame->data[0], imgSize);
}
}
void FFmpegs::h264Decode(const char *inFilename,
VideoDecodeSpec &out) {
// 返回結果
int ret = 0;
// 用來存放讀取的輸入文件數(shù)據(jù)(h264)
// 加上AV_INPUT_BUFFER_PADDING_SIZE是為了防止某些優(yōu)化過的reader一次性讀取過多導致越界
char inDataArray[IN_DATA_SIZE + AV_INPUT_BUFFER_PADDING_SIZE];
char *inData = inDataArray;
// 每次從輸入文件中讀取的長度(h264)
// 輸入緩沖區(qū)中,剩下的等待進行解碼的有效數(shù)據(jù)長度
int inLen;
// 是否已經(jīng)讀取到了輸入文件的尾部
int inEnd = 0;
// 文件
QFile inFile(inFilename);
QFile outFile(out.filename);
// 解碼器
AVCodec *codec = nullptr;
// 上下文
AVCodecContext *ctx = nullptr;
// 解析器上下文
AVCodecParserContext *parserCtx = nullptr;
// 存放解碼前的數(shù)據(jù)(h264)
AVPacket *pkt = nullptr;
// 存放解碼后的數(shù)據(jù)(yuv)
AVFrame *frame = nullptr;
// 獲取解碼器
// codec = avcodec_find_decoder_by_name("h264");
codec = avcodec_find_decoder(AV_CODEC_ID_H264);
if (!codec) {
qDebug() << "decoder not found";
return;
}
// 初始化解析器上下文
parserCtx = av_parser_init(codec->id);
if (!parserCtx) {
qDebug() << "av_parser_init error";
return;
}
// 創(chuàng)建上下文
ctx = avcodec_alloc_context3(codec);
if (!ctx) {
qDebug() << "avcodec_alloc_context3 error";
goto end;
}
// 創(chuàng)建AVPacket
pkt = av_packet_alloc();
if (!pkt) {
qDebug() << "av_packet_alloc error";
goto end;
}
// 創(chuàng)建AVFrame
frame = av_frame_alloc();
if (!frame) {
qDebug() << "av_frame_alloc error";
goto end;
}
// 打開解碼器
ret = avcodec_open2(ctx, codec, nullptr);
if (ret < 0) {
ERROR_BUF(ret);
qDebug() << "avcodec_open2 error" << errbuf;
goto end;
}
// 打開文件
if (!inFile.open(QFile::ReadOnly)) {
qDebug() << "file open error:" << inFilename;
goto end;
}
if (!outFile.open(QFile::WriteOnly)) {
qDebug() << "file open error:" << out.filename;
goto end;
}
// 讀取文件數(shù)據(jù)
do {
inLen = inFile.read(inDataArray, IN_DATA_SIZE);
// 設置是否到了文件尾部
inEnd = !inLen;
// 讓inData指向數(shù)組的首元素
inData = inDataArray;
// 只要輸入緩沖區(qū)中還有等待進行解碼的數(shù)據(jù)
while (inLen > 0 || inEnd) {
// 到了文件尾部(雖然沒有讀取任何數(shù)據(jù),但也要調(diào)用av_parser_parse2,修復bug)
// 經(jīng)過解析器解析
ret = av_parser_parse2(parserCtx, ctx,
&pkt->data, &pkt->size,
(uint8_t *) inData, inLen,
AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
if (ret < 0) {
ERROR_BUF(ret);
qDebug() << "av_parser_parse2 error" << errbuf;
goto end;
}
// 跳過已經(jīng)解析過的數(shù)據(jù)
inData += ret;
// 減去已經(jīng)解析過的數(shù)據(jù)大小
inLen -= ret;
qDebug() << inEnd << pkt->size << ret;
// 解碼
if (pkt->size > 0 && decode(ctx, pkt, frame, outFile) < 0) {
goto end;
}
// 如果到了文件尾部
if (inEnd) break;
}
} while (!inEnd);
// while ((inLen = inFile.read(inDataArray, IN_DATA_SIZE)) > 0){
// // 讓inData指向數(shù)組的首元素
// inData = inDataArray;
// while (inLen > 0) {
// // 經(jīng)過解析器解析
// ret = av_parser_parse2(parserCtx, ctx,
// &pkt->data, &pkt->size,
// (uint8_t *) inData, inLen,
// AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
// if (ret < 0) {
// ERROR_BUF(ret);
// qDebug() << "av_parser_parse2 error" << errbuf;
// goto end;
// }
// // 跳過已經(jīng)解析過的數(shù)據(jù)
// inData += ret;
// // 減去已經(jīng)解析過的數(shù)據(jù)大小
// inLen -= ret;
// // 解碼
// if (pkt->size > 0 && decode(ctx, pkt, frame, outFile) < 0) {
// goto end;
// }
// }
// }
// 刷新緩沖區(qū)
// pkt->data = nullptr;
// pkt->size = 0;
// decode(ctx, pkt, frame, outFile);
decode(ctx, nullptr, frame, outFile);
// 賦值輸出參數(shù)
out.fps = ctx->framerate.num;
out.width = ctx->width;
out.height = ctx->height;
out.pixFmt = ctx->pix_fmt;
// 用framerate.num獲取幀率,并不是time_base.den
end:
inFile.close();
outFile.close();
av_packet_free(&pkt);
av_frame_free(&frame);
av_parser_close(parserCtx);
avcodec_free_context(&ctx);
// bug fix
// https://patchwork.ffmpeg.org/project/ffmpeg/patch/tencent_609A2E9F73AB634ED670392DD89A63400008@qq.com/
//
// while ((inLen = inFile.read(inDataArray, IN_DATA_SIZE)) > 0){
// while (inLen > 0) {
// 讓inData指向數(shù)組的首元素
// inData = inDataArray;
// // 經(jīng)過解析器解析
// ret = av_parser_parse2(parserCtx, ctx,
// &pkt->data, &pkt->size,
// (uint8_t *) inData, inLen,
// AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
// if (ret < 0) {
// ERROR_BUF(ret);
// qDebug() << "av_parser_parse2 error" << errbuf;
// goto end;
// }
// // 跳過已經(jīng)解析過的數(shù)據(jù)
// inData += ret;
// // 減去已經(jīng)解析過的數(shù)據(jù)大小
// inLen -= ret;
// // 解碼
// if (pkt->size > 0 && decode(ctx, pkt, frame, outFile) < 0) {
// goto end;
// }
// }
// }
}
- audiothread.h
#ifndef AUDIOTHREAD_H
#define AUDIOTHREAD_H
#include <QThread>
class AudioThread : public QThread
{
Q_OBJECT
public:
explicit AudioThread(QObject *parent = nullptr);
~AudioThread();
private:
void run();
signals:
};
#endif // AUDIOTHREAD_H
- audiothread.cpp
#include "audiothread.h"
#include <QDebug>
#include "ffmpegs.h"
extern "C" {
#include <libavutil/imgutils.h>
}
AudioThread::AudioThread(QObject *parent) : QThread(parent)
{
// 當監(jiān)聽到線程結束時(finished),就調(diào)用deleteLater回收內(nèi)存
connect(this, &AudioThread::finished,
this, &AudioThread::deleteLater);
}
AudioThread::~AudioThread() {
// 斷開所有的連接
disconnect();
// 內(nèi)存回收之前,正常結束線程
requestInterruption();
// 安全退出
quit();
wait();
qDebug() << this << "析構(內(nèi)存被回收)";
}
void AudioThread::run() {
VideoDecodeSpec out;
out.filename = "/Users/songlin/audio/h264_decode/352x288-yuv420p-program.yuv";
FFmpegs::h264Decode("/Users/songlin/audio/h264_decode/352x288-yuv420p.h264", out);
qDebug() << out.width << out.height
<< out.fps << av_get_pix_fmt_name(out.pixFmt);
}
- mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <audiothread.h>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_audioButton_clicked();
private:
Ui::MainWindow *ui;
AudioThread *_audioThread = nullptr;
};
#endif // MAINWINDOW_H
- mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_audioButton_clicked()
{
_audioThread = new AudioThread(this);
_audioThread->start();
}
2.1 查看實踐結果
程序生成文件小于命令行生成文件的問題
解碼出第 1 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 2 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 3 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 4 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 5 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 6 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 7 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 8 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 9 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 10 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 11 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 12 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 13 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 14 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 15 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 16 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 17 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 18 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 19 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 20 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 21 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 22 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 23 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 24 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 25 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 26 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 27 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 28 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 29 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 30 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 31 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 32 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 33 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 34 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 35 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 36 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 37 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 38 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 39 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 40 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 41 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 42 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 43 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 44 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 45 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 46 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 47 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 48 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 49 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 50 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 51 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 52 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 53 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 54 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 55 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 56 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 57 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 58 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 59 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 60 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 61 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 62 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 63 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 64 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 65 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 66 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 67 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 68 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 69 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 70 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 71 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 72 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 73 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 74 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 75 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 76 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 77 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 78 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 79 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 80 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 81 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 82 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 83 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 84 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 85 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 86 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 87 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 88 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 89 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 90 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 91 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 92 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 93 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 94 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 95 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 96 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 97 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 98 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 99 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 100 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 101 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 102 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 103 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 104 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 105 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 106 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 107 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 108 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 109 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 110 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 111 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 112 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 113 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 114 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 115 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 116 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 117 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 118 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 119 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 120 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 121 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 122 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 123 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 124 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 125 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 126 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 127 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 128 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 129 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 130 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 131 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 132 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 133 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 134 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 135 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 136 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 137 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 138 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 139 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 140 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 141 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 142 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 143 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 144 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 145 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 146 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 147 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 148 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 149 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 150 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 151 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 152 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 153 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 154 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 155 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 156 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 157 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 158 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 159 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 160 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 161 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 162 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 163 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 164 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 165 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 166 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 167 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 168 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 169 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 170 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 171 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 172 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 173 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 174 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 175 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 176 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 177 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 178 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 179 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 180 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 181 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 182 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 183 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 184 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 185 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 186 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 187 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 188 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 189 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 190 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 191 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 192 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 193 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 194 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 195 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 196 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 197 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 198 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 199 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 200 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 201 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 202 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 203 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 204 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 205 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 206 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 207 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 208 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 209 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 210 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 211 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 212 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 213 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 214 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 215 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 216 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 217 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 218 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 219 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 220 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 221 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 222 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 223 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 224 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 225 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 226 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 227 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 228 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 229 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 230 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 231 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 232 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 233 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 234 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 235 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 236 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 237 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 238 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 239 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 240 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 241 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 242 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 243 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 244 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 245 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 246 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 247 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 248 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 249 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 250 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 251 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 252 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 253 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 254 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 255 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 256 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 257 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 258 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 259 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 260 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 261 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 262 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 263 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 264 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 265 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 266 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 267 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 268 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 269 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 270 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 271 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 272 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 273 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 274 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 275 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 276 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 277 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 278 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 279 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 280 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 281 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 282 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 283 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 284 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 285 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 286 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 287 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 288 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 289 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 290 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 291 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 292 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
解碼出第 293 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 294 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 295 幀
一幁的大小是 152064
0x7fa4888b8000 0x7fa48714e600 0x7fa487155400
解碼出第 296 幀
一幁的大小是 152064
0x7fa48ccd3000 0x7fa4878ad600 0x7fa4878b4400
解碼出第 297 幀
一幁的大小是 152064
0x7fa488898000 0x7fa48712c800 0x7fa487133600
解碼出第 298 幀
一幁的大小是 152064
0x7fa488858000 0x7fa487183600 0x7fa48718a400
解碼出第 299 幀
一幁的大小是 152064
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
輸出格式 352 288 25 yuv420p
AudioThread(0x7fa488b05f90) 析構(內(nèi)存被回收)
我們來驗證一下這些參數(shù)是否正確,首先查看一幁的數(shù)據(jù)是多大
- 驗證1 整數(shù)據(jù)大小是否和輸出一致
352 * 288 * 1.5 = 152064
這個大小和輸出的一致,說明計算的一幁大小是沒有問題的
- 驗證2 程序運行和終端運行產(chǎn)出文件是否一致
-rw-r--r-- 1 songlin staff 43144704 Jun 12 16:43 352x288-yuv420p-program.yuv
-rw-r--r--@ 1 songlin staff 147325 Jun 12 11:16 352x288-yuv420p.h264
-rw-r--r-- 1 songlin staff 45619200 Jun 12 15:57 352x288-yuv420pCommand.yuv
可以看命令行生成的文件要比程序代碼生成的要大45619200 - 43144704 = 2474496 字節(jié)
另外計算寫入總的大小=幁數(shù) 152064 * 299 = 45467136,這三個大小感覺相差不大,但是為什么會有差值呢?猜測會不會是沒有將一幁的數(shù)據(jù)大小完全寫進去,或者沒有寫完全部幁數(shù)呢,這些和指向YUV的內(nèi)存地址是否連續(xù)有很大的相關性,所以我們對上述的內(nèi)存地址做一次計算,取299幁的來計算
0x7fa488878000 0x7fa487168e00 0x7fa48716fc00
* frame->data[0] 0x8878000
* frame->data[1] 0x87168e00
* frame->data[2] 0x8716fc00
看到這里我分析不下去了,因為不知道為什么frame->data[1] 比frame->data[0] 小,又比frame->data[2]小,按道理來講數(shù)組的內(nèi)存應該是連續(xù)且變大的,但是這里明顯不是?
經(jīng)過一天的摸索,發(fā)現(xiàn)可能是原視頻本身存在問題導致的,所以決定用一個mp4的視頻,進行轉碼變成原始yuv來測試
mp4------>yuv yuv------>h264 h 264------->yuv 測試
- mp4 轉yuv
ffmpeg -ss 00:00 -i in.mp4 -t 10 -c:v copy -c:a copy 10s.mp4
ffmpeg -c:v h264 -i 10.mp4 mp4.yuv
- yuv 轉h264
ffmpeg -s 1280x720 -pix_fmt yuv420p -i mp4.yuv -c:v libx264 mp4.h264
- h264 轉yuv
- 命令行 ffmpeg -c:v h264 -i mp4.h264 mp4Command.yuv
- 程序
解碼出第 1 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 2 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 3 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 4 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 5 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 6 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 7 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 8 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 9 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 10 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 11 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 12 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 13 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 14 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 15 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 16 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 17 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 18 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 19 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 20 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 21 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 22 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 23 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 24 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 25 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 26 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 27 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 28 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 29 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 30 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 31 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 32 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 33 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 34 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 35 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 36 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 37 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 38 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 39 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 40 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 41 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 42 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 43 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 44 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 45 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 46 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 47 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 48 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 49 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 50 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 51 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 52 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 53 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 54 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 55 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 56 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 57 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 58 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 59 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 60 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 61 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 62 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 63 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 64 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 65 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 66 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 67 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 68 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 69 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 70 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 71 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 72 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 73 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 74 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 75 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 76 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 77 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 78 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 79 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 80 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 81 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 82 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 83 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 84 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 85 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 86 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 87 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 88 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 89 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 90 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 91 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 92 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 93 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 94 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 95 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 96 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 97 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 98 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 99 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 100 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 101 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 102 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 103 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 104 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 105 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 106 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 107 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 108 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 109 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 110 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 111 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 112 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 113 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 114 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 115 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 116 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 117 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 118 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 119 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 120 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 121 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 122 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 123 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 124 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 125 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 126 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 127 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 128 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 129 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 130 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 131 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 132 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 133 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 134 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 135 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 136 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 137 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 138 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 139 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 140 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 141 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 142 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 143 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 144 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 145 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 146 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 147 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 148 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 149 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 150 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 151 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 152 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 153 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 154 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 155 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 156 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 157 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 158 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 159 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 160 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 161 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 162 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 163 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 164 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 165 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 166 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 167 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 168 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 169 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 170 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 171 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 172 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 173 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 174 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 175 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 176 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 177 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 178 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 179 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 180 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 181 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 182 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 183 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 184 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 185 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 186 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 187 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 188 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 189 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 190 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 191 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 192 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 193 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 194 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 195 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 196 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 197 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 198 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 199 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 200 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 201 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 202 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 203 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 204 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 205 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 206 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 207 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 208 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 209 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 210 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 211 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 212 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 213 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 214 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 215 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 216 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 217 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 218 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 219 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 220 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 221 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 222 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 223 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 224 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 225 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 226 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 227 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 228 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 229 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 230 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 231 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 232 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 233 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 234 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 235 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 236 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 237 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 238 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 239 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 240 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 241 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 242 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 243 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 244 幀
0x7ffea1fe5000 0x7ffea20cc000 0x7ffea2106000
輸出一幁的大小 1382400
解碼出第 245 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
解碼出第 246 幀
0x7ffea15a4000 0x7ffea1e19000 0x7ffea1e53000
輸出一幁的大小 1382400
解碼出第 247 幀
0x7ffea1100000 0x7ffea1c2c000 0x7ffea1c66000
輸出一幁的大小 1382400
解碼出第 248 幀
0x7ffea1418000 0x7ffea1eff000 0x7ffea1f39000
輸出一幁的大小 1382400
解碼出第 249 幀
0x7ffea128c000 0x7ffea1d33000 0x7ffea1d6d000
輸出一幁的大小 1382400
輸出格式 1280 720 25 yuv420p
AudioThread(0x7ffe9bce2950) 析構(內(nèi)存被回收)
大小對比
-rw-r--r-- 1 songlin staff 345600000 Jun 14 08:58 mp4Command.yuv -- 命令行
-rw-r--r-- 1 songlin staff 344317200 Jun 14 08:46 lessmp4-program.yuv -- 程序
可以明顯發(fā)現(xiàn)程序跑出來的比命令行的要小,這個時候接著上面的分析,取出frame->data[0],frame->data[1],frame->data[2] 的地址(用最后一幁來說明)
一幁的大小: 1280 * 720 * 1.5 = 1382400,和程序運行的是一樣的
frame->data[0]:0x7ffea128c000
frame->data[1]:0x7ffea1d33000
frame->data[2]:0x7ffea1d6d000
如何檢查這個內(nèi)存是否連續(xù)呢?
frame->data[1] - frame->data[0] = 11169792 = y平面的大小
frame->data[2] - frame->data[1] = 237568 = u平面的大小
y平面的大小 1280*720*1 = 921600(計算方式和存儲方式有關)
u平面的大小 1280*720*0.25 = 230400(計算方式和存儲方式有關)
v平面的大小 1280*720*0.25 = 230400(計算方式和存儲方式有關)
出現(xiàn)這種YUV內(nèi)存不連續(xù)的情況,如果按照這樣去寫進文件中,肯定是有問題的,因為有可能我讀到一幁的數(shù)據(jù)是1382400,寫進去的Y數(shù)據(jù)有可能只是921600,這樣就會導致寫進去的數(shù)據(jù)偏小,針對這種情況,我們可以使用直接將Y U V 數(shù)據(jù)大小寫進去測試看看
outFile.write((char *) frame->data[0],
921600);
// 寫入U平面
outFile.write((char *) frame->data[1],
230400);
// 寫入V平面
outFile.write((char *) frame->data[2],
230400);
測試結果:
-rw-r--r-- 1 songlin staff 345600000 Jun 14 08:58 mp4Command.yuv
-rw-r--r-- 1 songlin staff 344217600 Jun 14 09:37 test-program.yuv
發(fā)現(xiàn)這樣寫進去的,兩者之間的數(shù)據(jù)更接近了,相減得出1382400 字節(jié),剛剛是差了一幁字節(jié),這一幁字節(jié)是在哪里缺少的呢?緩沖區(qū)又已經(jīng)刷新了,那么只能是里面的while循環(huán)導致的,在網(wǎng)上也能找到的確是會出現(xiàn)這個問題,并且已經(jīng)修復(ffmpeg源碼也是我們代碼這樣寫,有可能在以后的版本中修復了,但是沒有在源碼中更新)https://patchwork.ffmpeg.org/project/ffmpeg/patch/tencent_609A2E9F73AB634ED670392DD89A63400008@qq.com/
按照這個方法,我們將寫入數(shù)據(jù)的循環(huán)更改為:
do {
inLen = inFile.read(inDataArray, IN_DATA_SIZE);
// 設置是否到了文件尾部
inEnd = !inLen;
// 讓inData指向數(shù)組的首元素
inData = inDataArray;
// 只要輸入緩沖區(qū)中還有等待進行解碼的數(shù)據(jù)
while (inLen > 0 || inEnd) {
// 到了文件尾部(雖然沒有讀取任何數(shù)據(jù),但也要調(diào)用av_parser_parse2,修復bug)
// 經(jīng)過解析器解析
ret = av_parser_parse2(parserCtx, ctx,
&pkt->data, &pkt->size,
(uint8_t *) inData, inLen,
AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
if (ret < 0) {
ERROR_BUF(ret);
qDebug() << "av_parser_parse2 error" << errbuf;
goto end;
}
// 跳過已經(jīng)解析過的數(shù)據(jù)
inData += ret;
// 減去已經(jīng)解析過的數(shù)據(jù)大小
inLen -= ret;
qDebug() << inEnd << pkt->size << ret;
// 解碼
if (pkt->size > 0 && decode(ctx, pkt, frame, outFile) < 0) {
goto end;
}
// 如果到了文件尾部
if (inEnd) break;
}
} while (!inEnd);
結果對比:
-rw-r--r-- 1 songlin staff 345600000 Jun 14 08:58 mp4Command.yuv
-rw-r--r-- 1 songlin staff 344217600 Jun 14 09:37 test-program.yuv
-rw-r--r-- 1 songlin staff 345600000 Jun 14 09:46 after-program.yuv --- 更改之后
可以發(fā)現(xiàn)數(shù)據(jù)已經(jīng)正確了,好了,h264的解碼到此結束