Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 使用FFMPEG将RTMP源重新传输到YouTube-输出中没有视频流_Nginx_Video_Ffmpeg_Youtube_Rtmp - Fatal编程技术网

Nginx 使用FFMPEG将RTMP源重新传输到YouTube-输出中没有视频流

Nginx 使用FFMPEG将RTMP源重新传输到YouTube-输出中没有视频流,nginx,video,ffmpeg,youtube,rtmp,Nginx,Video,Ffmpeg,Youtube,Rtmp,我试图从nginx rtmp服务器获取.m3u8文件并将其传递到YouTube rtmp。我相信这是可能的(例如:尽管这是在同一台主机上)。我使用的命令是: ffmpeg -analyzeduration 0 -i \ http://source.rtmp.server/hls/stream.m3u8 -pix_fmt yuv420p \ -f flv rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx 然而,输出只包含音频,YouTube

我试图从nginx rtmp服务器获取.m3u8文件并将其传递到YouTube rtmp。我相信这是可能的(例如:尽管这是在同一台主机上)。我使用的命令是:

ffmpeg -analyzeduration 0 -i \
http://source.rtmp.server/hls/stream.m3u8 -pix_fmt yuv420p \ 
-f flv rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx
然而,输出只包含音频,YouTube不喜欢它。该命令产生以下结果:

由于在输出元数据中看不到视频流,流映射仅显示音频,跟踪显示651kb音频的0kb视频

非常感谢您的帮助

更多信息 本文中命令的改进版本:

“使用FFMPEG将m3u8 HLS流重新传输到Youtube”正是我想做的

我现在发送的命令是:

ffmpeg -re -i "http://source.rtmp.server/hls/stream.m3u8" \ 
-strict -2 -c:v copy -c:a aac -ar 44100 -ab 128k -ac 2 -flags \ 
+global_header -bsf:a aac_adtstoasc -bufsize 3000k -f flv \ 
"rtmp://a.rtmp.youtube.com/live2/xxx-xxxx-xxxx-xxxx"
除了使用
aac
codec读取和输出音频外,我得到了几乎完全相同的响应

更多信息 我发现添加映射可以强制视频流进入输出:

ffmpeg -re -i "http://source.rtmp.server/hls/stream.m3u8" \
-strict -2 -c:v copy -c:a -map 0:0 -map 0:1 -ar 44100 -ab 128k -ac 2 \ 
-flags +global_header -bsf:a aac_adtstoasc -bufsize 1000k \
-f flv "rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx"
这会引发一个错误,该错误可能导致视频流被静默删除:


终于解决了。上面的最后一个问题是一个令人费解的问题,原因是缺少音频
-c:a
的编解码器参数

完整的工作指令如下所示:

ffmpeg -probesize 100M -analyzeduration 20M -re \ 
-i "http://source.rtmp.server/hls/stream.m3u8" -strict -2 -c:v \ 
libx264 -pix_fmt yuv420p -c:a aac -map 0:0 -map 0:1 -ar 44100 \ 
-ab 128k -ac 2 -b:v 2567k -flags +global_header -bsf:a aac_adtstoasc \ 
-bufsize 1000k -f flv "rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx"

重要的部分是
-probesize
-analymentation
-这些部分需要调整,直到它们起作用为止。
-re
标志对于指示重新调光非常重要。各种视频编解码器声明也很重要-
-c:v libx264-pix_fmt yuv420p
,否则将抛出输出大小为0x0的错误。最后,map标志确保两个流都包含在输出中:
-map 0:0-map 0:1

嗨,我正在尝试将我自己的rtmp服务器数据发送到youtube,它不工作$ffmpeg-i rtmp://{url}/live/-f flvrtmp://a.rtmp.youtube.com/live2/key