ffmpeg 推播

      在〈ffmpeg 推播〉中尚無留言

底下的說明, 為將影片輸出到多個目的地(rtmp:flv 及 儲存檔案:h264)

推播電影

ffmpeg -i Videos/snake.mkv \
-b:v 4000k -r 24 -c:a aac -ac 1 -strict -2 -b:a 128k -ar 44100 -c:v h264_omx -f flv rtmp://mahaljsp.asuscomm.com/live/movie \
-b:v 4000k -r 24 -c:a aac -ac 1 -strict -2 -b:a 128k -ar 44100 -c:v h264_omx -f segment -segment_time 00:20:00 -reset_timestamps 1 output%03d.mp4

上述指令中, 使用硬体編碼 h264_omx, 一邊推播,  一邊儲存在樹莓派的sdcard上. 其cpu的資源耗損只有 200%(全速是 400%), 而且每秒幀輻可達24fps. 所以對樹莓派而言, 簡直是輕而易舉.

將轉檔結果儲存成檔案. 若要依一段時間就切割檔案, 使用如下參數

-segment_time 00:20:00 -f segment -reset_timestamps 1 output%03d.mp4

推播WebCam

底下為二路編碼輸入二路, 速度很慢

nohup ffmpeg -video_size 1920x1080 -input_format mjpeg -i /dev/video0 \
-vf drawtext='fontfile=fonts/FreeSerif.ttf:text=%{localtime}:x=5:y=20:fontcolor=white:fontsize=36:box=1:boxcolor=0x000000@0.5' \
-b:v 4000k -r 24 -c:a aac -ac 1 -strict -2 -b:a 128k -ar 44100 -c:v h264_omx -f flv rtmp://mahaljsp.asuscomm.com/live/car \
-vf drawtext='fontfile=fonts/FreeSerif.ttf:text=%{localtime}:x=5:y=20:fontcolor=white:fontsize=36:box=1:boxcolor=0x000000@0.5' \
-b:v 4000k -r 24 -c:a aac -ac 1 -strict -2 -b:a 128k -ar 44100 -c:v h264_omx -f segment -segment_time 00:20:00 -reset_timestamps 1 output%03d.mp4

推播並儲存

以下使用usb webcam可以達到22fps, cpu只佔用 86%

單一編碼分二路, 一定要加 -flags global_header, 否則無法執行

#!/bin/bash
while ! ping -q -c 1 -W 1 google.com
do
sleep 1
done

ffmpeg -input_format mjpeg -video_size 1600x896 -i /dev/video0 \
-f alsa -i hw:1,0 \
-flags global_header \
-vf drawtext='fontfile=fonts/FreeSerif.ttf:text=%{localtime}:x=5:y=20:fontcolor=white:fontsize=36:box=1:boxcolor=0x000000@0.5' \
-b:v 4000k -vcodec h264_omx \
-c:a aac -b:a 64k \
-profile:v baseline -preset veryfast -pix_fmt yuv420p \
-f tee -map 0:v -map 1:a \
"[f=segment:segment_atclocktime=1:segment_time=1800:strftime=1]/home/pi/records/car_%Y%m%d-%H%M%S.mp4|\
[f=flv:onfail=ignore]rtmp://mahaljsp.asuscomm.com/live/car"

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *