国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【7種使用FFmpeg分割視頻的方法】【轉(zhuǎn)載】

這篇具有很好參考價值的文章主要介紹了【7種使用FFmpeg分割視頻的方法】【轉(zhuǎn)載】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

做視頻媒體運營的朋友要分割視頻有很多工具可以用,例如:剪映。如果要把視頻分割做成批量任務(wù)或者需要很多自定義功能,那么FFmpeg是個不錯的選擇,F(xiàn)Fmpeg是個命令行工具,也可以寫程序調(diào)用,對技術(shù)人員來說使用起來比較靈活,對于非技術(shù)人員可能稍有點麻煩。下面介紹7種使用FFmpeg分割視頻的方法。

01

將視頻分割成幀

ffmpeg -i video.mp4 thumb%04d.jpg -hide_banner

此命令允許您從視頻中提取特定幀,這些幀是組成視頻的圖像文件。例如視頻以每秒24幀的速度運行,則意味著在視頻播放時,每秒有24張圖像顯示在屏幕上。此命令可用于將視頻分割為幀并提取單個幀。

02

按大小拆分視頻

./split-video.sh huge-video.mov 64000000 "-c:v libx264 -crf 23 -c:a copy -vf scale=960:-1"

在命令中,數(shù)字64000000表示64MB,這意味著您的視頻將被拆分為每個大小為64MB的塊。您可以更改該數(shù)字以指定大小。

此命令允許您將較大的視頻剪切為特定文件大小的較小視頻。當您的視頻很大,但只需要特定大小的特定部分用于上傳或共享時,這個命令就很有用。其中split-video.sh是依賴于ffmpeg的shell腳本,腳本代碼如下:

