音视频八股文(3)--ffmpeg常见命令(2)

news2024/12/23 15:32:31

07-ffplay命令播放媒体

播放本地文件

  • 播放本地 MP4 视频文件 test.mp4 的命令,从第 2 秒位置开始播放,播放时长为 10 秒,并且在窗口标题中显示 “test time”:
ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4
  • 播放本地 MP3 音频文件 buweishui.mp3 的命令:
ffplay buweishui.mp3

播放网络流

  • 播放网络 RTMP 流的命令,使用 -window_title 参数设置窗口标题为 “rtmp stream”,并指定流地址为 rtmp://202.69.69.180:443/webcast/bshdlive-pc
ffplay -window_title "rtmp stream" rtmp://202.69.69.180:443/webcast/bshdlive-pc

强制解码器

  • 使用 MPEG-4 解码器播放 test.mp4 视频文件:
ffplay -vcodec mpeg4 test.mp4
  • 使用 H.264 解码器播放 test.mp4 视频文件:
ffplay -vcodec h264 test.mp4

这里主要是为了区分两个不同的解码器而使用了 -vcodec 参数,并将其值设为 mpeg4h264

禁用音频或视频

  • 禁用视频播放,只播放音频:
ffplay test.mp4 -vn
  • 禁用音频播放,只播放视频:
ffplay test.mp4 -an

在这里,我们使用了 -vn 参数来禁止播放视频,只播放音频,或者使用 -an 参数来禁止播放音频,只播放视频。

播放YUV数据

  • 播放 YUV 数据文件 yuv420p_320x240.yuv,指定像素格式为 yuv420p,视频大小为 320x240,帧率为 5:
ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv

播放RGB数据

  • 播放 RGB 数据文件 rgb24_320x240.rgb,指定像素格式为 rgb24,视频大小为 320x240:
ffplay -pixel_format rgb24 -video_size 320x240 -i rgb24_320x240.rgb
  • 播放 RGB 数据文件 rgb24_320x240.rgb,指定像素格式为 rgb24,视频大小为 320x240,帧率为 5:
ffplay -pixel_format rgb24 -video_size 320x240 -framerate 5 -i rgb24_320x240.rgb

播放PCM数据

  • 播放 PCM 数据文件 48000_2_f32le.pcm,指定采样率为 48000 Hz,声道数为 2,格式为 32 位浮点型:
ffplay -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm

-ar set audio sampling rate (in Hz) (from 0 to INT_MAX) (default 0)
-ac set number of audio channels (from 0 to INT_MAX) (default 0)

08-ffplay简单过滤器

视频旋转

  • 旋转 test.mp4 视频文件,将它逆时针旋转 90 度并播放:
ffplay -i test.mp4 -vf transpose=1

视频反转

  • 水平翻转 test.mp4 视频文件并播放:
ffplay test.mp4 -vf hflip
  • 垂直翻转 test.mp4 视频文件并播放:
ffplay test.mp4 -vf vflip

视频旋转和反转

  • 先水平翻转,再逆时针旋转 90 度播放 test.mp4 视频文件:
ffplay test.mp4 -vf hflip,transpose=1

这里我们使用了 -vf 参数,指定了两个视频滤镜,先对视频进行水平翻转,再进行逆时针旋转 90 度。

音频变速播放

  • test.mp4 视频文件中的音频进行变速播放,加快倍速为原来的 2 倍:
ffplay -i test.mp4 -af atempo=2

这里我们使用了 -af 参数,指定了一个音频滤镜 atempo=2,表示将音频加快倍速为原来的 2 倍。

视频变速播放

  • test.mp4 视频文件进行变速播放,加快倍速为原来的 2 倍:
ffplay -i test.mp4 -vf setpts=PTS/2

这里我们使用了 -vf 参数,指定了一个视频滤镜 setpts=PTS/2,表示将视频加快倍速为原来的 2 倍。

音视频同时变速

  • test.mp4 视频文件中的音频和视频同时进行变速播放,加快倍速为原来的 2 倍:
ffplay -i test.mp4 -vf setpts=PTS/2 -af atempo=2

这里我们使用了 -vf 参数指定了一个视频滤镜 setpts=PTS/2,将视频加快倍速为原来的 2 倍,同时使用了 -af 参数指定了一个音频滤镜 atempo=2,将音频加快倍速为原来的 2 倍。

更多参考

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

09-ffmpeg命令参数说明

