ffmpeg簡單使用小記

1. 使用ffmpeg 進行普通切片(ts)操作
.\ffmpeg.exe -i a.mp4  -y -f hls -c copy  -hls_time 10 .\s.m3u82. 使用ffmpeg 對視頻進行設置旋轉參數為0
.\ffmpeg.exe -i a.mp4 -metadata:s:v:0 rotate=0 -c copy outputfile.mp43. 使用文件對視頻進行加密
.\ffmpeg.exe -i a.mp4 -c copy -hls_time 10 -hls_list_size 0 -hls_key_info_file keyinfo streami.m3u84. 對ts切片視頻進行合并
ffmpeg -i "concat:s0.ts|s1.ts|s2.ts|s3.ts|s4.ts|s5.ts" -acodec copy -vcodec copy -absf aac_adtstoasc out.mp4

補充一下 第二個命令好像不是預期效果

2020-04-03
遇到一個視頻 a.mp4
在這里插入圖片描述
使用 .\ffmpeg.exe -i a.mp4 得出的視頻信息是這樣的

  Metadata:major_brand     : mp42minor_version   : 1compatible_brands: isommp41mp42creation_time   : 2019-11-27T07:00:13.000000ZDuration: 00:03:27.72, start: 0.000000, bitrate: 577 kb/sStream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 102 kb/s (default)Metadata:creation_time   : 2019-11-27T07:00:13.000000Zhandler_name    : Core Media AudioStream #0:1(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc, bt709/bt709/iec61966-2-1), 272x480, 469 kb/s, 30.55 fps, 60 tbr, 600 tbn, 1200 tbc (default)Metadata:rotate          : 270creation_time   : 2019-11-27T07:00:13.000000Zhandler_name    : Core Media VideoSide data:displaymatrix: rotation of 90.00 degrees
At least one output file must be specified

可以看到 有個

Metadata:rotate          : 270

有這個參數, 但是播放視頻的時候視頻是正常的。但是使用ffmpeg對a.mp4進行切片操作,產生的 ts切片就是旋轉了的

.\ffmpeg.exe -i .\a.mp4  -c copy  -y -f hls -hls_time 10 .\s.m3u8

以上這個切片命令是帶了 -c copy的,這樣不會對音視頻進行重新編碼,速度很快
在這里插入圖片描述
通過對比,是順時針旋轉了90度的。
那如何讓切片 不出現這種旋轉的情況呢?
(補充:如果切片的時候 去掉 -c copy 就不會出現旋轉的情況,但是這時候速度會很慢,因為對音視頻進行了從新編碼)

通過以下這個命令是不可以的,只是以源視頻的角度逆時針轉了90度。

.\ffmpeg.exe -i a.mp4 -vf "transpose=2"  -y -f hls   -hls_time 10 .\s.m3u8

經過嘗試發現可以這樣:
第一步 通過以下命令,產生一個新視頻, oa.mp4
在這里插入圖片描述

.\ffmpeg.exe -i a.mp4 -metadata:s:v:0 rotate=0 -c copy oa.mp4

查看這個視頻的信息

.\ffmpeg.exe -i oa.mp4
  Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf58.41.100Duration: 00:03:27.75, start: 0.000000, bitrate: 581 kb/sStream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc, bt709/bt709/iec61966-2-1), 272x480, 469 kb/s, 30.55 fps, 60 tbr, 19200 tbn, 38400 tbc (default)Metadata:handler_name    : Core Media VideoStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 102 kb/s (default)Metadata:handler_name    : Core Media Audio

第二步,以這個oa.mp4視頻進行切片操作

.\ffmpeg.exe -i oa.mp4 -vf "transpose=2"  -y -f hls   -hls_time 10 .\s.m3u8(切實這個操作速度也是比較慢,因為參數不能帶 -c copy)

發現切出來的ts視頻, 是這樣
在這里插入圖片描述
這樣就按照源視頻播放的角度,切成了相應的ts切片(其實這樣速度也是比較慢,這樣操作只是熟悉下ffmpeg的使用, 其實 直接對源視頻 進行切片去掉-c copy )
可以考慮將 ts切片后的視頻,合并保存,用來替換源視頻

-----分割線-----
拓展下,對另外一個b.mp4視頻進行試驗:
第一步
在這里插入圖片描述
查看視頻信息 ffmpeg -i b.mp4 ,(這是一個正常的視頻,沒有rotate參數,切片操作也不會出現旋轉)

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'b.mp4':Metadata:minor_version   : 512major_brand     : isomcompatible_brands: isomiso2avc1mp41comment         : vid:v0300f9a0000bmi264ioctpf0clucuigencoder         : Lavf58.20.100Duration: 00:04:41.63, start: 0.000000, bitrate: 479 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 426x240, 344 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)Metadata:handler_name    : VideoHandlerStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)Metadata:handler_name    : SoundHandler

