30分钟带你学会ffmpeg视频开发与应用工具
lipiwang 2024-11-15 22:01 14 浏览 0 评论
FFmpeg开发环境构建
总结有福利
一、相关资源介绍
本文主要讲述linux平台x86(及x86-64)架构下的ffmpeg编译安装过程。
其他嵌入式平台需要交叉编译,过程类似,不详述。
本实验在opensuse和ubuntu两个平台作了验证。使用lsb_release -a命令查看系统发行版版本:
opensuse平台版本:openSUSE Leap 42.3。
ubuntu平台版本:Ubuntu 16.04.5 LTS。
1. yasm/nasm
旧版ffmpeg及x264使用yasm汇编器
Yasm是英特尔x86架构下的一个汇编器和反汇编器。Yasm是一个完全重写的Netwide汇编器(NASM)。Yasm通常可以与NASM互换使用,并支持x86和x86-64架构。其许可协议为修订过的BSD许可证。
此处Yasm用来编译x86平台下ffmpeg中部分汇编代码。
注意,Yasm是x86平台汇编器,不需要交叉编译。若是arm等其他平台,交叉编译工具链中包含有对应的汇编器,则交叉编译时需要–disable-yasm选项。
Yasm官网:http://yasm.tortall.net/
新版ffmpeg及x264改用nasm汇编器
Netwide Assembler(简称NASM)是一款基于英特尔x86架构的汇编与反汇编工具。NASM被认为是Linux平台上最受欢迎的汇编工具之一。
ffmpeg工程中实现了h265解码器,但无h265编码器。因此需要安装第三方编码器x265
4. SDL
SDL(Simple DirectMedia Layer)是一套开源的跨平台多媒体开发库。SDL提供了数种控制图像、声音、输出输入的函数,封装了复杂的视音频底层操作,简化了视音频处理的难度。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
二、编译过程
1. 规划安装路径
将编译源码得到的程序资源安装到用户目录/home/think下。则安装后,/home/think目录下会多出bin、include、lib、share等目录
配置环境变量
编辑/etc/profile,添加如下几行:
export PATH=/home/think/bin:$PATH
export LIBRARY_PATH=/home/think/lib:/home/think/lib64:$LIBRARY_PATH
export PKG_CONFIG_PATH=/home/think/lib/pkgconfig:$PKG_CONFIG_PATH
export C_INCLUDE_PATH=/home/think/include:$C_INCLUDE_PATH
1
2
3
4
上述几个环境变量是程序编译时需要用到的库文件、头文件路径,以及可执行程序所在路径。
在命令行中运行如下命令,使新设置的环境变量立即生效:
source /etc/profile
1
配置动态库路径
编辑/etc/ld.so.conf,添加如下两行:
/home/think/lib
/home/think/lib64
1
2
ld.so.conf中的内容是程序运行时需要搜索的动态库路径。
在命令行中运行如下命令,使新设置的动态库路径立即生效:
ldconfig
1
2. yasm/nasm
旧版ffmpeg及x264使用yasm汇编器
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure --prefix=/home/think
make
make install
1
2
3
4
5
6
新版ffmpeg及x264改用nasm汇编器
具体从哪一版本开始改用nasm不太清楚,
tar -zxvf nasm-2.14.tar.gz
cd nasm-2.14/
./configure --prefix=/home/think
make
make install
1
2
3
4
5
6
3. x264
在网址https://www.videolan.org/developers/x264.html下载源码包last_x264.tar.bz2,这是git仓库的master分支源码。我们直接输入以下地址下载stable分支:
tar -jxvf last_stable_x264.tar.bz2
cd x264-snapshot-20181119-2245-stable/
./configure --prefix=/home/think --enable-shared --enable-static
make
make install
1
2
3
4
5
6
注意第4行配置选项中,未给出–disable-asm选项,则表示启用汇编选项
4. x265
tar -zxvf x265_2.9.tar.gz
cd x265_2.9/build/linux/
./make-Makefiles.bash
在上一行命令运行快结束时,出现cmake配置信息编辑界面,将CMAKE_INSTALL_PREFIX的值改成/home/think
make
make install
1
2
3
4
5
6
7
5. SDL
注意:应先安装SDL,再安装ffmpeg,否则ffmpeg编译时不会生成ffplay
原因如参考资料[3]所述。
两种安装方式,推荐第二种方式,可能遇到的问题比较少
编译源码安装(不推荐)
tar -zxvf SDL2-2.0.9.tar.gz
cd SDL2-2.0.9/
./configure --prefix=/home/think
make
make install
1
2
3
4
5
6
通过编译源码安装的方式,编译安装成功后运行ffplay可能会遇到挺多问题,参“六、问题描述”
通过软件源在线安装(推荐)
opensuse平台:
zypper install libSDL2-devel
zypper install libSDL2_image-devel
zypper install libSDL2_mixer-devel
zypper install libSDL2_ttf-devel
zypper install libSDL2_gfx-devel
1
2
3
4
5
ubuntu平台:
apt-get install libsdl2-dev
apt-get install libsdl2-image-dev
apt-get install libsdl2-mixer-dev
apt-get install libsdl2-ttf-dev
apt-get install libsdl2-gfx-dev
1
2
3
4
5
6. ffmpeg
tar -jxvf ffmpeg-4.1.tar.bz2
cd cd ffmpeg-4.1/
./configure --prefix=/home/think --enable-shared --enable-static --enable-libx264 --enable-libx265 --enable-gpl --enable-pthreads --extra-cflags=-I/home/think/include --extra-ldflags=-L/home/think/lib
make
make install
1
2
3
4
5
6
五、测试
在命令行中运行如下测试命令:
ffmpeg -i bigbuckbunny_480x272.h265 bigbuckbunny_480x272.mp4
ffplay 128x128.264
ffprobe 128x128.264
1
2
3
注意:
远程终端处于控制台命令行模式(运行级别3),无权限调用SDL,因此无法测试ffplay,但可以测试ffmpeg和ffprobe。测试ffplay需要X11控制台模式(运行级别5,即GUI图形模式)。
六、问题记录
1. No available video device
错误提示:
Could not initialize SDL - No available video device
(Did you set the DISPLAY variable?)
原因分析:
解决方法:
a) 安装x11的库文件:
opensuse平台:
zypper install libX11-devel
zypper install xorg-x11-devel
1
2
ubuntu平台:
apt-get install libx11-dev
apt-get install xorg-dev
1
2
b) 重新编译安装SDL
2. Audio target ‘pulse’ not available
错误提示:
Could not initialize SDL - Audio target ‘pulse’ not available
(Did you set the DISPLAY variable?)
原因分析:
解决方法:
a) 安装缺少的库
opensuse平台:
zypper install libpulse-devel
zypper install libasound2
zypper install libasound2-devel // 实测不安装此包也无问题,若软件源中无此包则不必安装
1
2
3
ubuntu平台:
apt-get install libpulse-dev
apt-get install libasound2
apt-get install libasound2-dev
1
2
3
b) 重新编译安装SDL
3. x265 not found using pkg-config
错误提示:
编译ffmpeg,运行./configure --enable-libx265 ...出现如下错误提示:
x265 not found using pkg-config
原因分析:
参考资料[5]http://forums.libsdl.org/viewtopic.php?t=7609
解决方法:
export PKG_CONFIG_PATH=/home/think/lib/pkgconfig:$PKG_CONFIG_PATH
FFMPEG开发必备工具
FFmpeg工具使用总结
一、 FFmpeg是什么?
简单说,FFmpeg就是一个很好的,免费的,开源的视频转换工具。详细说,FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。
FFmpeg的官网是:http://ffmpeg.org/,下载地址:http://ffmpeg.org/download.html。需要的同学可以从官网自行下载。
官网的解释是:ffmpeg is a command line tool to convert multimedia files between formats.即:ffmpeg是用来转换不同格式的多媒体文件的一个命令行工具。
二、 FFmpeg功能是什么?
FFmpeg有非常强大的功能 ,包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。ffmpeg是用来转换不同格式的多媒体文件的一个命令行工具。
这里重点讲讲视频格式转换功能,ffmpeg视频转换功能。视频格式转换,比如可以将多种视频格式转换为flv格式,可不是视频信号转换 。
ffmpeg可以轻易地实现多种视频格式之间的相互转换(wma,rm,MP4,mod等),例如可以将摄录下的视频MP4等转成现在视频网站所采用的flv格式。
三、 FFmpeg究竟怎么用?
第一,下载FFmpeg。
先根据自己的系统到官网是:http://ffmpeg.org/下载好对应版本的FFmpeg,下载地址:http://ffmpeg.org/download.html。一般工具名称为:ffmpeg-20140123-git-e6d1c66-win64-static.7z,解压后可以直接使用该工具了,直接到D:\路径\ffmpeg-20140123-git-e6d1c66-win64-static\bin\ ffmpeg.exe下,准备好命令行和批处理文件就可以直接转换了。
第二,命令集的简单实用方法
1.获取视频的信息
ffmpeg -i video.MP4
2.将图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等...)合并成video.mpg
3.将视频分解成图片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令会生成image1.jpg. image2.jpg. ...
支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI
4.为视频重新编码以适合在iPod/iPhone上播放
ffmpeg -i source_video.MP4 input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4
说明:
* 源视频:source_video.MP4
* 音频编码:aac
* 音频位率:128kb/s
* 视频编码:mpeg4
* 视频位率:1200kb/s
* 视频尺寸:320 X 180
* 生成的视频:final_video.mp4
5.为视频重新编码以适合在PSP上播放
ffmpeg -i source_video.MP4 -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
说明:
* 源视频:source_video.MP4
* 音频编码:aac
* 音频位率:32kb/s
* 视频编码:xvid
* 视频位率:1200kb/s
* 视频尺寸:320 X 180
* 生成的视频:final_video.mp4
6.从视频抽出声音.并存为Mp3
ffmpeg -i source_video.MP4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
说明:
* 源视频:source_video.MP4
* 音频位率:192kb/s
* 输出格式:mp3
* 生成的声音:sound.mp3
7.将wav文件转成Mp3
ffmpeg -i son_origine.MP4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
8.将.MP4视频转成.mpg
ffmpeg -i video_origine.MP4 video_finale.mpg
9.将.mpg转成.MP4
ffmpeg -i video_origine.mpg video_finale.MP4
10.将.MP4转成gif动画(未压缩)
ffmpeg -i video_origine.MP4 gif_anime.gif
11.合成视频和音频
ffmpeg -i son.wav -i video_origine.MP4 video_finale.mpg
12.将.MP4转成.flv
ffmpeg -i video_origine.MP4 -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv
13.将.MP4转成dv
ffmpeg -i video_origine.MP4 -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
或者:
ffmpeg -i video_origine.MP4 -target pal-dv video_finale.dv
14.将.MP4压缩成divx
ffmpeg -i video_origine.MP4 -s 320x240 -vcodec msmpeg4v2 video_finale.MP4
15.将Ogg Theora压缩成Mpeg dvd
ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg
16.将.MP4压缩成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origine.MP4 -target ntsc-svcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.MP4 -target pal-svcd video_finale.mpg
17.将.MP4压缩成VCD mpeg2
NTSC格式:
ffmpeg -i video_origine.MP4 -target ntsc-vcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.MP4 -target pal-vcd video_finale.mpg
18.多通道编码
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
19.从flv提取mp3
ffmpeg -i source.flv -ab 128k dest.mp3
第三,认识ffmpeg的不同编码器
ffmpeg version N-60106-ge6d1c66 Copyright (c) 2000-2014 the FFmpeg developers
built on Jan 22 2014 22:06:20 with gcc 4.8.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aa
cenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavp
ack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 63.100 / 52. 63.100
libavcodec 55. 49.100 / 55. 49.100
libavformat 55. 25.101 / 55. 25.101
libavdevice 55. 5.102 / 55. 5.102
libavfilter 4. 1.100 / 4. 1.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Input #0, MP4, from 'E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4':
Metadata:
encoder : Lavf55.25.101
Duration: 00:01:32.04, start: 0.000000, bitrate: 5774 kb/s
Stream #0:0: Video: mpeg4 (Simple Profile) (FMP4 / 0x34504D46), yuv420p, 192
0x1080 [SAR 1:1 DAR 16:9], 60 tbr, 60 tbn, 60 tbc
Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 128 k
b/s
Invalid encoder type 'xsub'
Encoders:
V..... = Video
A..... = Audio
S..... = Subtitle
.F.... = Frame-level multithreading
..S... = Slice-level multithreading
...X.. = Codec is experimental
....B. = Supports draw_horiz_band
.....D = Supports direct rendering method 1
------
V..... a64multi Multicolor charset for Commodore 64 (codec a64_multi)
V..... a64multi5 Multicolor charset for Commodore 64, extended with 5th color (colram) (codec a64_multi5)
V..... amv AMV Video
V..... asv1 ASUS V1
V..... asv2 ASUS V2
V..... avrp MP4d 1:1 10-bit RGB Packer
V..X.. avui MP4d Meridien Uncompressed
V..... ayuv Uncompressed packed MS 4:4:4:4
V..... bmp BMP (Windows and OS/2 bitmap)
V..... libxavs libxavs Chinese AVS (Audio Video Standard) (codec cavs)
V..... cinepak Cinepak / CVID
V..... cljr Cirrus Logic AccuPak
V..... libschroedinger libschroedinger Dirac 2.2 (codec dirac)
V.S... dnxhd VC3/DNxHD
V..... dpx DPX (Digital Picture Exchange) image
V.S... dvvideo DV (Digital Video)
V.S... ffv1 FFmpeg video codec #1
V..... ffvhuff Huffyuv FFmpeg variant
V..... flashsv Flash Screen Video
V..... flashsv2 Flash Screen Video Version 2
V..... flv FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (codec flv1)
V..... gif GIF (Graphics Interchange Format)
V..... h261 H.261
V..... h263 H.263 / H.263-1996
V.S... h263p H.263+ / H.263-1998 / H.263 version 2
V..... libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V..... libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
V..... huffyuv Huffyuv / HuffYUV
V..X.. jpeg2000 JPEG 2000
V..... libopenjpeg OpenJPEG JPEG 2000 (codec jpeg2000)
V..... jpegls JPEG-LS
V..... ljpeg Lossless JPEG
VFS... mjpeg MJPEG (Motion JPEG)
V.S... mpeg1video MPEG-1 video
V.S... mpeg2video MPEG-2 video
V.S... mpeg4 MPEG-4 part 2
V..... libxvid libxvidcore MPEG-4 part 2 (codec mpeg4)
V..... msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2
V..... msmpeg4 MPEG-4 part 2 Microsoft variant version 3 (codec msmpeg4v3)
V..... msvideo1 Microsoft Video-1
V..... pam PAM (Portable AnyMap) image
V..... pbm PBM (Portable BitMap) image
V..... pcx PC Paintbrush PCX image
V..... pgm PGM (Portable GrayMap) image
V..... pgmyuv PGMYUV (Portable GrayMap YUV) image
VF.... png PNG (Portable Network Graphics) image
V..... ppm PPM (Portable PixelMap) image
VF.... prores Apple ProRes
VF.... prores_aw Apple ProRes (codec prores)
V.S... prores_ks Apple ProRes (iCodec Pro) (codec prores)
V..... qtrle QuickTime Animation (RLE) video
V..... r10k AJA Kona 10-bit RGB Codec
V..... r210 Uncompressed RGB 10-bit
V..... rawvideo raw video
V..... roqvideo id RoQ video (codec roq)
V..... rv10 RealVideo 1.0
V..... rv20 RealVideo 2.0
V..... sgi SGI image
V..... snow Snow
V..... sunrast Sun Rasterfile image
V..... svq1 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
V..... targa Truevision Targa image
V..... libtheora libtheora Theora (codec theora)
V..... tiff TIFF image
V..... utvideo Ut Video
V..... v210 Uncompressed 4:2:2 10-bit
V..... v308 Uncompressed packed 4:4:4
V..... v408 Uncompressed packed QT 4:4:4:4
V..... v410 Uncompressed 4:4:4 10-bit
V..... libvpx libvpx VP8 (codec vp8)
V..... libvpx-vp9 libvpx VP9 (codec vp9)
V..... wmv1 Windows Media Video 7
V..... wmv2 Windows Media Video 8
V..... xbm XBM (X BitMap) image
V..... xface X-face image
V..... xwd XWD (X Window Dump) image
V..... y41p Uncompressed YUV 4:1:1 12-bit
V..... yuv4 Uncompressed packed 4:2:0
V..... zlib LCL (LossLess Codec Library) ZLIB
V..... zmbv Zip Motion Blocks Video
A..X.. aac AAC (Advanced Audio Coding)
A..... libvo_aacenc Android VisualOn AAC (Advanced Audio Coding) (codec aac)
A..... ac3 ATSC A/52A (AC-3)
A..... ac3_fixed ATSC A/52A (AC-3) (codec ac3)
A..... adpcm_adx SEGA CRI ADX ADPCM
A..... g722 G.722 ADPCM (codec adpcm_g722)
A..... g726 G.726 ADPCM (codec adpcm_g726)
A..... adpcm_ima_qt ADPCM IMA QuickTime
A..... adpcm_ima_wav ADPCM IMA WAV
A..... adpcm_ms ADPCM Microsoft
A..... adpcm_swf ADPCM Shockwave Flash
A..... adpcm_yamaha ADPCM Yamaha
A..... alac ALAC (Apple Lossless Audio Codec)
A..... libopencore_amrnb OpenCORE AMR-NB (Adaptive Multi-Rate Narrow-Band) (codec amr_nb)
A..... libvo_amrwbenc Android VisualOn AMR-WB (Adaptive Multi-Rate Wide-Band) (codec amr_wb)
A..... comfortnoise RFC 3389 comfort noise generator
A..X.. dca DCA (DTS Coherent Acoustics) (codec dts)
A..... eac3 ATSC A/52 E-AC-3
A..... flac FLAC (Free Lossless Audio Codec)
A..... g723_1 G.723.1
A..... libgsm libgsm GSM (codec gsm)
A..... libgsm_ms libgsm GSM Microsoft variant (codec gsm_ms)
A..... libilbc iLBC (Internet Low Bitrate Codec) (codec ilbc)
A..... mp2 MP2 (MPEG audio layer 2)
A..... mp2fixed MP2 fixed point (MPEG audio layer 2) (codec mp2)
A..... libtwolame libtwolame MP2 (MPEG audio layer 2) (codec mp2)
A..... libmp3lame libmp3lame MP3 (MPEG audio layer 3) (codec mp3)
A..... nellymoser Nellymoser Asao
A..... libopus libopus Opus (codec opus)
A..... pcm_alaw PCM A-law / G.711 A-law
A..... pcm_f32be PCM 32-bit floating point big-endian
A..... pcm_f32le PCM 32-bit floating point little-endian
A..... pcm_f64be PCM 64-bit floating point big-endian
A..... pcm_f64le PCM 64-bit floating point little-endian
A..... pcm_mulaw PCM mu-law / G.711 mu-law
A..... pcm_s16be PCM signed 16-bit big-endian
A..... pcm_s16be_planar PCM signed 16-bit big-endian planar
A..... pcm_s16le PCM signed 16-bit little-endian
A..... pcm_s16le_planar PCM signed 16-bit little-endian planar
A..... pcm_s24be PCM signed 24-bit big-endian
A..... pcm_s24daud PCM D-Cinema audio signed 24-bit
A..... pcm_s24le PCM signed 24-bit little-endian
A..... pcm_s24le_planar PCM signed 24-bit little-endian planar
A..... pcm_s32be PCM signed 32-bit big-endian
A..... pcm_s32le PCM signed 32-bit little-endian
A..... pcm_s32le_planar PCM signed 32-bit little-endian planar
A..... pcm_s8 PCM signed 8-bit
A..... pcm_s8_planar PCM signed 8-bit planar
A..... pcm_u16be PCM unsigned 16-bit big-endian
A..... pcm_u16le PCM unsigned 16-bit little-endian
A..... pcm_u24be PCM unsigned 24-bit big-endian
A..... pcm_u24le PCM unsigned 24-bit little-endian
A..... pcm_u32be PCM unsigned 32-bit big-endian
A..... pcm_u32le PCM unsigned 32-bit little-endian
A..... pcm_u8 PCM unsigned 8-bit
A..... real_144 RealAudio 1.0 (14.4K) (codec ra_144)
A..... roq_dpcm id RoQ DPCM
A..X.. s302m SMPTE 302M
A..X.. sonic Sonic
A..X.. sonicls Sonic lossless
A..... libspeex libspeex Speex (codec speex)
A..... tta TTA (True Audio)
A..X.. vorbis Vorbis
A..... libvorbis libvorbis (codec vorbis)
A..... wavpack WavPack
A..... libwavpack (codec wavpack)
A..... wmav1 Windows Media Audio 1
A..... wmav2 Windows Media Audio 2
S..... ass ASS (Advanced SubStation Alpha) subtitle
S..... dvbsub DVB subtitles (codec dvb_subtitle)
S..... dvdsub DVD subtitles (codec dvd_subtitle)
S..... mov_text 3GPP Timed Text subtitle
S..... srt SubRip subtitle with embedded timing
S..... ssa SSA (SubStation Alpha) subtitle
S..... subrip SubRip subtitle
S..... xsub DivX subtitles (XSUB)
第四,实例详解FFmpeg视频转换的参数设置方法
例如:ffmpeg -y -i "test.MP4" -title "Test" -vcodec xvid -s 1920*1080 -r 30 - b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "test.***"
# 参数解释:
-y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了)
-i "1.MP4"(输入文件是和ffmpeg在同一目录下的1.MP4文件,可以自己加路径,改名字)
-title "Test"(在PSP中显示的影片的标题)
-vcodec xvid(使用XVID编码压缩视频,不能改的)
-s 1920*1080(输出的分辨率为1920*1080,注意片源一定要是16:9的不然会变形)
-r 30(帧数,一般就用这个吧)
-b 1500(视频数据流量,用-b xxxx的指令则使用固定码率,数字随便改,1500以上没效果;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高)
-acodec aac(音频编码用AAC)
-ac 2(声道数1或2)
-ar 24000(声音的采样频率,好像PSP只能支持24000Hz)
-ab 128(音频数据流量,一般选择32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(输出psp专用格式)
-muxvb 768(好像是给PSP机器识别的码率,一般选择384、512和768,我改成1500,PSP就说文件损坏了)
"test.***"(输出文件名,也可以加路径改文件名)
第五,不同格式之间的相互转换
◆将任意视频格式(如MP4)转换成视频格式(如MPEG1)+音频格式(AC3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mpeg1video –s 1920*1080 –r 60 -acodec ac3 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][MPEG1]_Audio[ac3].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如MPEG2)+音频格式(DTS)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mpeg2video –s 1920*1080 –r 60 -acodec dca -strict -2 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][MPEG2]_Audio[DTS].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如MPEG2)+音频格式(PCM)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mpeg2video –s 1920*1080 –r 60 -acodec pcm_alaw E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][MPEG2]_Audio[PCM].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如MPEG4)+音频格式(MP3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mpeg4 –s 1920*1080 –r 60 -acodec dlibmp3lame E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][MPEG4]_Audio[ac3].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如MJPEG)+音频格式(MP2)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mjpeg –s 1920*1080 –r 60 -acodec mp2 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][ MJPEG]_Audio[MP2].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如DivX5)+音频格式(DTS)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][DIVX5]_Audio[AC3].MP4 –s 1920*1080 –r 60 -acodec dca -strict -2 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][DIVX5]_Audio[dts].MP4
◆将任意视频格式(如MP4)转换成视频格式(如H.263)+音频格式(AC3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec h263p -s 720x480 -acodec ac3 E:\FormatTransfer_Tools\ffmpeg\bin\Video[720x480][60fps][h263]_Audio[ac3].MP4
◆将任意视频格式(如MP4)转换成视频格式(如H.264)+音频格式(AAC)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec libx264rgb –s 1920*1080 -r 30 -acodec libvo_aacenc E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][30fps][h264]_Audio[aac].3gp
◆将任意视频格式(如MP4)转换成视频格式(如Sorenson_Spark)+音频格式(MP3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec flv –s 1920*1080 –r 60 -acodec libmp3lame E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][Sorenson_Spark]_Audio[MP3].MP4
◆将任意视频格式(如MP4)转换成视频格式(如WMV3)+音频格式(WMA)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec wmv3image –s 1920*1080 –r 60 -acodec wmav1 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][WMV3]_Audio[wma1].MP4
◆将任意视频格式(如MP4)转换成视频格式(如XviD)+音频格式(AC3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec libxvid –s 1920*1080 –r 60 -acodec ac3 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][XviD]_Audio[AC3_fixed].MP4
◆将任意视频格式(如MP4)转换成视频格式(如RV)+音频格式(AAC)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec rv10 -s 1280x720 -acodec libvo_aacenc E:\FormatTransfer_Tools\ffmpeg\bin\Video[1280x720][60fps][RV10]_Audio[aac].MP4
◆将任意视频格式(如MP4)转换成视频格式(如H.264)+分辨率为4k的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec libx264rgb -s 4096x2304 -r 30 -acodec libmp3lame E:\FormatTransfer_Tools\ffmpeg\bin\Video[4096x2304][30fps][h264]_Audio[mp3].avi
总结关注+私信免费领取一份99的视频学习资料哦
相关推荐
- 前端入门——css 网格轨道详细介绍
-
上篇前端入门——cssGrid网格基础知识整体大概介绍了cssgrid的基本概念及使用方法,本文将介绍创建网格容器时会发生什么?以及在网格容器上使用行、列属性如何定位元素。在本文中,将介绍:...
- Islands Architecture(孤岛架构)在携程新版首页的实践
-
一、项目背景2022,携程PC版首页终于迎来了首次改版,完成了用户体验与技术栈的全面升级。作为与用户连接的重要入口,旧版PC首页已经陪伴携程走过了22年,承担着重要使命的同时,也遇到了很多问题:维护/...
- HTML中script标签中的那些属性
-
HTML中的<script>标签详解在HTML中,<script>标签用于包含或引用JavaScript代码,是前端开发中不可或缺的一部分。通过合理使用<scrip...
- CSS 中各种居中你真的玩明白了么
-
页面布局中最常见的需求就是元素或者文字居中了,但是根据场景的不同,居中也有简单到复杂各种不同的实现方式,本篇就带大家一起了解下,各种场景下,该如何使用CSS实现居中前言页面布局中最常见的需求就是元...
- CSS样式更改——列表、表格和轮廓
-
上篇文章主要介绍了CSS样式更改篇中的字体设置Font&边框Border设置,这篇文章分享列表、表格和轮廓,一起来看看吧。1.列表List1).列表的类型<ulstyle='list-...
- 一文吃透 CSS Flex 布局
-
原文链接:一文吃透CSSFlex布局教学游戏这里有两个小游戏,可用来练习flex布局。塔防游戏送小青蛙回家Flexbox概述Flexbox布局也叫Flex布局,弹性盒子布局。它决定了...
- css实现多行文本的展开收起
-
背景在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景:那么,如何通过纯css实现这样的效果呢?实现的难点(1)位于多行文本右下角的展开收起按钮。(2)展开和收起两种状态的切换。(3)文本...
- css 垂直居中的几种实现方式
-
前言设计是带有主观色彩的,同样网页设计中的css一样让人摸不头脑。网上列举的实现方式一大把,或许在这里你都看到过,但既然来到这里我希望这篇能让你看有所收获,毕竟这也是前端面试的基础。实现方式备注:...
- WordPress固定链接设置
-
WordPress设置里的最后一项就是固定链接设置,固定链接设置是决定WordPress文章及静态页面URL的重要步骤,从站点的SEO角度来讲也是。固定链接设置决定网站URL,当页面数少的时候,可以一...
- 面试发愁!吃透 20 道 CSS 核心题,大厂 Offer 轻松拿
-
前端小伙伴们,是不是一想到面试里的CSS布局题就发愁?写代码时布局总是对不齐,面试官追问兼容性就卡壳,想跳槽却总被“多列等高”“响应式布局”这些问题难住——别担心!从今天起,咱们每天拆解一...
- 3种CSS清除浮动的方法
-
今天这篇文章给大家介绍3种CSS清除浮动的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。首先,这里就不讲为什么我们要清楚浮动,反正不清除浮动事多多。下面我就讲3种常用清除浮动的...
- 2025 年 CSS 终于要支持强大的自定义函数了?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1.什么是CSS自定义属性CSS自...
- css3属性(transform)的一个css3动画小应用
-
闲言碎语不多讲,咱们说说css3的transform属性:先上效果:效果说明:当鼠标移到a标签的时候,从右上角滑出二维码。实现方法:HTML代码如下:需要说明的一点是,a链接的跳转需要用javasc...
- CSS基础知识(七)CSS背景
-
一、CSS背景属性1.背景颜色(background-color)属性值:transparent(透明的)或color(颜色)2.背景图片(background-image)属性值:none(没有)...
- CSS 水平居中方式二
-
<divid="parent"><!--定义子级元素--><divid="child">居中布局</div>...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)