主要参数

● -i 设定输入流
● -f 设定输出格式(format)
● -ss 开始时间
● -t 时间长度

音频参数

● -aframes 设置要输出的音频帧数
● -b:a 音频码率
● -ar 设定采样率
● -ac 设定声音的Channel数
● -acodec 设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。
● -an 不处理音频
● -af 音频过滤器
ffmpeg -i test.mp4 -b:a 192k -ar 48000 -ac 2 -acodec libmp3lame -aframes 200 out2.mp3

视频参数

● -vframes 设置要输出的视频帧数
● -b 设定视频码率
● -b:v 视频码率
● -r 设定帧速率
● -s 设定画面的宽与高
● -vn 不处理视频
● -aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
● -vcodec 设定视频编解码器,如果用copy表示原始编解码数据必须被拷贝。
● -vf 视频过滤器

  • test.mp4 视频文件转换为 H.265 编码格式的视频文件,并进行参数设置,输出视频文件的帧数为 300,视频码率为 300 kbps,帧率为 30 fps,分辨率为 640x480(宽高比为 16:9):
ffmpeg -i test.mp4 -vframes 300 -b:v 300k -r 30 -s 640x480 -aspect 16:9 -vcodec libx265 output.mp4

在这个命令中,我们使用 -i 参数指定了输入文件为 test.mp4,并使用了 -vcodec 参数将输出的视频编码格式设置为 H.265。同时还使用了 -vframes-b:v-r-s-aspect 等参数来对输出视频进行了多种设置,以确保输出文件满足我们的需求。最后,我们将输出文件命名为 output.mp4

10-ffmpeg命令提取音视频数据

保留封装格式

  • test.mp4 视频文件中的音频流提取出来,保留原始编码格式,并输出到 audio.mp4 文件中:
ffmpeg -i test.mp4 -acodec copy -vn audio.mp4
  • test.mp4 视频文件中的视频流提取出来,保留原始编码格式,并输出到 video.mp4 文件中:
ffmpeg -i test.mp4 -vcodec copy -an video.mp4

这里我们使用了 -acodec 参数和 -vcodec 参数分别对音频流和视频流进行了原始编码格式的复制,并将其分别输出到 audio.mp4video.mp4 文件中。由于保留了原始编码格式,因此输出文件的封装格式与输入文件相同。同时,在第一个命令中使用了 -vn 参数指定只输出音频流,而在第二个命令中使用了 -an 参数指定只输出视频流。

提取视频

  • test.mp4 视频文件中提取视频流,并保留原始编码格式,输出为 H.264 编码格式的文件 test_copy.h264
ffmpeg -i test.mp4 -vcodec copy -an test_copy.h264
  • test.mp4 视频文件中提取视频流,并将其强制转换为 H.264 编码格式,输出为文件 test.h264
ffmpeg -i test.mp4 -vcodec libx264 -an test.h264

这里我们使用了 -vcodec 参数分别对视频流进行了编码格式的指定。在第一个命令中,我们保留了原始编码格式,并直接将视频流复制到输出文件中;而在第二个命令中,我们强制将视频流转换为 H.264 编码格式。同时,在第二个命令中还省略了音频部分,使用了 -an 参数。

提取音频

  • test.mp4 视频文件中提取音频流,并保留原始编码格式,输出为 AAC 编码格式的文件 test.aac
ffmpeg -i test.mp4 -acodec copy -vn test.aac
  • test.mp4 视频文件中提取音频流,并将其强制转换为 MP3 编码格式,输出为文件 test.mp3
ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp3

这里我们使用了 -acodec 参数分别对音频流进行了编码格式的指定。在第一个命令中,我们保留了原始编码格式,并直接将音频流复制到输出文件中;而在第二个命令中,我们强制将音频流转换为 MP3 编码格式。同时,在第二个命令中还省略了视频部分,使用了 -vn 参数。

11 提取像素格式和PCM数据

提取像素格式

提取YUV

  • test_1280x720.mp4 视频文件中提取前 3 秒的视频数据,并输出为 YUV 格式文件 yuv420p_orig.yuv,分辨率与源视频相同(默认为 1280x720):
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv
  • test_1280x720.mp4 视频文件中提取前 3 秒的视频数据,并输出为 YUV 格式文件 yuv420p_320x240.yuv,同时将输出分辨率设置为 320x240:
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv

