bash 中的视频方向检测

2024-03-20

我需要检测视频是以纵向还是横向模式录制的,然后以脚本方式将其转换为正确的方向。

if [ "$v_orient" ==  "landscape" ]
  then
    ffmpeg -i file.mp4 -vf "transpose=1" file.ogv
  else 
    ffmpeg -i file.mp4 file.ogv
fi

我查看了 ffmpeg 在线文档并用谷歌搜索,

我尝试过exiftool https://stackoverflow.com/questions/11000107/detect-orientation-of-video-and-auto-rotate-if-needed

exiftool -Rotation -Rotate file.mp4

然而,对于我拥有的横向和纵向视频,此输出旋转:90。


如何在 bash 中检测视频方向?


ffprobe是的一部分ffmpeg包,它将报告视频元数据。

ffprobe somevideo.mp4

grep可用于仅选择旋转信息。在旋转视频上,我看到以下输出:

$ ffprobe somevideo.mp4 2>&1 | grep rotate
      rotate          : 90

在我尝试的未旋转视频上,上述命令没有产生任何输出。

该命令取决于视频文件的元数据。如果您的来源不能产生可靠的rotate标签,您可能需要寻找其他标签。

没有加速计(重力传感器)的旧相机无法判断它们是纵向还是横向,因此无法产生任何有用的标签。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bash 中的视频方向检测 的相关文章

  • bash while 循环线程

    我有一个 while 循环读取来自 a 的行 hosts while read line do ip line check done lt hosts 我的问题是我可以使用某种方法来加快速度 或者一次在 10 个主机上运行检查 每个检查都在
  • 使用 ffmpeg 将 h.264 avi 容器转换为 mp4

    我想使用 ffmpeg 将 h 264 avi 容器转换为 mp4 容器 我发现这个有效 ffmpeg i myfile avi vcodec copy myfile mp4 ffmpeg version N 51169 gcedf276
  • bash 调整图像尺寸以适合特定大小

    我到处搜索但找不到这个问题的答案 我想精确输出一个文件夹中的所有图像 大小为 50Kb 并保持原始的宽高比 I tried ImageMagick并将大小调整为 250x250 例如 但它对我不起作用 它所做的是更改第一个尺寸并适应另一个尺
  • 是否可以使用 S3 进行 Flash 伪流?

    我一直在使用 S3 来存储和提供 FLV 和 MP4 视频 它效果很好 但内容是渐进下载的 我想知道是否有可能让所谓的 伪流 与 S3 一起使用 伪流允许观看者在下载完整视频之前在视频中向前搜索 并仅将必要的位发送到 Flash 播放器 我
  • 流媒体视频文件?

    我需要流式传输 flv 文件 流媒体应该看起来像直播 我应该有一种方法可以更改目标文件 抱歉我的英语不好 如果 流式传输 的意思是 显示 Flash 视频剪辑 则 flv streaming 并不是真正的流式传输 而是正常的文件传输 即使文
  • 如何正确使用 liquibase `searchPath` 选项来指示各自的资源文件夹?

    我正在尝试调用update的命令liquibase如下 liquibase update changelog file persistence src main resources changelog db changelog dev xm
  • ios 将 alpha 通道视频叠加在另一个视频上

    我一直在尝试创建一个视频模板 该模板使用 alpha 通道视频叠加在 mp4 视频和图像上 这就是我需要创建视频的方式http viewptch ptchcdn com rendered 52b28a9f8d4f980f3a3f99c3 c
  • 将 H264 视频转换为原始 YUV 格式

    是否可以使用 ffmpeg 从 H264 编码视频创建原始 YUV 视频 我想用 matlab 打开视频并逐帧访问 Luma Cb 和 Cr 分量 是的 您可以 您只需指定像素格式即可 要获取格式的完整列表 ffmpeg pix fmts
  • 在 bash 函数中生成后台进程

    我正在编写一个 Bash 函数来启动需要从某个文件夹启动的服务器 但我不希望启动该服务器影响我当前的工作 我写了以下内容 function startsrv pushd cd TRUNK SERVERCOMMAND popd 我的变量都已设
  • 使用 GitHub 时防止将大文本文件添加到提交

    我们想要防止 非常大的文本文件 每个文件 gt 50MB 被提交到git代替git lfs 因为它们夸大了 git 历史 问题是 其中 99 大小差异的原因 这些是 YAML 文件 它们支持通过 Base64 编码进行二进制序列化 我们无法
  • 如何使用 awk 或 sed 将“[1.0 - 4.0]”等字符串替换为数值?

    我有一个 CSV 文件 正在通过一组 awk sed 命令进行管道传输 CSV 文件中的某些行如下所示 10368 Verizon DSL DSL NY NORTHEAST 5 4 1 1 3 0 0 384 0 768 其中第 8 列和第
  • 如何摆脱每个新终端会话上运行的某些内容?

    我正在使用狮子 我在每个新的终端会话上都会输出一个错误 bash rvm add to path command not found 这是一个几乎全新的用户帐户 RVM 安装在计算机上的另一个帐户上 bashrc 和 bash profil
  • Bash:查找并连接文件

    我有以下结构 home DIR1 file ab csv DIR2 file cd csv DIR3 file3 ef csv Where file csv包含多行浮点数 每个 DIR 都有不同的浮点数 我想抓取所有的内容file csv文
  • envsubst 不能进行就地替换吗?

    我有一个配置文件 其中包含一些 ENV VARIABLE 样式的变量 This is my file It might contain EXAMPLES of text 现在我希望将该变量替换为保存在实际环境变量中的值 所以我正在尝试这个
  • 如何使用 jQuery 将 html5 视频播放器静音

    我找到了如何使用 jquery 暂停和播放视频 video get 0 play video get 0 pause 但我找不到静音按钮 如果没有 jquery 解决方案 我只需一个 onclick js 解决方案即可 我需要尽快 还有有办
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • 按行号和列号对文件进行子集化

    我们想要按行和列对文本文件进行子集化 其中行数和列数是从文件中读取的 不包括标题 第 1 行 和行名称 第 1 列 输入文件 txt制表符分隔的文本文件 header 62 9 3 54 6 1 25 1 2 3 4 5 6 96 1 1
  • Bash - 如何将参数传递给通过标准输入读取的脚本

    我正在尝试从标准输入执行脚本并将参数传递给它 有办法做到吗 假设我有以下内容 cat script sh bash 我如何将参数传递给脚本 我不想这样做 bash script sh arguments 也不是这个 script sh ar
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • 具有非阻塞读取功能的 Bash 脚本

    我想使用命名管道将一些数据发送到根进程 这是脚本 效果很好 bin sh pipe tmp ntp if p pipe then mknod m 666 pipe p fi while true do if read line lt pip

随机推荐