第二步
修改視頻的 rotate參數 , 這里改為90。
(不明白為什么改為90后,查看視頻信息 rotate 為270)

 .\ffmpeg.exe -i b.mp4 -metadata:s:v:0 rotate=90 -c copy ob.mp4

在這里插入圖片描述
可以發現,新的ob.mp4 在原來基礎上逆時針旋轉了90度。
這時在查看ob.mp4的視頻信息

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'ob.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf58.41.100comment         : vid:v0300f9a0000bmi264ioctpf0clucuigDuration: 00:04:41.63, start: 0.000000, bitrate: 479 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 426x240, 344 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)Metadata:rotate          : 270handler_name    : VideoHandlerSide data:displaymatrix: rotation of 90.00 degreesStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)Metadata:handler_name    : SoundHandler

這時候再對 ob.mp4視頻進行切片

.\ffmpeg.exe -i ob.mp4 -c copy -y -f hls   -hls_time 10 .\s.m3u8
同樣 產生的ts角度與 ob.mp4并不一致,而是與b.mp4保持一致
.\ffmpeg.exe -i ob.mp4 -y -f hls   -hls_time 10 .\s.m3u8
同樣 產生的ts角度與 ob.mp4一致

總結: 視頻 X 信息中含有一下信息的

  Duration: 00:03:27.72, start: 0.000000, bitrate: 577 kb/sStream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 102 kb/s (default)Metadata:creation_time   : 2019-11-27T07:00:13.000000Zhandler_name    : Core Media AudioStream #0:1(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc, bt709/bt709/iec61966-2-1), 272x480, 469 kb/s, 30.55 fps, 60 tbr, 600 tbn, 1200 tbc (default)Metadata:rotate          : 270creation_time   : 2019-11-27T07:00:13.000000Zhandler_name    : Core Media VideoSide data:displaymatrix: rotation of 90.00 degrees

進行 切片的時候(參數如果帶有 -c copy),產生的ts角度與X并不一樣,應該是 與 X 之前的 源視頻一樣(就是沒有設置rotate參數的源視頻)
如果去掉 -c copy參數,產生的ts的角度與X一樣,
這時候可以考慮實際情況將 ts 合并為新的視頻文件,用以替換X

對ffmpeg初步使用,并不熟悉,還望指正。
-----分割線------
附上旋轉 、翻轉的一些參數

順時針旋轉畫面90度
ffmpeg -i test.mp4 -vf "transpose=1" out.mp4逆時針旋轉畫面90度
ffmpeg -i test.mp4 -vf "transpose=2" out.mp4順時針旋轉畫面90度再水平翻轉
ffmpeg -i test.mp4 -vf "transpose=3" out.mp4逆時針旋轉畫面90度水平翻轉
ffmpeg -i test.mp4 -vf "transpose=0" out.mp4水平翻轉視頻畫面
ffmpeg -i test.mp4 -vf hflip out.mp4垂直翻轉視頻畫面
ffmpeg -i test.mp4 -vf vflip out.mp4

參考鏈接:
https://www.5yun.org/ffmpeg-xuan-zhuan-shi-pin-hua-mian-can-shu.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382457.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python3安裝教程配置配置阿里云

配置全新阿里云 Linux iz2ze0ajic0vbvwnjhw2bwz 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 安裝依賴包 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc1.tar.xz 新建一個文件夾存放python3 mkdir /u…

python 使用requests模塊進行 視頻文件的下載

公司項目需要下載一批視頻文件, 格式是mp4和mkv的,就借助request模塊進行了下載,前提是源服務器返回文件的大小,以及可以接受 請求頭headers中帶有Range參數 以下是下載邏輯: resp requests.head(urlreal_video_url)…

Git的多人協作和分支處理測試

首先配置ssh密鑰 克隆項目 配置兩臺主機(一臺本地mac,一臺云服務器)通過這樣的方式模擬多人開發。 創建分支 [root ~/Git_test_多人協作和沖突合并/branch_test]$ ls README.md [root ~/Git_test_多人協作和沖突合并/branch_test]$ git b…

python 碎片整理 threading模塊小計

threading模塊中, start()與run()方法的區別 threading.start() 方法是開啟一個線程 threading.run() 方法則是普通的函數調用

git教程目錄

git入門教程 PyCharm和git安裝教程 Git的多人協作和分支處理測試

msyql 禁止遠程訪問

1. use mysql 2. select host , user from user; 查看用戶 與 對應的host 3. 將 host 中是 %的改為 localhost, 酌情也可以其他用戶 的host限制為localhost update user set host "localhost" where user "root" and host "%" 4. …

mysql索引回表