这里我们使用了 -t 参数指定只抽取前 3 秒的数据,使用了 -pix_fmt 参数指定了输出文件的像素格式为 yuv420p,同时在第二个命令中使用了 -s 参数指定了输出文件的分辨率为 320x240。

提取RGB

  • test.mp4 视频文件中提取前 3 秒的视频数据,并输出为 RGB 格式文件 rgb24_320x240.rgb,同时将输出分辨率设置为 320x240:
ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb
  • 将之前生成的 YUV 格式文件 yuv420p_320x240.yuv 转换成 RGB 格式文件 rgb24_320x240_2.rgb,分辨率为 320x240:
ffmpeg -s 320x240 -pix_fmt yuv420p -i yuv420p_320x240.yuv -pix_fmt rgb24 rgb24_320x240_2.rgb

这里我们使用了 -t 参数指定只抽取前 3 秒的数据,在第一个命令中使用了 -pix_fmt 参数指定了输出文件的像素格式为 rgb24,同时在两个命令中都使用了 -s 参数指定了输出文件的分辨率。在第二个命令中,我们将之前生成的 YUV 格式文件通过 -pix_fmt 参数转换成了 RGB 格式文件。

提取PCM数据

  • 从音频文件 buweishui.mp3 中提取 PCM 格式的音频数据,采样率为 48000 Hz,声道数为 2,采样格式为 signed 16-bit little-endian,并输出为文件 48000_2_s16le.pcm
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le -acodec pcm_s16le 48000_2_s16le.pcm
  • 将音频文件 buweishui.mp3 转换为带有 signed 16-bit 采样格式的 WAV 音频文件 out_s16.wav,采样率为 48000 Hz,声道数为 2:
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wav
  • 将音频文件 buweishui.mp3 转换为 PCM 格式的 WAV 音频文件 out2_s16le.wav,采样率为 48000 Hz,声道数为 2,采样格式为 signed 16-bit little-endian:
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -codec:a pcm_s16le out2_s16le.wav
  • 从音频文件 buweishui.mp3 中提取 PCM 格式的音频数据,采样率为 48000 Hz,声道数为 2,采样格式为 float 32-bit little-endian,并输出为文件 48000_2_f32le.pcm
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f f32le -acodec pcm_f32le 48000_2_f32le.pcm
  • 从视频文件 test.mp4 中提取前 10 秒的音频数据,采样率为 48000 Hz,声道数为 2,采样格式为 float 32-bit little-endian,并输出为文件 48000_2_f32le_2.pcm
ffmpeg -i test.mp4 -t 10 -vn -ar 48000 -ac 2 -f f32le -acodec pcm_f32le 48000_2_f32le_2.pcm

这里我们使用了 -ar 参数、-ac 参数和 -f 参数分别对采样率、声道数和采样格式进行了指定。同时,我们在第一、四、五条命令中使用 -acodec 参数指定输出文件的音频编解码器。在第二和第三条命令中,我们将输出文件的格式设置为 WAV,并使用 -sample_fmt 参数指定其采样格式。

12-ffmpeg命令转封装

保持编码格式

  • 将视频文件 test.mp4 中的视频数据和音频数据分别以原始编码格式拷贝到输出文件 test_copy.ts 中:
ffmpeg -i test.mp4 -vcodec copy -acodec copy test_copy.ts
  • 将视频文件 test.mp4 中的视频数据和音频数据以原始编码格式拷贝到输出文件 test_copy2.ts 中:
ffmpeg -i test.mp4 -codec copy test_copy2.ts

这里我们使用了 -vcodec 参数和 -acodec 参数分别指定视频流和音频流的编码器为原始编码格式,并使用了 copy 关键字将其直接拷贝到输出文件中。在第二个命令中,我们使用 -codec 参数同时对视频流和音频流指定了原始编码格式。

改变编码格式

  • 将视频文件 test.mp4 中的视频数据转换为 H.265 编码格式,音频数据转换为 MP3 格式,并将其保存为 Matroska 文件 out_h265_mp3.mkv
ffmpeg -i test.mp4 -c:v libx265 -c:a libmp3lame out_h265_mp3.mkv

这里我们使用了 -c:v 参数和 -c:a 参数分别指定视频流和音频流的编码器为 libx265 和 libmp3lame。

修改帧率

  • 将视频文件 test.mp4 中的帧率改为 15 fps,并将修改后的视频数据拷贝到输出文件 output.mp4 中(注意:此命令不正确,因为 -codec copy 参数会禁止重新编码视频流,但改变帧率需要重新编码视频流):
