ffmpeg 获取和设置视频旋转角度

  • Post author:
  • Post category:其他


转自 : http://download.csdn.net/detail/hcstar/5244510



  1. AVDictionaryEntry *tag = NULL;


  2. tag = av_dict_get(m_pVideoStream->metadata,

    “rotate”


    , tag, 0);



  3. if


    (tag == NULL)


  4. {

  5. m_Rotate = MT_VIDEO_ROTATE_0;

  6. }


  7. else




  8. {


  9. int


    angle = atoi(tag->value);


  10. angle %= 360;


  11. if


    (angle == 90)


  12. {

  13. m_Rotate = MT_VIDEO_ROTATE_90;

  14. }


  15. else




    if


    (angle == 180)


  16. {

  17. m_Rotate = MT_VIDEO_ROTATE_180;

  18. }


  19. else




    if


    (angle == 270)


  20. {

  21. m_Rotate = MT_VIDEO_ROTATE_270;

  22. }


  23. else




  24. {

  25. m_Rotate = MT_VIDEO_ROTATE_0;

  26. }

  27. }




设置旋转角度



  1. ret = av_dict_set(&m_pDstVideoStream->metadata,


    “rotate”


    ,


    “90”


    ,0);


open之前设置






  1. //





  2. class


    CStudent


  3. {


  4. public


    :


  5. CStudent(

    const




    char


    * pInputName,


    int


    id)


  6. {


  7. int


    nLen = strlen(pInputName);


  8. m_pName =

    new




    char


    [nLen + 1];


  9. strcpy(m_pName,pInputName);

  10. m_ID = id;

  11. }

  12. ~CStudent()

  13. {


  14. delete


    [] m_pName;


  15. }


  16. void


    SetID(


    int


    id)


  17. {

  18. m_ID = id;

  19. }


  20. int


    GetID()


  21. {


  22. return


    m_ID;


  23. }


  24. private


    :



  25. char


    * m_pName;



  26. int


    m_ID;


  27. };



  28. int


    main()


  29. {

  30. CStudent A(

    “Joy”


    ,10001);


  31. CStudent B(

    “Lily”


    ,10002);




  32. //Swap ID




  33. CStudent nTempC = A;

  34. A.SetID(B.GetID());

  35. B.SetID(nTempC.GetID());



  36. return


    0;


  37. }



  1. AVDictionaryEntry *tag = NULL;


  2. tag = av_dict_get(m_pVideoStream->metadata,

    “rotate”


    , tag, 0);



  3. if


    (tag == NULL)


  4. {

  5. m_Rotate = MT_VIDEO_ROTATE_0;

  6. }


  7. else




  8. {


  9. int


    angle = atoi(tag->value);


  10. angle %= 360;


  11. if


    (angle == 90)


  12. {

  13. m_Rotate = MT_VIDEO_ROTATE_90;

  14. }


  15. else




    if


    (angle == 180)


  16. {

  17. m_Rotate = MT_VIDEO_ROTATE_180;

  18. }


  19. else




    if


    (angle == 270)


  20. {

  21. m_Rotate = MT_VIDEO_ROTATE_270;

  22. }


  23. else




  24. {

  25. m_Rotate = MT_VIDEO_ROTATE_0;

  26. }

  27. }




设置旋转角度



  1. ret = av_dict_set(&m_pDstVideoStream->metadata,


    “rotate”


    ,


    “90”


    ,0);


open之前设置






  1. //





  2. class


    CStudent


  3. {


  4. public


    :


  5. CStudent(

    const




    char


    * pInputName,


    int


    id)


  6. {


  7. int


    nLen = strlen(pInputName);


  8. m_pName =

    new




    char


    [nLen + 1];


  9. strcpy(m_pName,pInputName);

  10. m_ID = id;

  11. }

  12. ~CStudent()

  13. {


  14. delete


    [] m_pName;


  15. }


  16. void


    SetID(


    int


    id)


  17. {

  18. m_ID = id;

  19. }


  20. int


    GetID()


  21. {


  22. return


    m_ID;


  23. }


  24. private


    :



  25. char


    * m_pName;



  26. int


    m_ID;


  27. };



  28. int


    main()


  29. {

  30. CStudent A(

    “Joy”


    ,10001);


  31. CStudent B(

    “Lily”


    ,10002);




  32. //Swap ID




  33. CStudent nTempC = A;

  34. A.SetID(B.GetID());

  35. B.SetID(nTempC.GetID());



  36. return


    0;


  37. }