RTMP / RTSP 在線示例視頻流記錄與直接從視頻流中抽取視頻幀以及ffmpeg技巧


 

引入:在涉及視頻流生成與保存工作,除了自己手動循環播放視頻生成視頻流之外,還可以借助現在有的一些公開視頻流。

 


 

一、在線示例視頻流記錄

ffmpeg

  • RTMP類
  1. 廣西衛視: rtmp://58.200.131.2:1935/livetv/gxtv
  2. 湖南衛視: rtmp://58.200.131.2:1935/livetv/hunantv
  3. 廣東衛視: rtmp://58.200.131.2:1935/livetv/gdtv
  4. 東方衛視: rtmp://58.200.131.2:1935/livetv/dftv
  5. 兵團衛視: rtmp://58.200.131.2:1935/livetv/bttv
  6. 東南衛視: rtmp://58.200.131.2:1935/livetv/dntv
  • RTSP類
  1. 一個動畫: rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov

二、從視頻流中獲取圖像幀

linux命令:  

 tcp協議推流需要加上     -rtsp_transport tcp   

  • ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -r 1/20 -f image2 ./%03d_rtsp.jpg
  • ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks -c copy ./test1.flv   直接保存RTMP視頻流到本地
  • ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -vcodec copy -acodec copy ./rtsp1.flv 直接保存RTSP視頻流到本地

命令解釋:

  • -i “rtmp.../rtsp...”    :后接地址,地址最好用雙引號括起來,如果是rtmp直播流,雙引號里,后面要追加【 live=1】,注意有空格
  • -y                          :如果提示文件已經存在,自動執行y,對已存在文件進行覆蓋
  • -t 0.001                  :開始截圖時間,seconds or in hh:mm:ss[.xxx] 如果截圖開始時間越接近篇尾,所花費的時間就會越長
  • -vframes        :截圖幀數
  • -s                      :圖片寬高比,設置長寬像素比之后,像素可能會比較低
  • -ss 1                      :延遲1秒后開始,有一個需要引起注意的點,如果-ss 直接放在ffmpeg后,那么截圖的處理時間會極大縮短,直接跳轉到延時n秒后的視頻幀,進行截取圖像
  • -f image2               :以圖片格式保存
  • -r 1                        :幀數,此處為截取一幀, 如果是 -r 1/20 那么就是每
  • b-%3d.jpg              :格式化文件命名,會生成 b-001.jpg,b-002.jpg 等

三、ffmpeg使用技巧

1 音頻轉換

ffmpeg -i my_audio.wav  my_audio.mp3
-i 后為要轉換的音頻文件,my_audio.mp3為目的音頻文件

2 視頻轉換

ffmpeg -i my_video.mpeg -s 500×500 my_video.flv
-i 后為源視頻文件, -s 表示設置目標視頻文件的分辨率   my_video.flv為目的視頻文件

3 從視頻中截取圖片

ffmpeg -i test.mpg image%d.jpg
默認1s截取25張圖片,可以通過-r設置每秒截取的圖片數量
-r fps 設置幀率,也就是每秒截取圖片的數量(默認25)
ffmpeg -i test.mpg -r 1 image%d.jpg
這樣子每1s截取1張圖片
還可以設置截取間隔,起止
-ss 設定時間位置,語法:hh:mm:ss[.xxx]
-t 時長:限制轉碼/捕獲視頻的時間,語法:hh:mm:ss[.xxx]
ffmpeg -i test.mpg -r 25 -ss 00:00:10 -t 00:00:05 images%05d.png
在第10秒開始,以每秒截取25張圖片的速度,截取5秒時長的圖片

4 從視頻中采集音頻

ffmpeg -i video.avi -f mp3 audio.mp3
-f 強制選擇格式
ffmpeg -i video.avi -vn audio.mp3
-vn 取消截取視頻(也就是只輸出音頻文件)

5 創建截屏視頻

ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg
0.0 是你X11 server的屏幕顯示號嗎,和DISPLAY一樣樣的.
此條命令以每秒25幀的速率來截取wxga屏幕視頻,當然這里可以用-s 來設置視頻分辨率,輸出文件是/tmp/outputFile.mpg

6 用圖片制作視頻

ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
將`img001.jpg’, `img002.jpg'這種順序排列的圖片文件轉制作為視頻

7 從webcam中截取視頻

ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
同時截取音頻和視頻:
ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
/dev/video0為視頻設備 /dev/dsp為音頻設備

【后半部分轉載自:https://blog.csdn.net/yourijing/article/details/50786758】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM