<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          神器 ffmpeg —— 操作視頻,極度舒適

          共 3526字,需瀏覽 8分鐘

           ·

          2021-11-27 14:43

          大家好,我是一行

          之前有跟大家介紹過抖音小程序這個玩法

          基本原理就是上傳視頻,通過視頻左下角鏈接點擊小程序,然后小程序提供商通過每千次點擊進(jìn)行返傭

          操作流程就是下載素材、對素材進(jìn)行二創(chuàng),然后再上傳素材

          不斷的修改迭代內(nèi)容,以求量變達(dá)到質(zhì)變

          之前已經(jīng)分享過如何批量下載抖音素材,那緊接著就是批量處理素材了

          當(dāng)然第一次處理素材還是手動用剪映來處理,然后再用代碼進(jìn)行自動化處理,不然連朝哪個方向自動化處理可能都不知道

          那清楚處理流程之后,怎么用Python來處理視頻素材呢?

          ffmpeg!

          ffmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機程序

          使用這個神器,便可以處理各種視頻素材內(nèi)容,極度舒適

          下面一行來分享一下如何使用這個神器

          1安裝

          首先需要在ffmpeg的官網(wǎng)下載最新版本,不然可能會出現(xiàn)各種奇怪的問題

          因為ffmpeg是個命令行工具,所以安裝時需要注意將ffmpeg加入環(huán)境變量中,安裝完之后,可以在終端里輸入下面命令查看是否安裝成功

          ffmpeg?-version

          2subprocess調(diào)用

          因為ffmpeg是命令行工具,可以通過subprocess的調(diào)用來使用

          先查看使用文檔,例如拆分視頻文件的命令是:

          ffmpeg?-i?[filename]?-ss?[starttime]?-t?[length]?-c?copy?[newfilename]
          • i 為需要裁剪的文件
          • ss 為裁剪開始時間
          • t 為裁剪結(jié)束時間或者長度
          • c 為裁剪好的文件存放

          好了,用 Python 寫一個調(diào)用:

          import?subprocess?as?sp

          def?cut_video(filename,?outfile,?start,?length=90):
          ????cmd?=?"ffmpeg?-i?%s?-ss?%d?-t?%d?-c?copy?%s"?%?(filename,?start,?length,?outfile)
          ????p?=?sp.Popen(cmd,?shell=True)
          ????p.wait()
          ????return
          • 定義了一個函數(shù),通過參數(shù)傳入 ffmpeg 需要的信息
          • 將裁剪命令寫成一個字符串模板,將參數(shù)替換到其中
          • 用 subprocess 的 Popen 執(zhí)行命令,其中參數(shù) shell=True 表示將命令作為一個整體執(zhí)行
          • p.wait() 很重要,因為裁剪需要一會兒,而且是另起進(jìn)程執(zhí)行的,所以需要等待執(zhí)行完成再繼續(xù)執(zhí)行后面工作,不然可能找不到文件
          常見的一些命令如下:

          ffmpeg視頻剪切

          $?ffmpeg?-i?./in.mp4??-vcodec?copy?-acodec?copy?-ss?00:00:20?-to?00:05:30?./out.mp4

          -ss為開始時間,-to為結(jié)束時間。

          設(shè)置視頻大小

          $?ffmpeg?-i?./sea.mp4?-fs?19M?output.mp4

          -fs需要設(shè)置的大小,例如19M、1024K,其實就是剪切了前19M、1024K的視頻內(nèi)容。

          刪除視頻中的音頻

          $?ffmpeg??-i?in.mp4??-map?0:0??-vcodec?copy?-acodec?copy?out.mp4

          通過ffprobe命令,可以查看所有的通道,例子中的0:0就是視頻通道。

          設(shè)置分辨率

          $?ffmpeg?-i?video_1920.mp4?-vf?scale=640:360?video_640.mp4?-hide_banner

          高分辨率向低分辨率的轉(zhuǎn)化。

          設(shè)置視頻的寬高比

          $?ffmpeg?-i?video_320x180.mp4?-vf?scale=320:240,setdar=4:3?video_320x240.mp4?-hide_banner

          視頻倒放,無音頻

          $?ffmpeg?-i?in.mp4?-filter_complex?[0:v]reverse[v]?-map?[v]?-preset?superfast?out.mp4

          視頻倒放,音頻不變

          $?ffmpeg?-i?in.mp4?-vf?reverse?out.mp4

          音頻倒放,視頻不變

          $?ffmpeg?-i?in.mp4?-map?0?-c:v?copy?-af?"areverse"?out.mp4

          音視頻同時倒放

          $?ffmpeg?-i?in.mp4?-vf?reverse?-af?areverse?-preset?superfast?out.mp4

          抽取音頻

          $?ffmpeg?-i?3.mp4?-vn?-y?-acodec?copy?3.aac
          $?ffmpeg?-i?3.mp4?-vn?-y?-acodec?copy?3.m4a

          提取視頻或者叫做刪除音頻

          ffmpeg?-i?Life.of.Pi.has.subtitles.mkv?-vcodec?copy?–an??videoNoAudioSubtitle.mp4
          ?ffmpeg?-i?output.mp4?-c:v?copy?-an??input-no-audio.mp4

          為無聲的視頻添加音頻

          ffmpeg?-i?../out/4in1.mp4??-i?./3.aac??-vcodec?copy?-acodec?copy?output.mp4

          3ffmpy3

          ffmpy3是ffmpeg的python包裝器,以可以用這個包來進(jìn)行處理視頻

          需要先用pip進(jìn)行安裝

          pip?install?ffmpy3

          例如修改文件格式這種操作就可以使用ffmpy3直接輸出

          import?ffmpy3
          ff?=?ffmpy3.FFmpeg(
          ?????inputs={'input.mp4':?None},
          ?????outputs={'output.avi':?None}
          ?????)
          ff.run()

          轉(zhuǎn)碼

          如果同時我們想使用不同的編解碼器重新編碼視頻和音頻,在輸出文件同時必須指定額外的輸出選項:

          ff?=?FFmpeg(
          ????inputs={'input.ts':?None},
          ????outputs={'output.mp4':?'-c:a?mp2?-mpeg2video'}
          )
          ff.cmd
          ff.run()

          解復(fù)用

          還可以將文件的音頻和視頻輸出成兩個mp4格式的文件

          ff?=?FFmpeg(
          ????inputs={'input.ts':?None},
          ????outputs={
          ?????????'video.mp4':?['-map',?'0:0',?'-c:a',?'copy',?'-f',?'mp4'],
          ?????????'audio.mp4':?['-map',?'0:1',?'-c:a',?'copy',?'-f',?'mp4']
          ?????}
          ?)
          ff.cmd
          ff.run()

          復(fù)用

          復(fù)用就是將輸入的mp4文件和mp3文件合成同一個視頻文件

          這里使用 OrderedDict 來保留輸入的順序,以便它們與輸出選項中的流的順序相匹配:

          from?collections?import?OrderedDict
          inputs?=?OrderedDict([('video.mp4',?None),?('audio_1.mp3',?None),?('audio_2.mp3',?None)])
          outputs?=?{'output.ts',?'-map?0?-c:v?h264?-map?1?-c:a:0?ac3?-map?2?-c:a:1?mp2'}
          ff?=?FFmpeg(inputs=inputs,?outputs=outputs)
          ff.cmd
          ff.run()

          拆分成圖片

          處理視頻素材內(nèi)容還需要將視頻拆成一張張圖片,對圖片進(jìn)行處理,然后再合并成視頻

          在輸出的文件類型改成.png結(jié)尾即可

          import?ffmpy3
          ff?=?ffmpy3.FFmpeg(
          ?????inputs={'data.MP4':?None},
          ?????outputs={'1/%d.png':?None}
          ?????)
          ff.run()

          4最后

          通過ffmpeg處理視頻主要還是要了解它的命令用法,可以在??的官方文檔里進(jìn)行查看

          • http://ffmpeg.org/documentation.html

          然后再去了解各種熱門視頻的模版,自動化生成自己想要的視頻指日可待

          今天的分享就到這啦

          我是一行,技術(shù)永不眠,我們下期見~



          當(dāng)然Python相關(guān)的電子書我也給整理好了在下面??



          瀏覽 82
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线观看国产视频 | 亚洲久久视频 | 最新最近日本中文字幕不亚洲 | 亚洲色图 欧美 | 高清在线视频一区 |