国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

電子工程網(wǎng)

標題: 基于全志A40i的FFmpeg命令行工作方式 [打印本頁]

作者: 繁花之語    時間: 2022-12-17 09:29
標題: 基于全志A40i的FFmpeg命令行工作方式

1. FFmpeg的安裝

FFmpeg是用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻的開源軟件,它支持文件和網(wǎng)絡流操作。它支持以函數(shù)庫的方式使用,所以有很多軟件都依賴它,比如VLC、暴風影音、騰訊會議等。它的命令行程序也非常強大,各種命令行選項學起來雖然困難,但是幾乎能夠滿足日常對音視頻的各種處理需求。今天我們就通過飛凌嵌入式OKA40i-C開發(fā)板保定飛凌嵌入式技術(shù)有限公司來介紹它的命令行工作方式。


FFmpeg提供了全部源代碼,所以在網(wǎng)上可以找到很多教程是關于交叉編譯ARM版本的。我們測試的版本使用的是FFmpeg-release-armel-static.tar.xz。解壓縮以后拷貝到飛凌嵌入式OKA40i-C開發(fā)板上并設置好權(quán)限就可以使用了。


2. USB攝像頭測試

OKA40i-C開發(fā)板接口豐富,它支持USB攝像頭、CMOS-OV5640攝像頭、模擬攝像頭。把USB攝像頭插入開發(fā)板,然后使用

v4l2-ctl --list-devices

可以看到/dev/video0就是我們的USB攝像頭,如下圖。

使用下面的命令可以看到該攝像頭的全部參數(shù):

v4l2-ctl -d  /dev/video0 --all

我們使用了兩種型號的USB攝像頭,按照手冊說明使用內(nèi)置的uvccamera程序進行測試,不過都沒有成功,得到的錯誤信息如下圖所示。

我們使用FFmpeg可以抓取視頻,命令行如下:

ffmpeg -f video4linux2 -s 640x480 -pix_fmt yuyv422 -i /dev/video0 out.yuv

使用Windows版本的ffplay可以正常播放抓取的視頻,命令行如下:

ffplay -s 640x480 -pix_fmt yuyv422 out.yuv

上面保存的是YUV格式的原始視頻,如果要保存壓縮視頻,可以用下面的命令行:

ffmpeg -y -t 15 -r 25 -f video4linux2  -i /dev/video0 out3.mp4-timestamps bs

其中的-r 25表示每秒采樣25幀,這個參數(shù)必須有,否則FFmpeg可能會不斷地采集并壓縮同一視頻幀。-r參數(shù)超過30沒有什么意義,因為USB攝像頭的最大能力就是30fps。


飛凌嵌入式OKA40i-C開發(fā)板可以對于1080P的視頻壓縮達到45fps,所以對USB攝像頭的視頻壓縮應該沒有什么壓力。


3. FFmpeg性能測試

FFmpeg有個benchmark參數(shù)可以方便進行性能測試。我們對A40i開發(fā)板自帶的一個MP4視頻就行解碼測試,命令行如下:

ffmpeg-benchmark -i translate.mp4 -f null

得到的測試數(shù)據(jù)如下:


由于我手上暫時沒有其他的開發(fā)板可以對比,于是就通過我用了5年的i7-6500筆記本測試了一下,測試結(jié)果如下:


4.  FFmpeg產(chǎn)生實時視頻流

FFmpeg可以支持實時視頻流的發(fā)送和接收,從而可以把OKA40i-C開發(fā)板上的視頻實時發(fā)送到PC上,由PC上的軟件實時接收并顯示。我們可以使用下面的命令將OKA40i-C開發(fā)板上的一個MP4轉(zhuǎn)換為RTP碼流發(fā)送的PC上:

ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234

使用Wireshark可以看到在PC機的1234端口收到大量來自OKA40i-C開發(fā)板的H.264視頻流。



如果想在PC上顯示視頻流,需要建立一個SDP文件,它描述視頻流中的端口和編碼信息。


SDP是來自SIP標準中定義,目前VLC、Apple QuickTime和ffplay等很多軟件都可以打開SDP文件,并按照SDP中的描述顯示視頻流。SDP文件并不需要手工編寫,在ffmpeg運行時它會顯示命令行所對應的SDP定義,如下圖所示。

也可以用重定向?qū)⑤敵鰧懭胍粋SDP文件,如:

ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234 > rtp.sdp

下面就是使用VLC顯示的接收到的視頻流。



5.  FFmpeg轉(zhuǎn)發(fā)USB攝像頭的視頻流

前面演示了將MP4文件轉(zhuǎn)換為視頻流,我們也可以將USB攝像頭采集的內(nèi)容實時轉(zhuǎn)發(fā)到PC上,使用下面的命令行即可。

ffmpeg -y -t 15 -r 25 -f video4linux2  -i /dev/video0 -f rtprtp://192.168.0.105:1234 > usb.sdp





歡迎光臨 電子工程網(wǎng) (http://www.4huy16.com/) Powered by Discuz! X3.4