ffplay常用指令
1、ffplay播放yuv檔案
ffplay -f rawvideo -pix_fmt nv12 -video_size 640x480 -framerate 50 -i test.yuv
備注:如果不指定-pix_fmt,預設為yuv420p;如果不指定framerate 預設25fps
通過ffplay -pix_fmts 可以檢視支援的播放格式
2、ffplay播放pcm檔案
ffplay -ar 44100 -ac 2 -f f32le -i test_441_f32le_2.pcm
備注:播放采樣率為44100,聲道數為2 存儲格式為32位小端序的音頻資料
ffmpeg常用指令
-
ffmpeg -i input -c:v libx264 -preset slow -crf 22-c:a copy output.mkv
-c:v:表示使用的視訊編碼器庫 這裡表示使用x264庫;copy代表視訊不重新編碼
-preset:設定x264的預設參數為 "slow";它可取值為"ultrafast,superfast,veryfast,
faster,fast,medium,slow,slower,veryslow,placebo";預設值為medium。預設參數代表了編碼速度,編碼速度越慢,壓縮率則越大。
-crf:x264預設的品質和碼率控制方式;x264的取值範圍(0-51),預設值為23,值越小,壓縮率越小(視訊品質月好),壓縮後檔案越大;推薦的取值為(18-28)
-
ffmpeg -i test_1280x720.MP4 -ss 00:00:00 -t 00:00:10 -pix_fmt yuv420p -vf scale=640:360 -f rawvideo test_640x360_yuv420p.yuv
MP4轉換為YUV并同時進行壓縮和截取
-
其它格式轉換為PCM格式
ffmpeg -i test-mp3-1.mp3 -f s16le -ar 44100 -ac 2 -acodec pcm_s16le test_441_s16le_2.pcm
tips:pcm的不同格式之間不能互相轉化
-
PCM格式轉化為其它格式
ffmpeg -f s16le -ar 44100 -ac 2 -acodec pcm_s16le -i input.pcm output.wav
-
音頻和視訊合成一個視訊檔案
ffmpeg -i test_1280x720_1.mp4 -i test-mp3-1.mp3 -map 0:v:0 -map 1:a:0 -c:a copy output.mp4
-
ffmpeg生成HLS的m3u8與ts片段
1、方式一:
ffmpeg -i cat.mp4 -c copy -bsf h264_mp4toannexb cat.ts
ffmpeg -i cat.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 2 cat_output%03d.ts
2、方式二:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8
-hls_time n: 設定每片的長度,預設值為2。機關為秒
-hls_list_size n:設定播放清單儲存的最多條目,設定為0會儲存有所片資訊,預設值為5
-hls_wrap n:設定多少片之後開始覆寫,如果設定為0則不會覆寫,預設值為0.這個選項能夠避免在磁盤上存儲過多的片,而且能夠限制寫入磁盤的最多的片的數量
-hls_start_number n:設定播放清單中sequence number的值為number,預設值為0
-
從視訊中提取圖檔并生成jpg
ffmpeg -i test.mp4 -r 30 -ss 00:00:20 -vframes 10 image-%3d.jpg
-ss 00:00:20 表示從20秒開始提取
-r 30 表示提取的圖檔序列幀率為30fps
-vframes 10 表示提取10幀
-
圖檔序列生成視訊
ffmpeg -y -r 10 -i image%04d.jpg output.mp4
将目前目錄下image001.jpg,image002.jpg,image003.jpg,......序列生成視訊。視訊幀率為10