ffmpeg -i test.mp4 -r 15 -codec copy output.mp4 (错误命令)
  • 将视频文件 test.mp4 中的帧率改为 15 fps,并重新编码输出为视频文件 output2.mp4
ffmpeg -i test.mp4 -r 15 output2.mp4

这里我们使用了 -r 参数指定输出视频的帧率为 15 fps。在第一个命令中,由于加入了 -codec copy 参数导致视频流没有被重新编码,因此无法对帧率进行修改。在第二个命令中,我们删除了 -codec copy 参数并在输出文件名中指定了新的文件名。由于重新编码视频流需要消耗大量的计算资源和时间,因此在使用 -r 参数时应该谨慎考虑是否有必要重新编码视频流。

修改视频码率

  • 将视频文件 test.mp4 中的视频码率限制为 400kpbs,并重新编码音视频数据保存为 Matroska 文件 output_b.mkv
ffmpeg -i test.mp4 -b:v 400k output_b.mkv  (此时音频也被重新编码)

这里我们使用了 -b:v 参数指定输出视频流的比特率为 400kpbs,由于没有使用 -b:a 参数指定音频流的比特率,因此默认情况下音频流也会被重新编码。在实际应用中,可以通过设置不同的比特率来平衡视频质量和文件大小之间的关系。需要注意的是,修改视频码率会导致视频质量的损失,因此应该根据具体需求谨慎调整。

修改视频码率

  • 将视频文件 test.mp4 中的视频码率限制为 400kpbs,并不重新编码音频数据,将编码后的音频数据和原始视频流混合保存为 Matroska 文件 output_bv.mkv
ffmpeg -i test.mp4 -b:v 400k -c:a copy output_bv.mkv

这里我们使用了 -b:v 参数指定输出视频流的比特率为 400kpbs,并使用 -c:a copy 参数直接将原始音频流拷贝到输出文件中。由于没有重新编码音频流,因此无需消耗大量计算资源和时间,同时也避免了音频质量的损失。

修改音频码率

  • 将视频文件 test.mp4 中的音频码率限制为 192kpbs,并重新编码音频数据,将编码后的音频数据和原始视频流混合保存为 MP4 文件 output_ba.mp4
ffmpeg -i test.mp4 -b:a 192k output_ba.mp4

这里我们使用了 -b:a 参数指定输出音频流的比特率为 192kpbs,由于没有加入 -vcodec copy 参数禁止重新编码视频流,因此会自动重新编码音频流。需要注意的是,重新编码音频流可能会导致音频质量的损失,因此应该根据具体需求谨慎调整。

如果不想重新编码video,需要加上-vcodec copy

修改音视频码率

  • 将视频文件 test.mp4 中的视频码率限制为 400kpbs,音频码率限制为 192kpbs,并分别重新编码视频数据和音频数据,将编码后的音视频数据混合保存为 MP4 文件 output_bva.mp4
ffmpeg -i test.mp4 -b:v 400k -b:a 192k output_bva.mp4

这里我们使用了 -b:v 参数和 -b:a 参数分别指定输出视频流和音频流的比特率,同时由于没有加入 -vcodec copy-c:a copy 参数禁止直接拷贝原始数据,因此会自动重新编码音视频数据。需要注意的是,重新编码音视频数据可能会导致视频和音频质量的损失,因此应该根据具体需求谨慎调整。

修改视频分辨率

  • 将视频文件 test.mp4 中的分辨率限制为 480x270,并重新编码视频数据保存为 MP4 文件 output_480x270.mp4
ffmpeg -i test.mp4 -s 480x270 output_480x270.mp4

这里我们使用了 -s 参数指定输出视频流的分辨率为 480x270,由于修改分辨率需要重新编码视频流,因此会自动重新编码视频数据。需要注意的是,重新编码视频数据可能会导致视频质量的损失,同时也会消耗大量计算资源和时间,因此应该根据具体需求谨慎调整。

修改音频采样率:

  • 将视频文件 test.mp4 中的音频采样率修改为 44100Hz,并重新编码音频数据保存为 MP4 文件 output_44100hz.mp4
ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp4

这里我们使用了 -ar 参数指定输出音频流的采样率为 44100Hz,由于修改采样率需要重新编码音频流,因此会自动重新编码音频数据。需要注意的是,重新编码音频数据可能会导致音频质量的损失,同时也会消耗大量计算资源和时间,因此应该根据具体需求谨慎调整。

