[FFmpeg-user] Trying to stream to rtmp from my rsp4 and a GoPro
Gisbert Haas
gisbert.haas at myvinn.com
Sat Feb 13 12:27:21 EET 2021
Can you post the ffmpeg output with audio input in the command line
Sent from my iPhone
On 13. Feb 2021, at 11:21, Mike Soultanian <mike at soultanian.com> wrote:
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
On 2/13/2021 1:54 AM, Gisbert Haas wrote:
can you post the full output please.
Sorry, I didn't include it because when I have audio it doesn't work. I have tried -f alsa -i with the following: plughw:2,0, hw:CARD=capture,DEV=0, and plughw:CARD=capture,DEV=0 and none of them seem to work - I could very well be using them incorrectly. If you're able to tell when I should be using after "-i" for the sound, I'll give it a try. Here is the output from various commands (ezcap is my USB capture card):
pi at raspberrypi:~ $ cat /proc/asound/devices
0: [ 0] : control
16: [ 0- 0]: digital audio playback
32: [ 1] : control
33: : timer
48: [ 1- 0]: digital audio playback
64: [ 2] : control
88: [ 2- 0]: digital audio capture
pi at raspberrypi:~ $ arecord -L
default
Playback/recording through the PulseAudio sound server
null
Discard all samples (playback) or generate zero samples (capture)
jack
JACK Audio Connection Kit
pulse
PulseAudio Sound Server
usbstream:CARD=b1
bcm2835 HDMI 1
USB Stream Output
usbstream:CARD=Headphones
bcm2835 Headphones
USB Stream Output
sysdefault:CARD=capture
ezcap U3 capture, USB Audio
Default Audio Device
front:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
Front speakers
surround21:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
Direct sample mixing device
dsnoop:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
Direct sample snooping device
hw:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
Direct hardware device without any conversions
plughw:CARD=capture,DEV=0
ezcap U3 capture, USB Audio
Hardware device with all software conversions
usbstream:CARD=capture
ezcap U3 capture
USB Stream Output
pi at raspberrypi:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 2: capture [ezcap U3 capture], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
And here is the command and output for when it works (without sound - if you can help me form the correct audio input syntax, I'll gladly try it and post the output):
pi at raspberrypi:~ $ v4l2-ctl --set-fmt-video=width=1280,height=720 && ffmpeg -f v4l2 -thread_queue_size 384 -video_size 1280x720 -framerate 30 -i /dev/video0 -c:v h264_omx -preset veryfast -b:v 1984k -maxrate 1984k -bufsize 3968k -vf "format=yuv420p" -g 60 -c:a aac -b:a 128k -ar 44100 -f flv rtmp://sfo.contribute.live-video.net/app/
ffmpeg version N-101069-g000b250 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 8 (Raspbian 8.3.0-6+rpi1)
configuration: --prefix=/home/pi/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/pi/ffmpeg_build/include --extra-ldflags=-L/home/pi/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/home/pi/bin --enable-gpl --enable-gnutls --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-omx --enable-omx-rpi --enable-nonfree
libavutil 56. 65.100 / 56. 65.100
libavcodec 58.122.100 / 58.122.100
libavformat 58. 67.100 / 58. 67.100
libavdevice 58. 11.103 / 58. 11.103
libavfilter 7.106.100 / 7.106.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
libpostproc 55. 8.100 / 55. 8.100
[video4linux2,v4l2 @ 0x327d420] Dequeued v4l2 buffer contains corrupted data (0 bytes).
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 0.000000, bitrate: 442368 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1280x720, 442368 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
Codec AVOption preset (Encoding preset [0, 8]) specified for output file #0 (rtmp://sfo.contribute.live-video.net/app/) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_omx))
Press [q] to stop, [?] for help
[video4linux2,v4l2 @ 0x327d420] Dequeued v4l2 buffer contains corrupted data (0 bytes).
Last message repeated 30 times
[h264_omx @ 0x32817b0] Using OMX.broadcom.video_encode
Output #0, flv, to 'rtmp://sfo.contribute.live-video.net/app/':
Metadata:
encoder : Lavf58.67.100
Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p(tv, progressive), 1280x720, q=2-31, 1984 kb/s, 30 fps, 1k tbn
Metadata:
encoder : Lavc58.122.100 h264_omx
[flv @ 0x3280360] Failed to update header with correct duration.ate= 37.0kbits/s speed=48.2x
[flv @ 0x3280360] Failed to update header with correct filesize.
frame= 1377 fps= 27 q=-0.0 Lsize= 11138kB time=00:40:49.76 bitrate= 37.2kbits/s speed=47.9x
video:11111kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.244566%
Exiting normally, received signal 2.
pi at raspberrypi:~ $ v4l2-ctl --set-fmt-video=width=1280,height=720 && ffmpeg -f v4l2 -thread_queue_size 384 -video_size 1280x720 -framerate 30 -i /dev/video0 -c:v libx264 -preset veryfast -b:v 1984k -maxrate 1984k -bufsize 3968k -vf "format=yuv420p" -g 60 -c:a aac -b:a 128k -ar 44100 -f flv rtmp://sfo.contribute.live-video.net/app/
ffmpeg version N-101069-g000b250 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 8 (Raspbian 8.3.0-6+rpi1)
configuration: --prefix=/home/pi/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/pi/ffmpeg_build/include --extra-ldflags=-L/home/pi/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/home/pi/bin --enable-gpl --enable-gnutls --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-omx --enable-omx-rpi --enable-nonfree
libavutil 56. 65.100 / 56. 65.100
libavcodec 58.122.100 / 58.122.100
libavformat 58. 67.100 / 58. 67.100
libavdevice 58. 11.103 / 58. 11.103
libavfilter 7.106.100 / 7.106.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
libpostproc 55. 8.100 / 55. 8.100
[video4linux2,v4l2 @ 0x2756420] Dequeued v4l2 buffer contains corrupted data (0 bytes).
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 0.000000, bitrate: 442368 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1280x720, 442368 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[video4linux2,v4l2 @ 0x2756420] Dequeued v4l2 buffer contains corrupted data (0 bytes).
Last message repeated 30 times
[libx264 @ 0x275a7b0] using cpu capabilities: ARMv6 NEON
[libx264 @ 0x275a7b0] profile High, level 3.1
[libx264 @ 0x275a7b0] 264 - core 146 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=60 keyint_min=6 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=cbr mbtree=1 bitrate=1984 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=1984 vbv_bufsize=3968 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
Output #0, flv, to 'rtmp://sfo.contribute.live-video.net/app/':
Metadata:
encoder : Lavf58.67.100
Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p(tv, progressive), 1280x720, q=2-31, 1984 kb/s, 30 fps, 1k tbn
Metadata:
encoder : Lavc58.122.100 libx264
Side data:
cpb: bitrate max/min/avg: 1984000/0/1984000 buffer size: 3968000 vbv_delay: N/A
[flv @ 0x2759360] Failed to update header with correct duration.ate= 38.1kbits/s speed=47.2x
[flv @ 0x2759360] Failed to update header with correct filesize.
frame= 1468 fps= 27 q=-1.0 Lsize= 12026kB time=00:42:21.43 bitrate= 38.8kbits/s speed=46.8x << this line counts up until I hit q
video:11997kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.241407%
[libx264 @ 0x275a7b0] frame I:30 Avg QP:22.77 size: 35542
[libx264 @ 0x275a7b0] frame P:775 Avg QP:25.98 size: 10805
[libx264 @ 0x275a7b0] frame B:663 Avg QP:26.90 size: 4290
[libx264 @ 0x275a7b0] consecutive B-frames: 13.4% 75.9% 10.2% 0.5%
[libx264 @ 0x275a7b0] mb I I16..4: 31.8% 50.5% 17.7%
[libx264 @ 0x275a7b0] mb P I16..4: 12.7% 7.3% 0.4% P16..4: 38.1% 8.9% 2.7% 0.0% 0.0% skip:29.9%
[libx264 @ 0x275a7b0] mb B I16..4: 1.7% 0.7% 0.0% B16..8: 13.1% 2.6% 0.2% direct:22.6% skip:59.1% L0:39.8% L1:53.3% BI: 7.0%
[libx264 @ 0x275a7b0] 8x8 transform intra:37.6% inter:18.0%
[libx264 @ 0x275a7b0] coded y,uvDC,uvAC intra: 24.9% 54.3% 5.3% inter: 7.1% 30.7% 0.0%
[libx264 @ 0x275a7b0] i16 v,h,dc,p: 51% 24% 17% 8%
[libx264 @ 0x275a7b0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 19% 41% 3% 5% 4% 5% 3% 6%
[libx264 @ 0x275a7b0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 23% 21% 4% 8% 5% 6% 5% 7%
[libx264 @ 0x275a7b0] i8c dc,h,v,p: 59% 19% 18% 3%
[libx264 @ 0x275a7b0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x275a7b0] kb/s:1990.71
Thanks!
Mike
On 2/13/21 1:23 AM, Mike Soultanian wrote:
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
Hey Everyone,
I'm trying to stream from my GoPro into a USB capture device through my
Raspberry Pi 4 and send the feed up to Twitch or my rtmp server. After
a lot of head banging I realized that there were two things that were
messing me up: 1) specifying an audio input seems to break things and 2)
trying to use the h264_v4l2m2m hardware encoder also seems to mess
things up. After finding the ffmpeg streaming wiki here:
https://trac.ffmpeg.org/wiki/EncodingForStreamingSites
I was finally able to cobble this command-line together and get it
working... kinda:
*ffmpeg -f v4l2 -video_size 1280x720 -framerate 30 -i /dev/video0 -c:v
libx264 -preset veryfast -b:v 1984k -maxrate 1984k -bufsize 3968k -vf
"format=yuv420p" -g 60 -c:a aac -b:a 128k -ar 44100 -f flv
rtmp://sfo.contribute.live-video.net/app/[my key]*
I say kinda because I can't seem to get audio working. Now, I just want
to say that using the QT v4l2 test utility I'm able to get audio and
video simultaneously, so I know that the capture feed from my GoPro is
healthy, and using ffmpeg I'm able to record either video from
*/dev/video0* or audio from *plughw:2,0*, but it seems like whenever I
add *-f alsa -i plughw:2,0* in addition to *-i /dev/video0*, it won't
stream anything (or record anything during my recording attempts).
Am I missing something obvious here? I was hoping that I'm just doing
something stupid, but even looking on that wiki listed above it looks
like all I need to do is add *-f alsa -ac 2 -i plughw:2,0* and it should
work, but it just seems to kill the stream or record nothing.
Also, I'd love to be able to use the hardware encoder, so any thoughts
on that would be appreciated, but getting both audio and video is the
main priority.
Btw, if you're curious about what I'm doing, I'm trying to build a DIY
mobile streaming rig that I can take hangliding/paragliding with me so
people can watch. I thought it would be a fun project but this portion
has turned out to be quite challenging!!
Thanks!
Mike
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user at ffmpeg.org<mailto:ffmpeg-user at ffmpeg.org>
https://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
ffmpeg-user-request at ffmpeg.org<mailto:ffmpeg-user-request at ffmpeg.org> with subject "unsubscribe".
More information about the ffmpeg-user
mailing list