先索引掃描,再通過ID去取索引中未能提供的數據,即為回表。 建表 mysql> create table T( id int primary key, k int not null, name varchar(16), index (k))engineInnoDB;如果語句是 select * from T where ID500,即主鍵查詢方式&am…

C++ 執行cmd命令 并獲取輸出

這是參考別人的 &#xff0c;具體來源忘了&#xff0c;唉&#xff0c;等想起來一定補上出處 頭文件 PipeCmd.h #ifndef _PIPE_CMD_H_ #define _PIPE_CMD_H_#include <Windows.h>// 執行 cmd 命令, 并獲取執行結果數據 BOOL PipeCmd(char *pszCmd, char *pszResultBuffe…

iterm2 保存阿里云登陸并防止斷開連接

commando edit profiles新增一個頁面 添加命令 ssh -A -p 22 -o ServerAliveInterval60 rootIP

QString中包含中文的時候, 轉為char *

轉載自 https://blog.csdn.net/mihang2/article/details/39026865 QString中包含中文的時候&#xff0c; 轉為char * void FileEncWidget::QString2ANSI(QString text, char **pOut) {std::wstring wIn text.toStdWString();char *pcstr (char *)malloc(sizeof(char)*(2 * w…

brew安裝

官網&#xff1a;http://brew.sh/ 安裝軟件&#xff1a;brew install 軟件名&#xff0c;例&#xff1a;brew install wget搜索軟件&#xff1a;brew search 軟件名&#xff0c;例&#xff1a;brew search wget卸載軟件&#xff1a;brew uninstall 軟件名&#xff0c;例&#…

關于異步IO模型的學習

看到兩篇不錯的文章&#xff0c;轉載了&#xff1a; https://www.cnblogs.com/fanzhidongyzby/p/4098546.html https://www.cnblogs.com/aspirant/p/9166944.html

centos 無法連接網絡

最小化安裝&#xff0c;沒有ifconfig默認沒法聯網 cd /etc/sysconfig/network-scripts/ sudo vi ifcfg-en33 也有可能是其他后綴 找到ONBOOTno service network restart 然后yum install net-tools

C++實現utf8和gbk編碼字符串互相轉換

不同系統或者服務器之間消息傳遞經常遇到編碼轉換問題&#xff0c;這里用C實現了一個輕量的gbk和utf8互相轉換&#xff0c;可跨平臺使用。&#xff08;重量級的可以用libiconv庫&#xff09; 在windows下用<windows.h>頭文件里的函數進行多字節和寬字符轉換&#xff0c;…

mysql5.7初始密碼查看及密碼重置

查看初始密碼 grep temporary password /var/log/mysqld.logcat /root/.mysql_secret mysql密碼找回 密碼重置 vi /etc/my.cnf 在[mysqld]下加上 skip-grant-tables&#xff0c;如&#xff1a; [mysqld] datadir/var/lib/mysql socket/var/lib/mysql/mysql.sock skip-g…

Ubuntu Linux系統環境變量配置文件

Ubuntu Linux系統環境變量配置文件&#xff1a; /etc/profile : 在登錄時,操作系統定制用戶環境時使用的第一個文件 ,此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。 /etc /environment : 在登錄時操作系統使用的第二個文件, 系統在讀取你自己的profi…

Mooc的Python3學習筆記

文章目錄一些優秀的博主僅供自己查閱&#xff01;&#xff01;&#xff01;首先是掌握基本語法&#xff01;內置的運算符函數函數模塊補充知識點pass函數返回多個值關于默認參數使用的注意事項可變參數的使用方法天天向上代碼單元測試異常處理代碼單例模式Python 中的 if __nam…

使用supervisord 來守護 nginx進程

supervisord 簡介&#xff1a; Supervisord 是用 Python 實現的一款的進程管理工具&#xff0c;supervisord 要求管理的程序是非 daemon 程序&#xff0c;supervisord 會幫你把它轉成 daemon 程序&#xff0c;因此如果用 supervisord 來管理進程&#xff0c;進程需要以非daemo…

Mac快捷鍵和實用技巧

文章目錄如何更改應用圖標怎么移動Mac狀態欄的圖標macOS常用快捷鍵多開QQ如何更改應用圖標 https://www.macdu.org/16592.html 怎么移動Mac狀態欄的圖標 https://www.macdu.org/16683.html macOS常用快捷鍵 https://www.macdu.org/16607.html 多開QQ https://www.macdu.…

vs2017編譯QT with ssl

背景&#xff1a;項目中使用的Qt環境不支持https請求&#xff0c;原因是 源碼編譯的時候沒有鏈接相應的ssl庫文件。需要重新編譯qt 第一步 先編譯Openssl 1)安裝perl&#xff0c;并配置環境變量 下載地址&#xff1a; http://downloads.activestate.com/ActivePerl/releases/5…