13-ffmpeg命令过滤器

生成测试文件

找三个不同的视频每个视频截取10秒内容

ffmpeg -i 沙海02.mp4 -ss 00:05:00 -t 10 -codec copy 1.mp4
ffmpeg -i 复仇者联盟3.mp4 -ss 00:05:00 -t 10 -codec copy 2.mp4
ffmpeg -i 红海行动.mp4 -ss 00:05:00 -t 10 -codec copy 3.mp4

如果音视频格式不统一则强制统一为 -vcodec libx264 -acodec aac

将上述1.mp4/2.mp4/3.mp4转成ts格式

ffmpeg -i 1.mp4 -codec copy -vbsf h264_mp4toannexb 1.ts
ffmpeg -i 2.mp4 -codec copy -vbsf h264_mp4toannexb 2.ts
ffmpeg -i 3.mp4 -codec copy -vbsf h264_mp4toannexb 3.ts

转成flv格式

ffmpeg -i 1.mp4 -codec copy 1.flv
ffmpeg -i 2.mp4 -codec copy 2.flv
ffmpeg -i 3.mp4 -codec copy 3.flv

开始拼接文件

以MP4格式进行拼接

方法1:ffmpeg -i “concat:1.mp4|2.mp4|3.mp4” -codec copy out_mp4.mp4
方法2:ffmpeg -f concat -i mp4list.txt-codec copy out_mp42.mp4

以TS格式进行拼接

方法1:ffmpeg -i “concat:1.ts|2.ts|3.ts” -codec copy out_ts.mp4
方法2:ffmpeg -f concat -i tslist.txt -codec copy out_ts2.mp4

以FLV格式进行拼接

方法1:ffmpeg -i “concat:1.flv|2.flv|3.flv” -codec copy out_flv.mp4
方法2:ffmpeg -f concat -i flvlist.txt -codec copy out_flv2.mp4

方法1只适用部分封装格式,比如TS
建议:
(1)使用方法2进行拼接
(2)转成TS格式再进行拼接

测试不同编码拼接

修改音频编码

● ffmpeg -i 2.mp4 -vcodeccopy -acodec ac3 -vbsfh264_mp4toannexb 2.ts
● ffmpeg -i “concat:1.ts|2.ts|3.ts” -codec copy out1.mp4 结果第二段没有声音

修改音频采样率

● ffmpeg -i 2.mp4 -vcodec copy -acodec aac -ar 96000 -vbsf h264_mp4toannexb 2.ts
● ffmpeg -i “concat:1.ts|2.ts|3.ts” -codec copy out2.mp4 第二段播放异常

修改视频编码格式

ffmpeg -i 1.mp4 -acodec copy -vcodec libx265 1.ts
ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out3.mp4 

修改视频分辨率

ffmpeg -i 1.mp4 -acodec copy -vcodec libx264 -s 800x472 -vbsfh264_mp4toannexb 1.ts
ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out4.mp4 

注意:
● 把每个视频封装格式也统一为ts,拼接输出的时候再输出你需要的封装格式,比如MP4
● 视频分辨率可以不同,但是编码格式需要统一
● 音频编码格式需要统一,音频参数(采样率/声道等)也需要统一

14-fmpeg命令图片与视频互转

截取一张图片

ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.jpg
ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.bmp

参数说明:
● -i 输入
● -y 覆盖
● -f 格式 image2 一种格式
● -ss 起始值
● -vframes 帧 如果大于1 那么 输出加%03d test%03d.jpg
● -s 格式大小size

转换视频为图片(每帧一张图):

ffmpeg -i test.mp4 -t 5 -s 640x360 -r 15frame%03d.jpg  

图片转换为视频:

ffmpeg -f image2 -i frame%03d.jpg-r 25 video.mp4

从视频中生成GIF图片

ffmpeg -i test.mp4 -t 5 -r1  image1.gif
ffmpeg -i test.mp4 -t 5 -r 25 -s 640x360  image2.gif

将 GIF 转化为 视频

ffmpeg -f gif -i image2.gif image2.mp4

15-ffmpeg命令视频录制

ffmpeg命令视频录制(Windows)

