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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理

發(fā)布時(shí)間:2024/8/1 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

快速查找

  • 下載安裝
  • 測(cè)試
  • 語(yǔ)法規(guī)則
  • 推流
    • 本地視頻推流
    • 本地?cái)z像頭推流
      • 1.尋找可用攝像頭
      • 2.測(cè)試攝像頭
      • 3.攝像頭推流
    • 實(shí)測(cè)低延遲低丟幀攝像頭推流
  • 拉流
    • 拉流播放視頻
    • 拉流保存視頻
    • 視頻截取
    • 定時(shí)截圖(不斷截圖后更新一張圖片)
    • 定時(shí)截圖(每次截圖產(chǎn)生產(chǎn)生一張圖片,全部保存)
  • 格式轉(zhuǎn)換
  • 視頻處理
    • 視頻變速
    • 改變視頻幀率
    • 視頻剪輯
    • 視頻旋轉(zhuǎn)
    • 視頻尺寸裁剪
  • 常見問題:
    • 1.推流時(shí)遇到紅色丟幀警告 real-time buffer [video input] too full or near too full (101% of size: 3041280 [rtbufsize parameter])! frame dropped!
    • 2.拉流保存時(shí)報(bào)錯(cuò):At least one output file must be specified
  • 更多使用說明

下載安裝

FFmpeg下載官網(wǎng):https://ffmpeg.org/ ,這里提供了官網(wǎng)下載的windows環(huán)境 4.1.3版本:https://download.csdn.net/download/qq_43474959/12311422
下載后,配置環(huán)境變量,將bin文件地址加入到path中:

測(cè)試

在cmd中鍵入ffmpeg,觀察是否顯示相關(guān)信息

語(yǔ)法規(guī)則

語(yǔ)法結(jié)構(gòu):ffmpeg 輸入配置 -i 輸入地址 輸出配置 輸出地址

推流

本地視頻推流

ffmpeg -re -i 本地視頻.格式 -f flv 推流地址
例如: ffmpeg -re -i fight.mp4 -f flv rtmp://192...........

本地?cái)z像頭推流

1.尋找可用攝像頭

ffmpeg -list_devices true -f dshow -i dummy
此時(shí)列出了可用攝像頭名稱

2.測(cè)試攝像頭

ffplay -f dshow -i video="攝像頭名稱" 此處的攝像頭名稱是由上條命令執(zhí)行后查詢得到的
例如:ffmpeg -f dshow -i video="USB Camera"

3.攝像頭推流

ffmpeg -f dshow -i video="攝像頭名稱" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv 推流地址

實(shí)測(cè)低延遲低丟幀攝像頭推流

ffmpeg -f dshow -i video="攝像頭名稱" -framerate 25 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

  • -framerate 25 :推流幀率
  • -preset:v ultrafast -tune:v zerolatency -acodec libfaac :最快推流配置

拉流

拉流播放視頻

ffplay -i "拉流地址" -fflags nobuffer
nobuffer為實(shí)時(shí)播放

拉流保存視頻

ffmpeg -i "拉流地址" "輸出地址" ,如ffmpeg -i "https://xxx" "out.mp4
##更改拉流視頻的分辨率
以320:240分辨率為例
ffplay -i "拉流地址" -vf scale=320:240

視頻截取

是 ffmpeg -i "輸入視頻" -fflags nobuffer -t 60 -ss 0 "輸出地址",代表截取輸入視頻從0秒到60秒的片段,保存到輸出地址。

  • -ss n : 起始時(shí)間為第n秒
  • -t n : 總共截取的片段時(shí)長(zhǎng)為n秒

定時(shí)截圖(不斷截圖后更新一張圖片)

ffmpeg -i “視頻地址” -fflags nobuffer -update 1 -y -t 200 -ss 1 -r 1 -f image2 圖片輸出地址

  • -ss n : n秒后開始截圖
  • -r n : 每秒截n幀
  • -t n : 截n秒
  • 其他:-q:v :圖片質(zhì)量 -vframes:指定抽取的幀數(shù)

定時(shí)截圖(每次截圖產(chǎn)生產(chǎn)生一張圖片,全部保存)

ffmpeg -i “視頻地址” -r 1 -t 200 -ss 1 -f image2 輸出地址和名稱%d.jpg
例如:ffmpeg -i fight.mp4 -r 1 -t 200 -ss 1 -f image2 out%d.jpg
運(yùn)行后會(huì)生成截圖: out1.jpg out2.jpg out3.jpg …

格式轉(zhuǎn)換

直接輸入源文件,修改后綴作為輸出文件即可,例如MP4轉(zhuǎn)gif:
ffmpeg -i test.mp4 test.gif

視頻處理

視頻變速

視頻轉(zhuǎn)為兩倍速:
ffmpeg -i input.mp4 -an -filter:v "setpts=0.5*PTS" output.mp4
更改速度:將0.5修改為想要的倍數(shù)的倒數(shù)

改變視頻幀率

通過輸出配置-r設(shè)置,例如將輸入視頻轉(zhuǎn)換為10幀率的輸出視頻
ffmpeg -i input.mp4 -r 10 output.mp4

視頻剪輯

例如,從第30秒開始,截一分鐘:
ffmpeg -ss 00:00:30 -t 60 -i src.mp4 -codec copy out.mp4

視頻旋轉(zhuǎn)

上下翻轉(zhuǎn) ffmpeg -i input.mp4 -vf vflip out.mp4
左右翻轉(zhuǎn) ffmpeg -i input.mp4 -vf hflip out.mp4
順時(shí)針90° ffmpeg -i input.mp4 -vf transpose=1 out.mp4
逆時(shí)針90° ffmpeg -i input.mp4 -vf transpose=2 out.mp4

視頻尺寸裁剪

ffmpeg -i input.mp4 -vf crop=1280:720:0:120 out.mp4

  • crop后的參數(shù),寬:高:起始x:起始y

常見問題:

1.推流時(shí)遇到紅色丟幀警告 real-time buffer [video input] too full or near too full (101% of size: 3041280 [rtbufsize parameter])! frame dropped!

原因:編碼太慢或者編碼緩存區(qū)過小,解決方法:

  • 降低推流質(zhì)量,減小待推流視頻的分辨率、幀率等,以上述的
  • ffmpeg -f dshow -i video="攝像頭名稱" -framerate 25 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

    為例,此處加入設(shè)置分辨率選項(xiàng):

    ffmpeg -f dshow -i video="攝像頭名稱" -s 300*300 -framerate 15 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

    -s x*y 通過此句設(shè)置推流分辨率,或通過-framerate n 設(shè)置推流幀率

  • 在推流時(shí)清理內(nèi)存、減少cpu利用率,或更換計(jì)算能力更強(qiáng)、內(nèi)存更大的設(shè)備
  • 2.拉流保存時(shí)報(bào)錯(cuò):At least one output file must be specified

    解決方案:https://niuzifan.blog.csdn.net/article/details/108054128

    更多使用說明

    查閱官方手冊(cè):https://ffmpeg.org/documentation.html

    總結(jié)

    以上是生活随笔為你收集整理的使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。