欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

利用ffmpeg來進行視頻解碼的完整示例代碼(H.26

系統 1776 0
  1. Decode()?
  2. {?
  3. FILE ?*?inpf;?
  4. ?
  5. int ?nWrite;?
  6. int ?i,p;?
  7. int ?nalLen;?
  8. unsigned? char *?Buf;?
  9. int ?got_picture,?consumed_bytes;?
  10. unsigned? char ?*DisplayBuf;?
  11. DisplayBuf=(unsigned? char ?*)malloc(60000);?
  12. ?
  13. char ?outfile[]?=? "test.pgm" ;?
  14. ?
  15. //1.打開輸入文件 ?
  16. inpf?=?fopen( "test.264" ,? "rb" );?
  17. ?
  18. //outf?=?fopen("out.yuv",?"wb"); ?
  19. ?
  20. if (!inpf)?
  21. {?
  22. goto ?Decodereturn;?
  23. }?
  24. ?
  25. nalLen?=?0;?
  26. Buf?=?(unsigned? char *)calloc?(?1000000,? sizeof ( char ));? //準備解碼文件緩沖 ?
  27. ?
  28. //2.注冊解碼器,并且找到H264解碼器 ?
  29. avcodec_init();?
  30. avcodec_register_all();?
  31. codec?=?avcodec_find_decoder(CODEC_ID_H264);?
  32. ?
  33. if ?(!codec)?{?
  34. return ?0;?
  35. }?
  36. //allocate?codec?context ?
  37. //分配解碼器內存 ?
  38. c?=?avcodec_alloc_context();?
  39. ?
  40. if (!c){?
  41. return ?0;?
  42. }?
  43. //open?codec ?
  44. //3.打開解碼器 ?
  45. if ?(avcodec_open(c,?codec)?<?0)?{?
  46. return ?0;?
  47. }?
  48. ?
  49. //allocate?frame?buffer ?
  50. //分配解碼器用的幀緩沖 ?
  51. picture?=?avcodec_alloc_frame();?
  52. if (!picture){?
  53. return ?0;?
  54. }?
  55. ?
  56. rgbdatanew?=?(unsigned? char ?*)malloc( sizeof (unsigned? char )*(3?*?width?*?height));?
  57. ?
  58. while (!feof(inpf))?
  59. {?
  60. ?
  61. //4.獲取下一個NAL的長度,并且將NAL放入Buf ?
  62. nalLen?=?getNextNal(inpf,?Buf);?
  63. ?
  64. //5.對改NAL解碼,解碼的YUV數據存在picture中 ?
  65. consumed_bytes=?avcodec_decode_video(c,?picture,?&got_picture,?Buf,?nalLen);?
  66. ?
  67. if (consumed_bytes?>?0)?
  68. {?
  69. ?
  70. //6.將picture中的YUV數據顯示或者保存到文件 ?
  71. p=0;?
  72. for (i=0;?i<c->height;?i++)?
  73. {?
  74. memcpy(DisplayBuf+p,picture->data[0]?+?i?*?picture->linesize[0],?c->width);?
  75. p+=c->width;?
  76. }?
  77. for (i=0;?i<c->height/2;?i++)?
  78. {?
  79. memcpy(DisplayBuf+p,picture->data[1]?+?i?*?picture->linesize[1],?c->width/2);?
  80. p+=c->width/2;?
  81. }?
  82. for (i=0;?i<c->height/2;?i++)?
  83. {?
  84. memcpy(DisplayBuf+p,picture->data[2]?+?i?*?picture->linesize[2],?c->width/2);?
  85. p+=c->width/2;?
  86. }?
  87. //顯示畫面 ?
  88. DisplayVideo(DisplayBuf);?
  89. }?
  90. }?
  91. ?
  92. //7.關閉輸入文件 ?
  93. if (inpf)?
  94. fclose(inpf);?
  95. ?
  96. Decodereturn:?
  97. ?
  98. //8.關閉解碼器,釋放解碼器內存 ?
  99. if (c)?{?
  100. avcodec_close(c);?
  101. av_free(c);?
  102. c?=?NULL;?
  103. }?
  104. //9.釋放解碼畫面內存 ?
  105. if (picture)?{?
  106. av_free(picture);?
  107. picture?=?NULL;?
  108. }?
  109. ?
  110. //10.釋放解碼文件緩沖 ?
  111. if (Buf)?
  112. {?
  113. free(Buf);?
  114. Buf?=?NULL;?
  115. }?
  116. ?
  117. free(DisplayBuf);?
  118. }?

利用ffmpeg來進行視頻解碼的完整示例代碼(H.264)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天干天天操天天射 | 成人三区 | 好看的一级毛片 | 97精品超碰一区二区三区 | 欧美成人精品一区二区男人看 | A片扒开双腿猛进入免费 | 国产精品亚洲精品青青青 | 亚洲午夜成激人情在线影院 | 色综合伊人色综合网亚洲欧洲 | 国产美女黄色片 | 91好色视频 | 精品欧美一区二区在线看片 | 日韩中文字幕免费版 | 操舔| 国产在线看片 | 黄片毛片在线观看 | 成人a视频在线观看 | 久久99精品热在线观看15 | 免费高清精品国偷自产在线 | 免费v片 | japanesemature乱子在线 | 天堂资源 | 亚洲伊人网站 | 全日本爽视频在线 | 国产精品冒白浆免费视频 | 91无限资源 | 黄色在线播 | 久久99精品久久久97夜夜嗨 | 精品欧美一区二区vr在线观看 | 99久久精品久久久久久清纯 | 日韩免费精品一级毛片 | chengrenzaixian| 国产精品视频网 | 久久精品视频7 | 精品免费 | 明明电影高清在线观看 | 午夜视频一区 | 高清一区二区亚洲欧美日韩 | 亚洲欧美一区二区三区久本道 | 精品一区二区三区免费 | 不卡中文字幕在线 |