先安装dshow软件Screen Capturer Recorder
● 项目地址:https://sourceforge.net/projects/screencapturer/files/
● 然后查看可用设备名字:ffmpeg -list_devices true -f dshow -i dummy
[dshow @ 0509d6c0] DirectShow video devices (some may be both video and audio devices)
[dshow @ 0509d6c0] “Integrated Webcam” //笔记本摄像头
[dshow @ 0509d6c0] Alternative name “@device_pnp_\?\usb#vid_0bda&pid_5689&mi_00#6&233dd6c7&0&0000#{65e8773d-8f56-11
d0-a3b9-00a0c9223196}\global”
[dshow @ 0509d6c0] “e2eSoft VCam”
[dshow @ 0509d6c0] Alternative name “@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\e2eSoft VCam”
[dshow @ 0509d6c0] “screen-capture-recorder”
[dshow @ 0509d6c0] Alternative name “@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}{4EA6930A-2C8A-4AE6-A561-56E4
B5044439}”
[dshow @ 0509d6c0] DirectShow audio devices
[dshow @ 0509d6c0] “楹﹀厠椋?(Realtek Audio)”
[dshow @ 0509d6c0] Alternative name “@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{8B8892E5-D3E5-47EC-8B5E
-CEEBF54014E7}”
[dshow @ 0509d6c0] “virtual-audio-capturer”
[dshow @ 0509d6c0] Alternative name “@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}{8E14549B-DB61-4309-AFA1-3578
E927E935}”
dummy: Immediate exit requested

如果出现乱码的时候在命令行输入:chcp 65001

在这里插入图片描述
chcp 就是change code page
65001是unicode字符集 支持中文

音视频录制

录制视频(默认参数)

● 桌面:ffmpeg -f dshow -i video=“screen-capture-recorder” v-out.mp4
● 摄像头: ffmpeg -f dshow -i video=“Integrated Webcam” -y v-out2.flv (要根据自己摄像头名称)

录制声音(默认参数)

● 系统声音:ffmpeg -f dshow -i audio=“virtual-audio-capturer” a-out.aac
● 系统+麦克风声音:ffmpeg -f dshow -i audio=“麦克风 (Realtek Audio)”-f dshow -i audio=“virtual-audio-capturer” -filter_complex amix=inputs=2:duration=first:dropout_transition=2 a-out2.aac

同时录制声音和视频(默认参数)

 ffmpeg -f dshow -i audio="麦克风(Realtek Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow -i video="screen-capture-recorder"  -y av-out.flv

查看视频录制的可选参数

查看视频录制的可选参数

ffmpeg -f dshow -list_options true -i video="screen-capture-recorder"

[dshow @ 02f0d6c0] DirectShow video device options (from video devices)
[dshow @ 02f0d6c0] Pin “Capture” (alternative pin name “1”)
[dshow @ 02f0d6c0] pixel_format=bgr0 min s=1x1 fps=0.02 max s=1920x1080 fps=30
[dshow @ 02f0d6c0] pixel_format=bgr0 min s=1x1 fps=0.02 max s=1920x1080 fps=30
[dshow @ 02f0d6c0] pixel_format=bgr24 min s=1x1 fps=0.02 max s=1920x1080 fps=30
[dshow @ 02f0d6c0] pixel_format=rgb555le min s=1x1 fps=0.02 max s=1920x1080 fps=30
[dshow @ 02f0d6c0] pixel_format=rgb555le min s=1x1 fps=0.02 max s=1920x1080 fps=30
[dshow @ 02f0d6c0] pixel_format=rgb8 min s=1x1 fps=0.02 max s=1920x1080 fps=30
[dshow @ 02f0d6c0] pixel_format=yuv420p min s=1x1 fps=0.02 max s=1920x1080 fps=30

查看音频录制的可选参数

ffmpeg -f dshow-list_optionstrue -i audio="virtual-audio-capturer"

[dshow @ 05a2d6c0] DirectShow audio only device options (from audio devices)
[dshow @ 05a2d6c0] Pin “Capture Virtual Audio Pin” (alternative pin name “1”)
[dshow @ 05a2d6c0] min ch=2 bits=16 rate= 48000 max ch=2 bits=16 rate= 48000

ffmpeg -f dshow -list_options true -i audio="麦克风 (Realtek Audio)"

指定参数录制音视频

