当前位置: 首页 > 知识库问答 >
问题:

FFMPEG:将视频/音频流循环到YouTube Live

乔伯寅
2023-03-14
#! /bin/bash

VBR="1500k"
FPS="30"
QUAL="ultrafast"
YOUTUBE_URL=" rtmp://a.rtmp.youtube.com/live2"
YOUTUBE_KEY="**********"
VIDEO_SOURCE="test_video_4.mp4"
AUDIO_SOURCE="test_audio_3.mp3"
AUDIO_ENCODER="aac"

ffmpeg \
 -stream_loop -1 \
 -re \
 -i "$VIDEO_SOURCE" \
 -thread_queue_size 512 \
 -i "$AUDIO_SOURCE" \
 -c:v libx264 -preset $QUAL -r $FPS -g $(($FPS *2)) -b:v $VBR \
 -c:a $AUDIO_ENCODER -threads 6 -ar 44100 -b:a 128k -bufsize 512k -pix_fmt yuv420p \
 -fflags +shortest -max_interleave_delta 50000 \
 -f flv $YOUTUBE_URL/$YOUTUBE_KEY

音频和视频都能在第一次正确播放,在音频播放完成时视频html" target="_blank">循环(因为它更短)。唯一的问题是音频循环不工作,一旦音频第一次完成,流就停止了。

以下是日志:

ffmpeg version 4.3.1版权所有(c)2000-2020 ffmpeg开发人员
使用Apple clang version 12.0.0(clang-1200.0.32.27)
配置构建:--prefix=/usr/local/cellar/ffmpeg/4.3.1_4--enable-shared--enable-pthreads--enable-version3--enable-avresample--cc=clang--host-cflags=--host-ldflags=--enable-ffplay--enable-gnutls--enable-gpl--enable-libbaum--enable-libbalay--enable-librav1d--enable-librabband--enable-librubsband--enable-libsnappy ora--enable-libvidstab--enable-libvorbis--enable-libvpx--enable-libx264--enable-libxml2--enable-libxxvid-enable-lzma--enable-libfontconfig--enable-libfreetype--enable-libass--enable-libopencore-amrnb--enable-libopencore-amrwb--enable-libopenjpeg--enable-libpestmp--enable-libopencore-amrwb--enable-libopenjpeg-enable-lib=Jack libavutil 56。51.100/56。51.100 libavcodec 58。91.100/58。91.100 libavformat 58。45.100/58。45.100 libavdevice 58。10.100/58。10.100 libavfilter 7。85.100/7。85.100 libavresample 4。0.0/4。0.0 libswscale 5。7.100/5。7.100 libswresample 3。7.100/3。7.100 libpostproc 55。7.100/55。7.100输入#0,mov、mp4、m4a、3gp、3g2、mj2,从'test_video_4.mp4':元数据:主要品牌:mp42 minor_version:1兼容品牌:isommp41mp42 creation_time:2020-11-27T18:38:02.000000 z时长:00:00:39.46,开始:0.000000,比特率:12081 Kb/s流#0:0(und):视频:h264(高)(avc1/0x31637661),yuv420p(电视,bt709,渐进式),1280x720[SAR 1:1 DAR 16:9],12033kb/s,23.98fps,23.98tbr,24K tbn,48K tbc(默认)元数据:creation_time:2020-11-27t18:38:02.000000 z handler_name:核心媒体视频输入#1,mp3,来自'test_audio_3.mp3':元数据:类型:电影相册:YouTube音频库标题:测试标题艺术家:测试艺术家持续时间:00:02:12.21,开始:0.025057,比特率:320 kb/s流#1:0:音频:mp3,44100赫兹,立体声,fltp,320kb/s元数据:编码器:LAME3.99R流映射:流#0:0->#0:0(h264(本机)->h264(libx264))流#1:0->#0:1(mp3(mp3float)->aac(本机))按[q]停止,[?]有关帮助[libx264@0x7FA825031600]未指定VBV最大速率,假设CBR[libx264@0x7FA825031600]使用sar=1/1[libx264@0x7FA825031600]使用cpu功能:MMX2 SSE2Fast SSE3 SSE4.2 AVX FMA3 BMI2 AVX2[libx264@0x7FA825031600]配置文件约束基线,3.1级,4:2:0,8位[libx264@0x7FA825031600]264-core 161 r3027 4121277-H.264/MPEG-4 AVC编解码器-Copyleft 2003-2020-http://www.videolan.org/x264.html-选项:cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=0 subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 lookakehead_threads=1 sliced_threads=0 nr=0 decimat=0 bluray_compat=0 constrined_intra=0 Head=0RC=CBR MBTree=0Bitrate=1500Ratetol=1.0QCOMP=0.60 QPMIN=0QPMAX=69QPSTEP=4VBV_MAXRATE=1500 VBV_BUFSIZE=512 NAL_HRD=None Filler=0IP_Ratio=1.40 AQ=0输出#0,flv,到'rtmp://a.rtmp.youtube.com/live2/******':
元数据:主要品牌:mp42 minor_version:1兼容品牌:isommp41mp42编码器:LAVF58.45.100流#0:0(und):视频:h264(libx264)([7][0][0][0]/0x0007),yuv420p(累进),1280x720[SAR 1:1 DAR 16:9],Q=-1-1,1500 Kb/s,30 fps,1K tbn,30 tbc(默认)元数据:creation_time:2020-11-27T18:38:02.000000 z handler_name:核心媒体视频编码器:LAVC58.91.100 libx264边数据:CPB:比特率最大值/最小值/平均值:0/0/1500000缓冲区大小:512000#0:1:音频:aac(LC)([10][0][0][0]/0x000A),44100 Hz,立体声,fltp,128 Kb/s元数据:编码器:LAVC58.91.100 aac比24位大的时间戳:0xFFFF9B44KB时间=00:02:37.43比特率=1292.6Kbits/s速度=0.995x[flv@0x7FA825032800]无法以正确的持续时间更新标头。[flv@0x7FA825032800]无法用正确的文件化更新标头。frame=3790 fps=24 q=-1.0lsize=24962kb时间=00:02:38.03比特率=1294.0kbits/s速度=0.997x视频:22719kb音频:2081kb字幕:0kb其他流:0kb全局报头:0kb muxing开销:0.656017%[libx264@0x7FA825031600]帧I:64 Avg QP:36.43大小:38436[libx264@0x7FA825031600]帧P:3726 Avg QP:28.61大小:5583[libx264@0x7FA825031600]mb I i16..4:100.0%0.0%0.0%[libx264@0x7FA825031600]mb I i16..4:3.3%0.0%0.0%P16..4:13.6%0.0%0.0%0.0%0.0%0.0%0.0%跳过:83.1%[libx264@0x7FA825031600]编码y,UV dc,uvAC内:57.8%71.6%47.8%内:6.0%7.1%2.1%[libx264@0x7FA825031600]i16 v,h,dc,P:21%39%23%18%[libx264@0x7FA825031600]i8c dc,h,v,P:36%38%16%10%[libx264@0x7FA825031600]KB/s:1177.39[aac@0x7FA82502D800]QAVG:179.328正常退出,接收信号2。

