我在外殼ffprobe | ShowFrames |數據包大小|除| |添加
for file in /path/to/files/*.mp4; do ffprobe -show_frames $file | grep "pkt_size" > ${file}.txt
做
運行此語句,這將是巨大的,如果我能得到這個信息太;
- 當我用grep pkt_size一行數字,然後我想腳本 - 分 100每pkt_size號,
- 然後添加(總和)pkt_size行後50行數每。
我在外殼ffprobe | ShowFrames |數據包大小|除| |添加
for file in /path/to/files/*.mp4; do ffprobe -show_frames $file | grep "pkt_size" > ${file}.txt
做
運行此語句,這將是巨大的,如果我能得到這個信息太;
我已經在another answer中向您展示瞭如何迭代所有文件並追加結果。這是你如何去計算bash
的一個文件,使用@ LordNeckbeard的ffprobe
命令。
你的作業是修改和整合兩個答案。
#!/bin/bash
file=/path/to/file.mp4
if [ ! -f $file ]; then
echo Error: File not found
exit 1
fi
pkt_sizes=$(ffprobe -show_entries frame=pkt_size -of default=noprint_wrappers=1:nokey=1 -i $file -loglevel 0)
function print_sum {
#use `bc` for floating point operations
sum=$(echo "scale=${precision};${sum}/100" | bc -l)
echo "SUM("$start","$i")="$sum
}
i=1
start=1
sum=0
precision=3
#compute/print sum every 50 packets
for size in $pkt_sizes; do
((sum+= size))
if (($i % 50 == 0)); then
print_sum
sum=0
start=$((i + 1))
fi
((i++))
done;
#sum last packets (n < 50)
if (("$start" < "$i")); then
((i--))
print_sum
fi
這足以讓您開始使用shell算法,所以請參考文檔以獲取更多問題。
1.'for'循環末尾沒有'done'。 2.使用正確格式的源代碼。 –
-show_frames輸出中沒有「數據」字段。你想grep哪個領域?如果你能解釋你想要做什麼,那麼可能會提出不同的方法。 – Alam
對數據進行了很好的處理就是一個例子 - 我已經重新編輯了腳本。 1)搜索文件夾中所有的mp4文件, 2)不要ffprobe -show_frames 3)文件夾 4在每個視頻創建單獨的輸出文件)從輸出 5拍攝「pkt_size」行)添加(和)每隔50行(50行)後的pkt_size數字 6)最後,用每一個和除1000(步驟5) – Ben