ffmpeg -f dshow -i audio="麦克风(Realtek Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -fdshow -video_size1920x1080 -framerate 15 -pixel_format yuv420p  -i video="screen-capture-recorder" -vcodec h264_qsv  -b:v 3M  -y av-out.flv
ffmpeg -fdshow -i audio="麦克风(Realtek Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow -i video="screen-capture-recorder" -vcodec h264_qsv  -b:v 3M-r 15 -y av-out2.mp4
ffmpeg -fdshow -i audio="麦克风(Realtek Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow-framerate 15 -pixel_format yuv420p -i video="screen-capture-recorder" -vcodec h264_qsv  -b:v 3M-r 15 -y av-out3.mp4

桌面+摄像头+麦克风

ffmpeg  -f dshow -framerate 15 -i video="screen-capture-recorder"  -f dshow -framerate 10 -i video="Integrated Webcam"  -filter_complex "[1]scale=iw/2:ih/2[pip];[0][pip]overlay=main_w-overlay_w-10:main_h-overlay_h-10" -f dshow -i audio="麦克风 (Realtek Audio)" -c:a aac -c:v h264_qsv -r 10 -b 3M -f flv  rtmp://111.229.231.225/live/33

rtp推流

先用ffplay检测摄像头是否正常,比如:

ffplay -f dshow -i video="USB2.0 PC CAMERA"

推流:ffmpeg -f dshow -i video=“USB2.0 PC CAMERA” -vcodec libx264 -f rtp rtp://192.168.2.208:6970 > test.sdp

拉流:ffplay -protocol_whitelist “file,udp,rtp” -i test.sdp

16-ffmpeg命令直播

直播拉流

ffplay rtmp://server/live/streamName 
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

对于不是rtmp的协议 -c copy要谨慎使用

可用地址现在已经找不到了

ffmpeg推流

直播推流

ffmpeg -re -i out.mp4 -c copy flvrtmp://server/live/streamName
  参数:-re,表示按时间戳读取文件

参考:Nginx搭建rtmp流媒体服务器(Ubuntu 16.04)
https://www.jianshu.com/p/16741e363a77

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/449395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[计算机图形学]辐射度量学、渲染方程与全局光照(前瞻预习/复习回顾)

一、前言 我们前面讲到的Blinn-Phong着色,Whitted-Style光线追踪都有一定问题,那就是它们并没有严格的按照物理规则定义各个变量。比如,Blinn-Phong中的光的强度,并没有一个确切的单位。同时Whitted-Style光线追踪我们也做了很多简…

二十分钟深入详解<二叉搜索树>!!!

目录 前文 一,什么是二叉搜索树? 1.1 二叉搜索树的概念 二, 二叉搜索树的常用操作及其实现 2.1 查找 2.2 插入 2.3 删除 三,二叉搜索树的应用 3.1 K模型 3.2 KV模型 四,二叉搜索树的性能分析 五,…

SolidWorks建模|渲染装饰件

使用SOLIDWORKS软件建模是许多工程师的选择,对于SOLIDWORKS渲染,也有很多问题,接下来,我们就用SOLIDWORKS建模渲染装饰件的例子来讲解。 1.点击“插入”-“曲面”-“拉伸曲面”,选择上视基准面作为草绘平面&#xff0…

CC2564CRVMR无线音频解决方案、ADE9000ACPZ模拟前端 (AFE) 电路图【MX66L2G45GXRI00 2Gb】FLASH - NOR

CC2564CRVMR 双模蓝牙控制器是一个完整的Bluetooth BR、EDR和低能耗HCI解决方案,可减少设计工作量并缩短上市时间。CC2564C器件基于TI的第七代蓝牙内核,提供符合蓝牙4.2标准的产品验证解决方案。当与微控制器单元 (MCU) 耦合时,该HCI器件具有…

Unity与Andriod交互错误合集

一、无法调用安卓中的方法no non-static method with name‘’ 报错如下,。在保证代码中的方法名没有问题,并且调用的方法名的返回值和传递的参数等都没有问题的情况下, 第一、查看在Unity项目中jar包存放的位置是否正确,需要放在…

LeetCode算法小抄 -- 经典图论算法 之 并查集算法