共有1个答案

西门正平
2023-03-14

也循环音频:

ffmpeg \
 -stream_loop -1 \
 -re \
 -i "$VIDEO_SOURCE" \
 -thread_queue_size 512 \
 -stream_loop -1 \
 -re \
 -i "$AUDIO_SOURCE" \
 -c:v libx264 -preset $QUAL -r $FPS -g $(($FPS *2)) -b:v $VBR -bufsize 3000k -maxrate $VBR \
 -c:a $AUDIO_ENCODER -ar 44100 -b:a 128k -pix_fmt yuv420p \
 -f flv $YOUTUBE_URL/$YOUTUBE_KEY

>

  • -fflags+bestest-max_interleave_delta 50000用于在最短的输入结束时结束输出,但是现在两个输入都无限期地循环,您不希望流停止。所以我移除了这些选项。

    修正了您的-bufsize并添加了-maxrate来启用VBV,这是流媒体推荐的。请参见这个答案,以获得对这个无处不在的脚本的一些一般性建议。

  •  类似资料:
    • 我有两个视频,其中一个覆盖在另一个上,覆盖的只有几秒钟长,我希望它在主视频播放的同时保持循环。我尝试了我能想到的一切,但似乎在ffmpeg中都行不通 将一个覆盖在另一个之上,但没有循环。将更改为 给我一条错误消息 [movie@01B19FC0]找不到键“loop”。[movie@01b19f40]分析选项字符串时出错:“loop=0”初始化带有参数“重叠”的筛选器“movie”时出错。wmv:l

    • 我想从视频中提取对齐的音频流。目标是获得与视频精确对齐的音频序列。 问题:视频和音频序列不对齐。输出音频持续时间比视频输入短。 要复制的脚本: 我的尝试(没有成功): 按照此答案中的建议添加 添加,同时导出视频(链接) 在Audacity中打开。那里的持续时间是 在VLC中打开。持续时间: 显式设置帧率 其他视频文件 如果能给我一些建议,我将不胜感激。非常感谢。

    • 我编写了代码将几个音频文件与1个图像组合成WebM视频。(audio1与默认jpg结合,audio2与默认jpg结合等)。 问题是,在此之后,视频长度比音频长度长25秒(因此音频在视频结束前缩短25秒)。 有没有办法在音频的同时停止视频?这是我使用的代码(我启动一个BAT命令文件)

    • 我有一个长音频部分和一个短视频部分,我想在一起mux。 我正在尝试使用以下命令进行MUX: video_0-0002.h264-整个文件(2秒长) Audio.wav-从4秒到6秒 但音频被搞砸了...我怎样才能正确地做呢? 也试过了,听起来好像最后还是有寂静。

    • 问题内容: 我最近一直在使用HTML5音频进行播放,尽管我可以播放HTML5音频,但只能播放一次。无论我尝试什么(设置属性,事件处理程序等),我似乎都无法使其循环。 这是我正在使用的基本代码: 我正在使用Chrome(6.0.466.0开发人员)和Firefox(4beta1)进行测试,这两者似乎都很乐意忽略我的循环请求。有任何想法吗? 更新 :现在,所有主流浏览器都支持loop属性。 问题答案:

    • 我正在寻找一个解决方案在FFmpeg合并音频(mp3)与短视频循环,或GIF。 我已经能够通过加入音频从图像生成视频,但视频在音频持续时间内保持静态帧,命令如下: 我需要的视频,有音频的持续时间,但使用另一个mp4或GIF循环。在音频持续时间内保持重复。