1、准备h264视频流。(这之前可能是yuv转成的视频流。)

2、准备aac音频流。

3、开始muxer成mp4。

一、如果初始视频是ios或者安卓手机拍摄的竖拍视频,那么这个视频是有90,180,270这样的旋转角度的。

比如本来宽高比是720*1080,但是安卓和iphone手机拍出的视频的宽高却是1080*720,但是在metadata里标记了rotate=90。

当你从原始的倒立视频中折腾出yuv,它确是倒立的。

二、yuv转为h264视频流。

三、合并h264和aac进入mp4容器。在这个地方,就需要把rotate的90度写入视频。因为是新手,不是很熟悉ffmpeg,所以弄了有几天。网上没有这部分答案。

其实是写在差不多类似下面的代码:

for (i = 0; i < ifmt_ctx_v->nb_streams; i++) {//Create output AVStream according to input AVStreamif(ifmt_ctx_v->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO){AVStream *in_stream = ifmt_ctx_v->streams[i];AVStream *out_stream = avformat_new_stream(ofmt_ctx, in_stream->codec->codec);videoindex_v=i;if (!out_stream) {printf( "Failed allocating output stream\n");ret = AVERROR_UNKNOWN;goto end;}videoindex_out=out_stream->index;//Copy the settings of AVCodecContextret = av_dict_set(&out_stream->metadata,"rotate","90",0); //设置旋转角度if(ret>=0){printf("=========yes=====set rotate success!===\n");}if (avcodec_copy_context(out_stream->codec, in_stream->codec) < 0) {printf( "Failed to copy context from input to output stream codec context\n");goto end;}out_stream->codec->codec_tag = 0;if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;break;}}
AVMEDIA_TYPE_VIDEO 判断是视频流,然后申请out_stream,它是AVStream结构。里面就有mateData,所以可以写进去了。
给每一帧写入:
ret = av_dict_set(&out_stream->metadata,"rotate","90",0); //设置旋转角度

这样就ok了!

看最后dump视频的信息:

Output #0, mp4, to '/var/mobile/Containers/Data/Application/5B1DE047-A88C-48C2-B89A-FB5B57381A95/Documents/video/success.mp4':

    Stream #0:0: Video: h264, yuv420p, 1920x1080, q=2-31, 50 tbc

    Metadata:

      rotate          : 90

    Stream #0:1: Audio: aac, 44100 Hz, mono, fltp, 67 kb/s

已经把rotate写进去了。

FFmpeg给mp4视频加上旋转90度的代码相关推荐

  1. 视频旋转方向,让视频画面旋转90度播放

    简单好用的视频剪辑工具--视频剪辑高手,可以支持对视频旋转90度播放的吗?这个当然是可以了.而且还支持视频合并.转换格式.横屏改竖屏等等功能.下面就来看看如何将多个视频同时旋转90度播放的操作方法. ...

  2. 横屏视频如何旋转90度变成竖屏视频的方法及步骤

    横屏视频如何旋转90度变成竖屏视频呢?一起来看看大家是如何运用"视频剪辑高手"软件一键操作的吧. 先来看看横屏的原视频效果 再看看剪辑后旋转90度的视频效果 **接着准备软件:** ...

  3. centos7 linux ffmpeg 视频 顺时针 旋转 90度 shell 懒人系-16

    特别注意:本人很懒就搞了些懒人办法 1.建立个文本,改个扩展名shell.sh,复制下面代码-保存. 打开终端(建议直接root用戶运行). 2.sudo chmod +x sheell.sh 3.s ...

  4. 有逆时针将视频画面旋转90度的方法吗?

    在遇到想要将多个视频的画面批量逆时针旋转90度的时候都是用什么方法操作的呢?今天小编要给大家安利一个剪辑工具,可以轻松批量的剪辑视频,小白都可以轻松操作. 大家先来看看小编用这个方法操作的逆时针旋转9 ...

  5. android camera2预览方向,Android Camera2预览偶尔会旋转90度(示例代码)

    我正在使用Android的Camera2 API开发一些应用程序.到目前为止,我已经能够在TextureView中显示预览.该应用程序默认为横向模式.使用模拟器时,预览将显示为颠倒.在我的物理Nexu ...

  6. 顺时将视频画面旋转90度的步骤

    有没有可以一键快速批量将视频顺时针旋转90度的方法呢?当然有了,小编接下来就给大家推荐一个好用的方法,小编自己都一直在使用,现在就一起来看看这个方法的操作步骤吧! 大家先看看小编之前用这个方法剪辑的顺 ...

  7. EDIUS中的视频如何实现90度旋转

    使用EDIUS可以进行各种视频上的编辑布局,包括放大放小.旋转投影等等,旋转视频算是比较常见的一种.本文小编就来给大家分享如何使用EDIUS Pro 8将视频旋转90度的过程. EDIUS视频旋转所用 ...

  8. 将视频旋转90度的解决方法

    我使用的是HTC G7的手机,用手机拍到的视频拿到电脑上来播放,需要偏着头来看,有时视频甚至是倒立着的.因此,我一直在寻思着如何解决这个问题,但在今天,我终于找到了一个完美的解决方案,能将视频按照需要 ...

  9. mac上将视频变小_如何在Linux上将iPhone的.mov视频旋转90度?

    mac上将视频变小 The video files copied from iPhone is rotated by 90 degree when they are played on Linux. ...

最新文章

  1. html测试页,打印机测试页
  2. 叶县有没有计算机培训学校,叶县中等专业学校
  3. 使用代码判断某个note是否已经implemented
  4. Spring和JSF集成:导航
  5. 手把手教你求职进入BAT
  6. Java word 内容读取
  7. VB.NET工作笔记007---ASP.NET中Session超时一直不起作用
  8. 浙大 pat 1023题解
  9. 第 26 章 职责链模式
  10. visual studio 2019语言中文和英文的切换
  11. DirectX修复工具(DirectX Repair)修复工具V4.0增强版
  12. python 全栈开发,Day122(人工智能初识,百度AI)
  13. 小酌重构系列[12]——去除上帝类
  14. 加强化工企业危化品管理的几点建议
  15. 迅雷再换赛道锁定云计算 盈利能力待考
  16. Linux基本命令 初级10个
  17. QrCode类生成二维码海报
  18. web项目经理手册-项目经理需要铭记在心的话
  19. 数模--0-1规划问题~Matlab中 intlinprog函数用法简介
  20. 奉劝那些刚参加工作的学弟学妹们:要想进大厂,这些并发编程知识是你必须要掌握的!完整学习路线!!(建议收藏)

热门文章

  1. wow Warlock shushia PVP DZ
  2. 如何画神经网络模型图
  3. HTTP基础知识(仅介绍涉及R语言爬虫部分)
  4. 如何关闭打开文件安全警告
  5. 谷歌地图网页版_【软件】谷歌地球,带你看遍全球美景,快来神游吧Google Earth...
  6. 【翻译】设备管理器—英特尔网卡属性设置高级选项的功能
  7. 工作5年,从年薪10W到年薪100W:会赚钱的人,都懂规划
  8. 电信物联网卡查询平台具备什么功能
  9. 分享在实际项目中积累的硬件调试经验 - 调试方法,以及常见调试案例
  10. CAS单点登录-配置数据库认证方式