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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

FFMPEG转码常用命令研究

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FFMPEG转码常用命令研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ffmpeg簡介

官網鏈接是http://www.ffmpeg.org/上有說明,它是音視頻的分離,轉換,解碼的完全解決方案。?
其中最重要的就是libavcodec庫。它被mplayer或者xine使用作為解碼器。還有,國內比較流行的播放器影音風暴或MyMPC的后端ffdshow也是使用ffmpeg的解碼庫的。
ffmpeg包括一組軟件,ffmpeg用于對媒體文件進行處理,ffserver是一個http的流媒體服務器,ffplay是一個基于SDL的簡單播放器。兩個庫文件libavcodec和libavformat。

ffmpeg作為媒體文件處理軟件,基本用法如下:?
ffmpeg [global_options] {[input_file_options] -i ‘input_file’} ... {[output_file_options] ‘output_file’} ...
輸入輸出文件通常就是待處理的多媒體文件了。可以是純粹的音頻文件,純粹的視頻文件,或者混合的。?
大部分常見的格式都能夠“通殺”。象常見的各種mpeg,AVI封裝的DIVX和Xvid等等

對ffmpeg命令選項的了解,先從下面的命令開始
ffmpeg -h
ffmpeg -h long
ffmpeg -h full
man ffmpeg需要安裝ffmpeg的手冊頁條目

各選項參數的解釋,詳情參見

http://www.ffmpeg.org/ffmpeg.html


列出幾個主要的選項?
-vcodec 視頻流編碼方式?
-b 視頻流碼率(默認只有200k,一般都需要手動設置,具體的數值視codec選擇而定)?
-r 視頻流幀數(一般說來PAL制式通常用25,NTSC制式通常用29)?
-s 視頻解析度(分辨率,也要視codec和你的需要而定。通常改變某個視頻流的解析度是很耗費CPU的事情。另:具體寫法使用“數字x數字”的形式。中間是小寫字母“x”,這個用過mplayer的應該都知道)?
-t 處理持續時間。?
-acodec 音頻流編碼方式?
-ab 音頻流碼率(默認是同源文件碼率,也需要視codec而定)?
-ar 音頻流采樣率(大多數情況下使用44100和48000,分別對應PAL制式和NTSC制式,根據需要選擇)

還有些可能需要用到的選項如?
-vn和-an分別是屏蔽視頻流和屏蔽音頻流,分別對源文件處理一次即可得到分離的音頻和視頻?
-author -title分別是設置媒體文件的作者和title?
-f選項是強制使用某種格式?
-target type是使用預置的格式轉換(可以轉成dvd,vcd或svcd)

除此之外還有些更高級的選項,如設定vbr,或設定high quality,或者設定vbr的buff和max/min碼率,象一般我們自用的dvd抓軌啦,DV轉vcd或dvd啦,網上下載的電影轉成vcd或dvd都不一定需要用到它們。?
具體的使用方法在man里面有介紹。簡單明了。

-bsf比特流過濾器設置
首先使用ffmpeg -bsfs來查看所有的比特流過濾器,使用下面的命令
ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
來匹配要復制的視頻流,也是就是說,是有條件復制視頻流,必須匹配上才復制

-c選項是-codec的縮寫
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
意思是encodes all video streams with libx264 and copies all audio streams.

-map選項解讀
指定一個或多個輸入流作為輸出文件的源。每個輸入流由input_file_id[:stream_specifier]表示,這兩個索引都從0開始計數,-stream_specifier
表示一個負map,參見下面的例子
ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
選擇a.mov中的第三個流,和b.mov中的第7個流,把它們復制到輸出文件中
ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
選擇所有的視頻流和第3個音頻流,把它們復制到輸出文件中
ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
除了第2個音頻流以外,復制其他的流到輸出文件中
ffmpeg -i INPUT -map 0 output
復制第一個文件中的所有流到輸出文件中

關于ffmpeg hls更詳細的官方文檔,參見
http://www.ffmpeg.org/ffmpeg-all.html
在頁面中搜索“hls”即可
下面是該官方網頁給出的一個例子
Segment the input file, and create an M3U8 live playlist (can be used as live HLS source):
?
ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
-segment_list_flags +live -segment_time 10 out%03d.mkv

下面是我收集的hls版本,并不好用。
ffmpeg -i inputfile.avi -c:v libx264 -c:a libvo_aacenc -hls_time 10 -hls_list_size 0 outputfile.m3u8
ffmpeg -i inputfile.avi -c copy -bsf:v h264_mp4toannexb -map 0 -hls_time 10 -hls_list_size 0 outputfile.m3u8
注意:我測試后,發現hls版本的命令生成的ts片段非常差,幾乎不能觀看。

目前的ffmpeg版本是支持hls的,直接使用下面的命令也會同時生成ts片段和m3u8文件,每個ts片段是默認2s,這反過來也說明ffmpeg是支持hls的
ffmpeg -i in.nut out.m3u8

對于hls切片來說,下面的命令使我測試過很好用的,特收藏如下

ffmpeg -i 1.mp4 -f segment -segment_time 10 -segment_format mpegts -segment_list list_file.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 output_file-%d.ts

這條命令的限制是:要求生成ts分片的輸入視頻是視頻是h.264編碼,音頻是aac編碼的視頻文件,從優酷網上下載的視頻片段都是符合這個條件的。

獲取ffmpeg最新源碼方法
git clone git://source.ffmpeg.org/ffmpeg ?ffmpeg
更新本地源碼
git pull (--rebase)
git的使用方法詳見

http://www.ffmpeg.org/git-howto.html

總結

以上是生活随笔為你收集整理的FFMPEG转码常用命令研究的全部內容,希望文章能夠幫你解決所遇到的問題。

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