#!/bin/bash# Short script to split videos by filesize using ffmpeg by LukeLR
if [ $# -ne 3 ]; then    echo 'Illegal number of parameters. Needs 3 parameters:'    echo 'Usage:'    echo './split-video.sh FILE SIZELIMIT "FFMPEG_ARGS'    echo     echo 'Parameters:'    echo '    - FILE:        Name of the video file to split'    echo '    - SIZELIMIT:   Maximum file size of each part (in bytes)'    echo '    - FFMPEG_ARGS: Additional arguments to pass to each ffmpeg-call'    echo '                   (video format and quality options etc.)'    exit 1fi
FILE="$1"SIZELIMIT="$2"FFMPEG_ARGS="$3"
# Duration of the source videoDURATION=$(ffprobe -i "$FILE" -show_entries format=duration -v quiet -of default=noprint_wrappers=1:nokey=1|cut -d. -f1)
# Duration that has been encoded so farCUR_DURATION=0
# Filename of the source video (without extension)BASENAME="${FILE%.*}"
# Extension for the video parts#EXTENSION="${FILE##*.}"EXTENSION="mp4"
# Number of the current video parti=1
# Filename of the next video partNEXTFILENAME="$BASENAME-$i.$EXTENSION"
echo "Duration of source video: $DURATION"
# Until the duration of all partial videos has reached the duration of the source videowhile [[ $CUR_DURATION -lt $DURATION ]]; do    # Encode next part    echo ffmpeg -i "$FILE" -ss "$CUR_DURATION" -fs "$SIZELIMIT" $FFMPEG_ARGS "$NEXTFILENAME"    ffmpeg -ss "$CUR_DURATION" -i "$FILE" -fs "$SIZELIMIT" $FFMPEG_ARGS "$NEXTFILENAME"
    # Duration of the new part    NEW_DURATION=$(ffprobe -i "$NEXTFILENAME" -show_entries format=duration -v quiet -of default=noprint_wrappers=1:nokey=1|cut -d. -f1)
    # Total duration encoded so far    CUR_DURATION=$((CUR_DURATION + NEW_DURATION))
    i=$((i + 1))
    echo "Duration of $NEXTFILENAME: $NEW_DURATION"    echo "Part No. $i starts at $CUR_DURATION"
    NEXTFILENAME="$BASENAME-$i.$EXTENSION"done

03

將視頻分割為相等持續(xù)時間的部分

ffmpeg -i "input_video.MTS" -ss 164 -f segment -segment_time 120 -vcodec copy -reset_timestamps 1 -map 0:0 -an output_video%d.MTS

此命令可用于將視頻分割為多個持續(xù)時間相同的部分。這對于需要或偏好特定視頻持續(xù)時間的社交媒體網(wǎng)站非常有用。

04

按場景拆分視頻

split.sh -d 0.5 -o /tmp/parts -f file.mp4

這個命令檢測單個場景并不總是很準確,但可以試試。split.sh?的內(nèi)容如下:???????

# Splits video to separate scenes files when full black frames are found in the video# Inspired by https://gist.github.com/achesco/4dc2ebf13378a0a61fc26c7fe01f539e# Who got inspired by https://stackoverflow.com/a/38205105
#!/bin/bash
file=""out="./"dur=0.05stripaudio=""ratio=1.00th=0.05add=0.00trim=0.00
usage () {  echo "Usage: $(basename $0) [[[-o folder] [-d black duration]] | [-h]] -f file.mp4"  echo  echo "Options:"  echo "-f, --file          Input file"  echo "-o, --out           Outpup files folder path, default"  echo "                    to current folder"  echo "-d, --dur           Duration for black detection in seconds. 0.05 default (practical single frame)"  echo "-r, --ratio        ffmpeg pic_th : Set the threshold for considering a picture black. 1.00 default"  echo "-th, --threshold   ffmpeg pix_th : Set the threshold for considering a pixel black. 0.00 default."  echo "-t, --trim          Substracts to splitting timestamp in seconds. 0 default"  echo "-a, --add           Adds to splitting timestamp in seconds. 0 default"  echo "-sa, --strip-audio  Strip audio"  echo "-h, --help          Display this help message"  echo  echo "Example: split.sh -d 0.5 -o /tmp/parts -f file.mp4"  echo "Splits file.mp4 file to scenes with black frames during more than 0.5 second"  echo "and saves output parts to /tmp/parts folder"}
if [ "$1" = "" ]; then  usagefi
while [ "$1" != "" ]; do  case $1 in    -f | --file )      shift      file=$1      ;;    -d | --dur )      shift      dur=$1      ;;    -r | --ratio )      shift      ratio=$1      ;;    -th | --threshold )      shift      th=$1      ;;    -o | --out )      shift      out=$1      ;;    -t | --trim )      shift      trim=$1      ;;    -a | --add )      shift      add=$1      ;;    -sa | --strip-audio )      stripaudio="-an"      ;;    -h | --help )      usage      exit      ;;    * )      usage      exit 1  esac  shiftdone
cut_part () {  duration_flag=""  if [[ "$3" != "" ]]; then    duration_flag="-t"  fi  echo "cutting from $1 during $3"  printf -v fileout "$out/%04d_%s" $2 $filename  ffmpeg -y -loglevel error -hide_banner -i $file -ss $1 $stripaudio $duration_flag $3 $fileout < /dev/null}
filename=`basename $file`mkdir -p $outtimefrom=0i=1
ffmpeg -i $file -vf blackdetect=d=$dur:pic_th=$ratio:pix_th=$th -f null - 2> ffoutblack_start=( $(grep blackdetect ffout | grep black_start:[0-9.]* -o | grep "[0-9]*(\.[0-9]*)?" -oE) )black_duration=( $(grep blackdetect ffout | grep black_duration:[0-9.]* -o | grep "[0-9]*(\.[0-9]*)?" -oE) )> timestampsfor ii in "${!black_start[@]}"; do  half=$(bc -l <<< "${black_duration[$ii]}/2")  middletime=$(bc -l <<< "${black_start[$ii]} + $half")  echo $middletime | LC_ALL=en_US.UTF-8 awk '{printf "%f", $0}' >> timestamps  echo "" >> timestampsdone
while read -r timestamp; do  duration=`bc -l <<< "$timestamp-$timefrom+$add-$trim" | LC_ALL=en_US.UTF-8 awk '{printf "%f", $0}'`  cut_part $timefrom $i $duration  timefrom=`bc -l <<< "$timestamp+$add-$trim" | LC_ALL=en_US.UTF-8 awk '{printf "%f", $0}'`  i=`expr $i + 1`done < timestamps
if [[ "$timefrom" != 0 ]]; then  cut_part $timefrom $ifi