LeetCode算法小抄 -- 经典图论算法 之 并查集算法 经典图论算法并查集算法动态连通性思路平衡性优化路径压缩Union Find 算法[130. 被围绕的区域](https://leetcode.cn/problems/surrounded-regions/)[990. 等式方程的可满足性](https://leetcode.cn/problems/satisfiability-o…

2023-spring 2.探险营地 — 字符串

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 一、🌱2023-spring 2.探险营地 题目描述:探险家小扣的行动轨迹&a…

SAM Segment Anything

https://arxiv.org/pdf/2304.02643v1.pdf 包含三个主题:Task、Model、Data Task(任务): 需要定义一个 足够通用的图像分割任务,可以提供一个强大的预训练目标,并支持广泛的下游应用程序。 Model&#xf…

mybatis的参数处理详解

mybatis的参数处理详解 parameterType配置参数 1、参数的使用说明 使用标签的 parameterType 属性来设定。该属性的取值可以是基本类型,引用类型(例如:String 类型),还可以是实体类类型(POJO 类)。同时也…

C++学习:类和对象(上)

类和对象 这是C这样的面向对象的语言具有的特性,相较于C语言来说,更加方便的去编写代码,调用代码。 当需要大量重复的调用同一个函数的时候,我们每创建一个函数,就会建立一个栈帧,这样对于空间来讲不友好…

【南京大学PA】 PA0 环境配置 lab (vim | gcc | lab)

本文章学习NJU 的 PA 课程记的笔记 南大PAWLS空间管理 注意事项 whoami 指令 显示你当前的用户IDsudo whoami linux配置 cpp 环境 apt-get install build-essential # build-essential packages, include binary utilities, gcc, make, and so on apt-get install man …

高效办公——Excel表格-03篇(Excel常用快捷键 以及 Excel快捷键结合公式的各种常见的办公例子)

高效办公——Excel表格-03篇(Excel常用快捷键 以及 Excel快捷键结合公式的各种常见的办公例子) 1. commandE(Windows系统:ctrlE)——快速分列/重组2. 高效复制的快捷键2.1 command D(快速复制上一单元格的…

面试篇:MySQL

一、如何定位慢查询 1、慢查询原因: 聚合查询多表查询表数据量过大查询深度分页查询 表现:页面加载慢、接口无响应,或者响应时间过长(超过1s) 2、如何定位慢查询 3、面试官:MySQL中,如何定…

Leetcode-day4【88】【167】【125】【345】

文章目录 88. 合并两个有序数组题目解题思路解题思路【学习】尾插入法 167. 两数之和 II - 输入有序数组题目解题思路 125. 验证回文串题目解题思路 345. 反转字符串中的元音字母题目解题思路 88. 合并两个有序数组 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums…

Nacos封装通用HttpClient

一、Nacos下Http请求设计众多处理模块处理&#xff0c;包括更新、Prometheus监控等众多功能&#xff0c;Nacos对这块做了统一封装&#xff0c;扩展性也很好&#xff0c;有新旧版本和同步和异步版本. 二、具体封装模块. 1、引入依赖如下. <dependency><groupId>co…

C++ STL学习之【反向迭代器】

✨个人主页&#xff1a; 夜 默 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 A year from now you may wish you had started today. 明年今日&#xff0c;你会希望此时此刻的自己已经开始行动了。 文章目录 &#x1f307;前言&a…

[持续更新]mac使用chatgpt的几种方法~

1. monica 使用edge浏览器或者chrome浏览器&#xff0c;直接在官网下载即可&#xff0c;网址直通&#xff1a; bing: https://www.microsoft.com/zh-cn/edge/download?formMA13FJ google&#xff1a; Google Chrome 网络浏览器 备注&#xff1a;你需要先搭上梯子哈 安装打…

【数据库多表操作】sql语句基础及进阶

常用数据库&#xff1a; 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库&#xff0c;它是长期存储在计算机内、有组织、有结构的数据集合。数据库是信息系统的核心部分&#xff0c;现代软件系统中大量采用了数据库管理系统&#xff08;DBM…

Windows下 influxdb 数据库安装和简单使用

步骤 1&#xff1a;安装 InfluxDB 你可以从 InfluxDB 的 InfluxDB官网winndows二进制安装包下载适用于不同操作系统的 InfluxDB 安装包。在本教程中&#xff0c;我们将介绍在 Windows上安装 InfluxDB 的步骤。 如果所示&#xff0c;可以点击下载windows版本的安卓版&#xff…

VSCode编译器环境下,基于vite+vue调试Cesium

VSCode编译器环境下&#xff0c;基于vitevue调试Cesium 1.创建一个vite项目 以官网作为参考&#xff1a;创建项目 # npm 6.x npm create vitelatest my-vue-app --template vue# npm 7, extra double-dash is needed: npm create vitelatest my-vue-app -- --template vue#…