日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg简单使用小记

發布時間:2023/11/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的ffmpeg简单使用小记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。