我正在尝试使用媒体源扩展API将H.264内容直播到HTML5.
以下方法效果很好:
ffmpeg -i rtsp://10.50.1.29/media/video1 -vcodec copy -f mp4 -reset_timestamps 1 -movflags frag_keyframe+empty_moov -loglevel quiet out.mp4
然后:
mp4box -dash 1000 -frag 1000 -frag-rap out.mp4
我可以使用MP4Box输出(out_dashinit.mp4)并通过Web Sockets(块大块)将其发送到将客户端提供给媒体源API的JavaScript客户端.
但是,这对于实时内容来说不是一个好方法.
我现在要做的是创建一个单独的管道,以便以最小的可能延迟实时完成.使用FFmpeg,可以将输出重定向到stdout而不是out.mp4抓取内容.我无法弄清楚是否可以将MP4Box组合到管道中.
stdout)的东西,并可以逐步这样做,以便每当输出数据准备好,我将能够采取它并将其传输到Web客户端,基本上生成一个永无止境的虚线MP4.我是第一次使用gstreamer并尝试使用Gstreamer(RTP和UDP)将MP4视频文件从服务器传输到客户端.我试图使用的命令行:
在服务器端:
gst-launch-1.0 -v filesrc location = file_name.mp4 ! decodebin ! x264enc ! rtph264pay ! udpsink host=192.1XX.XX.XX port=9001
Run Code Online (Sandbox Code Playgroud)
在客户端:
gst-launch-1.0 -v udpsrc port=9001 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtpstreamdepay ! decodebin ! videoconvert ! autovideosink
Run Code Online (Sandbox Code Playgroud)
我能够成功流式传输视频.但是,我不希望 decodebin 和x264enc服务器端的操作.因此,我删除了这些操作并在服务器端使用了此命令行
gst-launch-1.0 -v filesrc location =file_name.MP4 ! rtpstreampay ! udpsink host=192.1XX.XX.XX port=9001
Run Code Online (Sandbox Code Playgroud)
我无法播放视频.
任何人都可以指导我,为什么我们需要在发送数据时在这种情况下进行解码和编码操作.有没有办法在不使用这些操作的情况下发送数据.
谢谢.
我正在做一个加密视频的项目,我对这个过程有一些问题.
我使用的命令转码mp4到HLS具有ts的到10秒片段持续时间.
首先,我需要使用数据库中的密钥加密这些视频.但是,我不知道加密是否与ffmpeg一起使用.
其次,如果加密可以在没有ffmpeg的情况下工作,那么我该怎么办?我在google搜索过包括openssl/aes之类的内容,但我没有详细介绍,即使是ffmpeg链接:http: //www.ffmpeg.org/ffmpeg-all.html#srtp
谁能帮我一把,教我如何加密视频?谢谢你.
所以我尝试使用以下命令将2个视频文件与相同的编解码器组合在一起:
ffmpeg -i "concat:/home/mike/downloads/a1.mp4|/home/mike/downloads/a2.mp4" -c copy "/home/mike/downloads/output.mp4"
Run Code Online (Sandbox Code Playgroud)
结果:output.mp4只包含来自的视频a1.mp4.我也尝试了2个或更多文件,但结果是一样的.可能的原因是什么?请帮忙
麦克风
ffmpeg ×3
aes ×1
encryption ×1
gstreamer ×1
html5-video ×1
media-source ×1
mp4 ×1
mpeg-dash ×1
openssl ×1
rtp ×1
udp ×1