另外還有一個python 替代方案——scenedetect。???????

#安裝場景檢測所需模塊pip install scenedetect[opencv] -i https://pypi.tuna.tsinghua.edu.cn/simple
#檢驗是否已安裝場景檢測所需模塊pip list
click coloramanumpy opencv-pythonscenedetect   0.5.5tqdm

使用方式???????

scenedetect?--input?my_video.mp4?--output?my_video_scenes?--stats?my_video.stats.csv?time?--start?00:05:00?--end?00:06:00?detect-content?#對輸入視頻執(zhí)行內(nèi)容檢測算法list-scenes?#?打印場景列表并輸出到CSV文件split-video # 使用ffmpeg或mkvMerge分割輸入視頻

測試

scenedetect?--input?/Users/zgq/Downloads/video.mp4?--output?/Users/zgq/Downloads/my_video_scenes?time?--start?00:00:00?--end?00:01:00?detect-content?split-video

05

按時間或持續(xù)時間分割視頻???????

ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \-vcodec copy smallfile.mp4

上面的命令將視頻從開始的50分鐘分割。你也可以隨意改變參數(shù)。只需重復該過程,就可以把剩余部分的視頻得分割成多個部分。

06

按寬度分割視頻

ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0" output.mp4

在上面的例子中,視頻將被裁剪為原高度和寬度的一半。要保持相同的高度,只需將ih組件的參數(shù)更改為10/10。您還可以通過在上面示例中的引號內(nèi)使用:keep_aspect=1參數(shù)來保持長寬比。命令如下:

ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0:keep_aspect=1" output.mp4

07

FFmpeg水平分割視頻

這本質(zhì)上和上一個是相同的裁剪功能,但不是將其裁剪為更小的寬度,而是保持寬度不變,并將視頻的高度降低50%。以下兩個命令,一個是不帶高寬比例,一個帶高寬比例:

ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0" output.mp4
ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0:keep_aspect=1" output.mp4

原文鏈接:

7種使用FFmpeg分割視頻的方法?文章來源地址http://www.zghlxwxcb.cn/news/detail-850052.html

