[FFmpeg-trac] #7758(undetermined:new): Unable to playback hardware encoded H.264 to RED5 server using FFmpeg on Windows
FFmpeg
trac at avcodec.org
Tue Mar 12 12:03:33 EET 2019
#7758: Unable to playback hardware encoded H.264 to RED5 server using FFmpeg on
Windows
-------------------------------------+-------------------------------------
Reporter: lhastie | Owner:
Type: defect | Status: new
Priority: normal | Component:
| undetermined
Version: unspecified | Resolution:
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Old description:
> I have a USB camera that is capable of H.264 on-board compression. I use
> the following FFmpeg command line to grab the encoded H.264 from the
> camera and put it in a 'flv' container :
>
> {{{
> ffmpeg -y -f dshow -vcodec h264 -i video="USB Camera" -vcodec copy
> -copyinkf -f flv c:\temp\test.flv
> }}}
>
> This works as expected and I can view the video using VLC no problem.
> Following this principle I then attempt to stream to a RED5 server using
> the following command :
>
> {{{
> ffmpeg -y -f dshow -vcodec h264 -i video="USB Camera" -vcodec copy
> -copyinkf -f flv rtmp://192.168.75.34/live/livestream
> }}}
>
> The RED5 server detects the stream but I am unable to connect to it and
> view it using my basic Python program.
>
> If I do the same thing but use FFmpeg to carry out H.264 encoding of the
> default capture pin (MJPEG), it will stream correctly.
>
> Here is the FFmpeg version and log output from the second FFmpeg command
> :
>
> ffmpeg -y -f dshow -vcodec h264 -i video="USB Camera" -copyinkf -vcodec
> copy -f flv rtmp://192.168.75.176/live/livestream
> ffmpeg version N-93252-gf948082e5f Copyright (c) 2000-2019 the FFmpeg
> developers
> built with gcc 8.2.1 (GCC) 20190212
> configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
> fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
> libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
> --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-
> libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy
> --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx
> --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
> --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-
> gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc
> --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom
> --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-
> d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
> --enable-libopenmpt
> libavutil 56. 26.100 / 56. 26.100
> libavcodec 58. 47.102 / 58. 47.102
> libavformat 58. 26.101 / 58. 26.101
> libavdevice 58. 6.101 / 58. 6.101
> libavfilter 7. 48.100 / 7. 48.100
> libswscale 5. 4.100 / 5. 4.100
> libswresample 3. 4.100 / 3. 4.100
> libpostproc 55. 4.100 / 55. 4.100
> Input #0, dshow, from 'video=USB Camera':
> Duration: N/A, start: 1936614.028000, bitrate: N/A
> Stream #0:0: Video: h264 (Main) (H264 / 0x34363248), yuv420p,
> 1920x1080, 30 fps, 30 tbr, 10000k tbn, 20000k tbc
> Output #0, flv, to 'rtmp://192.168.75.176/live/livestream':
> Metadata:
> encoder : Lavf58.26.101
> Stream #0:0: Video: h264 (Main) ([7][0][0][0] / 0x0007), yuv420p,
> 1920x1080, q=2-31, 30 fps, 30 tbr, 1k tbn, 10000k tbc
> Stream mapping:
> Stream #0:0 -> #0:0 (copy)
> Press [q] to stop, [?] for help
> frame= 1426 fps=5.0 q=-1.0 Lsize= 34955kB time=00:04:44.94
> bitrate=1004.9kbits/s speed=1.01x
>
> I'm not sure if there is some flag in the command line that I might be
> missing? Any help with this issue would be much appreciated.
New description:
I have a USB camera that is capable of H.264 on-board compression. I use
the following FFmpeg command line to grab the encoded H.264 from the
camera and put it in a 'flv' container :
{{{
ffmpeg -y -f dshow -vcodec h264 -i video="USB Camera" -vcodec copy
-copyinkf -f flv c:\temp\test.flv
}}}
This works as expected and I can view the video using VLC no problem.
Following this principle I then attempt to stream to a RED5 server using
the following command :
{{{
ffmpeg -y -f dshow -vcodec h264 -i video="USB Camera" -vcodec copy
-copyinkf -f flv rtmp://192.168.75.34/live/livestream
}}}
The RED5 server detects the stream but I am unable to connect to it and
view it using my basic Python program.
If I do the same thing but use FFmpeg to carry out H.264 encoding of the
default capture pin (MJPEG), it will stream correctly.
Here is the FFmpeg version and log output from the second FFmpeg command :
{{{
ffmpeg -y -f dshow -vcodec h264 -i video="USB Camera" -copyinkf -vcodec
copy -f flv rtmp://192.168.75.176/live/livestream
ffmpeg version N-93252-gf948082e5f Copyright (c) 2000-2019 the FFmpeg
developers
built with gcc 8.2.1 (GCC) 20190212
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
--enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack
--enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
--enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
--enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx
--enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-
nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
libavutil 56. 26.100 / 56. 26.100
libavcodec 58. 47.102 / 58. 47.102
libavformat 58. 26.101 / 58. 26.101
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 48.100 / 7. 48.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Input #0, dshow, from 'video=USB Camera':
Duration: N/A, start: 1936614.028000, bitrate: N/A
Stream #0:0: Video: h264 (Main) (H264 / 0x34363248), yuv420p,
1920x1080, 30 fps, 30 tbr, 10000k tbn, 20000k tbc
Output #0, flv, to 'rtmp://192.168.75.176/live/livestream':
Metadata:
encoder : Lavf58.26.101
Stream #0:0: Video: h264 (Main) ([7][0][0][0] / 0x0007), yuv420p,
1920x1080, q=2-31, 30 fps, 30 tbr, 1k tbn, 10000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 1426 fps=5.0 q=-1.0 Lsize= 34955kB time=00:04:44.94
bitrate=1004.9kbits/s speed=1.01x
}}}
I'm not sure if there is some flag in the command line that I might be
missing? Any help with this issue would be much appreciated.
--
Comment (by cehoyos):
Replying to [ticket:7758 lhastie]:
> The RED5 server detects the stream but I am unable to connect to it and
view it using my basic Python program.
>
> If I do the same thing but use FFmpeg to carry out H.264 encoding of the
default capture pin (MJPEG), it will stream correctly.
This sounds to me as if you want to report a bug to your hardware provider
or the RED5 developers, no?
--
Ticket URL: <https://trac.ffmpeg.org/ticket/7758#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list