到了這里,關(guān)于【7種使用FFmpeg分割視頻的方法】【轉(zhuǎn)載】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 阿里云國際站代理商:FFmpeg 處理音視頻文件的常用方法

    阿里云國際站代理商:FFmpeg 處理音視頻文件的常用方法

    阿里云代理商( 聚搜云 )專業(yè)服務(wù)于阿里云ECS服務(wù)器采購、阿里云Ddos采購、阿里云waf采購、對象存儲OSS、阿里云企業(yè)郵箱采購、阿里云國際站代理商、阿里云國際站充值、云安全中心(態(tài)勢感知)、阿里云高可用云數(shù)據(jù)庫RDS、web應(yīng)用云waf防火墻、阿里云vpc企業(yè)網(wǎng)、阿里云

    2024年02月02日
    瀏覽(62)
  • 音視頻開發(fā)五:visual studio集成使用FFmpeg

    音視頻開發(fā)五:visual studio集成使用FFmpeg

    ffmpeg 官網(wǎng) - download - 選擇Windows系統(tǒng) - 選擇gyan.dev版本- shared版本 在Windows系統(tǒng)上,Gyan.dev和BtbN都提供了FFmpeg的預(yù)編譯版本。Gyan.dev通常使用MSVC編譯器,而BtbN使用MinGW編譯器。因此,Gyan.dev的版本可能會更符合Windows標準,而BtbN的版本可能會更加開放和跨平臺。 選擇 shared版本 各

    2024年02月04日
    瀏覽(54)
  • 強大開源的音視頻處理工具ffmpeg安裝與使用

    強大開源的音視頻處理工具ffmpeg安裝與使用

    FFmpeg 是一個開源的跨平臺音視頻處理工具,提供了豐富的命令行模式下音視頻處理功能,包括格式轉(zhuǎn)換、編解碼、過濾器應(yīng)用等。 由于 FFmpeg 支持的格式廣泛,且可用于多個平臺和操作系統(tǒng)(如 Windows、Linux、MacOS 等),因此它已成為許多多媒體應(yīng)用程序和服務(wù)的核心組件。

    2024年02月05日
    瀏覽(101)
  • 音視頻處理工具FFmpeg與Java結(jié)合的簡單使用

    音視頻處理工具FFmpeg與Java結(jié)合的簡單使用

    一、什么是FFmpeg FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質(zhì)量,libavcod

    2024年02月11日
    瀏覽(91)
  • 使用FFmpeg將本地文件通過UDP推流的音視頻

    推流是指將音視頻數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)街付ǖ哪繕硕?,而FFmpeg是一個功能強大的跨平臺多媒體處理工具,可以用于音視頻編解碼、轉(zhuǎn)碼、處理等操作。本文將介紹如何使用FFmpeg將本地文件通過UDP協(xié)議進行推流,實現(xiàn)音視頻數(shù)據(jù)的傳輸。 首先,需要確保已經(jīng)安裝了FFmpeg工具。如

    2024年03月19日
    瀏覽(42)
  • 音視頻開發(fā):ffplay使用ffmpeg濾鏡實現(xiàn)倍速播放

    曾經(jīng)為實現(xiàn)倍速播放使用過ffmpeg,對音頻使用atempo濾鏡即可實現(xiàn)變速不變調(diào)。但是當時效果并不是特別好,和soundtouch相比處理后的音質(zhì)有明顯的區(qū)別。最近用新版本的ffmpeg濾鏡重新實現(xiàn)了倍速播放,發(fā)現(xiàn)效果變好,已經(jīng)達到可接受的程度,所以在此分享具體實現(xiàn)。 ffmpeg倍速

    2024年02月03日
    瀏覽(72)
  • Java工程使用ffmpeg進行音視頻格式轉(zhuǎn)換(ws.schild)

    JAVE (Java Audio Video Encoder)是一個純Java的音視頻編碼器和解碼器庫,它是基于FFmpeg。JAVE庫提供了一些簡單易用的API,用于音頻和視頻格式的轉(zhuǎn)換、編碼、解碼等操作。它對于一些基本的音視頻處理任務(wù)來說是一個不錯的選擇。 這些庫都是基于FFmpeg的,并允許在Java中處理音頻和

    2024年02月14日
    瀏覽(337)
  • 使用ffmpeg調(diào)用電腦自帶的攝像頭和揚聲器錄制音視頻

    使用ffmpeg調(diào)用電腦自帶的攝像頭和揚聲器錄制音視頻

    1、打開cmd,執(zhí)行 chcp 65001 ,修改cmd的編碼格式為utf8,避免亂碼 2、執(zhí)行指令 ffmpeg -list_devices true -f dshow -i dummy ,查看當前window的音頻和視頻名稱 3、打開windows系統(tǒng)的\\\"打開聲音設(shè)置\\\"–“麥克風隱私設(shè)置”–\\\"允許應(yīng)用訪問你的麥克風\\\"點擊開啟 錄制視頻: 錄制音頻: 錄制音視頻:

    2024年02月04日
    瀏覽(33)
  • ffmpeg系列學習——FFmpeg的音視頻處理

    1.音視頻的采樣率、采樣位深度和聲道數(shù) 音頻和視頻的采樣率、采樣位深度和聲道數(shù)是媒體文件中的重要參數(shù),它們會直接影響到音視頻的質(zhì)量和文件大小。下面對它們進行詳細解釋: 采樣率 采樣率指音頻每秒鐘采樣的次數(shù),用赫茲(Hz)表示。采樣率越高,音頻的還原度越

    2024年02月04日
    瀏覽(84)
  • 音視頻 ffmpeg視頻裁剪

    將輸入視頻幀的寬度和高度從x和y值表示的位置裁剪到指定的寬度和高度;x和y是輸出的左上角坐標,協(xié)調(diào)系統(tǒng)的中心是輸入視頻幀的左上角。 如果使用了可選的keep_aspect參數(shù),將會改變輸出SAR(樣本寬比)以補償新的DAR(顯示長寬比) 推薦一個零聲學院項目課,個人覺得老師講得不

    2024年02月10日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包